/*---------------------------------------------------------------------*/
/*! @file ta1.js
 *  @brief ＴＡ１
/*---------------------------------------------------------------------*/

var g_pref_id;

//---------------------------------------------------------------------
//	マーカーイベント
//	@param pData Discription
//	@return Description
//---------------------------------------------------------------------
function EventMarker ( pData, id ){

	g_pref_id = id;
	
	if( pData.x ){		
		var marker = new GMarker( new GPoint( pData.x, pData.y ), o_Icon );
		o_Map.addOverlay( marker );
		GEvent.addListener( marker, "click", function( overlay, point ){
			sendRequest( on_loaded1, '&pref='+id+'&id='+pData.tid+'&no='+pData.tno, 'POST','./ta2.php',true,true);
		} );
	}
}


//---------------------------------------------------------------------
//	マーカーイベント
//	@param pData Discription
//	@param flag Discription
//	@return Description
//---------------------------------------------------------------------
function EventMarker2 ( pData ){
	//店舗マーカー作成
	if( pData.x ){
		
		var marker = new GMarker( new GPoint( pData.x, pData.y ), o_Icon2 );
		
		//クリックイベント
		GEvent.addListener( marker, "click", 
			function( overlay, point ){
				ClickLastEvent( pData.x, pData.y, pData.name, pData.tname, pData.code, pData.zip, pData.tel, pData.addr, pData.tno );
			}
		);
		o_Map.addOverlay( marker );
	}
/*	else{
		//メッセージ表示
		DataSearchProcess( false );		
		return false;
	}
*/	return true;
}



//---------------------------------------------------------------------
//	最後のクリックイベント
//	@param vhMarker 座標データ
//	@param param パラメータ
//---------------------------------------------------------------------
function ClickLastEvent( x, y, name, tname, code, zip, tel, addr, tno ) {
	
	//店舗情報セット
	var tblLast = new Array( name,"店舗名",tname,"金融機関(店舗)コード",code+"("+tno+")","郵便番号",zip,"電話番号",tel,"住所", addr );
	document.getElementById('right_info').innerHTML = CreateRightInfo( tblLast, false );
	
	if( x ){
		//リセットボタン等
		if(g_pref_id){
			document.getElementById('reset').innerHTML = getConfigButton( new Array(x,y,MAP_FOURTH_ZOOM), true, new Array(g_pref_id, code, '"'+tno+'"', '"'+name+'"', '"'+tname+'"') );
		}else if(!g_pref_id && res.center.id){
			document.getElementById('reset').innerHTML = getConfigButton( new Array(x,y,MAP_FOURTH_ZOOM), true, new Array(res.center.id, code, '"'+tno+'"', '"'+name+'"', '"'+tname+'"') );
		}
		
		//メッセージ表示
		DataSearchProcess( true );
		
		//ズーム
		o_Map.centerAndZoom( new GPoint( x, y ), MAP_FOURTH_ZOOM );
		
		//JAname
		document.getElementById('ja_name').innerHTML = "<h4>"+name+"（金融機関コード："+code+"）店舗一覧</h4><p>店舗名をクリックしていただいても、地図を切り替えることができます。</p>";	
	} else {
		//メッセージ表示
		DataSearchProcess( false );
	}
}


//---------------------------------------------------------------------*/
// マーカーイベントデータ取得
//  @param oj  Discription
//  @return Description
//---------------------------------------------------------------------*/
function on_loaded1 (oj) {

 	eval( 'var res = '+ decodeURIComponent( oj.responseText ) );

	//マーカー削除
	o_Map.clearOverlays();
	//ズーム
	if( res.center.x ){
		o_Map.centerAndZoom( new GPoint( res.center.x, res.center.y ), MAP_THIRD_ZOOM );
	}
	
	//テーブル作成
	var tableHtml="<table border=0 cellpadding=0 cellspacing=0 id=\"list_tenpo\" >";
	tableHtml += CreateUnderTable2( g_tblTenpoU, null, true );

	//店舗イベント作成
	for( var i = 0; i < res.param.length; i++ ){

		//マーカーイベント
		EventMarker2( res.param[i], true );
		
		//本店検索(座標が無い場合は別の場所)
		if( res.param[i].tno == res.center.no ){
					
			var tblTenpo = new Array( res.param[i].name,"店舗名",res.param[i].tname,"金融機関(店舗)コード",res.param[i].code+"("+res.param[i].tno+")","郵便番号",res.param[i].zip,"電話番号",res.param[i].tel,"住所", res.param[i].addr );
			document.getElementById('right_info').innerHTML = CreateRightInfo( tblTenpo, false );
			
			//パンくず作成
			document.getElementById('pankuzu').innerHTML = CreatePankuzu( GetJaName( res.center.id ), res.param[i].name, res.center.id );

			//JAname
			document.getElementById('ja_name').innerHTML = "<h4>"+res.param[i].name+"（金融機関コード："+res.param[i].code+"）店舗一覧</h4><p>店舗名をクリックしていただいても、地図を切り替えることができます。</p>";
						
			//マーカー
			if( !res.center.x ){
				DataSearchProcess(false);
			}else{
				//リセットボタン等
				document.getElementById('reset').innerHTML = getConfigButton( new Array(res.center.x,res.center.y,MAP_THIRD_ZOOM), false, new Array(res.center.id, res.param[i].code, res.param[i].tno, '"'+res.param[i].name+'"', '"'+res.param[i].tname+'"') );
//"<p class=\"mapbtn_s\"><img src=\"images/btn_mapreset.gif\" alt=\"表示位置をリセット\" width=\"111\" height=\"29\" border=\"0\" onClick=\"o_Map.centerAndZoom( new GPoint( "+res.center.x+", "+res.center.y+" ), "+MAP_THIRD_ZOOM+" )\" class=\"btn_reset\" /></p>";
			}
		}
		
		//下の表作成
		var under_param = new Array(res.param[i].tname,res.param[i].tno,res.param[i].zip,res.param[i].addr,res.param[i].tel );
		tableHtml += CreateUnderTable2( under_param, res.param[i], false );
	}
	tableHtml += "</table>";
	
	//下の表
	document.getElementById('under_info').innerHTML = tableHtml;
		
	//マップの説明
	document.getElementById('ja_info').innerHTML = "<p class=\"map_copy\"><img src=\"images/icon_point.gif\" alt=\"JAバンク店舗アイコン\" width=\"44\" height=\"31\" / class=\"icon\" />が店舗の位置になります。クリックすると店舗の詳細がご覧いただけます。</p>";

}


//---------------------------------------------------------------------
//	下のテーブル作成
//	@param kanalist テーブルをつくる文字列配列
//	@return HTMLコード
//---------------------------------------------------------------------
function CreateUnderTable( kanalist, id, jaline ) {

	var gyoAllNum	=	new Array(0,0,0,0,0,0,0,0,0,0,0);// 各行のＪＡ数
	
	var gyoline = 0; 	// 行の位置（あ行、か行）
	var gyoNo	= 0; 	// 行の数(あ行全ての数)
	var ansNo	= 0; 	// 文字行チェックの答え
	var shinren = '';
	//各行のJA数を取得する
	for( var w = 0; w < kanalist.param.length; w++ ){
		gyoAllNum[ jaline.split(',')[w] ] += 1;
	}
	//-------------	テーブル作成 --------------------//
	var allword="<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" id=\"list_keniki\">";

	//テーブルあ行枠作成
	allword += GetJapaneseLine( gyoAllNum[gyoline], gyoline );

	for( var w = 0; w < kanalist.param.length; w++ ){
		//データチェック
		var jline	= jaline.split(',')[w];//CheckJapaneseLine( kanalist.param[w].kana );
				
		if( jline != 10 ){
			//新しく配置する文字が今の行と同じかどうか
			if( jline == gyoline ){	//追加
				//全ての数が端の数なら改行処理
				if( !(gyoNo % JA_COL_NUM) && gyoNo ){
					//文字がもともと無いとき
					allword += "</tr><tr>";
					gyoNo = 0;
				}
			}else{ //次の行へ
				var moveline = jline - gyoline;	//移動行数を取得
				
				//行を増やし,列に４つ埋めてない場合は足し、
				allword += MatrixCover( moveline, gyoAllNum, gyoline );

				//行を移動
				gyoline += moveline;
				
				//次のテーブル行セット
				allword += GetJapaneseLine( gyoAllNum[gyoline], gyoline );
				gyoNo = 0;
			}
			//JA名データセット
			allword += "<td><a href=# onClick=\"sendRequest( on_loaded1, '&pref="+id+"&id="+kanalist.param[w].tid+"&no="+kanalist.param[w].tno+"','POST','./ta2.php',true,true)\">"+kanalist.param[w].name+"</a></td>";
			gyoNo++;
		}else{
			shinren += "<td><a href=# onClick=\"sendRequest( on_loaded1, '&pref="+id+"&id="+kanalist.param[w].tid+"&no="+kanalist.param[w].tno+"','POST','./ta2.php',true,true)\">"+kanalist.param[w].name+"</a></td>";
		}
	}
	//まだ[わ行]までいってない場合
	if( shinren ){
		allword += MatrixCover( 10-gyoline, gyoAllNum, gyoline );
		//信連をその他にセット
		allword += GetJapaneseLine( gyoAllNum[10], 10 )+shinren;
		//足りない部分を補う
		allword += MatrixCover( 1, gyoAllNum, 10 );
	}else{
		allword += MatrixCover( 11-gyoline, gyoAllNum, gyoline );
	}	
	allword += "</tr></table>";
	return allword;
}

//---------------------------------------------------------------------
//	行列の足りない部分を埋める
//	@param row 	埋める行 
//	@param col 	埋める列
//	@param line 行枠html
//	@return HTML
//---------------------------------------------------------------------
function MatrixCover ( row, col, line )
{
	var html = '';
	var tdnum = (col[line]) ? JA_COL_NUM-(col[line] % JA_COL_NUM) : JA_COL_NUM;
	if( tdnum == JA_COL_NUM && col[line] > 0 ) tdnum = 0;
	
	for( var i = 0; i < row; i++ ){
		//trがまだ呼ばれてないとき & １行以上飛び越えるとき
		if( (col[line] == 0 || i > 0) && line+i > 0){
			html += GetJapaneseLine( col[line+i], line+i );
			tdnum = JA_COL_NUM;
		}
		for( var j = 0; j < tdnum; j++ ){
			html += "<td align=\"center\" width=\""+JA_TD_WIDTH+"\">&nbsp;</td>";
		}
		html += "</tr>";
	}
	return html;
}


//---------------------------------------------------------------------*/
// 下のテーブル作成(店舗版)
//  @param param	テーブルを作るパラメータ
//  @param flag		<a>タグ有効か
//  @return テーブルＨＴＭＬ
//---------------------------------------------------------------------*/
function CreateUnderTable2( param, data, flag )
{
	var classTable = new Array("name","number","zip","address","tel");
	var allword = "<tr>";
	for( var i = 0; i < param.length; i++ ){
		if( !flag ){
			if( i == 0 ){
				allword += "<td class="+classTable[i]+"><a href=# onClick=\"ClickLastEvent( '"+data.x+"', '"+data.y+"', '"+data.name+"', '"+data.tname+"', '"+data.code+"', '"+data.zip+"', '"+data.tel+"', '"+data.addr+"', '"+data.tno+"' )\">"+param[0]+"</a></td>";
			}else{
				allword += "<td class="+classTable[i]+">"+param[i]+"</td>";
			}
		}else{
			allword += "<th class="+classTable[i]+">"+param[i]+"</th>";
		}
	}
	allword += "</tr>";
	return allword;
}

