var setObj = new Object();
setObj.lat = 34.748524;
setObj.lng = 135.533451;
setObj.msg = "ひがし歯科<br />〒533-0005<br />大阪市東淀川区瑞光1-11-3-6F<br />TEL.06-4809-0008";

var gmap = null;
var adjust_x = 54;
var adjust_y = 160;
setObj.disp = 1;
var customWindowObj = document.getElementById("gmap_window");
var customWindowBodyObj = document.getElementById("custom_disp");

// streatview init
var myPano;	 
var panoClient;
var houseMarker;
var overlayInstance = null;
//


function tf(obj) {
	if(obj.value == obj.defaultValue){
		obj.value = "";
		obj.style.color = "#000000";
	}
}
function tb(obj) {
	if(obj.value == ""){
		obj.value = obj.defaultValue;
		obj.style.color = "#999999";
	}
}

function openCustomWindowBeta(msg,lat,lng){
	var customWindowObj = document.getElementById("gmap_window");
	var customWindowBodyObj = document.getElementById("custom_disp");
	if(setObj.disp){
		adjustPos();
		customWindowObj.style.display = "block";
		customWindowBodyObj.innerHTML = msg;
		setObj.disp = 0;
	}
	else {
		var customWindowObj = document.getElementById("gmap_window");
		customWindowObj.style.display = "none";
		setObj.disp = 1;
	}
}
//
function closeCustomWindow(){
	var customWindowObj = document.getElementById("gmap_window");
	customWindowObj.style.display = "none";
	setObj.disp = 1;
}
function adjustPos(){
	var customWindowObj = document.getElementById("gmap_window");
	var marker_pixls = gmap.fromLatLngToDivPixel(new GLatLng(setObj.lat, setObj.lng));
	customWindowObj.style.top = (marker_pixls.y - adjust_y) + "px";
	customWindowObj.style.left = (marker_pixls.x - adjust_x) + "px";
}
function mapsreload(){
	gmap = new GMap2(document.getElementById("gmap"));
	gmap.setCenter(new GLatLng(setObj.lat,setObj.lng), 15);
	
	var customInfoDIV = document.getElementById("gmap_window");
	function customBox(){}
	customBox.prototype = new GOverlay();
	customBox.prototype.initialize = function(gmap){
		//gmap.getPane(G_MAP_MARKER_PANE).appendChild(customInfoDIV);
		//customInfoDIV.style.zIndex = 300000;
	}
	customBox.prototype.remove = function() {
		gmap.getPane(G_MAP_MARKER_PANE).removeChild(customInfoDIV);
	}
	customBox.prototype.copy = function() {
		return new customBox();
	}
	customBox.prototype.redraw = function(force){}
	customInfoWindow = new customBox();
	gmap.addOverlay(customInfoWindow);
	
	gmap.addControl(new GLargeMapControl());
	gmap.addControl(new GMapTypeControl(true));
	gmap.addControl(new GScaleControl());
	gmap.setMapType(G_HYBRID_MAP);
	var icon = new GIcon();
	icon.image = "images/pin.png";
	icon.iconSize = new GSize(40, 40);
	icon.iconAnchor = new GPoint(20, 30);
	icon.infoWindowAnchor = new GPoint(40, 40);
	var marker = new GMarker(new GLatLng(setObj.lat,setObj.lng), icon);
	gmap.addOverlay(marker);
}
function mapsload() {
	gmap = new GMap2(document.getElementById("gmap"));
	gmap.setCenter(new GLatLng(setObj.lat,setObj.lng), 15);
	var customInfoDIV = document.getElementById("gmap_window");
	function customBox(){}
	customBox.prototype = new GOverlay();
	customBox.prototype.initialize = function(gmap){
		gmap.getPane(G_MAP_MARKER_PANE).appendChild(customInfoDIV);
		customInfoDIV.style.zIndex = 300000;
	}
	customBox.prototype.remove = function() {
		gmap.getPane(G_MAP_MARKER_PANE).removeChild(customInfoDIV);
	}
	customBox.prototype.copy = function() {
		return new customBox();
	}
	customBox.prototype.redraw = function(force){}
	customInfoWindow = new customBox();
	gmap.addOverlay(customInfoWindow);
	
	gmap.addControl(new GLargeMapControl());
	gmap.addControl(new GMapTypeControl(true));
	gmap.addControl(new GScaleControl());
	//gmap.setMapType(G_HYBRID_MAP);
	var icon = new GIcon();
	icon.image = "images/pin.png";
	icon.iconSize = new GSize(40, 40);
	icon.iconAnchor = new GPoint(20, 30);
	icon.infoWindowAnchor = new GPoint(40, 40);
	var marker = new GMarker(new GLatLng(setObj.lat,setObj.lng), icon);
	gmap.addOverlay(marker);
	
	GEvent.addListener(marker, "click", function(){openCustomWindowBeta(setObj.msg,setObj.lat, setObj.lng);});
	GEvent.addListener(gmap, "moveend", function() {adjustPos();});
	GEvent.addListener(gmap, "zoomend", function() {adjustPos();});
	openCustomWindowBeta(setObj.msg,setObj.lat, setObj.lng);
	
	// streat view
	panoClient = new GStreetviewClient();
	var guyIcon = new GIcon(G_DEFAULT_ICON);
	guyIcon.image = "http://maps.gstatic.com/mapfiles/cb/man_arrow-0.png";
	guyIcon.transparent = "http://maps.gstatic.com/mapfiles/cb/man-pick.png";
	guyIcon.imageMap = [26,13, 30,14, 32,28, 27,28, 28,36, 18,35, 18,27, 16,26,16,20, 16,14, 19,13, 22,8];
	guyIcon.iconSize = new GSize(49, 52);
	guyIcon.iconAnchor = new GPoint(25, 35);
	guyIcon.infoWindowAnchor = new GPoint(25, 5);
	houseMarker = new GMarker(new GLatLng(setObj.lat,setObj.lng), {icon: guyIcon, draggable: true});
	gmap.addOverlay(houseMarker); 
	//houseMarker.openInfoWindowHtml("Drag me to angle the panorama towards a potential building location.");
	GEvent.addListener(houseMarker, "dragend", function() {
		panoClient.getNearestPanorama(houseMarker.getLatLng(),showPanoData);
	});
	
	myPano = new GStreetviewPanorama(document.getElementById("pano"));
	panoClient.getNearestPanorama(houseMarker.getLatLng(), showPanoData);
	toggleOverlay();
	//
}
function toggleOverlay() {
	if (!overlayInstance) {
		overlayInstance = new GStreetviewOverlay();
		gmap.addOverlay(overlayInstance);
	} else {
		gmap.removeOverlay(overlayInstance);
		overlayInstance = null;
	}
}
function showPanoData(panoData) {
	if (panoData.code != 200) {
		//GLog.write('showPanoData: Server rejected with code: ' + panoData.code);
		return;
	}
	var angle = computeAngle(houseMarker.getLatLng(), panoData.location.latlng);
	myPano.setLocationAndPOV(panoData.location.latlng, {yaw: angle});
}
function computeAngle(endLatLng, startLatLng) {
	var DEGREE_PER_RADIAN = 57.2957795;
	var RADIAN_PER_DEGREE = 0.017453;
	var dlat = endLatLng.lat() - startLatLng.lat();
	var dlng = endLatLng.lng() - startLatLng.lng();
	// We multiply dlng with cos(endLat), since the two points are very closeby,
	// so we assume their cos values are approximately equal.
	var yaw = Math.atan2(dlng * Math.cos(endLatLng.lat() * RADIAN_PER_DEGREE), dlat) * DEGREE_PER_RADIAN;
	return wrapAngle(yaw);
}
function wrapAngle(angle) {
	if (angle >= 360) {
		angle -= 360;
	} else if (angle < 0) {
	 angle += 360;
	}
	return angle;
};

if (GBrowserIsCompatible()) {
	addEventSet(window,"load",function(){mapsload();});
	onunload = GUnload;
}

