﻿  //ぐるなびＡＰＩを利用しています。
  //店のURLへ直接リンクするようにしています。
 
	
		
	
	
function gurnSearch (start_page){
	//mapクリックを無効にします。	
	google.maps.event.clearListeners(map, 'click');

	//基本マーカー以外全てを削除します。
        　del_all();	

	     //利用する変数を設定します。
             var str_html = ""   ;                  //htmlエラー表示の取得
	     var res_count = 0  ;                  //対象店の該当件数を取得
	     var view_count = 0  ;                 //このページの表示件数を取得
	     var shop_url = new Array ();           //各店URLの取得
	     var shop_name = new Array ();         //各店名を取得
	     var shop_photo = new Array ();        //各店写真のURLを取得
	     var shop_genrecpy = new Array ();        //各店の料理名を取得
	     var shop_area = new Array ();        //各店の簡単な住所を取得
	     var shop_avrate = new Array ();        //各店の平均予算を取得
	     var shop_genre = new Array ();    //各キャッチコピーを取得
	     var shop_open = new Array ();         //各店の営業時間を取得
	     var shop_close = new Array ();         //各店の休業日を取得
	     var shop_x = new Array ();           //各緯度を取得
	     var shop_y = new Array ();           //各経度を取得
	     var result_html = "";                  //html検索結果を表示する
	     var pagenavi_html = "";                //htmlページナビゲーションを表示する
	     var shop_ichiran_html = "";             //htmlで店一覧を作成
	      
	    
	    //世界測地系の緯度経度を示します。
	     var wy = BasemyMarkPosition.lat(); //世界系緯度
	     var wx = BasemyMarkPosition.lng(); //世界系経度
         
          //世界測地系を日本測地系に変更します。 
		var jy = wy * 1.000106961 - wx * 0.000017467 - 0.004602017;
	    	var jx = wx * 1.000083049 + wy * 0.000046047 - 0.010041046;

		//cgiに必要なデータを送信します
		
		//開始ページ、ミリ秒単位の緯度経度をクエリの要素として加えます
		//開始位置の設定
		var start = 1 ;
		start = (start_page -1) * 10 + 1;
		//検索距離(range)の設定
		var map_range ;
			if(document.fg.range[0].checked){map_range = 1;}
			if(document.fg.range[1].checked){map_range = 2;}
			if(document.fg.range[2].checked){map_range = 3;}
			if(document.fg.range[3].checked){map_range = 4;}
			if(document.fg.range[4].checked){map_range = 5;}
			
		//題名欄に「ぐるなび店の検索」をしている旨の表示をします
		$('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>';
		
		//GETリクエストによるデータ送信のため送信先(search_gurn.cgi?)にクエリ(pars)を付け加えます
		//レスポンスの測地系(coordinates_mode)を世界測地系にします
	   var pars = "" ;
	   pars = '&coordinates_mode=2&longitude=' + jx + '&latitude=' + jy + '&range=' + map_range + '&offset=' + start ;
	  
	  var myAjax = new Ajax.Request(
		'search_gurn.cgi?' + pars,
		{    
			method: 'get', 
			onComplete:function(request) {   
			  $('yado_ichiran').innerHTML = '<p style="padding:8px"><b>読み込み終了しました</b></p>';
	                  showResponse (request);
	　		  },   
	                onSuccess: function(request) {   
			  $('yado_ichiran').innerHTML = '<p style="padding:8px"><b>読み込み成功しました</b></p>';
	                  },   
	                onFailure: function(request) {   
	                  request.transport.abort();
			  },   
	                onException: function (request) {   
	                  request.transport.abort();
			  }
		}
		);
		
		
		//----cgiに必要データを送信終了





		//----cgiから受信したデータを加工します
		function showResponse (request){
	     //cgiデータをcsv方式で受信します
		var rcvdata = new Array();
		rcvdata = request.responseText.split("%,") ;
		
			
		//検索結果が ０件の場合(code=600)は目的地検索「obSearch(0)」を実行します
		if(rcvdata[0] == 600 || rcvdata[1] == 0 || rcvdata[1] =="")
		{
			//基本マーカーに情報ウィンドウを設定します。
　　　　 		BasemyInfo = '<div style="background-color:#ffc0cb;font-size:8pt;padding:4px;">ぐるなび検索の結果<br>このポイントでは見つかりませんでした。<br>マーカーをドラッグし移動させてください。<br>クリック移動も可能になります。</div>';
			$('yado_ichiran').innerHTML ='';

		}

		//検索結果が ０件の以外の場合の処理を行います。
				
		else
		
		{
       
	      
	      
	     //各変数に値を設定します
		 str_html = rcvdata[0] ;
	         res_count = parseInt(rcvdata[1]) ;
		 view_count = parseInt(rcvdata[2]) ; //正確ではない為、次のステップで変更している
		 
	        //表示件数が１０件に満たない場合はview_countを変更します。
		 var hasukensu = 0 ;
		 hasukensu =  res_count- (start-1) ;
		 if( hasukensu < 10 )
		   {
		   view_count = hasukensu ;
		   }
		 for( var i = 0; i < view_count; i++ ) 
			 {

			      shop_url[i]        = trim(rcvdata[(i * 10) + 3]);      //各店番号の取得
			      shop_name[i]      = rcvdata[(i * 10) + 4];            //各店名を取得
			      shop_photo[i]     = trim(rcvdata[(i * 10) + 5]);      //各店写真のURLを取得
			      shop_genrecpy[i]  = rcvdata[(i * 10) + 6];            //各店ジャンルキャッチコピーを取得
			      shop_avrate[i]    = trim(rcvdata[(i * 10) + 7]);            //平均予算
			      shop_genre[i] = rcvdata[(i * 10) + 8];            //各キャッチコピーを取得
			      shop_open[i]      = rcvdata[(i * 10) + 9];           //各店の営業時間を取得
			      shop_close[i]     = rcvdata[(i * 10) + 10];           //各店の休業日を取得
			      shop_x[i]         = rcvdata[(i * 10) + 11];           //各緯度を取得
			      shop_y[i]         = rcvdata[(i * 10) + 12];           //各経度を取得
			     
		      }
		   
		
		
	//表示可能な最大ページ数を計算します
		var max_page = (res_count%10 > 0) ? parseInt(res_count/10) + 1 : parseInt(res_count/10);//ページ数


	//検索結果が１００件を超える場合は１００件に制限します
		max_page = (max_page > 10 ) ? 10 : max_page ;  //ページを10(１００件)に制限する
		

	//掲載が２ページ以上ある場合はページナビゲーションを設定します
		pagenavi_html =""
		if (start_page > 1)
			{  
			pagenavi_html += '<a href="javascript:void(0)" onclick="gurnSearch (' + (start_page - 1) + ');">←前へ</a>　';								}
		for (var i = 1; i <= max_page; i++ )
			{
			if (start_page == i)
				{
				pagenavi_html += '<span id="page_navi" style="background-color:#fff000;">' + i + '</span>　';
				}
			else
				{
				pagenavi_html += '<a href="javascript:void(0)" onclick="gurnSearch (' + i + ');">' + i + '</a>　';
				}
			}
		if (start_page < max_page && 1 <= max_page )
			{
			  pagenavi_html += '<a href="javascript:void(0)" onclick="gurnSearch (' + (start_page + 1) + ');">次へ→</a>';
			
			}
          
				
	//検索結果を表示します。
	//検索結果res_countが ０件の場合は目的地検索「obSearch(0)」を実行できるようにします
		
		result_html += '<div>検索結果：' + res_count + ' 件<span>（うち ' + ((start_page-1)*10 + 1) + '－' + ((start_page-1)*10+view_count) + '件を表示）</span></div>';
	
		
			
	//このページの検索状態表示と店リストを作成します
		shop_ichiran_html = "<div>検索状態 :　" + str_html + "</div>";
		//alert('view_count=' + view_count);
		for (var i = 0; i < view_count; i++ )                           //view_count=実表示件数
           {
		shop_ichiran_html += '<li id="mark_'+ i + '" style="padding-right:2px;"><a href="javascript:void(0)" onclick="this.blur()" >' + shop_name[i] + '</a><br>（' + shop_genre[i] + '）</li>';
		   }
		
		
		

	//各欄に結果を表示するコマンド
		
		$('kekka_daimei').innerHTML = '<b>ぐるなび店舗検索結果</b>'; 
		$('page_navi').innerHTML = pagenavi_html;  //ページナビを設定
		$('yado_kekka').innerHTML = result_html;   //店結果件数を設定
		$('yado_ichiran').innerHTML = shop_ichiran_html; //店検索結果を設定
		
	


//------------------------------地図本文-----------------------------------------------
		
//地図をクリックすると情報ウィンドウを閉じるよう再設定します。
	 google.maps.event.addListener(map, 'click', function(event){
                myinfowindow.close(map);
	});


//基本のマーカー(BasemyMarker)をクリックすると情報を表示するように設定します。
	google.maps.event.addListener(BasemyMarker, 'click', function(){
	BaseshowInfo();
	});		

//情報ウィンドウの内容を設定します(view_count=実表示件数)

	for( var i = 0; i < view_count; i++ )
		{
		myInfo[i]= '<table width="260" height="195" style="background-color:#ffcccc"><tr><td colspan="2" style="padding:4px;font-size:11pt"><b><a href= "' + shop_url[i] +'" target="_blank">' + shop_name[i] + '</b>（詳細）</a><br><br><span style="padding:2px;font-size:8pt">' + shop_genrecpy[i] + '</span></td></tr><tr><td style="padding:4px;"><img src="' + shop_photo[i] + '" width="120" height="100" alt="" ><br><span style="padding:2px;font-size:7pt;">写真提供：ぐるなび </span></td><td style="padding:4px;font-size:8pt;">【営業時間】<br><span style="padding:2px 2px 2px 6px">' + shop_open[i] + '</span><br>【定休日】<br><span style="padding:2px 2px 2px 6px">' + shop_close[i] + '</span><br>【平均予算】<br><span style="padding:2px 2px 2px 6px">' + shop_avrate[i] + '円</span><br></td></tr></table>';
		
		} 		
		

// 各地点に中マーカー(A～J)位置を緯度、経度で設定します。
	for( var i = 0; i < view_count; i++ )  //view_count=実表示件数
          		{ 
		myMarkPosition[i] = new google.maps.LatLng(shop_y[i],shop_x[i]);
	}


// 各中マーカー(A～J)に情報ウィンドウを表示させます。
       function showInfo(num){
        var hyoji = function()
	   {
		myinfowindow.setContent(myInfo[num]);
		myinfowindow.open(map,myMarker[num]);
		map.panTo(myMarkPosition[num]);
           };

        google.maps.event.addListener(myMarker[num], 'click', hyoji);
   

        var mark_link = document.getElementById("mark_" + num );
	if(mark_link){mark_link.onclick = hyoji;};
     
        }
 

 // 各中マーカー(A～J)を地図に設定します。
     for(i=0; i < myMarkPosition.length ; i++){
        myMarker[i] = new google.maps.Marker({
        position:myMarkPosition[i], 
	icon: Mkimage[i],
	shadow : Mkshadow,
        map: map
	});   
	showInfo(i);
      };


	//基本マーカーに情報ウィンドウを設定します。
　　　　 BasemyInfo = '<div style="background-color:#ffff00;font-size:8pt;padding:4px;"><b>施設検索の結果<br> ' + result_html +'</b> １０件以上の場合、一覧表より別のページへ移動できます。<br>別の場所を検索する場合は<br>マーカーをドラッグし移動させてください。<br>クリック移動も可能になります。</div>';


//検索結果が0以外の場合の処理を終了します
                }


//----cgiから受信したデータ加工を終了します----showResponse (request)の終了
		//情報ウィンドウを表示し、obSearch();へ
		show_makinfo();
		}
				
	//gurnSearchの終了
		
	}
	

    
    


