//	google maps
var initCenter = new GLatLng(0, 0);
var markerCenter = new GLatLng(0, 0);

var map;
var marker;

var initZoom = 15;

var geocoder;

//Google Maps API初期化処理
function init() {
	//formの初期値を設定
	document.editform.longitude.value       = initCenter.lng();
	document.editform.latitude.value        = initCenter.lat();
	document.editform.point_longitude.value = markerCenter.lng();
	document.editform.point_latitude.value  = markerCenter.lat();
	document.editform.zoom_level.value      = initZoom;

	if (GBrowserIsCompatible()) {
		//マップを作成
		map = new GMap2(document.getElementById("map"));
		
		//マップに小さなコントロールをのっける
		map.addControl(new GSmallMapControl());
		
		//センター座標を設定
		map.setCenter(initCenter, initZoom);			

		//Markerを作成する
		marker = new GMarker(markerCenter, {draggable: true});
		
		//Markerのドラッギング機能を有効にする
		marker.enableDragging();
		
		//ドラッグイベントのハンドラを設定する
		GEvent.addListener(
			marker,
			'dragend',
			function() {
				markerPoint = marker.getPoint();
				document.editform.point_latitude.value  = markerPoint.lat();
				document.editform.point_longitude.value = markerPoint.lng();
			}
		);
		
		//Markerをmapにオーバーレイ
		map.addOverlay(marker);
		
		//Geocoder
		geocoder = new GClientGeocoder();
		
		//スクロールしたときのイベントハンドラを登録
		GEvent.addListener(
			map,
			'move',
			function() {
				var centerPoint = map.getCenter();
				
				//longitude, latitudeの値を設定する
				document.editform.longitude.value = centerPoint.lng();
				document.editform.latitude.value  = centerPoint.lat();
			}
		);
		
		//ズームしたときのイベントハンドラを登録
		GEvent.addListener(
			map,
			'zoomend',
			function(oldZoomLevel, newZoomLevel) {
				//zoomの値を設定する
				document.editform.zoom_level.value = newZoomLevel;
				
				//newZoomLevelに応じたポイントの移動単位にする
				setMarkerMovingUnit(newZoomLevel);
			}
		);
	}
}

//住所からlat/lngを設定する
function getGeocode() {
	geocoder.getLatLng(document.editform.geocodeinput.value, getGeocodeCallback);
}

//callback
function getGeocodeCallback(responseLatLng) {
	if (!responseLatLng) {
		alert("Googleジオコーダーエラー");
		return;
	}
	
	//マップの中心を移動
	map.setCenter(responseLatLng, document.editform.zoom_level.value);
	
	//マーカーも一緒に中心に移動
	marker.setPoint(responseLatLng);
	
	//フォームに値を反映
	document.editform.longitude.value       = responseLatLng.lng();
	document.editform.latitude.value        = responseLatLng.lat();
	document.editform.point_longitude.value = responseLatLng.lng();
	document.editform.point_latitude.value  = responseLatLng.lat();
}
