﻿   
//ここで使用する共通の関数を１つにまとめています。




//トリムで両端の空白を取り除きます
    function trim(argValue)
    {

    return String(argValue).replace(/^[ 　]*/gim, "").replace(/[ 　]*$/gim, "");

    }


   
// 日本測地系（度）から世界測地系（度）に変換
// ＜参考資料＞
// 　http://groups.google.com/group/Google-Maps-API-Japan/browse_thread/thread/d0ce529ce20edc4d/285aac6e0d3497a1
//これはじゃらんで使用するものです。
	function ChangeLocationJapanToGlobal(x, y)
	{ 
	  jx = x / 3600000;
	  jy = y / 3600000;
	  var wy = jy - jy * 0.00010695 + jx * 0.000017464 + 0.0046017;　//世界系緯度
	  var wx = jx - jy * 0.000046038 - jx * 0.000083043 + 0.010040;　//世界系経度
	
	  return new google.maps.LatLng(wy, wx);  //v2よりLatLngは反対となるので最後にxyを入れ替える
		
	}

//一覧表の目標地点をクリックすると基本のマーカー(BasemyMarker)の情報情報ウィンドウを表示する。
function BaseshowInfo(){
        myinfowindow.setContent(BasemyInfo);
	myinfowindow.open(map,BasemyMarker);
        map.panTo(BasemyMarkPosition);
       }



	
//基本のマーカー(BasemyMarker)、情報ウィンドウ(BasemyInfo)の表示後obSearch()へ移動
function show_makinfo() {

 	 myinfowindow.setContent(BasemyInfo);
   	 myinfowindow.open(map,BasemyMarker);
	 map.panTo(BasemyMarkPosition);


      //ドラッグスタートで基本情報以外のマーカーを削除
	google.maps.event.addListenerOnce(BasemyMarker , "dragstart", function(){ 
	myinfowindow.close(map);
	del_all();
	 	}); 

　　　//ドラッグエンドでobSearch();へ移動
　　　	google.maps.event.addListenerOnce(BasemyMarker , "dragend", function(){ 

	//マーカーの座標位置を取得します
	 BasemyMarkPosition = BasemyMarker.getPosition();

	//マーカーの座標位置を中央にします。
	  map.panTo(BasemyMarkPosition);

	//マーカーの座標位置をページの左上に経度緯度として表示します。
	 $('show_x').innerHTML = BasemyMarkPosition.lng();
	 $('show_y').innerHTML = BasemyMarkPosition.lat();

	 obSearch();
	 	});
	}



// 全マーカー、情報ウィンドウ、一覧表を削除します
function del_all() {
       if(myMarker) 
		{
		//中マーカーを全て非表示にします。
	    	 for(i=0; i < myMarker.length; i++){
		  myMarker[i].setMap(null);
	    	 }
		//中マーカーを全て削除(初期化)します
		  myMarker.length = 0;

	       	//情報ウィンドウを全て削除(初期化)します
		  myInfo.length = 0;
		
		//位置情報を全て(初期化)削除します。
		　myMarkPosition.length = 0;
		}
		//一覧表をデフォルト表示に戻します。
		$('kekka_daimei').innerHTML = "<b>周辺検索結果一覧表</b>";　//題名を設定
		$('page_navi').innerHTML = ""; //ページナビをクリア
		$('yado_kekka').innerHTML = ""; //宿結果件数をクリア
		$('yado_ichiran').innerHTML = ""; //宿検索結果をクリア
		

	
       }


//それぞれの施設の検索条件を情報ウィンドウに表示させ実行させます。
function Input_search_condition(shisetsu) {

	switch (shisetsu){

        case 'eki':
	BasemyInfo ='<div style="padding:4px;font-size:8pt;background-color:#cee7b5;">この地点を中心に<br><b><font color="red"> 最寄りの駅検索</b></font><form id="fe" name="fe" action="" method="post" style="text-align:right;margin-top:2px;margin-bottom:6px;"><input valign="bottom" type="button" name="e_btn"value="検索開始" onClick="ekiSearch();fe.e_btn.disabled = true;" style="width:100px;font-size:8pt;padding:2px;margin-top:8px;margin-bottom:0px;background-color:#ffe000;" ></form></div>';
	$('kensaku_navi').innerHTML ='';
	 break;
	
	case 'hot':
	BasemyInfo ='<div style="padding:4px;font-size:8pt;background-color:#cee7b5;">この地点を中心にグルメ店を<br><b><font color="red">ホットペッパーで検索</font></b>します<br>検索条件を設定し、検索開始ボタンをクリックしてください。</div>';
	$('kensaku_navi').innerHTML ='<form id="fh" name="fh" action="" method="post" style="border-top:1px solid #888888;margin-top:4px;margin-bottom:4px;"><b><font color="red">ホットペッパーで検索</font></b><font color="#0000ff">　■検索条件　</font><input type="radio" name="range" value="1">0.3km　<input type="radio" name="range" value="2">0.5km　<input type="radio" checked name="range" value="3">1km　<input type="radio" name="range" value="4">2km　<input type="radio" name="range" value="5">3km　　<input type="hidden" name="lng" value="" /><input type="hidden" name="lat" value="" /><input type="hidden" name="start" value="1" /><input type="hidden" name="count" value="10" /><input type="hidden" name="order" value="1" /><input valign="bottom" type="button" name="h_btn" value="検索開始" onClick="fh.h_btn.disabled = true;hotSearch(1);" style="width:84px;font-size:8pt;padding:2px;background-color:#ffe000;" ></form>';
	 break;

	case 'guru':
	BasemyInfo ='<div style="padding:4px;font-size:8pt;background-color:#cee7b5;">この地点を中心にグルメ店を<br><b><font color="red">ぐるなびで検索</font></b>します<br>検索条件を設定し、検索開始ボタンをクリックしてください。</div>';

	$('kensaku_navi').innerHTML ='<form id="fg" name="fg" action="" method="get" style="border-top:1px solid #888888;margin-top:4px;margin-bottom:4px;"><b><font color="red">ぐるなびで検索</font></b><font color="#0000ff">　■検索条件　</font><input type="radio" name="range" value="1">0.3km　<input type="radio" name="range" value="2">0.5km　<input type="radio" checked name="range" value="3">1km　<input type="radio" name="range" value="4">2km　<input type="radio" name="range" value="5">3km　　<input valign="bottom" type="button" name="g_btn" value="検索開始" onClick="fg.g_btn.disabled = true;gurnSearch(1);" style="width:84px;font-size:8pt;padding:2px;background-color:#ffe000;" ></form>';
	 break;

	 case 'jalan':
	BasemyInfo ='<div style="padding:4px;font-size:8pt;background-color:#cee7b5;">この地点を中心に宿を<br><b><font color="red">じゃらんで検索</font></b>します<br>検索条件を設定し、検索開始ボタンをクリックしてください。</div>';

	$('kensaku_navi').innerHTML = '<form id="f" name="f" action="" method="post" style="border-top:1px solid #888888;margin-top:4px;margin-bottom:4px;font-size:8pt;"><b><font color="red">じゃらんで検索</font></b><font color="#0000ff">　　■検索条件　　</font><input type="radio" checked name="range" value="1.0">1km<input type="radio" name="range" value="2.0">2km<input type="radio" name="range" value="3.0">3km<input type="radio" name="range" value="5.0">5km<input type="radio" name="range" value="10.0">10km<input type="radio" name="range" value="20.0">20km　　<input type="radio" checked name="order" value="" >目的地順<input type="radio" name="order" value="2">低料金順<input type="radio" name="order" value="3">高料金順<input type="radio" name="order" value="4">口コミ順<input type="hidden" name="x" value="" /><input type="hidden" name="y" value="" /><input type="hidden" name="count" value="10" /><input type="hidden" name="start" value="1" />　<input type="hidden" name="pict_size" value="1" /><input type="hidden" name="xml_ptn" value="1" /><input type="button" name="j_btn" value="検索開始" onClick="f.j_btn.disabled = true;doSearch(1);" style="vertical-align:bottom;width:84px;font-size:8pt;padding:2px;background-color:#ffe000;" ></div></form>';
	 break;

	case 'shise':
	BasemyInfo ='<div style="padding:4px;font-size:8pt;background-color:#cee7b5;">この地点を中心に周辺施設を<br><b><font color="red">Yahooで検索</font></b>します<br>検索条件を設定し、検索開始ボタンをクリックしてください。</div>';
	$('kensaku_navi').innerHTML ='<form id="fy" name="fy" action="" method="post" style="border-top:1px solid #888888;margin-top:4px;margin-bottom:4px;"><b><font color="red">周辺施設を検索</font></b><font color="#0000ff">　　■検索条件　　</font><input type="radio" name="dist" value="0.3">0.3km　<input type="radio" name="dist" value="0.5">0.5km  　<input type="radio" checked name="dist" value="1">1km 　	<input type="radio" name="dist" value="2">2km　<input type="radio" name="dist" value="3">3km　　<input type="hidden" name="lon" value="" /><input type="hidden" name="lat" value="" /><input type="hidden" name="b" value="1" /><input type="hidden" name="category" value="landmark" /><input type="hidden" name="datum" value="wgs" /><input  type="button" name="y_btn" value="検索開始" onClick="fy.y_btn.disabled = true;shisetsuSearch(1);" style="width:84px;font-size:8pt;padding:2px;background-color:#ffe000;" ></form>';
	 break;

	case 'tabe':
	BasemyInfo ='<div style="padding:4px;font-size:8pt;background-color:#cee7b5;">この地点を中心にグルメ店を<br><b><font color="red">食べログで検索</font></b>します<br>検索条件を設定し、検索開始ボタンをクリックしてください。</div>';
	$('kensaku_navi').innerHTML ='<form id="ft" name="ft" action="" method="post" style="border-top:1px solid #888888;margin-top:4px;margin-bottom:4px;"><b><font color="red">食べログで検索</font></b><font color="#0000ff">　　■検索条件　　</font><input type="radio" checked name="SearchRange" value="small">0.3km<input type="radio" name="SearchRange" value="medium">0.6km<input type="radio" name="SearchRange" value="large">1.5km　　<input type="radio" checked name="SortOrder" value="totalscore" >総合評価順<input type="radio" name="SortOrder" value="taste">料理・味順<input type="radio" name="SortOrder" value="service">サービス順<input type="radio" name="SortOrder" value="mood">雰囲気順<input type="radio" name="SortOrder" value="highprice">高価格順<input type="radio" name="SortOrder" value="lowprice">低価格順　　<input type="hidden" name="Latitude" value="" /><input type="hidden" name="Longitude" value="" /><input type="hidden" name="PageNum" value="1" /><input type="button" name="t_btn" value="検索開始" onClick="ft.t_btn.disabled = true;tabeSearch();" style="width:84px;font-size:8pt;padding:2px;background-color:#ffe000;" ></form>';
	break;
	

	default:
	BasemyInfo ='なにも選択されていません';
	}
	 myinfowindow.setContent(BasemyInfo);
   	 myinfowindow.open(map,BasemyMarker);
}









	
//---- [javascript] サーバが一定時間応答しなかったら処理を打ち切る--開始


//setTimeoutで「5秒たったら通信が完了したかどうかチェックする処理」を登録する
function callInProgress (xmlhttp) {
  switch (xmlhttp.readyState) {
  case 1: case 2: case 3:
    return true;
    break;
  // Case 4 and 0
  default:
    return false;
    break;
  }
}

//XMLHttpRequest の通信の状態 xmlhttp.readyState
//0 = uninitialized（読み込み開始前の初期状態）
//1 = loading（読み込み中）
//2 = loaded（とりあえず読み込んだ）
//3 = interactive（読み込んだデータを解析中）
//4 = complete（読み込んだデータの解析完了、または失敗した。つまり処理が終わった） 



function showFailureMessage() {
  //alert('ネットワークがダウンているので、少し時間を空けてから試してみてください');
  BasemyInfo = '<div style="background-color:#ffc0cb;font-size:8pt;padding:4px;">ネットワークがダウンているので、<br>少し時間を空けてから試してみてください</div>';
  show_makinfo();
}


// Register global responders that will occur on all AJAX requests
Ajax.Responders.register({
  onCreate: function(request) {
    request['timeoutId'] = window.setTimeout(
     function() {
	//alert('タイムアウト設定しました'); 
      // If we have hit the timeout and the AJAX request is active, abort it and let the user know
      if (callInProgress(request.transport)) {
        request.transport.abort();
        showFailureMessage();
	     // Run the onFailure method if we set one up when creating the AJAX object
	      if (request.options['onFailure']) {
	          request.options['onFailure'](request.transport, request.json);
		//alert('onFailureのタイムアウト設定しました'); 
	        }
	      if (request.options['onException']) {
	          request.options['onException'](request.transport, request.json);
		//alert('onExceptionのタイムアウト設定しました'); 
	        }
      }
    },
    5000 // Five seconds
    );
  },
  onComplete: function(request) {
    // Clear the timeout, the request completed ok
    window.clearTimeout(request['timeoutId']);
	//alert('タイムアウト解除しました'); 
	
    }
});


// [javascript] サーバが一定時間応答しなかったら処理を打ち切る-----終了


