// 初期表示位置設定
var lat = 35.14285366333853;
var lng = 139.0989249944687;
var zLevel = 14;

// 初期化
var map;
var mapPoint;
var maker;
var geocoder;
var side_bar_html = "";
var gmarkers = [];
var htmls = [];

window.onload = function(){
	if(GBrowserIsCompatible()){ 
		// map表示
		map = new GMap2(document.getElementById("map"));
		// 中心地点設定
		if(document.formgmap.lat.value && document.formgmap.lng.value && document.formgmap.zlevel.value){
			mapPoint = new GLatLng(document.formgmap.lat.value,document.formgmap.lng.value);
		}else{
			mapPoint = new GLatLng(lat,lng);
		}
		// 中心地点表示
		map.setCenter(mapPoint,zLevel);
			// マーカーを生成（draggable属性なし）
			onGMapSetMaker(mapPoint,zLevel);
		// コントローラー表示（サイズと方向）
		map.addControl(new GLargeMapControl());
		// コントローラー表示（地図と衛生写真の切り替え）
		map.addControl(new GMapTypeControl());
			//地形図
	//		map.addMapType(G_PHYSICAL_MAP);
		// オーバービューマップコントロール（右下の小地図）
	//	map.addControl(new GOverviewMapControl(new GSize(100,100)));
		// 左ダブルクリックでズーム、右ダブルクリックでズームアウト
		map.enableDoubleClickZoom();
		// ジオコーダーの用意
		geocoder = new GClientGeocoder();
		// 地図がクリックされた際の設定
	//	GEvent.addListener(map, 'click', onGMapClick);
		// ズームが変更された際の設定
		GEvent.addListener(map, "zoomend", onGMapDragend);
	}else{
		document.getElementById("map").innerHTML = 'お使いのブラウザでは地図機能はご利用になれません。';
	//	alert('お使いのブラウザでは地図機能はご利用になれません。');
	}
};

// クリックがあった際の処理
function onGMapClick(overlay, point) {
	// 全マーカー削除
	onGMapDeleteMakerAll();
	// ズームレベル取得
	zLevel = map.getBoundsZoomLevel(map.getBounds());
	// マーカーを生成（draggable属性付き）
	onGMapSetMaker(point,zLevel,1);
	// フォームに位置情報をセット
//	onGMapSetForm(point,zLevel);
}

// 地図が移動された際の処理
function onGMapDragend() {
	// 移動後の地図の中心を取得
	mapPoint = map.getCenter();
	// ズームレベル取得
	zLevel = map.getBoundsZoomLevel(map.getBounds());
	// フォームに位置情報をセット
//	onGMapSetForm(mapPoint,zLevel);
}

// 指定地点が中心になるように移動
function onGMapMovePointCenter(mapPoint,zLevel){
	lat = mapPoint.lat();
	lng = mapPoint.lng();
	map.setCenter(new GLatLng(lat,lng), zLevel);
}

// フォームに位置情報をセット
function onGMapSetForm(mapPoint,zLevel){
//	document.regist.lat.value = mapPoint.lat();
//	document.regist.lng.value = mapPoint.lng();
//	document.regist.zlevel.value = zLevel;
}

// マーカーを生成
function onGMapSetMaker(mapPoint,zLevel,draggable,icon){
	// draggable指定あり
	if(draggable){
		// icon指定あり
		if(icon){
			marker = new GMarker(mapPoint,{ draggable:true,icon:icon });
		}
		// icon指定なし
		else{
			marker = new GMarker(mapPoint,{ draggable:true });
		}
		// マーカーがドラッグされた際の処理を設定
		GEvent.addListener(marker, "dragend", function(){
			// 移動しても良い様に再設定
			mapPoint = marker.getPoint();
			zLevel = map.getBoundsZoomLevel(map.getBounds());
			// マーカーをセンターに移動
			onGMapMovePointCenter(mapPoint,zLevel);
			// マーカーの位置をフォームに表示
//			onGMapSetForm(mapPoint,zLevel);
		});
	}
	// draggable指定なし
	else{
		// icon指定あり
		if(icon){
			marker = new GMarker(mapPoint,{ draggable:false,icon:icon });
		}
		// icon指定なし
		else{
			marker = new GMarker(mapPoint,{ draggable:false });
		}
	}
	map.addOverlay(marker);
}

// 全てのマーカーを削除
function onGMapDeleteMakerAll(){
	map.clearOverlays();
}


// ジオコーディング（住所から緯度と経度を取得）
function onGMapMoveAddress(address){
	geocoder.getLatLng(address, onGMapShowMap);
}
function onGMapShowMap(mapPoint){
	if (mapPoint){
		// 指定地点が中心になるように移動
		onGMapMovePointCenter(mapPoint,zLevel);
		// マーカーを生成（draggable属性付き）
		onGMapSetMaker(mapPoint,zLevel,1);
		// フォームに位置情報をセット 
//		onGMapSetForm(mapPoint,zLevel);
	}else{
		alert("ご入力の内容では緯度経度に変換できません");
	}
}

// ジオコーディング利用の際、テキストエリアでリターンキーを押した際の処理
// ページが移動せずに、ジオコーディングが実行される様にしている
function enterCancel(evt){
	var q = document.regist.gmapq.value;
	if(evt.keyCode == 13){
		if (evt.preventDefault) {
			evt.preventDefault();
		} else {
			evt.returnValue = false;
		}
		if(q){
			onGMapMoveAddress(q);
		}
	}
}


