window.onload = atload;
window.onresize = resize;
window.onunload = GUnload;

var map,center,bounds,size,map_ctrl=[],type_ctrl=[],scale_ctrl=[],overview_ctrl=[],map_type,map_types;
var d=document;

var marker_counter = 0;

function atload() {
if (GBrowserIsCompatible()) {
	d=document;
	elmap=d.getElementById('map');
	map=new GMap2(elmap);
	GEvent.addListener(map, "load", function() {
		center = map.getCenter();
		$('#setCenter_lat').val(center.lat());
		$('#setCenter_lng').val(center.lng());
//		bounds = map.getBounds();
		gomaSetMapSizeVal();
		$('#MapZoom').html(map.getZoom());
		$('#map_draggingEnabled').html((map.draggingEnabled()?'true':'false'));
		$('#map_infoWindowEnabled').html((map.infoWindowEnabled()?'true':'false'));
		$('#map_doubleClickZoomEnabled').html((map.doubleClickZoomEnabled()?'true':'false'));
		$('#map_continuousZoomEnabled').html((map.continuousZoomEnabled()?'true':'false'));
		
		$('#SmallMapCtrl_DefaultPosition').html(new GSmallMapControl().getDefaultPosition()+'');
		$('#LargeMapCtrl_DefaultPosition').html(new GLargeMapControl().getDefaultPosition()+'');
		
		//中央マーカー
		var mo1=d.createElement('div'),mo2=d.createElement('div');
		mo1.id='map_center_marker_w';
		mo2.id='map_center_marker_h';
		ms1=mo1.style;
		ms2=mo2.style;
		ms1.position=ms2.position='absolute';
		gomaMoveCenterMarker2(mo1,mo2);
		ms1.backgroundImage = "url(center_1.gif)";
		ms2.backgroundImage = "url(center_2.gif)";
		ms1.backgroundRepeat=ms2.backgroundRepeat="no-repeat";
		ms1.fontSize="0px";
		ms1.opacity=ms2.opacity = 0.5;
		elmap.appendChild(mo1);
		elmap.appendChild(mo2);
//		var markObj = d.createElement('div');
//		markObj.id='map_center_marker';
//		markObj.style.position = "absolute";
//		gomaMoveCenterMarker(markObj);
//		markObj.style.backgroundImage = "url(center.gif)";
//		markObj.style.opacity = 0.5;
	});
	GEvent.addListener(map, "moveend", function() {
		gomaSetCenterVal();
		$('#center_x_y_moveend').html(center.toString());
		gomaSetBoundsVal();
//		size = map.getSize();
//		d.getElementById("Size_width").innerHTML = size.width;  /*ブラウザリサイズではmoveは発生しない*/
	});
	GEvent.addListener(map, "movestart", function() {
		$('#center_x_y_movestart').html(map.getCenter().toString());
	});
	GEvent.addListener(map, "move", function() {
		center = map.getCenter();
		$('#center_x_y_move').html(center.toString());
		$('#nowLat').html(center.lat());
		$('#nowLng').html(center.lng());
	});
	GEvent.addListener(map, "dragstart", function() {
		//地図上でワンクリックでも呼ばれるッぽい
		$('#center_x_y_dragstart').html(map.getCenter().toString());
	});
	GEvent.addListener(map, "drag", function() {
		$('#center_x_y_drag').html(map.getCenter().toString());
	});
	GEvent.addListener(map, "dragend", function() {
		$('#center_x_y_dragend').html(map.getCenter().toString());
	});
	GEvent.addListener(map, "click", function() {
		$('#center_x_y_dragstart').html(map.getCenter().toString());
	});
	GEvent.addListener(map, "maptypechanged", function() {
		//read時にも呼ばれるっぽい
		map_type = map.getCurrentMapType();
		var s=map_type.getName();
		d.getElementById("CurrentMapType_name").innerHTML=s;
		$('#MapTypeName').html(s);
		$('#MapTypeTileSize').html(map_type.getTileSize()+'');
		$('#MapTypeMinimumResolution').html(map_type.getMinimumResolution()+'');
		$('#MapTypeMaximumResolution').html(map_type.getMaximumResolution()+'');
		$('#MapTypeTextColor').html(map_type.getTextColor());
		$('#MapTypeErrorMessage').html(map_type.getErrorMessage());
		$('#MapTypeUrlArg').html(map_type.getUrlArg());
		
	});
	GEvent.addListener(map, "zoomend", function(oldLv, newLv) {
		var z=map.getZoom()+''
		$('#MapZoom').html(z);
		$('#setCenter_zoom').val(z);
		$('#MapZoomOld').html(oldLv+'');
		$('#MapZoomNew').html(newLv+'');
		$('#nowZoom').html(z);
	});
	GEvent.addListener(map, "clearoverlays", function() {
		marker_counter = 0;
	});
	GEvent.addListener(map, "click", goma_click);
	GEvent.addListener(map, "mousemove", goma_mousemove);
	map.setCenter(new GLatLng(34.65, 135), 14); /* 中心座標とズーム 未設定だとエラーになる */
	map_ctrl.push(new GSmallMapControl());
	type_ctrl.push(new GMapTypeControl());
	map.addControl(map_ctrl[0]);
	map.addControl(type_ctrl[0]);
	map_types = map.getMapTypes();
	var i,l=map_types.length,a=[];
	for(i=0;i<l;i++) {
		a[i]=map_types[i].getName();
	}
	$('#MapTypes').html(a.join('、'));
	
	
	
//	d.getElementById("Size_width").innerHTML = map.getSize().width;
//	d.getElementById("Size_height").innerHTML = map.getSize().height;
//map.openInfoWindow(map.getCenter(), d.createTextNode("やぁ、漢字もOKさ！"));
}
/*** load()ここまで ***/
}

// ブラウザ リサイズ時
function resize() {
	if (GBrowserIsCompatible()) {
		map.checkResize();
		gomaSetCenterVal();
		gomaSetBoundsVal();
		gomaSetMapSizeVal();
		gomaMoveCenterMarker2(d.getElementById('map_center_marker_w'),d.getElementById('map_center_marker_h'));
//		gomaMoveCenterMarker(d.getElementById('map_center_marker'));
	}
}
//センターマークの位置
function gomaMoveCenterMarker(markObj){
	var size=map.getSize();
	var mapW = parseInt(size.width);
	var mapH = parseInt(size.height);
	var markW = 21; // センターマークの横幅（ピクセル数）
	var markH = 21; // センターマークの縦幅（ピクセル数）
	var x = (mapW - markW) / 2; // センターマークの中心位置（X座標）
	var y = (mapH - markH) / 2; // センターマークの中心位置（Y座標）
	markObj.style.top = y+"px";
	markObj.style.left = x+"px";
	markObj.style.width = markW+"px";
	markObj.style.height = markH+"px";
}
function gomaMoveCenterMarker2(mo1,mo2){
//	var mo1=d.getElementById('map_center_marker_w'),mo2=d.getElementById('map_center_marker_h');
	var size=map.getSize();
	var mapW=parseInt(size.width),mapH=parseInt(size.height);
	var markW = 21; // センターマークの横幅（ピクセル数）
	var markH = 21; // センターマークの縦幅（ピクセル数）
	var x = (mapW - markW) / 2; // センターマークの中心位置（X座標）
	var y = (mapH - markH) / 2; // センターマークの中心位置（Y座標）
	//横
	mo1.style.left = x+"px";
	mo1.style.top = ((mapH-1)/2)+"px";
	mo1.style.width = markW+"px";
	mo1.style.height = 1+"px";
	//縦
	mo2.style.left = ((mapW-1)/2)+"px";
	mo2.style.top = y+"px";
	mo2.style.width = 1+"px";
	mo2.style.height = markH+"px";
}

//クリック
function goma_click(overlay,point) {
	if(overlay){
//		alert('overlay click');
//		map.removeOverlay(overlay);
//		overlay.openInfoWindowHtml('マーカーの情報ウィンドウでっせ')
	}else if(point){
		$('#click_x').html(point.x);
		$('#click_y').html(point.y);
	}
}

function goma_mousemove(latlng) {
	$('#mousemove_lng').html(latlng.lng());
	$('#mousemove_lat').html(latlng.lat());
}

function gomaSetCenterVal() {
	center = map.getCenter();
	$('#center_lat').val(center.lat());
	$('#center_lng').val(center.lng());
	$('#center_latRadians').html(center.latRadians());
	$('#center_lngRadians').html(center.lngRadians());
	$('#center_toUrlValue').html(center.toUrlValue());
	var NE = map.getBounds().getNorthEast();
	$('#distanceFrom_NE').html(center.distanceFrom(NE));
	var latlngTop = new GLatLng(NE.lat(),center.lng());
	$('#distanceFrom_Top').html(center.distanceFrom(latlngTop));
	var latlngRight = new GLatLng(center.lat(),NE.lng());
	$('#distanceFrom_Right').html(center.distanceFrom(latlngRight));
	
}
function gomaSetBoundsVal() {
	bounds = map.getBounds();
	var NE = bounds.getNorthEast();
	var SW = bounds.getSouthWest();
	$('#bounds_tospan').html(bounds.toSpan().toString());
	$('#bounds_NE_lng').val(NE.lng());
	$('#bounds_NE_lat').val(NE.lat());
	$('#bounds_SW_lng').val(SW.lng());
	$('#bounds_SW_lat').val(SW.lat());
}

function gomaSetMapSizeVal() {
	size = map.getSize();
	$('#Size_width').html(size.width);
	$('#Size_height').html(size.height);
}

function gomaAddCtrl(control, posi, arr_ctrl) {
	arr_ctrl.push(control);
	if (posi == 1) {
		position = G_ANCHOR_TOP_RIGHT;
	} else if (posi == 2) {
		position = G_ANCHOR_TOP_LEFT;
	} else if (posi == 3) {
		position = G_ANCHOR_BOTTOM_RIGHT;
	} else if (posi == 4) {
		position = G_ANCHOR_BOTTOM_LEFT;
	} else {
		map.addControl(control);
		return;
	}
	map.addControl(control, new GControlPosition(position, new GSize(0,0)));
}
function gomaAddScaleCtrl(control, posi, arr_ctrl, max) {
	if (isNaN(max) || max < 1) {
		control = new GScaleControl();
	} else {
		control = new GScaleControl(max);
	}
	arr_ctrl.push(control);
	if (posi == 1) {
		position = G_ANCHOR_TOP_RIGHT;
	} else if (posi == 2) {
		position = G_ANCHOR_TOP_LEFT;
	} else if (posi == 3) {
		position = G_ANCHOR_BOTTOM_RIGHT;
	} else if (posi == 4) {
		position = G_ANCHOR_BOTTOM_LEFT;
	} else {
		map.addControl(control);
		return;
	}
	map.addControl(control, new GControlPosition(position, new GSize(0,0)));
}
function gomaSetCenter() {
	var lat=$('#setCenter_lat'),lng=$('#setCenter_lng'),zom=$('#setCenter_zoom'),typ=$('#setCenter_type_id');
	var vlat=lat.val(),vlng=lng.val(),vzom=zom.val(),vtyp=typ.val();
	if(isNaN(vlat)||isNaN(vlng)||isNaN(vzom)){
		lat.val('');
		lng.val('');
		zom.val(map.getZoom());
		alert('数字が入ってない');
	} else {
		var latlng=new GLatLng(vlat,vlng),mtype;
		if(vtyp==1)mtype=G_NORMAL_MAP;
		else if(vtyp==2)mtype=G_SATELLITE_MAP;
		else if(vtyp==3)mtype=G_HYBRID_MAP;
		else mtype=null;
		if(mtype==null)map.setCenter(latlng, vzom-0);
		else map.setCenter(latlng, vzom-0, mtype);
	}
}
function gomaPanTo() {
	var lat=$('#setCenter_lat'),lng=$('#setCenter_lng');
	var vlat=lat.val(),vlng=lng.val();
	if(isNaN(vlat)||isNaN(vlng)){
		lat.val('');
		lng.val('');
		alert('数字が入ってない');
	} else {
		var latlng=new GLatLng(vlat,vlng);
		map.panTo(latlng);
	}
}
function gomaPanBy() {
	var ow=$('#panBy_width'),oh=$('#panBy_height');
	var w=ow.val(),h=oh.val();
	if(isNaN(w)||isNaN(h)){
		ow.val('');
		oh.val('');
		alert('数字が入ってない');
	}else if(w!=0||h!=0){
		map.panBy(new GSize(w,h));
	}
}

function gomaPanDirection() {
	var ox=$('#panDirection_dx'),oy=$('#panDirection_dy');
	var x=ox.val(),y=oy.val();
	if(isNaN(x)||isNaN(y)){
		ox.val('');
		oy.val('');
		alert('数字が入ってない');
	}else if(x!=0||y!=0){
		map.panDirection(x, y);
	}
}
function gomaOpenInfoWindowTabs(){
	var t1=d.getElementById('tab1'); //タブウィンドウを閉じるとnullになる
	if(t1==null){
		t1=d.createElement('div');
		var t2=d.createElement('div'),t3=d.createElement('div');
		t1.id='tab1';
		t2.id='tab2';
		t3.id='tab3';
		t1.innerHTML='Tab1だよ';
		t2.innerHTML='Tab２ なんだぜ';
		t3.innerHTML='Tab3なのか？';
		t1.style.border='1px solid #FF0000';
		t2.style.border='1px dotted #00FF00';
		t3.style.border='3px double #0000FF';
	}else{
		var t2=d.getElementById('tab2'),t3=d.getElementById('tab3');
	}
	var infoTabs = [
		new GInfoWindowTab("Tab #1", t1),
		new GInfoWindowTab("Tab #2", t2),
		new GInfoWindowTab("Tab #3", t3)
	];
	map.openInfoWindowTabs(center, infoTabs, {selectedTab:1});
}
function gomaOpenInfoWindowTabsHtml(){
	var infoTabs = [
		new GInfoWindowTab("Tab #1", 'Tab1だってばよ'),
		new GInfoWindowTab("Tab #2", 'Tab2 でございます'),
		new GInfoWindowTab("Tab #3", 'Tab3 でいいのか？')
	];
	map.openInfoWindowTabsHtml(center, infoTabs);
}

//マーカー追加
function gomaAddMarkerCenter(){
	var marker = new GMarker(center,{title:'マーカー'})
	map.addOverlay(marker);
	var my_count= ++marker_counter;
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(my_count+'個目のマーカーの情報ウィンドウだ！');
	});
	GEvent.addListener(marker, "remove", function() {
//		marker_counter--;
		map.closeInfoWindow();
	});
	GEvent.addListener(marker, "dblclick", function() {
		map.removeOverlay(marker);
	});
}