//<![CDATA[

var map; //GOOGLEMAP
var mapZoom = 1; //拡大率
var markerClick;//mouseの動作を判別するフラグ[ 1=ふきだし表示 / 0=地図移動 ]
var store_searched = 'start';//サイトの絞込み検索からのアクセスを判別するフラグ

var link_url='./?m=pc&a=shop_data&shop=';//ふきだしのリンク先
var cgi_from_search = "./map/shop_data_xml.php";//選択された店舗のリクエスト
var cgi_from_move = './map/xml_gen.php';//地図内でのリクエストに対応
	
function shop_page_load(){
		//GoogleMap--main---------
		if(GBrowserIsCompatible()){
			map = new GMap(document.getElementById("map"));
			
			/* コントローラー */
			map.addControl(new GLargeMapControl());//大きめのコントローラー
			//map.addControl(new GSmallMapControl());//小さいコントローラー
			map.addControl(new GMapTypeControl());
			//map.addControl(new GOverviewMapControl());
			map.enableDoubleClickZoom();//ダブルクリックによるズーム機能
			map.enableContinuousZoom();//ダブルクリックによるズーム機能(スムース)
			
			
			
			/*--検索結果表示--*/
			
			if(store_searched=="start"){
				display_stores(map,cgi_from_search,store_searched);
			}
			
			/* マップ移動中 */
			GEvent.addListener(map, "move", function() {
				markerClick = 0;
			});
			

			
			/* マップ移動終了（すべての移動終了） */
			GEvent.addListener
				(map, 'moveend', function(){
									if(!markerClick){
										var point = map.getCenterLatLng();//中心経緯を取得
										var bounds = map.getBoundsLatLng();//地図の四隅の経緯を取得
										
										/* サーバへ送信 */
			
										var minX = "?sX="+parseFloat(bounds.minX);
										var maxX = "&gX="+parseFloat(bounds.maxX);
										var minY = "&sY="+parseFloat(bounds.minY);
										var maxY = "&gY="+parseFloat(bounds.maxY);
										var send_cgi  = cgi_from_move + minX + maxX + minY + maxY;
										if(store_searched == 'end'){
											display_stores(map,send_cgi);
										}
										store_searched='end';
									}//end--markerClick
								});	//GEvent.addListener
			
				
		}else{
		// 未対応ブラウザへの出力
		}//end--if(GBrowserIsCompatible());
		
	//--------------------------------------------------
	/*
	+ [関数名]: display_stores() 
	+ [概要]  : 店舗情報を表示
	+ [引数]  map / url：送信先のcgi 
	*/
	var url;
	var centFLG;
	function display_stores(map,url,store_searched){
		var request = GXmlHttp.create();
		request.open("GET", url, true);
		request.onreadystatechange = function() {
			//通信完了---
			if (request.readyState == 4 && request.status == 200) {
				markerGen(map,request,store_searched);	
			}//-end--readystate
		}
		/*送信---------+*/
		request.send(null);
		
	}
	//--------------------------------------------------
	
	/*
	+ [関数名]: markerGen() 
	+ [概要]  : xmlから取得した店舗情報を表示
	+ [引数]  map / request
	*/
	function markerGen(map,request,store_searched){
		//map.clearOverlays();//初期化
		
		var xmlDoc = request.responseXML;
		var targetNames = xmlDoc.getElementsByTagName("lawson");
		var targetLength = targetNames.length;//全体数を取得

		if(targetLength > 0){
			//-XMLから値を取得、変数にset--------------------------------+
			var shop_name = xmlDoc.getElementsByTagName("shop_name");
			var shop_address = xmlDoc.getElementsByTagName("shop_address");
			var phone = xmlDoc.getElementsByTagName("phone");
			var link = xmlDoc.getElementsByTagName("c_shop_list_id");
			var lat_point = xmlDoc.getElementsByTagName("latitude");
			var lon_point = xmlDoc.getElementsByTagName("longitude");
			//------------------------------------------------------------+
		
			//初期表示の場合、取得した店舗情報の一番目を中心経緯にset
			if(store_searched == 'start'){
				if(lat_point[0].childNodes.length>0) var La = lat_point[0].childNodes[0].nodeValue;
				if(lon_point[0].childNodes.length>0) var Lo = lon_point[0].childNodes[0].nodeValue;
				show_center_point(La,Lo,mapZoom);
			}
		
						
			for(i=0; i<targetLength; i++){	
			//地図============				
				/*--ふきだし内容--*/
				var pophtml;
				pophtml  = '<div style="font-size:12px;">';
				if(link[i].childNodes.length>0) pophtml += '<b><a href="'+link_url+link[i].childNodes[0].nodeValue+'" title="'+shop_name[i].childNodes[0].nodeValue+'" target="_self">'+shop_name[i].childNodes[0].nodeValue+'</a></b><br>';
				pophtml += shop_address[i].childNodes[0].nodeValue+'<br>';
				if(phone[i].childNodes.length>0) pophtml += phone[i].childNodes[0].nodeValue;
				pophtml += '</div>';
				/*----------------*/
				
				if(lat_point[i].childNodes.length>0 && lon_point[i].childNodes.length>0) var point = new GLatLng(lat_point[i].childNodes[0].nodeValue,lon_point[i].childNodes[0].nodeValue); //window.alert(point);
				var marker = new GMarker(point);
	
				infoBody(marker,pophtml);//--ふきだしをセット
				map.addOverlay(marker);	
			}//end--loop
		}
	}
	//--------------------------------------------------
	
			
	/*
	+ [関数名]: infoBody 
	+ [概要]  : インフォウィンドウの内容を設定
	+ [引数] marker ：object / pophtml：ふきだしに表示するhtml
	*/
	function infoBody(marker,pophtml) {
		GEvent.addListener(marker, "click", function(){
			marker.openInfoWindowHtml(pophtml);
		});
	}
	//--------------------------------------------------
	/*
	+ [関数名]: show_center_point()
	+ [概要]  : 経緯を参照してmapの中心をセット
	+ [引数] latitude / longitude
	*/
	var latitude;
	var longitude;
	var ZoomLevel;

	function show_center_point(latitude,longitude,ZoomLevel){
		 map.centerAndZoom(new GLatLng(latitude,longitude), ZoomLevel);
	}
	//--------------------------------------------------
	




}//end--function map_load();






//]]>
