﻿//////////////////////////////////////////////////////////////////////////////
//
// Kankyo-Taxi GoogleMap上での運賃計算
//             ぐるなびWEBAPIサービス 飲食店検索
//             じゃらんWEBAPIサービス 空室情報検索
//						 LiveDoorWeatherHacks Webサービス お天気情報
//
//last modefied 2007.08.21 m.nagano // 関西ハイタク事業協同組合
//
//////////////////////////////////////////////////////////////////////////////

var geocoder=null;　　　　　　　//GeoCording
var map=null;                   //GoogleMap
var defaultMAPSIZE=16;　　　　　//GoogleMap Size
var centerPOINT='';　　　　　　 //CurrentPoint(Lat,Lng)
var defRANGE='2';		//Gurunabi検索範囲
var defJaLanRANGE='0.5';	//JaLan検索範囲
var carTYPE='1';                //1:中型 0:小型
var KYORI_KEISU=1.75	;   	//直線距離から実測値近似値を求めるための距離補正係数


function getDistanceFromMap(){
//GoogleMap

var points = new Array();
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.addControl(new GScaleControl());

//		map.addControl(new GOverviewMapControl(new GSize(200,150)));
//  関協事務局default
		centerPOINT=new GLatLng(34.69761,135.51679);
		map.setCenter(centerPOINT, defaultMAPSIZE);

		map.clearOverlays();

//add 20061219 GeoCording
    geocoder = new GClientGeocoder();

//検索コメント初期化
	document.getElementById("gresult").innerHTML = getInitCom(1);
	document.getElementById("JaLanresult").innerHTML = getInitCom(2);

////Textbox入力エリア
   		var startText=document.getElementById("address");
			var destiText=document.getElementById("address_end");
			var startPnt=document.getElementById("startLatLng");
			var endPnt=document.getElementById("endLatLng");

//再計算ボタン
		var htmx='<input type="button" value="再計算" id="btn" onClick="clear_cal_result();" />';
		document.getElementById("re_calc").innerHTML=htmx;
		//var formButton = document.getElementById("btn");

//再検索ボタン
		var htmx='<input type="button" value="再検索" id="clrbtn" onClick="clearMap();" />';
		document.getElementById("re_search").innerHTML = htmx;

//距離料金計算ボタン
		var htmx = '<input type="button" value="距離料金計算" id="calbtn" onClick="getFee();" />';
		document.getElementById("calfee").innerHTML=htmx;

//車両 中型/小型オプションボタン
		var typ_Radio1 = document.getElementById("rd1");
		var typ_Radio2 = document.getElementById("rd2");

//乗車地降車地ボタン
			var htmx='<input type="button" value="乗車地" size="15" id="btn2" onClick="" />';
			document.getElementById("start_loc").innerHTML=htmx;
			var htmx='<input type="button" value="降車地" size="15" id="btn22" onClick="" />';
			document.getElementById("dest_loc").innerHTML=htmx;

		  var StartPoint = document.getElementById("btn2");
		  var DestiPoint = document.getElementById("btn22");

//ぐるなびじゃらん検索ボタン
			var htmx='<input type="button" value="飲食店・ホテル検索" id="gnavibtn" onClick="kSearch01();" />';
			document.getElementById("kankyoSearch").innerHTML=htmx;

			var GnaviButton = document.getElementById("gnavibtn");

//ぐるなび検索範囲リストボックス
			var htmx ='<font size="-1">ぐるなび検索範囲</font><br /><select id="range_sel" onChange="selDistance(this)"><option value="1">300m</option><option value="2" selected>500m</option><option value="3">1000m</option><option value="4">2000m</option><option value="5">3000m</option></select></form>';
			document.getElementById("guruRange").innerHTML=htmx;

//じゃらん検索範囲リストボックス
			var htmx ='<font size="-1">じゃらん検索範囲</font><br /><select id="JaLanrange_sel" onChange="JaLan_selDistance(this)"><option value="0.3">300m</option><option value="0.5" selected>500m</option><option value="1">1000m</option><option value="2">2000m</option><option value="3">3000m</option></select></form>';
			document.getElementById("JaLanRange").innerHTML=htmx;

//
//GoogleMapクリックイベント処理：PolyLine描画
//-------------------------------------------------------------------
//	GEvent.addListener(map,"click",function(overlay,point){
//		points.push(point);
//		if (points.length>1){
//				map.addOverlay(new GPolyline(points,'#ff5500',6,0.6));
//				var dist=0;
//				var p=0;

//				while(p !=(points.length-1) ){
//						if ((points[p]) && (points[p+1])){
//							dist += Gdistance(points[p],points[++p]);
//						}else{
//							p++;
//						}
//				}
//			if (dist>2000) { dist+=273; }

//			document.getElementById("distance").innerHTML=Math.floor((dist/1000)*10)/10+"km";
//			document.getElementById("fee").innerHTML=TaxiFee(dist,getRadio())+"円";
//		}
//	});


//乗車地　位置移動ボタンクリックイベント：GoogleMap描画
	GEvent.addDomListener(StartPoint,"click",function(){
			clearMap();
		  geocodingFromLocation(startText.value);
	});
//降車地　位置移動ボタンクリックイベント：GoogleMap描画
	GEvent.addDomListener(DestiPoint,"click",function(){
			clearMap();
		  geocodingFromLocation(destiText.value);
	});

//ぐるなび検索ボタンクリックイベント：飲食店検索
//	GEvent.addDomListener(GnaviButton,"click",function(){
//		var default_Distance='2';    //地図中心から５００ｍ以内を検索
//  		var current_pageNumber='1';  //デフォルト表示ページ番号
//		centerPOINT=map.getCenter(); //地図中心Lat Lng;
//
//		clearMap();
//		guruSearch(centerPOINT ,current_pageNumber, default_Distance,0);
//		JaLanSearch(centerPOINT ,current_pageNumber, defJaLanRANGE,0);
//
//	});

//infoWindowクローズイベント処理:infoWindow表示後、
//                               地図中心がずれた場合に元に戻す
GEvent.addListener( map, 'infowindowclose',function(){
		map.returnToSavedPosition();
		}
	);
}
//////////////////////////////////////////////////////////////////////////////
/////////////////// end of MAIN function getDistanceFromMap //////////////////
//////////////////////////////////////////////////////////////////////////////

function kSearch01(){
//------------------------------------------------------------
		var default_Distance='2';    //地図中心から５００ｍ以内を検索
  	var current_pageNumber='1';  //デフォルト表示ページ番号
		centerPOINT=map.getCenter(); //地図中心Lat Lng;

		clearMap();
		guruSearch(centerPOINT ,current_pageNumber, default_Distance,0);
		//alert("JaLanSearch start...");
		JaLanSearch(centerPOINT ,current_pageNumber, defJaLanRANGE,0);
}


function moveS1(str){
//-------------------------------------------------------
//乗車地　位置移動ボタンクリック
			clearMap();
		  geocodingFromLocation(str);
}
function moveE1(str){
//-------------------------------------------------------
//降車地　位置移動ボタンクリック
			clearMap();
		  geocodingFromLocation(str);
}

function getFee(){
//-------------------------------------------------------
//距離計算
   	var start1=document.getElementById("address").value;
		var end1=document.getElementById("address_end").value;

		  clear_cal_result();
			showPoints(start1,end1);
}

function clearMap(){
//-------------------------------------------------------
//googleMap上のオーバレイ,検索結果初期表示
//
			points=new Array();
			map.clearOverlays();

			document.getElementById("gresult").innerHTML = getInitCom(1);
			document.getElementById("JaLanresult").innerHTML = getInitCom(2);
}
function clear_cal_result(){
//--------------------------------------------------------
//料金、距離初期化
			dist=0;
			document.getElementById("distance").innerHTML= "0km";
			document.getElementById("fee").innerHTML="円";
}
function getInitCom(num){
//---------------------------------------------------------
//ぐるなび、じゃらん初期時点説明文
		var htmx='';
		if (num=='1'){
			htmx +='<a href="http://www.gnavi.co.jp/"><img src="http://apicache.gnavi.co.jp/image/rest/b/api_155_20.gif" width="155" height="20" border="0" alt="グルメ情報検索サイト　ぐるなび"></a><br />';
			htmx += '<font size="-1">ぐるなび飲食店検索<br /><br />☆地図の中心付近から指定された距離範囲で”ぐるなび様”に登録されている飲食店を検索します。</font>';
		}else{
			htmx = '<a href="http://jws.jalan.net/"><img src="http://jws.jalan.net/content/images/jws_88_50_blue.gif" alt="じゃらん Web サービス" title="じゃらん Web サービス" border="0"></a><br />';
			htmx += '<font size="-1">じゃらんホテル検索<br /><br />☆地図の中心付近から指定された距離範囲で”じゃらん様”に登録されている宿泊施設を検索します。</font>';
		}
		htmx += '<br /><font size="-1">検索範囲を指定して飲食店・ホテル検索ボタンをクリックしてください</font>';

		return htmx;
}
void function dummyx(){
//
}

function showPoints(address1,address2){
//-------------------------------------------------------
//２地点の緯度経度から直線距離と関協中型タクシー料金を表示
//

  var s1=null;
	var e1=null;
//出発地のジオコーディング
	geocoder.getLatLng(address1,function(point1){
			s1=point1;
	});

//到着地のジオコーディング
	geocoder.getLatLng(address2,function(point2){
	//alert("geocorder2 :"+point2);
	e1 = point2;
	//timerid = setTimeout('dummyx()', 5000);
	//緯度経度数値を文字列から取出
		var st_loc=new Array();
		var ed_loc=new Array();

		if ((s1 != null)&&(e1 != null)){
			st_loc[0]=s1.x;
			st_loc[1]=s1.y;
			ed_loc[0]=e1.x;
			ed_loc[1]=e1.y;
		

			//２地点間を結ぶ直線と９０度との角度から距離補正係数算出
				var xDis=ed_loc[0]-st_loc[0];
				var yDis=ed_loc[1]-st_loc[1];
				var degree=Math.atan2(yDis,xDis);

			//２地点間の直線距離に距離係数を乗じて補正する。45度の角度で最大:1.35
				
				//alert("getDistance(st_loc,ed_loc)= :"+getDistance(st_loc,ed_loc) );
				//var mdist=getDistance(st_loc,ed_loc)*getKyoriKeisu(Math.abs(degree * 180/Math.PI));
				var mdist=Gdistance(s1,e1)*getKyoriKeisu(Math.abs(degree * 180/Math.PI));
				var kdist=mdist/1000;

			//carTYPE:車種選択(1:中型 0:小型）
				var carTYPE = getRadio();

			//fee:タクシー料金計算
				var fee=TaxiFee(mdist,carTYPE);

			document.getElementById("distance").innerHTML= (""+edtDistance(kdist)).slice(0,5) +"km";
			document.getElementById("fee").innerHTML=fee+"円";
		}else{
			alert("出発地か目的地のいずれかが見つけられませんでした。");
		}


	});
}
function getKyoriKeisu(degreex){
//-------------------------------------------------------
//直線距離の距離補正値を返す

	var degx=Math.abs(degreex);
	var retval=0;

	while ( degx>45 ){ degx -= 90; }
	//alert("degree= :"+degx);

	if (degx == 0){
		retval = 1;
	}else{

    //alert( "1 :Math.abs(degx)/45= :" + Math.abs(degx)/45 );
		//alert( "2 :(KYORI_KEISU-1)*100= :" + (KYORI_KEISU-1)*100 );
		//alert( "3 :((KYORI_KEISU-1)*100) )/100= :" + (( (KYORI_KEISU-1)*100) )/100  );

		retval = 1 + ( Math.abs(degx)/45*((KYORI_KEISU-1)*100) )/100;
	}
	//alert("retval= :"+retval);
	return retval;
}


function getDistance(from ,to){
//-------------------------------------------------------
//
		var dist=0;
		var from_x = from[1] * Math.PI / 180;
		var from_y = from[0] * Math.PI / 180;
		var to_x   =   to[1] * Math.PI / 180;
		var to_y   =   to[0] * Math.PI / 180;
		var deg    = Math.sin(from_y) * Math.sin(to_y) + Math.cos(from_y) * Math.cos(to_y) * Math.cos(to_x-from_x);
		dist   = 6378140*(Math.atan(-deg/ Math.sqrt(-deg*deg+1)) +Math.PI /2 );

		return dist;
}
function edtDistance(dist){
//-------------------------------------------------------
//文字列から緯度経度を返す
//(i) "(nnn.nnnnnn,nn.nnnnnnnn)"
//
	var dmStart = (""+dist).indexOf(".")+1;
	return Math.round(dist*fact(10,dmStart+2))/fact(10,dmStart+2);
}

function fact(num,kai){
//-------------------------------------------------------
	var retval=1;
	for (var i=1;i<=kai;i++){
		retval = retval*num;
	}
	return retval;
}

function geocodingFromLocation(address) {
// ------------------------------------------------------
// 住所、地点名から地図の中心点を移動させる
// (i) 住所or地点名(駅名等）
//
  var cicon = new GIcon(centerIcon);

	if (address!=""){
    if (geocoder) {
        geocoder.getLatLng(address,function(point) {
            if (!point) {
              alert(address + " not found");
            } else {
              map.setCenter(point, defaultMAPSIZE);
 							centerPOINT = map.getCenter();
							var marker = new GMarker(point);
               //var marker = new GMarker(point,{
							 //		draggable     : true ,
							 //		bouncy  			:	true,
							 //		bounceGravity	:	3
							 //		} );
               map.addOverlay(marker);
              //del 20070629 marker.openInfoWindowHtml(address);
            }
          }
        );
     }
	}
}

function Gdistance(from ,to){
//-------------------------------------------------------
		var from_x = from.x * Math.PI / 180;
		var from_y = from.y * Math.PI / 180;
		var to_x   =   to.x * Math.PI / 180;
		var to_y   =   to.y * Math.PI / 180;
		var deg    = Math.sin(from_y) * Math.sin(to_y) + Math.cos(from_y) * Math.cos(to_y) * Math.cos(to_x-from_x);
		var dist   = 6378140*(Math.atan(-deg/ Math.sqrt(-deg*deg+1)) +Math.PI /2 );
		return dist;
}

function getRadio(){
//-------------------------------------------------------
//ラジオボタンのクリック個所を返す
//
	var arr = document.getElementsByName('rd_sel');
	for(var i=0;i<arr.length;i++){
		if(arr[i].checked) return arr[i].value;
	}
}


function TaxiFee(distance,typex){
//-------------------------------------------------------
//関協タクシー料金検索
//(i) distance:距離 typex:1 中型 type:2 小型
//
if(typex=='1'){           //中型
	var baseFee    = 660;
	var per_dist   = 273;
	}else{                  //小型
	var baseFee    = 640;
	var per_dist   = 305;
}
var surCharge  = 80;
var retVal     = 0;
var over2000   = distance-2000;
var Discount55 = 5000;


//料金計算
	if((0<distance) && (distance<=2000)){
		retVal=baseFee;
	}
	else if (Math.floor(over2000/per_dist)!=(over2000/per_dist) ) {
		retVal=baseFee+(Math.ceil(over2000/per_dist))*surCharge;
	}
	else if (over2000 % per_dist == 0){
		retVal=baseFee+(Math.floor(over2000/per_dist))*surCharge;
	}
//遠距離割引
	if (retVal>Discount55){
		return Discount55+(retVal-Discount55)/2;
	}
	else{
		if (retVal < baseFee){ retVal=0; }
		return retVal;
	}
}

function selDistance(oj){
//-------------------------------------------------------
// リストボックスの選択からぐるなびサーチguruSearchをコール

var zoomlevel='0';

	if(oj.selectedIndex != 0){
       defRANGE = oj.options[oj.selectedIndex].value;
	}
//ズームレベル調整
		if (defRANGE > '2'){ 
			zoomlevel= defRANGE-2;
		}else{
			zoomlevel= defRANGE-3;
		}
			map.setZoom(defaultMAPSIZE - zoomlevel);

 //ぐるなびサーチ 
    	guruSearch(map.getCenter(),1,defRANGE,1);
 			JaLanSearch(map.getCenter(),1,defJaLanRANGE,0);
}



function guruSearch(pointxy,current_page,area,clear_flg){
//-------------------------------------------------------
//ぐるなびサーチ：google mapの中心点付近の飲食店を検索
//(i) pointxy				:latitude,longitude
//    current_page	:表示ページ
//    area					:検索対象範囲
//    clear_flg			:flg=1 マップクリアを行う flg=0 行わない
//
	var lne=0;     		//rest行カウンタ
	var htm='';
	var tid=null;

	//centerPOINT = map.getCenter();   //検索ボタン押した時点の地図中心座標


	document.getElementById("gresult").innerHTML="<font size='-1'>ぐるなび検索中…しばらくお待ち下さい。</font>";
  //gresult.innerHTML="検索中…しばらくお待ち下さい。";
	//var timerid2 = setTimeout('dummyx()', 5000);

	//alert("guruSearch :"+area);

   // サーバーからの応答時の処理を定義
      var callback = function(data){
			var timerid1 = setTimeout('dummyx()', 10000);
				if ( data['response'] ){
					if (clear_flg=='1'){ map.clearOverlays(); }

					while (data['response'].rest[lne] ){
			
							if (lne=='0'){ htm = edtPageControl(data,current_page,area); }

							var letter   = String.fromCharCode("A".charCodeAt(0) + lne);
							var shopName = data['response'].rest[lne].name.stripTags();

							htm += '[ '+ letter +' ]'
										+ '<a href=\"'+ data['response'].rest[lne].url 
										+ '\" target=\"_blank\" ><font size="-1">'
										+ shopName
										+ '</font></a><br />\n';
						addMarker(data,lne);
 						lne++;
					}
				}else{
					htm = '<font size="-1">検索に失敗しました。もう一度検索ボタンを押して見てください。表示される場合があります。</font>';
				}
				//$("gresult").innerHTML=htm;
				document.getElementById("gresult").innerHTML = htm;
				
  	};

	var lng=pointxy.lng();
	var lat=pointxy.lat();


	var urix="../manage/getGnaviAPI2.php?lat="+lat+"&lng="+lng+"&dist="+area+"&offp="+current_page;
	var jkl = new JKL.ParseXML(urix);  // 送信先URLの指定

  jkl.async(callback);  // 非同期通信の設定

  jkl.parse();          // リクエスト開始
}

//void function guruDrawMarker(){
//------------------------------------------------------
//マーカー再描画
//	var lne=0;
//			while (data['response'].rest[lne] ){
//				addMarker(data,lne);
//				lne++;
//			}
//}

function edtPageControl(data,cur_page,areadist){
//------------------------------------------------------
//ぐるナビ検索結果のページコントロール用リンクを編集
	var retval  = '';     //戻り値htmlタグ
	var MaxPage	=  0;     //MAXページ数

//リンク編集用
	var linkd		=	'';
	var linkd0	=	''; 
	var logox		='<a href="http://www.gnavi.co.jp/"><img src="http://apicache.gnavi.co.jp/image/rest/b/api_155_20.gif" width="155" height="20" border="0" alt="グルメ情報検索サイト　ぐるなび"></a><br />';
  var	linkd1 	='<a href="javascript:void(0)" onClick="SguruJaLan(map.getCenter(),';
	//Maxページ数//
	MaxPage = Math.ceil( data['response'].total_hit_count / 10) ;


	for (i=1 ; i<=MaxPage ; i++ ){
			if (i==cur_page){
				linkd='' + i + ' ';
			}else{
				linkd = linkd1 + i + ',' + areadist + ',1 )">'+i+' '+'</a>';
			}
			retval += linkd;
	}
		retval = logox + retval;
// 	retval +='<br />';
//	retval +='<a href="http://www.gnavi.co.jp/"><img src="http://apicache.gnavi.co.jp/image/rest/b/api_155_20.gif" width="155" height="20" border="0" alt="グルメ情報検索サイト　ぐるなび"></a>';
	retval +='<br /><br />';
	return retval;
}

function SguruJaLan(pointxy,cur_page,areadist){
	    guruSearch(pointxy,cur_page,areadist,1);
			JaLanSearch(pointxy,1,defJaLanRANGE,0);
}
function SJaLanguru(pointxy,cur_page,areadist){
			JaLanSearch(pointxy,cur_page,areadist,1);
			guruDrawMarker();
	    //guruSearch(pointxy,1,defRANGE,0);
			
}


var baseIcon = new GIcon();
var centerIcon = new GIcon();
//baseIcon.shadow = "http://www.google.com/mapfiles/shadow50.png";
baseIcon.shadow = "../co_img/shadow50.png";
centerIcon.shadow ="../co_img/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);

centerIcon.iconSize = new GSize(20, 34);
centerIcon.shadowSize = new GSize(37, 34);
centerIcon.iconAnchor = new GPoint(9, 34);
centerIcon.infoWindowAnchor = new GPoint(9, 2);
centerIcon.infoShadowAnchor = new GPoint(18, 25);




function addMarker(data,glne){
//--------------------------------------------------------------
//
  	var latx=data['response'].rest[glne].latitude;
		var lngx=data['response'].rest[glne].longitude;

		var point=new GLatLng(latx,lngx);

		map.addOverlay( createCenterMarker(centerPOINT));
		map.addOverlay( createMarker(point,glne, data) );
}

function createCenterMarker(point){

	  var cicon = new GIcon(centerIcon);

		cicon.image = "../co_img/arrow-white.png";
		var marker = new GMarker(point, {
		icon					:	cicon,
    draggable     :	true,
    bouncy        : true,
    bounceGravity : 4 });

	return marker;
}

function createMarker(point, index, data) {
//--------------------------------------------------------------
//マーカー体裁編集
//
	var letter = String.fromCharCode("A".charCodeAt(0) + index);
  var icon = new GIcon(baseIcon);
	
//  icon.image = "http://www.google.com/mapfiles/marker"
 	icon.image = "../co_img/marker"
			+ letter + ".png";
//	var marker = new GMarker(point,icon);

	var marker = new GMarker(point, {
		icon					:	icon,
    draggable     :	false,
    bouncy        : true,
    bounceGravity : 4 });

//////////  マーカークリック-->infoウィンドウ編集・表示
	GEvent.addListener(marker, "click", function() {
		var namex= data['response'].rest[index].name;
		//var addrx= data['response'].rest[index].address;
		var telx=data['response'].rest[index].tel;
		var qrcurlx=data['response'].rest[index].image_url.qrcode;
		var imgurlx=data['response'].rest[index].image_url.shop_image1;
		var short_coment=data['response'].rest[index].pr.pr_short;

		var infoHTML='<b><font color="crimson">' + namex + "</font></b><br />";
			infoHTML +=  telx + "<br />";
			infoHTML += '<img src="' + imgurlx + '" width="200" height="100" >'
			infoHTML += '<img src=\"' + qrcurlx + '" width="80" height="80" >'+'<br />\n';
			infoHTML += '<table width="280"><tr><td>'+short_coment.stripTags()+'</td></tr></table>';
		map.savePosition();
    marker.openInfoWindowHtml(infoHTML);  }
	);  
	return marker;
}

///////////////////////////// じゃらんAPI用functions

function Wp2Jp(lat,lon){
//-------------------------------------------------------------
//世界測地系から日本測地系へ簡易的に換算
//(i)世界測地系 lat緯度 lon経度
//(o)日本測地系 retval[] 0:緯度 1:経度

	var retval = new Array();
  retval[0] = lat * 1.000106961 - lon * 0.000017467 - 0.004602017;
  retval[1] = lon * 1.000083049 + lat * 0.000046047 - 0.010041046;

	return retval;
}

function Jp2Wp(lat,lon){
//-------------------------------------------------------------
//日本測地系から世界測地系へ簡易的に換算
//(i)日本測地系 lat緯度 lon経度
//(o)世界測地系 retval[] 0:緯度 1:経度

	var retval = new Array();
	retval[0] = lat - lat * 0.00010695+ lon * 0.000017464 + 0.0046017;
	retval[1] = lon - lat * 0.000046038 - lon * 0.000083043 + 0.010040;

	return retval;
}


function Deg2Misec(deg){
//-------------------------------------------------------------
//GoogleMapAPIが返す緯度経度からミリ秒への変換
//(i) deg						:nn[n].nnnn...n
//(o) milli-seconds	:nnn,nnn,nnn
//
//	var degx = Math.round( (  ( (deg-Math.floor(deg)).toString() ).slice(2,9) ) /10);
		var degx = Math.floor(( deg-Math.floor(deg) )/1*60*60*1000 );

  return Math.floor(deg)*60*60*1000 + degx;
}


function Misec2Deg(misec){
//-------------------------------------------------------------
// ミリ秒からGoogleMapAPI緯度経度の変換
//(i) milli-seconds	:nnn,nnn,nnn
//(o) deg						:nn[n].nnnn...n
//
		return misec/(60*60*1000);
}


function JaLanSearch(pointxy,current_page,search_range,clear_flg) {
//----------------------------------------------------------------
//じゃらんホテル情報検索：google mapの中心点付近のホテル検索
//(i) pointxy				:latitude,longitude
//    current_page	:表示ページ
//    search_range	:検索対象範囲
//    clear_flg			:flg=1 マップクリアを行う flg=0 行わない
//
//
	var lne= (current_page-1)*10;     //Hotel行カウンタ
	var maxlne= (current_page)*10-1;
	var htm='';
	var tid=null;
	var letter=null;
	var letterNo=0;
	var hotelName=null;
	//centerPOINT = map.getCenter();   //検索ボタン押した時点の地図中心座標
	
   //JaLanresult.innerHTML='<font size="-1">じゃらん登録のホテル検索中…しばらくお待ち下さい。</font>';
   // サーバーからの応答時の処理を定義
		 //alert("JaLanSearch 1");
     var callback = function(data){
				if ( data['Results'].NumberOfResults>0){

					if (clear_flg=='1'){ map.clearOverlays(); }
						//alert("表示します...");
						while (data['Results'].Hotel[lne] ){
							if (htm==''){ htm = edtJaLanPageControl(data,current_page); }
							if (lne <= maxlne ){
								letterNo = lne-(current_page-1)*10;
								letter   = String.fromCharCode("K".charCodeAt(0) + letterNo);
								hotelName = data['Results'].Hotel[lne].HotelName.stripTags();
								htm += '[ '+ letter +' ]'
										+ '<a href=\"'+ data['Results'].Hotel[lne].HotelDetailURL
										+ '\" target=\"_blank\" ><font size="-1">'
										+ hotelName
										+ '</font></a><br />\n';
							}
							addJaLanMarker(data,lne,current_page);
 							lne++;
						}
				}else{
					htm ='”じゃらん”に登録されているホテルはこの付近にはありません。';
				}
				document.getElementById("JaLanresult").innerHTML = htm;
				
  		};

	//世界測地系->日本測地系
	var pnt=Wp2Jp(pointxy.lat(),pointxy.lng());

	//degree ->　ミリセカンド
	var lat=Deg2Misec(pnt[0]);
	var lng=Deg2Misec(pnt[1]);

	//じゃらんAPIデータ
	var urix="../manage/getJaLanAPI.php?lat="+lat+"&lng="+lng+"&rng="+search_range;
	var jkl = new JKL.ParseXML(urix);  // 送信先URLの指定

  jkl.async(callback);  // 非同期通信の設定

  jkl.parse();          // リクエスト開始

}

function edtJaLanPageControl(data,cur_page){
//------------------------------------------------------
//じゃらん検索結果のページコントロール用リンクを編集
	var retval  = '';     //戻り値htmlタグ
	var MaxPage	=  0;     //MAXページ数

//リンク編集用
	var linkd		=	'';
	var linkd0	=	'';
	var logox 	= '<a href="http://jws.jalan.net/"><img src="http://jws.jalan.net/content/images/jws_88_50_blue.gif" alt="じゃらん Web サービス" title="じゃらん Web サービス" border="0"></a><br />';
  var linkd1	=	'<a href="javascript:void(0)" onClick="SJaLanguru(map.getCenter(),';
  var cur_search_distance = JaLanrange_sel.value;
//Maxページ数//
	MaxPage = Math.ceil( data['Results'].NumberOfResults / 10) ;

	for (i=1 ; i<=MaxPage ; i++ ){
			if (i==cur_page){
				linkd='' + i + ' ';
			}else{
				linkd = linkd1 + i + ','+ cur_search_distance
																		 +' )">'+i+' '+'</a>';
			}
			retval += linkd;
	}
	retval = logox + retval;
	//retval +='<br />';
	//retval +='<a href="http://jws.jalan.net/"><img src="http://jws.jalan.net/content/images/jws_88_50_blue.gif" alt="じゃらん Web サービス" title="じゃらん Web サービス" border="0"></a>';
 	retval +='<br /><br />';

	return retval;
}
function addJaLanMarker(data,glne,curp){
//--------------------------------------------------------------
//
	var latx=data['Results'].Hotel[glne].Y;
  var lngx=data['Results'].Hotel[glne].X;

//ミリ秒->degree
	var latd=Misec2Deg(latx);
	var lngd=Misec2Deg(lngx);

//日本測地系->世界測地系
		var pnt=Jp2Wp(latd,lngd);

//マーカー描画
		var point=new GLatLng(pnt[0],pnt[1]);

		map.addOverlay( createCenterMarker(centerPOINT));
    map.addOverlay( JaLancreateMarker(point,glne, data,curp) );
}
function JaLancreateMarker(point, index, data,curpage) {
//--------------------------------------------------------------
//マーカー編集
//

	var lneno=index-(curpage-1)*10;

	var letter = String.fromCharCode("K".charCodeAt(0) + lneno);
  var icon = new GIcon(baseIcon);
 	icon.image = "../co_img/Jmarkerx"
			+ letter + ".png";
	var marker = new GMarker(point, {
		icon					:	icon,
    draggable     :	true,
    bouncy        : true,
    bounceGravity : 4 });

	return marker;
}

function JaLan_selDistance(oj){
// ------------------------------------------------------------------------------
// リストボックスの選択からぐるなびサーチguruSearchをコール

var zoomlevel='0';

	if(oj.selectedIndex != 0){
       defJaLanRANGE = oj.options[oj.selectedIndex].value;
	}
//ズームレベル調整
//		if (defJaLanRANGE > '2'){ 
//			zoomlevel= defRANGE-2;
//		}else{
//			zoomlevel= defRANGE-3;
//		}
//			map.setZoom(defaultMAPSIZE - zoomlevel);

 //じゃらんサーチ 
    	JaLanSearch(map.getCenter(),1,defJaLanRANGE,1);
    	guruSearch(map.getCenter(),1,defRANGE,0);

}



////////// not use under the below...

//WEATHER HACKS
//function getWeather() {
// サーバーからの応答時の処理を定義（結果のテンプレートへの反映）
//    var callback = function(data){
//    	var hina=new JKL.Hina("weather");
//    	weather.style.display="block";
//    	hina.expand(data['lwws'],"weather_result");
//    	weather.style.display="none";
//  	};
//
//	var urix="getweatherAPI.php?day=today"
//	var jkl = new JKL.ParseXML(urix);  // 送信先URLの指定
//
//  jkl.async(callback);  // 非同期通信の設定
//  jkl.parse();          // リクエスト開始
//}

//切捨て
	function round0(ctrl) {
		ctrl.value = Math.floor(ctrl.value - 0);
	}
//切上げ
	function round1(ctrl) {
		v = ctrl.value - 0;
		if (v != Math.floor(v))
			v = Math.floor(v) + 1;
		ctrl.value = v;
	}

function search2() {
  result.innerHTML="検索しています…";
   // サーバーからの応答時の処理を定義（結果のテンプレートへの反映）
    var callback = function(data){
    	var hina=new JKL.Hina("template");
    	template.style.display="block";
    	hina.expand(data['response'],"result");
    	template.style.display="none";
  	};
		var xy = map.getCenter();
		var lng=xy.lng();
		var lat=xy.lat();

	var urix="getGnaviAPI2.php?lat="+lat+"&lng="+lng;
	var jkl = new JKL.ParseXML(urix);  // 送信先URLの指定

  jkl.async(callback);  // 非同期通信の設定
  jkl.parse();          // リクエスト開始
}


