//	Ajaxによる郵便番号検索
//	テキストボックス"zip1""zip2"内でキー入力されたタイミングで実行する
//	検索結果はHTML形式で id="zipresult" に返す
//	IE 6.0 SP2, Firefox 1.5.0.3にて動作確認
//	20060516	作成
//
function zipsearch(){
	/* XMLHttpRequestオブジェクト作成 */
	var xmlHttp = createXmlHttp();
	if (xmlHttp == null) {
//		window.alert("XMLHttpRequest非対応のブラウザです。");

	} else {
		// XMLHttpRequestオブジェクトの状態が変更されたタイミング
		// で行うべき処理を定義
		xmlHttp.onreadystatechange = function() {

			// データ受信に成功した場合、受信データから郵便番号、住所情報を取り出し、HTMLに整形したうえでHTMLタグ上にコンテンツを反映
			if ((xmlHttp.readyState == 4) && (xmlHttp.status == 200)) {
//				window.alert("正常にリソースが取得できました\n" + "メディアタイプ : "+ xmlHttp.getResponseHeader('Content-Type'));
//				window.alert("XMLのルート要素のタグ名 : " + xmlHttp.responseXML.documentElement.tagName);
				var aData = xmlHttp.responseXML.documentElement;
				var data = aData.childNodes;
				var contents = "";
				var i
				var getZipCode
				var getAddress
				var getPrefCode
//				alert("検索件数="+ data.length);

				if (data.length >= 1) {
					contents = "<ol type='square' class='regist_zip'>";
					for (i = 0; i < data.length; i++) {
						// 郵便番号を得る
						try {
							getZipCode = data[i].childNodes[0].firstChild.nodeValue;
						} catch (e) {
							getZipCode = "0000000";
						}
						// 住所を得る
						try {
							getAddress = data[i].childNodes[1].firstChild.nodeValue;
						} catch (e) {
							getAddress = "FirefoxではXML文書中のtab,空白,改行が1ノードと解釈されてしまうので無駄な文字コードは除去して下さい";
						}
						// 都道府県コードを得る
						try {
							getPrefCode = data[i].childNodes[2].firstChild.nodeValue;
						} catch (e) {
							getPrefCode = "12";
						}
						// HTMLを作成する
						contents += "<li>"
							+ "<a href='javascript:void(0)' onclick=\""
							+ "document.f1.iq_zipcode.value='" + getZipCode.substr(0, 3) + "-" + getZipCode.substr(3, 7) + "'; "
							+ "document.f1.iq_prefcode.value='" + getPrefCode + "'; "
							+ "document.f1.iq_address1.value='" + getAddress + "'; "
							+ "document.f1.iq_address1.focus(); "
							+ "cursorlast(document.f1.iq_address1); "
							+ "var zipresult = document.getElementById('zipresult'); "
							+ "zipresult.innerHTML = '';\" "
							+ "title=\""+ getAddress +"\">"
							+ getZipCode.substr(0, 3) + "-" + getZipCode.substr(3, 7)
							+ "&nbsp;" + getAddress
							+ "</a></li>";
					}
					contents += "</ol>";
				}
				// HTML描画
				var zipresult = document.getElementById('zipresult');
				zipresult.innerHTML = contents;
			}
		}

		// 入力文字が3桁以上の場合に、HTTP GETメソッドでデータを送信
		if ((document.f1.iq_zipcode.value.length >= 3) && (document.f1.iq_zipcode.value != "000")) {
//			window.alert("検索！…" + "zipsearch.asp?z1="+ document.f1.iq_zipcode.value);
				xmlHttp.open("GET", "/common/zipsearch.asp?z1="+ document.f1.iq_zipcode.value ,true);
				xmlHttp.send(null);
		}
	}
}

function createXmlHttp(){
	if (window.XMLHttpRequest) {			 // Mozilla, Firefox, Safari, IE7
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {		 // IE5, IE6
		try {
			return new ActiveXObject("Msxml2.XMLHTTP");    // MSXML3
		} catch(e) {
			return new ActiveXObject("Microsoft.XMLHTTP"); // MSXML2まで
		}
	} else {
		return null;
	}
}


function cursorlast(ctrl) {
	if( ctrl.createTextRange )
	{
		// IE
		var rng = ctrl.createTextRange();
		rng.moveStart("character", ctrl.value.length);
		rng.moveEnd("character", ctrl.value.length);
		rng.select();
	}
	else if( ctrl.setSelectionRange )
	{
		// FireFox/Mozilla
		ctrl.setSelectionRange(ctrl.value.length, ctrl.value.length);
	}
}
