// Sub functions for EasyWeb     March 1999   Ver 1.02
//   					 written by   Futaroh
//

// XML import
function XMLimport() {
    status="Loading XML Document....";
    XML_FILE=ConvertURL(XML_FILE);
    if ((BR == "IE4")||(BR=="IE5")) {
	XMLDoc= XMLOBJ;
	XMLDoc.URL=XML_FILE;
    }
    status="XML Document loaded.";
    var tmp;
    parsable = false;
    if (BR == "IE4") {
	tmp = XMLDoc.outerHTML.toString();
	if (tmp.indexOf("CFC399AF-D876-11D0-9C10-00C04FC99C8E") == -1) {
	    alert("Something is wrong in the XML file.");
        } else {   parsable=true;   }
    }
}

// Browser analysis
function Browser() {
    var uagent=navigator.userAgent;
    BR="";
    if(uagent.indexOf('MSIE 5.')>=0){
	BR="IE5";
    } else if (uagent.indexOf('Mozilla/5.')>=0){
	BR="NN5";
    } else if(uagent.indexOf('MSIE 4.')>=0){
	BR="IE4";
    } else if (uagent.indexOf('Mozilla/4.')>=0){
	BR="NN4";
    } else if (uagent.indexOf('MSIE 3.')>=0){
	BR="IE3";
    } else if (uagent.indexOf('Mozilla/3.')>=0){
	BR="NN3";
    }
    return BR;
}

function Search() {
    var e = new Array;
    var flag,i,j,topline="";
    var searching_num=1;
    var printing_num=0;

    // validity check
    if ((BR == "IE3") || (BR == "NN3")) {
	alert("このブラウザのバージョンはサポート外です。");
	return -1;
    }
    if ((BR == "IE4") && (parsable == false)) {
	alert("XMLファイルの解析に失敗しました。");
	return -1;
    }

    // make topline with selected condition
    for (i=0;i<print_column;i++) {
	if ( (eval("document.CONDITION.RESULT_COLUMN"+i+".checked") ) &&
	     (eval("document.CONDITION.RESULT_COLUMN"+i+".value") != "false" ))
						 { topline += hed_def[i];}
    }

    // PrintDocumentHeader;

	win = window.open("","result");
	doc = win.document;
	PrintDocumentHeader(topline);

    // Main
    if ((BR=="IE4")||(BR=="IE5")) { 
	var root=XMLDoc.root;
	var sheets;

	for (sheets=0;sheets<root.children.length;sheets++) {
	    for (i=0;i<datas_of_sheet[sheets];i++) { // for all datas
		e=Get1record(sheets,i);
		doc.NOW_PRI.SEARCHING_NUMBER.value=searching_num + "件目を検索中です";
		searching_num++;
		flag=MatchCondition(sheets,e);
		if (flag != -1) {
			Print(e);
			printing_num++;
			if ( (printing_num % Result_MAX ) == 0 ) {
				PrintDocumentInter(printing_num,topline);
			}
		}
	    }
	}

    } else if ((BR=="NN4") || (BR=="NN5")) {
	var datas=Math.floor(exDB.length/(DB_column+DB_defDatas));
	var sheets;
	
	for (i=0;i<datas;i++) {
		sheets = exDB[i*(DB_column+DB_defDatas)];
		for(j=0;j<DB_column;j++) {
			e[j]=exDB[i*(DB_column+DB_defDatas)+j+DB_defDatas];
		}
		flag = MatchCondition(sheets,e);
		doc.NOW_PRI.SEARCHING_NUMBER.value=searching_num + "件目を検索中です";
		searching_num++;
		if (flag != -1) {
			Print(e);
			printing_num++;
			if ( (printing_num % Result_MAX ) == 0 ) {
				PrintDocumentInter(printing_num,topline);
			}
		}
	}
    }

    // PrintDocumentFooter
    searching_num--;
    if (printing_num == 0) {
	doc.NOW_PRI.SEARCHING_NUMBER.value="検索条件に適合するものはありません";
    } else {
	doc.NOW_PRI.SEARCHING_NUMBER.value=searching_num + "件中、" + printing_num
 + "件が検索条件に適合しました";
    }
    PrintDocumentFooter();
    doc.close();

    return 0;
}

// Get 1 record
function Get1record(_sheetNumber,_itemNumber) {
    var list = new Array;
    var leaf;
    var i;
    var num0 = _sheetNumber;
    var num1 = _itemNumber;
    leaf=XMLDoc.root.children.item(num0).children.item(num1);
    for (i=0;i<leaf.children.length;i++) {
	list[i] = leaf.children.item(i).text;
    }
    return list;
}

// Print 1 line
function Print(_list){
    var list=_list;
    var i,j;
    var tmp,tmp2;


	// Convert list String
	for (i=0;i<list.length;i++){
		var ii;
		var jj;
		var kk;
		var nLen;
		var temp1, temp2;

	// 1999.10.26 NetScape用に修正
		if ((BR=="IE4")||(BR=="IE5")) { 
			// Convert _ into &nbsp;
			list[i]=s(list[i]," ","&nbsp;","g");

			// Convert " into &quot
			list[i]=s(list[i],'"','&quot;',"g");
		} else if ((BR=="NN4") || (BR=="NN5")) {
			// Convert &amp into &
			list[i]=s(list[i],"&amp","&","g");

			// Convert &lt; into <
			list[i]=s(list[i], "&lt;", "<", "g")

			// Convert &gt; into >
			list[i]=s(list[i], "&gt;", ">", "g")

			// Convert #Q into <BR>
			list[i]=s(list[i],"#Q","<BR>","g");

			// Convert _ into &nbsp;
			list[i]=s(list[i]," ","&nbsp;","g");

			// Convert &quot; into "
			list[i]=s(list[i],'&quot;','"',"g");

		}
	}


    doc.writeln("<TR>");
    for (i=0;i<print_column;i++) {
		if ( (eval("document.CONDITION.RESULT_COLUMN"+i+".checked"))  && 
	    	 (eval("document.CONDITION.RESULT_COLUMN"+i+".value") != "false" ) ){ 
	    	
			tmp=col_def[i];
	    	tmp=s(tmp,"%%STR"+i+"%%",str_def[i],"");	

			for (j=0;j<list.length;j++){
		        tmp=s(tmp,"%%COL"+j+"%%",list[j],"g");	
		    }

			tmp=s(tmp,"<TD></TD>","<TD>&nbsp</TD>","");
			tmp=s(tmp,"</A></TD>","</A>&nbsp</TD>","");
	    	doc.writeln(tmp);
		}
    }
    doc.writeln("</TR>");
}

// Convert relative URL to absolute URL
function ConvertURL(_relativeURL){
    var URL=_relativeURL;
    var currentURL = window.location;
    var absURL;

    var tmp=currentURL.toString();
    var ind = tmp.lastIndexOf("/",255);

    if (ind == -1 ) { 
	ind = tmp.lastIndexOf("\\",255);
    } 

    if (ind != -1) {
	absURL=tmp.substr(0,ind+1)+URL;
    } else {absURL=URL;}
    return absURL;
}

// substitute
function s(_targetStrings,_beforeWord,_afterWord,_flag) {
    var str	= _targetStrings;
    var before	= _beforeWord;
    var after	= _afterWord;
    var flag	= _flag;
    var a,cnt;
    var outs="";
    a=str.indexOf(before,0);
    if (a == -1) {
	return str;
    }

    if (flag == "g") {
		while(a != -1) {
		    outs += str.substring(cnt,a)+after;
	    	cnt   = a+before.length;
	    	a= str.indexOf(before,cnt);
		}
		outs += str.substring(cnt,str.length);
    }
	else {
		outs = str.substring(0,a) + after + str.substring(a+before.length,str.length);
    }
    return outs;
}

// Check MAX
function checkMAX(_targetComboBox) {
    var CB = eval("document.CONDITION."+_targetComboBox+".value");
    if (CB.length == 0) {
	status="最大値が省略されたので999999以下として検索します。";
	eval("document.CONDITION."+_targetComboBox+".value = 999999");
	CB = "999999";
    }
    if (CB.length >= 7) {
	alert("最大値の指定が7桁を超えています");
	return -1;
    }
    if (isNaN(parseFloat(CB,10))) {
	status="最大値が適切ではないので999999以下として検索します。";
	CB = "999999";
    }
    eval("document.CONDITION."+_targetComboBox+".value = "+
 parseFloat(CB,10));

    return 0;
}


// Check MIN
function checkMIN(_targetComboBox) {
    var CB = eval("document.CONDITION."+_targetComboBox+".value");
    if (CB.length == 0) {
	status="最小値が省略されたので0以上として検索します。";
	eval("document.CONDITION."+_targetComboBox+".value = 0");
	CB = "0";
    }
    if (CB.length >= 7) {
	alert("最小値の指定が7桁を超えています");
	return -1;
    }
    if (isNaN(parseFloat(CB,10))) {
	status="最小値が適切ではないので0以上として検索します。";
	CB = "0";
    }
    eval("document.CONDITION."+_targetComboBox+".value = "+
 parseFloat(CB,10));

    return 0;
}

