var infostatus = false;
var textnode = "";
var map, omap;
var mdiv, odiv;
var geocoder;
var marker;
var centerlatlng;
var address;
var glatTmp = 35.976276;
var glngTmp = 139.756073;

//GoogleMap API Key
//var gmapApiKey = "ABQIAAAAoZtCScA73pHQSeEkX18NCBTsVgHBb4AYWUA1JNZeV5Olnu5O7BSMS8Ta14VMlktfQIxBNx5wXZ28gQ"
var gmapApiKey = "ABQIAAAAqRWDuVAXxGK6eGYq7gjmHhT6e7B72mNuhDN8kJ6M-u4yPuKxTxTT-mOGBE0JEwLUhRkzk5qzqY4O0g"
var gmapUrl = "http://maps.google.com/maps?file=api&amp;v=2.s&amp;key=" + gmapApiKey + "&amp;datum=wgs84";
document.write("<script type=\"text/javascript\" charset=\"utf-8\" src=\"" + gmapUrl + "\"></script>");

function $(tagId) {
	return document.getElementById(tagId);
}

window.onload = function() {
	textnode = "<span class=\"fnt16 bold\">" + $("gmapName").innerHTML + "</span><br /><span class=\"fnt14\">" + $("gmapAdrs").innerHTML + "<br />" + $("gmapTel").innerHTML + "</span>";
	sf();
}

window.unload = function() {
	GUnload();
}

function sf(){
	mdiv = gid("map");
	map = new GMap2(mdiv);
	geocoder = new GClientGeocoder();
	var adrsTmp = $("gmapAdrs").innerHTML;
	if(adrsTmp.match(/.*\b/) != -1) {
		adrsTmp = adrsTmp.match(/.*\b/)
	}
	address = adrsTmp;
	centerlatlng = new GLatLng(glatTmp, glngTmp);

	// user agent
	if (navigator.userAgent.match("MSIE")) {
		gid("map").attachEvent("onmousewheel", mouseWheelZoomingIE);
	} else if (navigator.userAgent.match("Gecko")) {
		gid("map").addEventListener("DOMMouseScroll", mouseWheelZoomingGecko, false);
	} else if (navigator.userAgent.match("Safari")) {
		gid("map").onmousewheel = mouseWheelZoomingIE;
	}
	
	GMLoad();
}

function gid(id){
	return document.getElementById(id);
}

function mouseWheelZoomingIE(event){
	var delta = event.wheelDelta;
	event.returnValue = false;
	delta < 0 ? map.zoomOut() : map.zoomIn();
}

function mouseWheelZoomingGecko(event){
	var delta = event.detail * -1;
	event.preventDefault();
	delta < 0 ? map.zoomOut() : map.zoomIn();
}

function GMLoad() {
	if((glatTmp == 35.976276) && (glngTmp == 139.756073)) {
		geocoder.getLatLng(address,
			function(point) {
				if (!point) {
				} else {
					centerlatlng = point;
				}
					GMSetControl();
				}
		);
	} else {
		GMSetControl();
	}
}

function GMSetControl(){
	map.setCenter(centerlatlng, 14);
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GScaleControl());

	var moveend = false;

	marker = new GMarker(map.getCenter());
	map.addOverlay(marker);
	marker.openInfoWindowHtml(textnode);

	GEvent.addListener(marker, "infowindowopen", function() {
		infostatus = true;
	});

	GEvent.addListener(marker, "infowindowclose", function() {
		infostatus = false;
	});

	GEvent.addListener(marker, "click", function() {
		if (!infostatus) {
			marker.openInfoWindowHtml(textnode);
		} else {
			map.closeInfoWindow();
		}
	});

	GEvent.addListener(map, "moveend", function() {
		if (moveend) {
			centerlatlng = map.getCenter();
			var lng = centerlatlng.lng(); // x
			var lat = centerlatlng.lat(); // y
		} else {
			moveend = true;
		}
	});

	OVLoad();
}

function OVLoad() {
	omap = new GOverviewMapControl(new GSize(150,150));
	map.addControl(omap);
	odiv = gid("map_overview");
	GEvent.addDomListener(odiv, "click",  function() {setTimeout("repositionDirector()",100);});
	if (document.all) {setTimeout("repositionDirector()",100);} else {repositionDirector();}
}

function repositionDirector() {
	//reposition(odiv, mdiv.offsetLeft + 390, mdiv.offsetTop);
	//reposition(odiv, mdiv.offsetLeft + 588, 0);
}

function reposition(elem, x, y) {
	elem.style.left = x + "px";
	elem.style.top  = y + "px";
}