//<![CDATA[
var map = null;
var geocoder = null;
var rmvChkBox = 0;
var staticdiv = null;

var icon = new GIcon();
icon.image = "./soccerball.png";
icon.iconSize = new GSize(20,35);
icon.shadow = "./soccerballshadow.png";
icon.shadowSize = new GSize(20,35);
icon.iconAnchor = new GPoint(10,35);
icon.infoWindowAnchor = new GPoint(10, 35);
icon.infoShadowAnchor = new GPoint(10, 35);

function load() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
	    // 初期位置
	    var lat = 35.658632;
	    var lng = 139.745411;
	    var zoom = 13;

   		// 各種コントローラの追加
	    map.addControl(new GScaleControl());			// 物差し
	    map.addControl(new GLargeMapControl());		// マップコントローラ
	    map.addControl(new GOverviewMapControl());		// 右下の小さい地図
	    map.addControl(new GMapTypeControl());			// 地図と衛星写真の切り替え
	    map.enableContinuousZoom();
	    map.enableDoubleClickZoom();
   		var centerPoint = new GLatLng(lat, lng);
	    // 初期位置へ移動
	    map.setCenter(centerPoint, zoom);

        // GClientGeocoderを初期化
		geocoder = new GClientGeocoder();
	}
}

// 「移動する」ボタンを押されると実行されます
function showAddress(address) {
	var icon2 = new GIcon();
	icon2.image = "./mark.png";
	icon2.iconSize = new GSize(20,35);
	icon2.shadow = "./dami.png";
	icon2.shadowSize = new GSize(0,0);
	icon2.iconAnchor = new GPoint(10,35);
	icon2.infoWindowAnchor = new GPoint(10, 35);
	icon2.infoShadowAnchor = new GPoint(10, 35);
	var zoom = 13;
	if (geocoder) {
		geocoder.getLatLng(
		address,
		function(point) {
			if (!point) {
				alert(address + " not found");
			} else {
				map.setCenter(point, zoom);
				var marker = new GMarker(point, {icon:icon2,draggable: true, title: address, bouncy: false});
				map.addOverlay(marker);
				GEvent.addListener(marker, 'click', function() {
					marker.openInfoWindowHtml("<font size = -2>" + address + "</font>");
				}
            	);
			}
		}
		);
	}
}

function getCenterPoint(){
	var center	= map.getCenter();
	document.getElementById("lat_info").innerHTML = center.x;
	document.getElementById("lon_info").innerHTML = center.y;
}

function addKenbetsuMarker(kenCode){
	var xml;
	GDownloadUrl("data.xml", function(data) {
		xml = GXml.parse(data);
		// 住所から検索
		var kenAddress = "address" + kenCode;
        var address = xml.documentElement.getElementsByTagName(kenAddress);
		var lat = address[0].getAttribute("lat");
		var lng = address[0].getAttribute("lng");
    	var centerPoint = new GLatLng(lat, lng);
		var zoom = 7;
		map.setCenter(centerPoint, zoom);
		for (var j = 0; j < address.length; j++){
			addAddMarker(address[j]);
		}
	});
}

function addAddMarker(address){
	var ground = address.getAttribute("ground");
	var yubinNo = address.getAttribute("yubinNo");
	var kenName = address.getAttribute("kenName");
	var add = address.getAttribute("add");
	var add2 = address.getAttribute("add2");
	var TelNo = address.getAttribute("TelNo");
	var url = address.getAttribute("url");
	var kenAdd = kenName + add;

	if (geocoder) {
		geocoder.getLatLng(kenAdd,function(point) {
			if (!point) {
				alert(address + " not found");
			} else {
				var marker = new GMarker(point, {icon:icon, draggable: false, title: ground, bouncy: false});
				map.addOverlay(marker);
				GEvent.addListener(marker, 'click', function() {
					marker.openInfoWindow("<font size = -2>" + ground + "<br/>〒" + yubinNo + "<br/>" + kenAdd + add2 + "<br/>" + TelNo + "<br/>" + "<a href = " + url + " target = '_blank'>ホームページ</a></font>");
				}
				);
			}
		}
		);
	}
}

function delAll(){
	map.clearOverlays();
}

function getAkiyado(){
	/*
	日本測地系緯度 = 世界測地系緯度 + 0.00010696 *
　　世界測地系緯度 - 0.000017467 * 世界測地系経度 - 0.0046020
　　日本測地系経度 = 世界測地系経度 + 0.000046047 * 世界測地系緯度 +
　　0.000083049 * 世界測地系経度 - 0.010041

　　世界測地系緯度 = 日本測地系緯度 - 0.00010695 * 日本測地系緯度 +
　　0.000017464 * 日本測地系経度 + 0.0046017
　　世界測地系経度 = 日本測地系経度 - 0.000046038 * 日本測地系緯度 -
　　0.000083043 * 日本測地系経度 + 0.010040

	（ln：入力経度、la：入力緯度、lng：変換後経度、lat：変換後緯度）
	世界→日本
	lng = ln + la * 0.000046047 + ln * 0.000083049 - 0.010041;
	lat = la + la * 0.00010696 - ln * 0.000017467 - 0.0046020;
	日本→世界
	lng = ln - la * 0.000046038 - ln * 0.000083043 + 0.010040;
	lat = la - la * 0.00010695 + ln * 0.000017464 + 0.0046017;
	*/
	var center = map.getCenter();
	//var japanx = center.x + 0.00010696 * center.x - 0.000017467 * center.y - 0.0046020;
	//var japany = center.y + 0.000046047 * center.x + 0.000083049 * center.y - 0.010041;
	var japanx = ((center.x + center.y * 0.000046047 + center.x * 0.000083049 - 0.010041) * 3600).toFixed(2);
	var japany = ((center.y + center.y * 0.00010696 - center.x * 0.000017467 - 0.0046020) * 3600).toFixed(2);
	document.getElementById("j_lat_info").innerHTML = japanx;
	document.getElementById("j_lon_info").innerHTML = japany;
}

function yadokensaku(){
	
	var center = map.getCenter();
	
	map.clearOverlays();
	
	var key = document.searchadd.address.value;
	
	var icon2 = new GIcon();
	icon2.image = "./mark.png";
	icon2.iconSize = new GSize(20,35);
	icon2.shadow = "./dami.png";
	icon2.shadowSize = new GSize(0,0);
	icon2.iconAnchor = new GPoint(10,35);
	icon2.infoWindowAnchor = new GPoint(10, 35);
	icon2.infoShadowAnchor = new GPoint(10, 35);
	
	var marker = new GMarker(new GPoint(center.x, center.y), {icon:icon2,draggable: true, title: key, bouncy: false});
	map.addOverlay(marker);

	// 日本：経度
	var lng = ((center.x + center.y * 0.000046047 + center.x * 0.000083049 - 0.010041) * 3600).toFixed(2);

	// 日本：緯度
	var lat = ((center.y + center.y * 0.00010696 - center.x * 0.000017467 - 0.0046020) * 3600).toFixed(2);
	
	// 正規表現
	var obj=RegExp(/a/g);
	
	// チェックイン
	var e1 = document.calf1.e1.value;

	// チェックアウト
	var e2 = document.calf1.e2.value;
	
	if(e1){
		// /を-に置換
		e1 = e1.replace(/\//g,'-');
	}else{
		alert("チェックインを入力してね");
		return;
	}
	
	if(e2){
		// /を-に置換
		e2 = e2.replace(/\//g,'-');
	}else{
		// 分割
		var e1split = e1.split("-");
		var nextday = new Date(e1split[0],e1split[1]-1,e1split[2]);
		nextday.setDate(nextday.getDate()+1);
		var yea = nextday.getFullYear();
		var mon = nextday.getMonth()+1;
		var day = nextday.getDate();
		e2 = yea + "-" + mon + "-" + day;
	}

	// 分割
	var e1split2 = e1.split("-");
	var e1day = new Date(e1split2[0],e1split2[1]-1,e1split2[2]);
	var e1yea = e1day.getFullYear();
	var e1mon = e1day.getMonth()+1;
	var e1day = e1day.getDate();
	e1mon = formatNum(2,e1mon);
	e1day = formatNum(2,e1day);
	e1 = e1yea + "-" + e1mon + "-" + e1day;
	
	var e2split2 = e2.split("-");
	var e2day = new Date(e2split2[0],e2split2[1]-1,e2split2[2]);
	var e2yea = e2day.getFullYear();
	var e2mon = e2day.getMonth()+1;
	var e2day = e2day.getDate();
	e2mon = formatNum(2,e2mon);
	e2day = formatNum(2,e2day);
	e2 = e2yea + "-" + e2mon + "-" + e2day;

	if(e1 > e2){
		alert("チェックアウトはチェックインより未来日にしてください。");
		return;
	}
	
	// 大人人数
	var e3 = document.calf1.e3.value;
	
	// 部屋数
	var e4 = document.calf1.e4.value;
	
	// 下限金額
	var e5 = document.calf1.e5.value;
	
	// 部屋数
	var e6 = document.calf1.e6.value;

	// 検索半径
	var e7 = document.calf1.e7.value;
	
	// アドレス
	//var url = "http://api.rakuten.co.jp/rws/1.7/json?callBack=callBack&developerId=1f64fc54861a89139ee38f66dfb97869&operation=VacantHotelSearch&version=2007-04-11&checkinDate=2007-12-01&checkoutDate=2007-12-02&latitude=128440.51&longitude=503172.21&searchRadius=1";
	//var url = "http://api.rakuten.co.jp/rws/1.7/json?callBack=callBack&developerId=1f64fc54861a89139ee38f66dfb97869&affiliateId=061f4308.505d305b.061f4309.5dd53e8f&operation=VacantHotelSearch&version=2007-04-11&checkinDate=" + e1 + "&checkoutDate=" + e2 + "&latitude=" + lat + "&longitude=" + lng + "&adultNum=" + e3 + "&roomNum=" + e4 + "	&searchRadius=" + e7;
	var url = "http://api.rakuten.co.jp/rws/3.0/json?callBack=callBack&developerId=1f64fc54861a89139ee38f66dfb97869&affiliateId=061f4308.505d305b.061f4309.5dd53e8f&operation=VacantHotelSearch&version=2009-10-20&checkinDate=" + e1 + "&checkoutDate=" + e2 + "&latitude=" + lat + "&longitude=" + lng + "&adultNum=" + e3 + "&roomNum=" + e4 + "	&searchRadius=" + e7;
	
	if(e5 != ""){
		url = url + "&minCharge=" + e5;
	}

	if(e6 != ""){
		url = url + "&maxCharge=" + e6;
	}

	staticdiv = mapover();
	
	// script 要素の発行
    var script  = document.createElement( 'script' );
    script.type = 'text/javascript';
    script.src  = url;
    document.body.appendChild( script );

}

function callBack(obj){
	/*
	日本測地系緯度 = 世界測地系緯度 + 0.00010696 *
　　世界測地系緯度 - 0.000017467 * 世界測地系経度 - 0.0046020
　　日本測地系経度 = 世界測地系経度 + 0.000046047 * 世界測地系緯度 +
　　0.000083049 * 世界測地系経度 - 0.010041

　　世界測地系緯度 = 日本測地系緯度 - 0.00010695 * 日本測地系緯度 +
　　0.000017464 * 日本測地系経度 + 0.0046017
　　世界測地系経度 = 日本測地系経度 - 0.000046038 * 日本測地系緯度 -
　　0.000083043 * 日本測地系経度 + 0.010040

	（ln：入力経度、la：入力緯度、lng：変換後経度、lat：変換後緯度）
	世界→日本
	lng = ln + la * 0.000046047 + ln * 0.000083049 - 0.010041;
	lat = la + la * 0.00010696 - ln * 0.000017467 - 0.0046020;
	日本→世界
	lng = ln - la * 0.000046038 - ln * 0.000083043 + 0.010040;
	lat = la - la * 0.00010695 + ln * 0.000017464 + 0.0046017;
	*/
	if(!obj.Body){
		alert("検索結果0件です");
		mapoverremove();
		return;
	}
	
	if(obj.Header.Status == "NotFound"){
		alert("検索結果0件です");
		mapoverremove();
		return;
	}
	
	var hotels = obj.Body.hotel;
	for(var i = 0; i < hotels.length; i++) {
		var hotelinfo = hotels[i].hotelInfo[0];
		var rooms = hotels[i].roomInfo;
		addHotelMarker(hotelinfo,rooms);
	}
	mapoverremove();
}

function addHotelMarker(hotelinfo,rooms){
	var hotelBasicInfo = hotelinfo["hotelBasicInfo"];
	var hotelName = hotelBasicInfo.hotelName;
	var hotelNo = hotelBasicInfo.hotelNo;
	var planListUrl = hotelBasicInfo.planListUrl;
	var hotelImageUrl = hotelBasicInfo.hotelImageUrl;
	var longitude = hotelBasicInfo.longitude / 3600;
	var latitude = hotelBasicInfo.latitude / 3600;
	var worldlng = longitude - latitude * 0.000046038 - longitude * 0.000083043 + 0.010040;
	var worldlat = latitude - latitude * 0.00010695 + longitude * 0.000017464 + 0.0046017;
	var point = new GPoint(worldlng,worldlat);

	var str = "<font size = -1><a href='" + planListUrl + "' target='_brank'>" + hotelName + "</a><br/><img src='" + hotelImageUrl + "' alt='" + hotelName + "' width='100' height='100'><br/><hr width='200'></font><font size = -2>";
	var plusstr = "";
	
	// 空き部屋情報
	for(var i = 0; i < rooms.length; i++) {
		var roominfo = rooms[i];
		plusstr = plusstr + "<a href='" + roominfo["reserveUrl"] + "' target='_brank'>" + roominfo["roomName"] + "</a> ： ";
		var dailyCharge = roominfo["dailyCharge"];
		var rakutenCharge = dailyCharge[0]["rakutenCharge"];
		var chargeFlag = dailyCharge[0]["chargeFlag"];
		var chargeStr = "(1人)";
		if (chargeFlag == "1") {
			chargeStr = "(1室)";
		}
		plusstr = plusstr + rakutenCharge + "円" + chargeStr + "<br/>";
	}
	str = str + plusstr + "</font>";
	
	var marker = new GMarker(point,{title: hotelName, bouncy: false});
	map.addOverlay(marker);
	GEvent.addListener(marker, 'click',
		function() {
			marker.openInfoWindow(str);
		}
	);
}

function formatNum(keta, num) {
  var src = new String(num);
  var cnt = keta - src.length;
  if (cnt <= 0) return src;
  while (cnt-- > 0) src = "0" + src;
  return src;
}

function mapover(){
	//var div = document.createElement("mapover");
	//div.style.margin = "50px 50px 50px 50px";
	//div.style.width = map.getSize().width + "px";
	//div.style.height = map.getSize().height + "px";
	//div.style.position = "absolute";
	var maploading = document.getElementById("maploading");
	maploading.innerHTML="<img src='http://www.vietnamcup.com/item/ajax-loader3.gif'/>";
	//map.getPane(G_MAP_MAP_PANE).appendChild(div);
	//mapdiv.appendChild(div);
	//return div;
}

function mapoverremove(){
	//if(staticdiv){
		//map.getPane(G_MAP_MAP_PANE).removeChild(staticdiv);
	//	var mapdiv = document.getElementById("map");
	//	mapdiv.removeChild(staticdiv);
	//}
	var maploading = document.getElementById("maploading");
	maploading.innerHTML="<img src='http://www.vietnamcup.com/item/ajax-loader-gray.gif'/>";
}
//]]>