// ---------------------------------------------------------------- //
//  ajax で郵便番号検索を行う
// ---------------------------------------------------------------- //

var lastZip = "";	   // 最後に検索した郵便番号
function getAddress( formid, argz, argp, arga ) {
	var jklform = new JKL.Form( formid );
	var zip = jklform.getValue( argz )
	if ( zip.length >= 7 && lastZip != zip ) {
		lastZip = zip;		  // 最後に検索した郵便番号を保存
		var http1 = newXMLHttpRequest();
		if ( ! http1 ) return false;
		var url = 'ajaxzip.cgi?zip=' + escape(zip);
		// GET メソッド、URL 指定、非同期(=true)
		http1.open('GET', url, true);
		// 無名関数をハンドラとする
		http1.onreadystatechange = function () {
			handle_setAddress ( http1, jklform, argp, arga );
		};
		http1.send(null);
	}
	return true;
}

// ---------------------------------------------------------------- //
//  newXMLHttpRequest ---- XMLHttpRequest オブジェクトの生成
// ---------------------------------------------------------------- //

function newXMLHttpRequest () {
	if ( typeof ActiveXObject!="undefined" ) {
		return new ActiveXObject("Microsoft.XMLHTTP");
	} else if ( typeof XMLHttpRequest!="undefined" ) {
		return new XMLHttpRequest();
	} else{
		return null;
	}
}

// ---------------------------------------------------------------- //
//  ajax 通信完了後に呼び出されるハンドラ
// ---------------------------------------------------------------- //
//  0 = uninitialized
//  1 = loading
//  2 = loaded
//  3 = interactive
//  4 = complete
// ---------------------------------------------------------------- //

var lastAddr = "";
function handle_setAddress( http1, jklform, argp, arga ) {

	if (http1.readyState == 4 && http1.status == 200) {

		var newJpref = "";
		var newPrefCD  = "";
		var newAddr = "";

		var resXML = http1.responseXML;
		if ( resXML.documentElement ) {
			var items = resXML.documentElement.getElementsByTagName('item');
			if ( items && items.length > 0 ) {
					var item1 = items[0];
					var xprefj = item1.getElementsByTagName('jpref');
					var xprefc = item1.getElementsByTagName('pref_cd');
					var xcity  = item1.getElementsByTagName('jcity');
					var xlocal = item1.getElementsByTagName('jlocal');
					var jcity  = "";
					var jlocal = "";
					if ( xprefj  != null ) newJpref = xprefj[0].firstChild.data;
					if ( xprefc  != null ) newPrefCD  = xprefc[0].firstChild.data;
					if ( xcity  != null ) jcity = xcity[0].firstChild.data;
					if ( xlocal != null ) jlocal = xlocal[0].firstChild.data;
					newAddr = newJpref+jcity+jlocal;
				}
		}

		// 現在の住所を取り出す
		var oldAddr = jklform.getValue( arga );

		if ( newPrefCD && oldAddr == lastAddr ) {
			// 都道府県名でマッチングする
			jklform.setValue( argp, newJpref );
			// 都道府県コードでマッチングする
			// jklform.setValue( argp, newPrefCD );
			// 住所を記入する
			jklform.setValue( arga, newAddr );
			lastAddr = newAddr;
		}
	}
}

// ---------------------------------------------------------------- //
