﻿  //HeartRails ExpressＡＰＩを利用しています。
 
	function ekiSearch (){
    //世界測地系の緯度経度を示します。
       var point = new GLatLng(myLatlng[0],myLatlng[1]);
	 


	// 画面表示切替
	
	//題名欄に「目的地の検索」をしている旨の表示をします
	$('kekka_daimei').innerHTML = '<b>最寄駅の検索</b>'; 
	$('page_navi').innerHTML     = '';  //ページナビを消去する
			
	//結果欄と一覧表欄に「只今　目的地設定中の表示をします
	$('yado_kekka').innerHTML = '<b>只今</b>'
	$('yado_ichiran').innerHTML = '<p style="padding:25px"><img src="scr_hol/ajax_load_orange.gif" \/><br />検索中...<\/p>';
	
	// API リクエストURL 生成
	var url = 'http://express.heartrails.com/api/json'
		+ '?method=getStations'
		+ '&x=' + myLatlng[1]
		+ '&y=' + myLatlng[0]
		+ '&jsonp=my_callback'
		
	// リクエスト実施
	var script     = document.createElement( 'script' );
	script.type    = 'text/javascript';
	script.charset = 'utf-8';
	script.src     = url;
	document.getElementsByTagName("head")[0].appendChild( script );
	// 成功すると下の my_callback() が実行される
	
	}
		
	
	

		//----cgiから受信したデータを加工します
function my_callback (json){

	//近くに駅が無い場合は処理をせず目標検索にもどります
	if(!json.response.station.length){
			obSearch();
	}
	
	else
	{
	//var myLatlng[0] = map.getCenter().lat();
        //var myLatlng[1] = map.getCenter().lng();
	
	//GEvent.clearListeners(map, 'click');

	// root node 省略
	var tree = json.response ;
	var view_count =  tree.station.length ;//view_count=実表示件数
	
	var eki_name = new Array ();  
	var eki_prev = new Array ();  
	var eki_next = new Array ();  
	var eki_line = new Array (); 
	var eki_x    = new Array ();  
	var eki_y = new Array ();  
	var eki_dist = new Array ();  
	var eki_pref = new Array (); 

	for (var i=0; i<  view_count; i++){
	eki_name[i] = tree.station[i].name ;
	eki_prev[i] = tree.station[i].prev;  
	eki_next[i] = tree.station[i].next;  
	eki_line[i] = tree.station[i].line; 
	eki_x[i]    = tree.station[i].x;  
	eki_y[i]    = tree.station[i].y;  
	eki_dist[i] = tree.station[i].distance;  
	eki_pref[i] = tree.station[i].prefecture; 
	}

		
	eki_ichiran_html = '<span id="mark_'+ view_count + '" style="padding:6px;"><a href="javascript:void(0)" onclick="this.blur()" ><b>目標地点</b></a></span><br><br>';
		
		
		for (var i = 0; i < view_count; i++ )                           //view_count=実表示件数
           {
		eki_ichiran_html += '<li id="mark_' + i + '" style="padding-right:2px;"><a href="javascript:void(0)" onclick="this.blur()" >' + eki_name[i] + '駅</a>　　' + eki_dist[i] + ' <br>（' + eki_line[i] + '）</li>';
		   }
		
		
	
		
		//各欄に結果を表示するコマンド
		$('kekka_daimei').innerHTML = '<b>最寄の駅検索結果</b>'; 
		$('page_navi').innerHTML ='<b>検索結果</b>'
		$('yado_kekka').innerHTML =  view_count + '件見つかりました';
		$('yado_ichiran').innerHTML = eki_ichiran_html; //対象駅検索結果を設定
		
		
		//今までに作成されたオーバーレイ(マーカー、アイコン等)を削除します
        map.clearOverlays();
		



//------------------------------地図本文-----------------------------------------------
		
	//各データを元に地図中のアイコンを設定します。
		
			var baseIcon = new GIcon();
			baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
			baseIcon.iconSize = new GSize(20, 34);
			baseIcon.shadowSize = new GSize(37, 34);
			baseIcon.iconAnchor = new GPoint(9, 34);
			baseIcon.infoWindowAnchor = new GPoint(9, 2);
			baseIcon.infoShadowAnchor = new GPoint(18, 25);
		
		      
	// 予め設定された位置を中央にに地図を表示します。Center the map on Palo Alto
	//デフォルトはmapに設定します。
			//var map = new GMap2(document.getElementById("map"));
			//map.addControl(new GLargeMapControl());
			//map.addControl(new GMapTypeControl());

	//選択した距離によって店掲載地図の縮尺を決定します
			//show_rangeが何らかの理由で設定されていないときは１０とします。
		//	if(!show_range.innerHTML)
		//	{
		//		show_range.innerHTML = "10"
		//	}
		//	map.setCenter(new GLatLng(myLatlng[0],myLatlng[1]), parseInt(show_range.innerHTML));
		//	map.setMapType(G_MAP_TYPE);
		      
		     
	
			

			
//------------------------------地図本文終了-------------------------------------------------------------------
		
		
//-----------------地図　createMarker----------------------------------------------------------

 // マーカーはＡ，Ｂ，Ｃ・・で表現します。
 // Create a marker whose info window displays the letter corresponding
 // to the given index.
		  function createMarker(point, index) {
		  	 //目標地点だけののアイコンをブルーにします
		  	 if(index ==  view_count)
		  	 {
		  	 	var blueIcon = new GIcon(G_DEFAULT_ICON);
			  	blueIcon.image = "http://gmaps-samples.googlecode.com/svn/trunk/markers/blue/blank.png"; 
				// Set up our GMarkerOptions object
				markerOptions = { icon:blueIcon };
				var marker = new GMarker(point, markerOptions)
				//マーカーの座標位置をページの左上に緯度lat 経度longをオブジェクトmyLatlng配列に格納します。
				 myLatlng[1] = point.lng();
				 myLatlng[0] = point.lat();
		        var html = ('ここにコメントを追加します')
			  }
			 else
			  { 
			    var letter = String.fromCharCode("A".charCodeAt(0) + index);
          		var letteredIcon = new GIcon(baseIcon);
          		letteredIcon.image = "http://www.google.com/mapfiles/marker" + letter + ".png";
          		markerOptions = { icon:letteredIcon };
				var marker = new GMarker(point, markerOptions);
			   }
			
	// 最高10程度に地点を設定します。
	// 地図のマーカーをクリックした時も、ページ中の地名をクリックしても詳細が出るようにします。
	
				var mark_ = new Array
				for( var i = 0; i < view_count; i++ )  //view_count=実表示件数
          		{
				if (index==i){
				var html =('<table width="200" height="60" bgcolor="#eeeeee"><tr><td style="padding:8px;font-size:10pt"><div><b>'  + eki_name[i] + '駅</b></div><div>('  + eki_line[i] +  ')</div><div>この駅までの距離： ' + eki_dist[i] + '</div></td></tr></table>');
				mark_[i] = document.getElementById("mark_"+i);
				if(mark_[i]){mark_[i].onclick = hyoji;};
				};
				}
				if (index == view_count)
				{
				var html =('<table height="70"><tr><td style="padding:4px;font-size:10pt;background-color:#ff0000;color:#ffffff"><b>「最寄の駅」を検索中</b><div style="padding:4px;font-size:10pt;"><a href="javascript:obSearch(1);" ><b>目的地点を変更する</b></a></div></td></tr></table>');
				mark_[view_count] = document.getElementById("mark_" + view_count);
				if(mark_[view_count]){mark_[view_count].onclick = hyoji;};
				}
				
			    
				
				
				
	// ページ内からリンクされたときに詳細を表示します。 
				function hyoji() {
				marker.openInfoWindowHtml(html);
			
				};
				
	// 地図の中でマーカーをクリックした時に詳細を表示します
				GEvent.addListener(marker, 'click', function() {
				 marker.openInfoWindowHtml(html);
				});
			
				return marker;
				};



	// 各地点のマーカーポイントを緯度、経度で設定します。
				for( var i = 0; i < view_count; i++ )  //view_count=実表示件数
          		        { 
					var point = new GLatLng(eki_y[i],eki_x[i]);
					var marker = createMarker(point,i);
					map.addOverlay(marker);
					
				}
				
				
				
	//目標を示すためにblueIconを設定します。
				
					var point = new GLatLng(myLatlng[0],myLatlng[1]);
					var marker = createMarker(point,view_count);
					map.addOverlay(marker);
							
	//------------------------------地図　createMarker終了---------------------------------
	//検索結果が0以外の場合の処理を終了します
                }

        //----my_callbackで受信したデータ加工を終了します

 		}
		
	
		
	
	

    
    

