var map = null;
var geocoder = null;
var mapCenter = null;

function loadMapDefault() {
	map = new GMap2(document.getElementById("googleMap"), {size:new GSize(640,640)});

	map.addControl(new GMapTypeControl());
	map.addControl(new GLargeMapControl());
	map.addControl(new GOverviewMapControl(new GSize(200,200)));

	//アニメーションズーム
	map.enableContinuousZoom();
	//ホイールズーム
	map.enableScrollWheelZoom();	
	geocoder = new GClientGeocoder();

	GEvent.addListener(map, "zoom", getPointData);
	GEvent.addListener(map, "moveend", getPointData);

	loadMap();
}

function loadMap() {
	//地図の中心初期値(東京駅)
	map.setCenter(new GLatLng(35.681099, 139.767084), 5);
}


/* 住所検索 */
function showAddress() {
	var address = document.getElementById("searchAddress").value;
	showAddress2Map(address);
}


function showAddress2Map (address) {
	if (geocoder) {
		geocoder.getLatLng(
			address,
			function(point) {
				if (!point) {
					alert("入力した住所が見つかりません。");
				} else {
					map.clearOverlays();
					map.setCenter(point, 15);
					mapCenter = map.getCenter();
				}
			}
		);
	}
}


function getPointData () {
	var area = map.getBounds();
	var ne = area.getNorthEast();
	var sw = area.getSouthWest();
	var ct = map.getCenter();

	var httpObj = GXmlHttp.create();

	httpObj.open("get", "get/point_list.php?st="+sw.lat()+"&nt="+ne.lat()+"&wg="+sw.lng()+"&eg="+ne.lng()+"&r=" + (new Date()).getTime());
	httpObj.onreadystatechange = function() {
		if ((httpObj.readyState == 4) && (httpObj.status == 200)) {
			if (!ct.equals(mapCenter)) {
				mapCenter = null;
				document.prefForm.pref.options[0].selected = true;
				if (document.activeElement.id == "searchAddress") {
					document.getElementById("searchAddress").value = "";
				} else {
					document.getElementById("searchAddress").value = "ここに住所を入力し、検索ボタンを押してください";
				}
			}
			showList(httpObj);
		}
	}
	httpObj.send(null);
}

function showList(httpObj) {
	var obj = document.getElementById('areaData');
	obj.innerHTML = httpObj.responseText;
}


function showPrefecture (pref) {
	if (pref == "") {
		loadMap();
	} else {
		showAddress2Map(pref);
	}
}


function showArea(lat, lng) {
	map.setCenter(new GLatLng(lat, lng), 14);
}


var WinLoadGoogleMap = window.onload;
window.onload = function(e){
	if(WinLoadGoogleMap){ WinLoadGoogleMap(e); }
	loadMapDefault();
}


function changeDisplay (id) {
	var obj = document.getElementById("area"+id);
	var val = obj.style.display;
	obj.style.display = (val == "none" ? "block" : "none");
	document.getElementById("fieldIcon"+id).src = "img/icon_admin_" + (val == "none" ? "close" : "open") + ".jpg";
}
