/**
 * 店舗検索
 *
 * @description	検索URLを作成し、店舗検索を実行します。
 * @param
 * @return
 */
function searchData(grp, obj) {
	var url = ""; // 検索用URL
	var eki = document.getElementsByName("eki")[0].value;			// 駅名(検索表示用)
	var poi_name = document.getElementsByName("eki")[0].value;		// 駅名(検索用)
	var rosen = document.getElementsByName("rosen")[0].value;		// 路線名(検索表示用)
	var genre1_name = document.getElementsByName("rosen")[0].value;	// 路線名(検索用)

	// 駅・路線のテキストボックスでエンターキーを押した際の初期化
	if (eki == "") {eki = "駅名で検索";}
	if (rosen == "") {rosen = "路線名で検索";}

	// 検索用URL
	if ((eki != "駅名で検索") || (rosen != "路線名で検索"))  {
		// 駅名・路線名検索	
		url += "/map/uc/PoiAttr?grp=" + grp + "&vo=mbml&sgrp=st01&srt=genre1_code,genre_relate_order&ndist=1500&pm=500&ngrp=" + grp;
	} else {
		// 通常の店舗検索
		url += "/map/uc/PoiAttr?grp=" + grp + "&vo=mbml&srt=kencode,kw_yomi";
	}

	// selectボックスで県コードを指定した場合はURLに追加
	var opt_idx = document.getElementsByTagName("select")[0].selectedIndex;					// option(都道府県)のインデックス値
	if (opt_idx != 0) {
		var opt_val = document.getElementsByTagName("select")[0].options[opt_idx].value;	// optionのvalue値
		url += "&kencode=" + opt_val;
	}

	// selectボックスで市区町村名を指定した場合はURLに追加
	var opt_idx = document.getElementsByTagName("select")[1].selectedIndex;					// option(市区町村)のインデックス値
	if (opt_idx != 0) {
		var opt_val = document.getElementsByTagName("select")[1].options[opt_idx].value;	// optionのvalue値
		if (opt_val != "市区町村で検索") {
			url += "&city_name=" + encodeURI(opt_val);
		}
	}

	// 駅名検索を入力した場合はURLに追加
	if ((eki != "駅名で検索") && (eki != "")) {
		// 前方後方一致検索するため、検索キーワード前後に % を付与
		eki = "%" + eki + "%";
		if (poi_name.match(/駅$/)) {
			poi_name = "%" + poi_name.replace(/駅$/, '') + "%";
		} else {
			poi_name = "%" + poi_name + "%";
		}
		// URIエンコード(UTF8)を行い、URLに追加
		url += "&eki=" + encodeURI(eki) + "&st_name=" + encodeURI(poi_name);
	}

	// 路線検索を入力した場合はURLに追加
	if ((rosen != "路線名で検索") && (rosen != "")) {
		// 前方後方一致検索するため、検索キーワード前後に % を付与
		rosen = "%" + rosen + "%";
		genre1_name = "%" + genre1_name + "%";
		// URIエンコード(UTF8)を行い、URLに追加
		url += "&rosen=" + encodeURI(rosen) + "&genre1_name=" + encodeURI(genre1_name);
	}

	// フリーワード検索を入力した場合はURLに追加
	var q= document.getElementsByName("q")[0].value;
	if ((q != "フリーワードで検索") && (q != "")) {
		// URIエンコード(UTF8)を行い、URLに追加
		url += "&q=" + encodeURI(q);
	}

	// 取扱商品をチェックした場合はURLに追加(item_codeのチェックボックスの数だけループを回す)
	var item_code = "";
	var item_check_cnt = 0;
	for (var i = 0; i < document.getElementsByName("item_code").length; i++) {
		if (document.getElementsByName("item_code")[i].checked) {
			item_check_cnt++;
			// パラメータitem_codeの値を作成
			if (item_check_cnt > 1) {
				// item_codeのチェックが複数ある場合は値を スペース で連結する(例 item_code=^10001 ^10002 ^10003)
				item_code += " " + document.getElementsByName("item_code")[i].value;
			} else {
				// 1件の場合はそのまま値を格納
				item_code += document.getElementsByName("item_code")[i].value;
			}
		}
	}
	if (item_check_cnt > 0) {
		url += "&item_code=" + item_code;
	}

	// 店舗形態をチェックした場合はURLに追加(tcodeのチェックボックスの数だけループを回す)
	var tcode = "";
	var t_check_cnt = 0;
	for (var i = 0; i < document.getElementsByName("tcode").length; i++) {
		if (document.getElementsByName("tcode")[i].checked) {
			t_check_cnt++;
			// パラメータtcodeの値を作成
			if (t_check_cnt > 1) {
				// tcodeのチェックが複数ある場合は値を , で連結する(例 tcode=1001,1002,1003)
				tcode += "," + document.getElementsByName("tcode")[i].value;
			} else {
				// 1件の場合はそのまま値を格納
				tcode += document.getElementsByName("tcode")[i].value;
			}
		}
	}
	if (t_check_cnt > 0) {
		url += "&tcode=" + tcode;
	}

	// 駐車場ありをチェックした場合はURLに追加
	var park_flg = "";
	if (document.getElementsByName("park_flg")[0].checked) {
		var park_flg = document.getElementsByName("park_flg")[0].value;
		url += "&park_flg=" + park_flg;
	}

	// 採用情報ありをチェックした場合はURLに追加
	var recruit_flg = "";
	if (document.getElementsByName("recruit_flg")[0].checked) {
		var recruit_flg = document.getElementsByName("recruit_flg")[0].value;
		url += "&recruit_flg=" + recruit_flg;
	}

	// 駅名・路線名・キーワード検索入力欄でエンターキーを連続押下時の不具合対応 FF系のみblur()を実行
	var strUA = navigator.userAgent.toLowerCase();
	if(strUA.indexOf("firefox") != -1) {
		obj.blur();
	}

	// 店舗検索(設定したURLへ遷移)
	location.href = url;
}

/**
 * 検索フォームリセット
 *
 * @description	検索フォームをリセットします。
 * @param
 * @return
 */
function resetData() {
	// input要素数
	var inputElmCnt = document.getElementsByTagName("input");

	// 都道府県selectボックスのリセット(実体)
	document.getElementById("kencode")[document.getElementById("kencode").selectedIndex].removeAttribute("selected");
	document.getElementById("kencode").selectedIndex = 0;
	// 都道府県selectボックスのリセット(表示)
	document.getElementById("mySelectText0").textContent = "都道府県で検索";
	// IEの場合はこれで表示を変える
	document.getElementById("mySelectText0").innerText = "都道府県で検索";

	// 市区町村selectボックスのリセット処理
	var cityOpt = document.getElementById("city_name");
	var cityOptDiv = document.getElementById("optionsDiv1");
	// 市区町村のoptionを初期化
	while (cityOpt.hasChildNodes()) {
		cityOpt.removeChild(cityOpt.firstChild);
	}
	// 市区町村のdivを初期化
	while (cityOptDiv.hasChildNodes()) {
		cityOptDiv.removeChild(cityOptDiv.firstChild);
	}
	// optionの1番目に 市区町村で検索 を追加
	var op = document.createElement("option");
	var cityName = document.createTextNode("市区町村で検索");
	op.value = "市区町村で検索";
	op.appendChild(cityName);
	cityOpt.appendChild(op);
	// pタグ部分の1番目に 市区町村で検索 を追加
	cityOptDiv.innerHTML = '<p><a href="javascript:showOptions(1); selectMe(\'city_name\',0,1);">市区町村で検索</a></p>';
	// 市区町村selectボックスの表示変更
	document.getElementById("mySelectText1").textContent = "市区町村で検索";
	// IEの場合はこれで表示を変える
	document.getElementById("mySelectText1").innerText = "市区町村で検索";

	// 駅名検索textボックスのリセット
	document.getElementById("form_txt0").removeAttribute("value");
	document.getElementById("form_txt0").setAttribute("value", "駅名で検索");

	// 路線検索textボックスのリセット
	document.getElementById("form_txt1").removeAttribute("value");
	document.getElementById("form_txt1").setAttribute("value", "路線名で検索");

	// フリーワード検索textボックスのリセット
	document.getElementById("form_txt2").removeAttribute("value");
	document.getElementById("form_txt2").setAttribute("value", "フリーワードで検索");

	// チェックボックスのリセット(実体)
	if (inputElmCnt.length > 0) {
		for (var i = 0; i < inputElmCnt.length; i++) {
			// inputのtypeがcheckbox時の処理
			if (document.getElementsByTagName("input")[i].type == "checkbox") {
				// checkboxのチェックをリセット
				document.getElementsByTagName("input")[i].checked = false;
				document.getElementsByTagName("input")[i].removeAttribute("checked")
			}			
		}
	}
	// チェックボックスの数
	var c_cnt = 0;
	// input要素数からチェックボックスの数を取得
	if (inputElmCnt.length > 0) {
		for (var i = 0; i < inputElmCnt.length; i++) {
			// チェックボックスの数をカウント
			if (inputElmCnt[i].type == "checkbox") {
				c_cnt++;
			}
		}
	}
	// チェックボックスのリセット(表示)
	for (var i = 0; i < c_cnt; i++) {
		var c_name = "myCheckbox" + i;
		document.getElementById(c_name).className = "checkboxArea";
		// チェックの判定が残ってしまうのでclassNameを空にする
		document.getElementsByTagName("Label")[i].className = "";
	}
}

/**
 * ページ送り
 *
 * @description	検索URLを作成し、ページ送りを実装します。
 * @param
 * @return
 */
function pageNation() {
	var url = "";		// 検索用URL
	var pageNum = "";	// 総ページ数
	var start;			// ページ切り替え用変数
	var tmp;
	var loadBlockApi = "";
	
	// 検索URL取得
	tmp = location.href.split("?");
	// 呼び出されたBlockAPI名を格納
	if (tmp[0].match(/\/map\/uc\/PoiCircle/)) {
		loadBlockApi = "/map/uc/PoiCircle?";
	} else {
		loadBlockApi = "/map/uc/PoiAttr?";
	}
	
	url += tmp[1];
	tmp = url.split("&start=");
//	url = "/map/uc/PoiAttr?" + tmp[0];
	url = loadBlockApi + tmp[0];
	
	// 総ページ数を変数に格納
	if (HIT % PAGE != 0) {
		pageNum = Math.ceil(HIT / PAGE);
	} else {
		pageNum = HIT / PAGE;
	}

	// ページ番号の表示
	// 検索結果が1ページしかない時
	if (pageNum <= 1) { 
		// 何も表示しない
	// 検索結果が複数ページの時
	} else {
		// [前へ]ボタンの作成
		if (START == "" || START == 1) {
			// リンクなしの[戻る]ボタン
			document.write('<img src="/uniqlo/img/bt_back.gif" width="41" height="15" alt="前へ" />');
		} else {
			// START-1 のリンクを付与した[戻る]ボタン
			start = parseInt(START) - 1;
			document.write('<a href="' + url + '&start=' + start + '"><img src="/uniqlo/img/bt_back_off.gif" width="41" height="15" alt="前へ" onmouseover="this.src=\'/uniqlo/img/bt_back_on.gif\'" onmouseout="this.src=\'/uniqlo/img/bt_back_off.gif\'" /></a>');
		}

		// ループでページ番号とリンク作成
		for (var i = 1; i <= pageNum; i++) {
			// 総ページが6ページまでの場合
			if (pageNum <= 6) {
				// ページ番号・リンクの表示
				printPageNumber(url, i);
			// 総ページが7ページ以上の場合
			} else if(pageNum >= 7) {
				// 先頭ページ(1～3)
				if (START >= 1 && START <= 3) {
					if (i <= 5 ) {
						// ページ番号・リンクの表示
						printPageNumber(url, i);
					}
					if (i == 5) {
						document.write(' ... ');
					}
					if (i == pageNum) {
						// ページ番号・リンクの表示
						printPageNumber(url, i);
					}
				// 末尾ページ(総ページ数-2 ～ 総ページ数)
				} else if (START >= pageNum - 2 && START <= pageNum) {
					if (i == 1) {
						// ページ番号・リンクの表示
						printPageNumber(url, i);
					}
					if (i == 5) {
						document.write(' ... ');
					}
					if (i >= pageNum - 4) {
						// ページ番号・リンクの表示
						printPageNumber(url, i);
					}
				// 中間ページ(現在のページ-2 ～ 現在のページ+2)
				} else {
					if (i == 1) {
						// ページ番号・リンクの表示
						printPageNumber(url, i);
						if (START != 4) {
							document.write(' ... ');
						}
					}
					if (i >= parseInt(START) - 2 && i <= parseInt(START) + 2) {
						// ページ番号・リンクの表示
						printPageNumber(url, i);
					}
					if (i == pageNum) {
						if (START != pageNum-3) {
							document.write(' ... ');
						}
						// ページ番号・リンクの表示
						printPageNumber(url, i);
					}
				}
			}
		}

		// [次へ]ボタンの作成
		if (START == pageNum || pageNum == "") {
			// リンクなしの[次へ]ボタン
			document.write('<img src="/uniqlo/img/bt_next.gif" width="43" height="15" alt="次へ" />');
		} else {
			// START+1 のリンクを付与した[戻る]ボタン
			start = parseInt(START) + 1;
			document.write('<a href="' + url + '&start=' + start + '"><img src="/uniqlo/img/bt_next_off.gif" width="43" height="15" alt="次へ" onmouseover="this.src=\'/uniqlo/img/bt_next_on.gif\'" onmouseout="this.src=\'/uniqlo/img/bt_next_off.gif\'" /></a>');
		}
	}
}

/**
 * ページ送り番号表示
 *
 * @description	ページ送り番号を表示します。
 * @param
 * @return
 */
function printPageNumber(url, num) {
	if (START == num) {
		// リンクなし
		document.write(' ' + num + ' ');
	} else {
		// リンクあり
		document.write('<a href="' + url + '&start=' + num + '">' + num + '</a>');
	}
}

/**
 * selectMeオーバーライド
 *
 * @description	選択した都道府県の値を取得するためにオーバーライドします。
 * @param
 * @return
 */
function selectMe(selectFieldId, linkNo, selectNo) {
    selectField = document.getElementById(selectFieldId);
    for (var k = 0; k < selectField.options.length; k++) {
        if (k == linkNo) {
            selectField.options[k].selected = "selected";
			// 都道府県を選択したらvalue値(都道府県コード)を格納
			if (selectField.id == "kencode") {
				var kencode = selectField.options[k].value;
				// PoiCountで市区町村を取得するためのURL作成(makeCityListで市区町村リストを動的に作成)
				var poiCount = "/map/uc/PoiCount?grp=uniqlo&vo=mbml&json=1&callback=makeCityList&grpby=city_name&kencode=" + kencode;
				if (this.jsopTag){
					if(this.jsopTag.timerID){
						this.jsopTag.clearTimeoutFunc();
					}
					clearTimeout(this.timerID);
					this.jsopTag.removeScriptTag();
				}
				// JSON取得
				this.jsopTag = new JSONscriptRequest(poiCount,"utf-8");
				this.jsopTag.buildScriptTag();
				this.jsopTag.addScriptTag();
			}
        } else {
            selectField.options[k].selected = "";
        }
    }
    //show selected option
    textVar = document.getElementById("mySelectText" + selectNo);
    var newText = document.createTextNode(selectField.options[linkNo].text);
    textVar.replaceChild(newText, textVar.childNodes[0]);
}

/* 市区町村リスト作成(selectタブ内) */
function makeCityList(obj) {
	// 市区町村リスト作成
	var cityopt = document.getElementById("city_name");
	var cityopt_p = document.getElementById("optionsDiv1");
	var cnt = 0;
	var city_selected = false;
	var op = "";
	var cityName = "";
	var city = "";
	var city_tmp = "";

	// 市区町村のoptionを初期化
	while (cityopt.hasChildNodes()) {
		cityopt.removeChild(cityopt.firstChild);
	}

	// optionの1番目に 市区町村で検索 を追加
	op = document.createElement("option");
	op.value = "市区町村で検索";
	cityName = document.createTextNode("市区町村で検索");
	op.appendChild(cityName);
	cityopt.appendChild(op);

	// pタグ部分の初期化
	cityopt_p.innerHTML = '';
	cityopt_p.innerHTML = '<p><a href="javascript:showOptions(1); selectMe(\'city_name\',0,1);">市区町村で検索</a></p>';

	if (obj.mbml.CountList.Count != undefined) {
		for (var i= 0; i < obj.mbml.CountList.Count.length; i++) {
			city = obj.mbml.CountList.Count[i].count_name;
			cnt++;
			// 市区町村リストの作成
			if (CITY_NAME == city) {
				op = document.createElement("option");
				op.value = city;
				cityName = document.createTextNode(city);
				op.appendChild(cityName);
				cityopt.appendChild(op);
				document.getElementById("mySelectText1").innerHTML = city;
				var selected_cnt = cnt;
				city_selected = true;
			} else {
				op = document.createElement("option");
				op.value = city;
				cityName = document.createTextNode(city);
				op.appendChild(cityName);
				cityopt.appendChild(op);
			}
			cityopt_p.innerHTML += '<p><a href="javascript:showOptions(1); selectMe(\'city_name\',' + cnt + ',1);">' + city + '</a></p>';
		}
		if (selected_cnt > 0) {
			document.getElementById("city_name")[selected_cnt].setAttribute("selected", "true");
		}
		cityopt_p.innerHTML += '</div>';
	}
	
	if (city_selected != true) {
		document.getElementById("mySelectText1").innerHTML = '市区町村で検索';
	}
};

