/*
【マスカー検索用のJavaScript】
以下のライブラリが必要です。
 - prototype.js
 - objtree.js
by FUJIKA ARTS
*/

var xmlFile = "masker_data.xml";

var treeObj = null;

function searchWait() {
	$("RESULT").style.display = "none";
	$("WAITING").style.display = "block";
	setTimeout("ajaxRequest()", 200);	
}

function ajaxRequest(){
	var msec = (new Date()).getTime();
	var use = $F("USE");
	var name = $F("NAME");
	var material = checkScan("MATERIAL_").join(",");
	var tape_type = checkScan("TAPE_TYPE_").join(",");
	var sheet_width = checkScan("SHEET_WIDTH_").join(",");

	var queryStr = "cache=" + msec + "&use=" + use + "&name=" + name + "&material=" + material + "&tape_type=" + tape_type + "&sheet_width=" + sheet_width;

	if (treeObj == null) {
		new Ajax.Request(xmlFile, {
			method: "get",
			parameters: queryStr,
			onSuccess:function(httpObj) {
				var source = httpObj.responseText;
	
				// 受信テキストをJSONに変換
				var xotree = new XML.ObjTree();
				xotree.attr_prefix ="@";
				var tree = xotree.parseXML(source);
				treeObj = tree;
				searchExec(treeObj);
			},
			onFailure:function(httpObj){
				alert("データを読み込めませんでした。\n時間をずらして何度か試みても表示されない場合は、お手数ですがサイト管理者へご連絡ください。");
			}
		});
	} else {
		searchExec(treeObj);
		new Ajax.Request(xmlFile, {
			method: "get",
			parameters: queryStr,
			onSuccess:function(httpObj) {},
			onFailure:function(httpObj){}
		});
	}
	return;
}

function searchExec(tree) {
	var use = $F("USE");
	var name = $F("NAME").trim();
	var material = checkScan("MATERIAL_");
	var tape_type = checkScan("TAPE_TYPE_");
	var sheet_width = checkScan("SHEET_WIDTH_");
	var allItems = tree.masker.item;
	var resItems = new Array();

	for (i=0; i<allItems.length; i++) {
		var currentItem = allItems[i];
		if ( currentItem["use"] && currentItem["use"].indexOf(use)!=-1 ) {
			resItems.push(currentItem);
		} else 	if ( name!="" && currentItem["name"] && currentItem["name"].indexOf(name)!=-1 ) {
			resItems.push(currentItem);
		} else if ( currentItem["material"] && materialSearch(material, currentItem["material"]) ) {
			resItems.push(currentItem);
		} else if ( currentItem["tape_type"] && tapeSearch(tape_type, currentItem["tape_type"]) ) {
			resItems.push(currentItem);
		} else if ( currentItem["sheet_width"] && widthSearch(sheet_width, currentItem["sheet_width"]) ) {
			resItems.push(currentItem);
		}

	}
	resultOutput(resItems);
}

function materialSearch(ary, val) {
	for (j=0; j<ary.length; j++) {
		if ( val.indexOf(ary[j]) != -1 ) {
			return true;
		}
	}
	return false;
}

function tapeSearch(ary, val) {
	for (m=0; m<ary.length; m++) {
		if ( val.indexOf(ary[m]) != -1 ) {
			return true;
		}
	}
	return false;
}

function widthSearch(ary, val) {
	for (k=0; k<ary.length; k++) {
		if ( ary[j]=="～500" && val<=500 ) {
			return true;
		} else if ( ary[j]=="501～1000" && (val>=501 && val<=1000) ) {
			return true;
		} else if ( ary[j]=="1001～1500" && (val>=1001 && val<=1500) ) {
			return true;
		} else if ( ary[j]=="1501～2000" && (val>=1501 && val<=2000) ) {
			return true;
		} else if ( ary[j]=="2001～" && val>2000 ) {
			return true;
		}
	}
	return false;
}

function resultOutput(obj) {
	var resultHTML = new String();
	resultHTML = "<h3 class=\"subHead2 center\"><span class=\"attentionRed\">▼</span>&nbsp;検索結果は次の通りです&nbsp;<span class=\"attentionRed\">▼</span></h3>";
	if (obj.length==0) {
		resultHTML += "<p>ご指定の条件に該当する製品はありません。<br />\nお探しの条件での製品がない場合には<a href=\"../contact/\">こちら</a>にお問い合わせ</a>ください。</p>";
		resultHTML += "<p>シート幅、素材違いなどのご希望に応じたカスタム製品をお作りすることもできます。発注数量などの条件はございますが、先ずはお気軽に<a href=\"../contact/\">こちら</a>からお問合わせください。</p>";
	} else {
		resultHTML += "<p><strong class=\"attentionRed\">" + obj.length + "件</strong>の該当製品がございます。<br />絞り込む場合は上記フォームで条件を変更し、再度検索ボタンを押してください。</p>"
		for (i=0; i<obj.length; i++) {
			resultHTML += "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" class=\"result\" summary=\"検索結果データ\">";
			resultHTML += "<tr>";
			resultHTML += "<th width=\"16%\" class=\"head\">品名</th>";
			resultHTML += "<td colspan=\"3\" class=\"content bold size110\">" + valueStr(obj[i].name) + "&nbsp;</td>";
			resultHTML += "</tr>";
			resultHTML += "<tr>";
			resultHTML += "<th width=\"18%\" class=\"head\">管理番号</th>";
			resultHTML += "<td width=\"31%\" class=\"content\">" + valueStr(obj[i]["@number"]) + "&nbsp;</td>";
			resultHTML += "<th width=\"20%\" class=\"head\">テープの種類</th>";
			resultHTML += "<td width=\"31%\" class=\"content\">" + valueStr(obj[i].tape_type) + "&nbsp;</td>";
			resultHTML += "</tr>";
			resultHTML += "<tr>";
			resultHTML += "<th class=\"head\">シートの素材</th>";
			resultHTML += "<td class=\"content\">" + valueStr(obj[i].material) + "&nbsp;</td>";
			resultHTML += "<th class=\"head\">シートの幅/長さ</th>";
			resultHTML += "<td class=\"content\">";
			if ( valueStr(obj[i].sheet_width) ) {
				resultHTML += obj[i].sheet_width + "mm";
			} else {
				resultHTML += "-";
			}
			resultHTML += " / ";
			if ( valueStr(obj[i].sheet_length) ) {
				resultHTML += obj[i].sheet_length + "m";
			} else {
				resultHTML += "-";
			}
			resultHTML += "&nbsp;</td>";
			resultHTML += "</tr>";
			resultHTML += "<tr>";
			resultHTML += "<th class=\"head\">用途</th>";
			resultHTML += "<td colspan=\"3\" class=\"content\">";
			resultHTML += "<table border=\"0\" cellpadding=\"0\" cellspacing=\"2\" class=\"use\" summary=\"レイアウト枠\">";
			resultHTML += "<tr>";
			resultHTML += "<td class=\"mark\">" + useMark("内", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">内壁</td>";
			resultHTML += "<td class=\"mark\">" + useMark("外", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">外壁</td>";
			resultHTML += "<td class=\"mark\">" + useMark("板", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">板金</td>";
			resultHTML += "<td class=\"mark\">" + useMark("工", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">工業用</td>";
			resultHTML += "<td class=\"mark\">" + useMark("清", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">清掃</td>";
			resultHTML += "<td class=\"mark\">" + useMark("環", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">環境工事</td>";
			resultHTML += "</tr>";
			resultHTML += "<tr>";
			resultHTML += "<td class=\"mark\">" + useMark("ス", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">スポーツ</td>";
			resultHTML += "<td class=\"mark\">" + useMark("介", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">介護</td>";
			resultHTML += "<td class=\"mark\">" + useMark("防", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">防災</td>";
			resultHTML += "<td class=\"mark\">" + useMark("ペ", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">ペット用</td>";
			resultHTML += "<td class=\"mark\">" + useMark("家", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">家庭用</td>";
			resultHTML += "<td class=\"mark\">" + useMark("ア", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">アルミ窓枠</td>";
			resultHTML += "</tr>";
			resultHTML += "<tr>";
			resultHTML += "<td class=\"mark\">" + useMark("耐", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">耐熱</td>";
			resultHTML += "<td class=\"mark\">" + useMark("鉄", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">鉄骨</td>";
			resultHTML += "<td class=\"mark\">" + useMark("橋", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">橋梁</td>";
			resultHTML += "<td class=\"mark\">" + useMark("土", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">土木基礎</td>";
			resultHTML += "<td class=\"mark\">" + useMark("他", obj[i].use) + "</td>";
			resultHTML += "<td class=\"name\">その他</td>";
			resultHTML += "<td class=\"mark\">&nbsp;</td>";
			resultHTML += "<td class=\"name\">&nbsp;</td>";
			resultHTML += "</tr>";
			resultHTML += "</table></td>";
			resultHTML += "</tr>";
			resultHTML += "</table>";
			if ( (i+1)%10==0 && obj.length-i>4 ) {
				resultHTML += "<p class=\"center\"><a href=\"#HEADER\">▲検索フォームへ戻る</a></p>";
			}
		}
	}
	resultHTML += "<p class=\"center pt10\"><a href=\"#HEADER\">▲検索フォームへ戻る</a></p>";
	$("WAITING").style.display = "none";
	$("RESULT").style.display = "block";
	$("RESULT").innerHTML = resultHTML;
	location.href = "#SEARCH_BTN";
	return true;
}

function checkScan(key) {
	var i = 0;
	var result = new Array();
	while($(key + (i+1))) {
		var box = $(key + (i+1));
		if (box.checked) {
			result.push(box.value);
		}
		i++;
	}
	return result;
}

function useMark(str, use) {
	if (use && use.indexOf(str) != -1) {
		return "●";	
	} else {
		return "&nbsp;";
	}
}

function valueStr(value) {
	if (value && value!="" && value.length>0) {
		return value;
	} else {
		return "";
	}
}

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g,""); }

