var aryEkCd = new Array();
var aryEkNm = new Array();

var tmpelmFw = null;
var tmpelmAr = null;

var elmCandWordList = null;

	var elist_html = "";										// ★差込入力例エレメント
	/* 共通オブジェクト					*/
	var	target_textbox = null;									// ★イベント監視対象テキスト
	var	target_resfld = null;									// ★リスト表示オブジェクト
	/* サジェスト用設定値				*/
	var elist_stat = false;										// ★入力例状態
	var slist_stat = false;										// ★候補ワード状態
	var slist_sel  = 0;											// ★候補ワード選択位置
	var slist_on_color = "#ccccff";								// ★候補ワード選択色
	var slist_of_color = "#ccffcc";								// ★候補ワード非選択色
	var slist_coll = null;										// ★候補ワードリスト
	var slist_on_fontW = "normal";								// ★候補ワード選択フォントウェイト
	var slist_of_fontW = "normal";								// ★候補ワード非選択フォントウェイト

	
	/**
	 * 入力例HTML設定
	 */
	elist_html = "";
	elist_html += "<div id='ExampleWrraper' onmouseover=\"elist_stat=true;\" onmouseout=\"elist_stat=false;\">";
	elist_html += "<table bgcolor='#ccffcc' id='ExampleList' width='190px'>	<tr>		<td width='35%'>			&nbsp;		</td>		<td width='50%' align='center'>			<font size='3'><b>入力例</b></font>		</td>		<td width='15%' align='right'>			<font size='1'><a href=\"javascript:doQuickSearch_Main('');\">閉じる</a></font>		</td>	</tr>	<tr>		<td colspan='3' align='center'>			<font size='1'>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 駅名・住所で検索できます。</font>		</td>	</tr>	<tr align='center'>		<td colspan='3'>			<font size='2'><b>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;【よく検索されるワード】</b></font>		</td>	</tr>	<tr>		<td colspan='3'>			<font size='2'>				&nbsp;<a href=\"javascript:doQuickSearch_Main('東京都');\">東京都</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('渋谷区');\">渋谷区</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('大阪');\">大阪</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('恵比寿駅');\">恵比寿駅</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('近鉄');\">近鉄</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('神奈川');\">神奈川</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('横浜');\">横浜</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('2世帯');\">2世帯</a>				<br>				&nbsp;<a href=\"javascript:doQuickSearch_Main('ペット可');\">ペット可</a>			</font>		</td>	</tr>	<tr>		<td colspan='3'>			<font size='1'>*&nbsp;キーワードをクリックするとフォームにキーワードが入力されます。</font>		</td>	</tr></table>";
	elist_html += "</div>";

	/**
	 * ★フォーカスイベント（テキストボックス）
	 */
	function onFocus_Textbox(appcontext) 
	{
		// 2009/7/30 BJB:GuoYF start
		// 郵便番号コード取得
		var fw = "";
		if(tmpelmFw != null) {
			fw = tmpelmFw.attr("value");
		}
		// テキストボックスに文字が入力されていた場合は何もしない
		if ( fw != "" ) {
			//getSuggestList(appcontext);
			return ;
		}
		var pagetext;
		// リスト表示状態設定
		elist_stat = false;
		slist_stat = false;
		// サンプル入力例HTMLを表示
		pagetext = elist_html;
		if(elmCandWordList != null) {
			elmCandWordList.html(pagetext);
		}
		// 2009/7/30 BJB:GuoYF end
		
	}

/**
 * ★リスト消去
 */
function closeList() 
{
	// リスト状態変更
	elist_stat = false;
	slist_stat = false;
	slist_coll = null;
	// 表示中リストの消去
	elmCandWordList.html("<table id='SuggestList'></table>");

}

function setup(elmFw, elmAr, CandWordList) {

	tmpelmFw = elmFw;
	tmpelmAr = elmAr;
	
	elmCandWordList = CandWordList;
	
	
}

	/**
	 * 処理実行ルーチン
	 */
	function doQuickSearch_Main( str ) 
	{
		// strが設定されていなかった場合はテキストの値を設定
		if ( str == "" ) {
			str = tmpelmFw.attr("value");
		}
		tmpelmFw.attr("value", str);
		// リスト消去
		closeList();
	}
	
/**
 * ★サジェストリストデータ取得
 */
function getSuggestList(appcontext) {

	// 郵便番号コード取得
	var fw = tmpelmFw.attr("value");
	var ar = tmpelmAr.attr("value");

	// 郵便番号親コードが取得できない場合は処理終了
	if (fw == '') {
		return;
	}
	// リスト情報初期化
	closeList();
	if (appcontext == "/")
		appcontext = "";
	$.ajax({
		type: "GET",
		url: appcontext + "/bukken/ichiran/JJ010FK015/",
		data: "fw=" + encodeURIComponent(fw) + "&ar=" + ar,
		success: callbackZipSearch,
		error: function() {
			//alert("該当する住所がありません");
		}
	});

	return false;
}

	/**
	 * ★キーアップイベント（テキストボックス）
	 */
	function onKeyUp_Textbox(event, appcontext) 
	{
		// [Enter]キーが入力されたのがサジェスト内か否か
		var sug_flg = false;

		// キーコードチェック（サジェストリスト存在中）
		if ( slist_coll != null ) {
			switch ( event.keyCode ) {
			case 38:				// [↑]
				// 一つ前のリストアイテムの最後を選択
				changeSelect(-1);
				return;
			case 40:				// [↓]
				// 一つ後のリストアイテムを選択
				changeSelect(1);
				return;
			case 13:				// [Enter]
				// 現在選択アイテム内容をテキストボックスに設定
				if ( slist_sel > 0 ) {
					onSelectItem_ListItem();
					sug_flg = true;
				}
				break;
			}
		}

		// キーコードチェック
		switch ( event.keyCode ) {
		//case 8:					// [Backspace]
		case 46:				// [Delete]
		case 13:				// [Enter]
			// 入力されたのがテキストボックス内であれば処理実行
			if ( sug_flg == false ) {
				// テキストフィールド内容を確認
				if ( tmpelmFw.attr("value") == "" ) {
					doQuickSearch_Main( '' );
					// 空の場合は入力例リストの表示
					onFocus_Textbox();
				} else {
					doQuickSearch_Main( '' );
					// サジェストリスト表示
					getSuggestList(appcontext);
				}
			}
			break;
		default:
			// サジェストリスト表示
			getSuggestList(appcontext);
			break;
		}
	}

/**
 * 非同期郵便番号住所検索のコールバックイベント
 */
function callbackZipSearch(resultData) {

	var i = 1;
	var ekCd = "";
	var ekNm = "";

	if ($('RESULTSET JUSHO[NO = "'+ i+'"] FIELD[NAME = EKI_CD]',resultData).text() != "") {
		// サジェストリスト作成
		var pagetext = "";

		// ０番目はテキストの値
		slist_coll = new Array();
		slist_coll[0] = tmpelmFw.attr("value");

		pagetext += "<div id='SuggestWrapper' onmouseover=\"slist_stat=true;\" onmouseout=\"slist_stat=false;\">";
		pagetext += "<table bgcolor='" + slist_of_color + "' width='' id='SuggestList'>";
		pagetext += "<tr height='20' valign='middle'>";
		pagetext += "<td width='35%'>&nbsp;</td>";
		pagetext += "<td width='50%' align='center'>";
		pagetext += "<font size=3 color='#5500ff'><b>";
		pagetext += "候補ワード";
		pagetext += "</b></font>";
		pagetext += "</td>";
		pagetext += "<td width='15%' align='right'>";
		pagetext += "<font size=1><b>";
		pagetext += "<a href=\"javascript:doQuickSearch_Main('');\">";
		pagetext += "閉じる";
		pagetext += "</a>";
		pagetext += "</b></font>";
		pagetext += "</td>";
		pagetext += "</tr>";

		while ($('RESULTSET JUSHO[NO = "'+ i +'"] FIELD[NAME = EKI_CD]',resultData).text() != "" ) {

			ekCd = $('RESULTSET JUSHO[NO = "'+ i+'"] FIELD[NAME = EKI_CD]',resultData).text();
			ekNm = $('RESULTSET JUSHO[NO = "'+ i+'"] FIELD[NAME = EKI_NM]',resultData).text();

			var item = ekNm;

			if (item != "") {
			
				// リスト内容追加
				slist_coll[slist_coll.length] = item;
				// リストアイテム内容作成
				pagetext += "<tr onmouseover=\"onMouseOver_ListItem(" + (i) + ");\" onmouseout=\"onMouseOut_ListItem();\" onmouseup=\"onSelectItem_ListItem();\" id=\"SGITEM" + (i) + "\">";
				pagetext += "<td colspan='3' nowrap><font size='2'>";
				pagetext += slist_coll[slist_coll.length - 1];
				pagetext += "</font></td>";
				pagetext += "</tr>";
			
				//elmAddressList.append('<a href="javascript:void(0);" onkeyup="if (event.keyCode == 13) { doSelection(' + i + '); onBlur_Textbox();}" onmouseup="doSelection(' + i + ');">' + item + '</a><br>');
			}
			aryEkCd[i-1] = ekCd;
			aryEkNm[i-1] = ekNm;
			i++;
		}
		pagetext += "<tr height='20'><td colspan='3'>";
		pagetext += "<font size='1'>";
		pagetext += "*&nbsp;キーワードをクリックするとフォームにキーワードが入力されます。";
		pagetext += "</font></td></tr>";

		pagetext += "</table>";
		pagetext += "</div>";

		// サジェストリスト表示
		slist_stat = false;
		slist_sel = 0;
		elmCandWordList.html(pagetext);

	} else {
		//alert("該当する住所がありません");
	}
}

	/**
	 * ★リストアイテムセレクトイベント（リストアイテム）
	 */
	function onSelectItem_ListItem() 
	{
		// 処理実行
		doQuickSearch_Main( slist_coll[slist_sel] );
	}

/**
 * ★マウスアウトイベント（リストアイテム）
 */
function onMouseOut_ListItem() 
{
	slist_stat = false;
	// 選択中アイテム位置変更（テキストボックスへ）
	slist_sel = 0;
	// 選択アイテム変更
	changeSelect(0);
}

/**
 * ★マウスオーバーイベント（リストアイテム）
 */
function onMouseOver_ListItem( sel ) 
{
	slist_stat = true;
	// 選択中アイテム位置変更
	slist_sel = sel;
	// 選択アイテム変更
	changeSelect(0);
}

	/**
	 * ★リストアイテム選択変更
	 */
	function changeSelect(offnum) 
	{
		if ( slist_sel > 0 ) {
			changeColor( false, document.getElementById("SGITEM" + slist_sel) );
		}

		if      ( offnum > 0 ) {
			if ( (slist_sel + offnum) <= (slist_coll.length - 1) )
				slist_sel = slist_sel + offnum;
			else
				slist_sel = 0;
		}
		else if ( offnum < 0 ) {
			if ( (slist_sel + offnum) >= 0 )
				slist_sel = slist_sel + offnum;
			else
				slist_sel = slist_coll.length - 1;
		}
		else {
			var i;
			for ( i = 1 ; i < slist_coll.length ; i++ ) {
				changeColor( false, document.getElementById("SGITEM" + i) );
			}
		}

		if ( slist_sel > 0 ) {
			changeColor( true, document.getElementById("SGITEM" + slist_sel) );
		}

		// クリックされた時だけTextBoxに反映されれば良いので、コメントアウト。
		//target_textbox.value = slist_coll[slist_sel];
	}

	/**
	 * ★セレクトカラー変更
	 */
	function changeColor(swflg, obj) 
	{
		if ( swflg == true ) {
			obj.style.backgroundColor = slist_on_color;
			obj.style.fontWeight = slist_on_fontW;
		}
		else {
			obj.style.backgroundColor = slist_of_color;
			obj.style.fontWeight = slist_of_fontW;
		}
	}

/**
 * ★ロストフォーカスイベント（テキストボックス）
 */
function onBlur_Textbox() 
{
	if ( elist_stat == false && slist_stat == false ) {
		doQuickSearch_Main('');
	}
}

/**
 * 住所候補選択時処理
 */
function doSelection(index){

	if (aryEkNm[index-1] != null) {
		tmpelmFw.attr("value", aryEkNm[index-1]);
	}

}


