var map;
var centerIconimage = "./images/marker.png";
var centerIcon = new GIcon();
centerIcon.image = centerIconimage;
centerIcon.iconSize = new GSize(32, 32);
centerIcon.iconAnchor = new GPoint(16, 16);

function initialize() {
	if (GBrowserIsCompatible()) {

		//地図の描画
		map = new GMap2(document.getElementById("map"), opts);

		//地図のオプション
		var gopts = {
			suppressInitialResultSelection: true
		};
		var opts = {
			googleBarOptions: gopts
		};

		//地図各種コントロール設定
		map.addControl(new GLargeMapControl3D());
		map.addControl(new GMapTypeControl());
		map.addControl(new GOverviewMapControl());
		map.addControl(new GScaleControl());
		map.addMapType(G_PHYSICAL_MAP);
		map.enableContinuousZoom();
		map.enableDoubleClickZoom();
		map.enableScrollWheelZoom();
		map.enableGoogleBar();

		//地図中心・初期位置マーカーの位置
		location.search;
		var get_value = function (key) {
			return (location.search.match(new RegExp("\\b" + key + "=(.*?)(?:&|$)"))||[])[1];
		}
		get_value("lat");
		get_value("lng");
		get_value("zoom");
		if (get_value("lat")*get_value("lat") > 0) {
			var lat = get_value("lat");
		}
		else {
			var lat = 35.657967;
		}
		if (get_value("lng")*get_value("lng") > 0) {
			var lng = get_value("lng");
		}
		else {
			var lng = 139.746931;
		}
		if (get_value("zoom")*get_value("zoom") > 0) {
			var init_zoom = parseInt(get_value("zoom"));
		}
		else {
			var init_zoom = 17;
		}
		var init_pos = new GLatLng(lat, lng);
		map.setCenter(init_pos, init_zoom);

		//初期位置マーカーの描画
		var marker = new GMarker(init_pos);
		map.addOverlay(marker);

		//中心マーカーの描画
		centerIcon = new GMarker(map.getCenter(), centerIcon);
		map.addOverlay(centerIcon);

		//緯度・経度の表示
		LatLng();

		//地図移動時の中心マーカーの再描画
		GEvent.addListener(map, "move", Center);

		//地図移動時の緯度・経度の再表示
		GEvent.addListener(map, "move", LatLng);

		//住所検索
		localsearch = new GlocalSearch();
		localsearch.setCenterPoint(map);
		localsearch.setSearchCompleteCallback(null, NullLocalSearch);

		//郵便番号検索
		zipsearch = new GlocalSearch();
		zipsearch.setCenterPoint(map);
		zipsearch.setSearchCompleteCallback(null, NullZipSearch);

		//スクロールバーの非表示
		document.body.style.overflow = "hidden";

	}
}

GEvent.addDomListener(window, "load", initialize);
GEvent.addDomListener(window, "unload", GUnload);

//中心マーカー描画
function Center() {
	centerIcon.setPoint(map.getCenter());
}

//緯度・経度計算および地図URLの表示
function LatLng() {
	var center_lat_wgs = map.getCenter().lat();
	document.getElementById("lat_wgs").innerHTML = center_lat_wgs.toFixed(6);
	var center_lng_wgs = map.getCenter().lng();
	document.getElementById("lng_wgs").innerHTML = center_lng_wgs.toFixed(6);

	//緯度の度分秒への変換
	var center_lat_wgs_do = parseInt(center_lat_wgs);
	var center_lat_wgs_fun = parseInt((center_lat_wgs*3600000-parseInt(center_lat_wgs)*3600000)/60000);
	var center_lat_wgs_byo = Math.ceil((Math.round((center_lat_wgs*3600000-parseInt(center_lat_wgs)*3600000)-(parseInt((center_lat_wgs*3600000-parseInt(center_lat_wgs)*3600000)/60000)*60000))/1000)*100)/100;
	document.getElementById("lat_wgs_do").innerHTML = center_lat_wgs_do + "°";
	document.getElementById("lat_wgs_fun").innerHTML = center_lat_wgs_fun + "′";
	document.getElementById("lat_wgs_byo").innerHTML = center_lat_wgs_byo.toFixed(2) + "″";

	//経度の度分秒への変換
	var center_lng_wgs_do = parseInt(center_lng_wgs);
	var center_lng_wgs_fun = parseInt((center_lng_wgs*3600000-parseInt(center_lng_wgs)*3600000)/60000);
	var center_lng_wgs_byo = Math.ceil((Math.round((center_lng_wgs*3600000-parseInt(center_lng_wgs)*3600000)-(parseInt((center_lng_wgs*3600000-parseInt(center_lng_wgs)*3600000)/60000)*60000))/1000)*100)/100;
	document.getElementById("lng_wgs_do").innerHTML = center_lng_wgs_do + "°";
	document.getElementById("lng_wgs_fun").innerHTML = center_lng_wgs_fun + "′";
	document.getElementById("lng_wgs_byo").innerHTML = center_lng_wgs_byo.toFixed(2) + "″";

	//日本測地系への変換
	var center_lat_tokyo = center_lat_wgs+0.00010696*center_lat_wgs-0.000017467*center_lng_wgs-0.0046024
	document.getElementById("lat_tokyo").innerHTML = center_lat_tokyo.toFixed(6);
	var center_lng_tokyo = center_lng_wgs+0.000046047*center_lat_wgs+0.00008305*center_lng_wgs-0.010041
	document.getElementById("lng_tokyo").innerHTML = center_lng_tokyo.toFixed(6);

	//緯度の度分秒への変換
	var center_lat_tokyo_do = parseInt(center_lat_tokyo);
	var center_lat_tokyo_fun = parseInt((center_lat_tokyo*3600000-parseInt(center_lat_tokyo)*3600000)/60000);
	var center_lat_tokyo_byo = Math.ceil((Math.round((center_lat_tokyo*3600000-parseInt(center_lat_tokyo)*3600000)-(parseInt((center_lat_tokyo*3600000-parseInt(center_lat_tokyo)*3600000)/60000)*60000))/1000)*100)/100;
	document.getElementById("lat_tokyo_do").innerHTML = center_lat_tokyo_do + "°";
	document.getElementById("lat_tokyo_fun").innerHTML = center_lat_tokyo_fun + "′";
	document.getElementById("lat_tokyo_byo").innerHTML = center_lat_tokyo_byo.toFixed(2) + "″";

	//経度の度分秒への変換
	var center_lng_tokyo_do = parseInt(center_lng_tokyo);
	var center_lng_tokyo_fun = parseInt((center_lng_tokyo*3600000-parseInt(center_lng_tokyo)*3600000)/60000);
	var center_lng_tokyo_byo = Math.ceil((Math.round((center_lng_tokyo*3600000-parseInt(center_lng_tokyo)*3600000)-(parseInt((center_lng_tokyo*3600000-parseInt(center_lng_tokyo)*3600000)/60000)*60000))/1000)*100)/100;
	document.getElementById("lng_tokyo_do").innerHTML = center_lng_tokyo_do + "°";
	document.getElementById("lng_tokyo_fun").innerHTML = center_lng_tokyo_fun + "′";
	document.getElementById("lng_tokyo_byo").innerHTML = center_lng_tokyo_byo.toFixed(2) + "″";

	//地図URLへの変換
	var site_url = "http://" + location.hostname + "/";
	var zoom = map.getZoom();
	var map_url = site_url + "?lat=" + center_lat_wgs.toFixed(6) + "&lng=" + center_lng_wgs.toFixed(6) + "&zoom=" + zoom;
	document.getElementById("map_url").innerHTML = map_url;
	document.getElementById("mail_map_url").innerHTML = map_url;

	//QRコード生成
	var chartgoogle_url = "http://chart.apis.google.com/chart?cht=qr&chs=130x130&chld=M&chl=";
	var enc_map_url = encodeURIComponent(map_url);
	var map_qr = chartgoogle_url + enc_map_url;
	document.getElementById("map_qr").src = map_qr;

}

//地図サイズ指定（検索表示時）
function setSize1() {
	var mapheight = $(window).height()-182
	$("div#map").css("height",mapheight);
}

//地図サイズ指定（検索非表示時）
function setSize2() {
	var mapheight = $(window).height()-75
	$("div#map").css("height",mapheight);
}

$(function() {
	//読み込まれたら実行
	setSize1();
	myToggleState = "1";
	//リサイズされたら実行
	$(window).resize(function(){
		if (myToggleState == 2) {
			setSize2();
		}
		else if (myToggleState == 1) {
			setSize1();
		}
		else {
			setSize1();
		}
		setTimeout("Center();",100);
		setTimeout("LatLng();",100);
	});
});
