var const_center = new GLatLng(35.681098,139.767085);  // default center
var const_z_lv = 9;

var gmap;
var z_lv = 0;
var center = null;

var mapVHeight=900;
var mapVWidth=640;

var mapHHeight=570;
var mapHWidth=970;

var mapHeight=mapVHeight;
var mapWidth=mapVWidth;

var vhType = "v";	// 縦横区分

function init(){
	$("map").style.width = mapWidth+"px";
	$("map").style.height = mapHeight+"px";
	
	gmap = new GMap2($("map"));
	gmap.addControl(new SimpleMapControl());
	gmap.addControl(new GScaleControl());
	gmap.addControl(new GSmallZoomControl());
	gmap.addControl(new GOverviewMapControl(new GSize(100,100))); 
	center = const_center;
	z_lv = const_z_lv;
	if( navigator.userAgent.match("MSIE")){ $("map").attachEvent( "onmousewheel" , mouseWheelZooming ); }
	if( navigator.userAgent.match("Gecko")){ $("map").addEventListener( "DOMMouseScroll" , mouseWheelZooming , false ); }
	if( navigator.userAgent.match("Safari")){ $("map").onmousewheel = mouseWheelZooming; }
	
	gmap.setCenter(center,z_lv);
	
	GEvent.addListener(gmap, "moveend", function(){dispStatus();});
	GEvent.addListener(gmap, "zoomend", function(){dispStatus();});
	
	dispStatus();
}


function mouseWheelZooming(event){
	if( navigator.userAgent.match( "MSIE" ) ){ var delta = event.wheelDelta; event.returnValue = false; }
	if( navigator.userAgent.match( "Gecko" ) ){ var delta = event.detail * -1; event.preventDefault(); }
	if( navigator.userAgent.match( "Safari" ) ){ var delta = event.wheelDelta; event.returnValue = false; }
	if(delta < 0){
		gmap.zoomOut();
	}else{
		gmap.zoomIn();
	}
}

function clickL(){
	gmap.panBy(new GSize(mapWidth, 0));
}

function clickR(){
	gmap.panBy(new GSize(-1 * mapWidth, 0));
}

function clickU(){
	gmap.panBy(new GSize(0, mapHeight));
}

function clickD(){
	gmap.panBy(new GSize(0, -1 * mapHeight));
}

function clickMove(cnLat,cnLng){
	var lat = cnLat.value;
	var lng = cnLng.value;
	
	// 座標が未入力の場合は、処理なし
	if(lat.length==0 || lng.length==0){
		return;
	}
	
	move(new GLatLng(lat,lng));
}

function clickBackToTokyo(){
	move(const_center);
}

function clickChangeDisp(){
	
	if(vhType=="v"){
		mapHeight = mapHHeight;
		mapWidth = mapHWidth;
		vhType="h";
	}
	else{
		mapHeight = mapVHeight;
		mapWidth = mapVWidth;
		vhType="v";
	}
	
	$("map").style.width = mapWidth+"px";
	$("map").style.height = mapHeight+"px";
}

function move(pos){
	try{
		gmap.panTo(pos);
	}
	catch(e){
		alert("移動に失敗しました。\n入力した座標が正しいか確認してください。\n\n["+e.message+"]");
	}
}

function dispStatus(){
	var zoom = "ZM   "+gmap.getZoom();

	var cnPosition = gmap.getCenter();
	var cn = "CN   "+ formatPosition(cnPosition.lat(), cnPosition.lng());
	
	var nePosition = gmap.getBounds().getNorthEast();
	var swPosition = gmap.getBounds().getSouthWest();
	var ne = "NE   "+ formatPosition(nePosition.lat(), nePosition.lng());
	var sw = "SW   "+ formatPosition(swPosition.lat(), swPosition.lng());
	
	var status = zoom + "\n" + cn + "\n" + ne + "\n" + sw;
	document.getElementById("statusText").value = status;
}


function formatPosition(lat,lng){
	var sp20="                  ";
	return (lat+sp20).substring(0,20) + " , " + lng;
}

function $(id){
	return document.getElementById(id);
	dispStatus();
}