var gmlb_width=600;
var gmlb_height=450;
var gmOverlay;
var gmContainer;
var gmMap;
var gmLabel;
var gmMapObject = null;
var gm_zoom;
var gm_mapType;
var gm_close;
var gm_marker = null;
function gmLb_init(){
	$j("a[rel=gmap]").bind("click", function(){gm_ShowMap(this);return false;});
	gmOverlay = $j.create("div", {"id":"gmlb_overlay"} ).hide().css({"position":(document.all?"absolute":"fixed"),"top":"0px","left":"0px"});	
	gmContainer = $j.create("div", {"id":"gmlb_container"} ).css({"width":gmlb_width+"px","position":"absolute","top":"100px","display":"inline"});	
	gmLabel = $j.create("div", {"id":"gmlb_label" ,"class":"gmlb_label"}).css({"display":"block"});
	gmClose = $j.create("div").css({"display":"block"}).html( "<div class=\"closebar row\"><a href=\"javascript:void(0);\" onclick=\"gmOverlay.hide();$j('select').show();return false;\"><img src=\"/images/close.gif\" alt=\"Close\" /></a></div>" );
	gmMap = $j.create("div", {"id":"gmlb_map"}).css({"width":gmlb_width+"px","height":gmlb_height+"px","display":"block"}).bind("click",function(){return false;});	
	$j("body").append(gmOverlay.append(gmContainer.append(gmClose).append(gmMap)));
}
function gm_ShowMap(obj){
	if(obj.title) gmLabel.html("<h2>" + obj.title + "</h2>");
	else gmLabel.empty();
	if(document.all) gmOverlay.css( {"top":getScrollHeight(), "left" : getScrollWidth() });	
	gmOverlay.css( {"width":getFrameWidth(), "height":getFrameHeight()}).show();	
	gmContainer.css({"left":((getFrameWidth()-gmContainer[0].offsetWidth)/2)+"px","top":((getFrameHeight()-gmContainer[0].offsetHeight)/2)+"px"});
	$j("select").hide();
	gm_setMap(parseGmapLink(obj.href));		
}
function gm_setMap(params) {
	if (GBrowserIsCompatible()) {
		if(!gmMapObject) {
			gmMapObject = new GMap2(gmMap[0]);
			gmMapObject.addControl(new GLargeMapControl());
			gmMapObject.addControl(new GMapTypeControl());
		}
		gm_mapType=G_NORMAL_MAP;
		gm_zoom=10;
		if (params["t"]=="k"){gm_mapType=G_SATELLITE_MAP;gm_zoom=parseInt(params["z"]);}
		else if (params["t"]=="" || params["t"]==null){gm_mapType=G_NORMAL_MAP;gm_zoom=parseInt(params["z"]);}
		else if (params["t"]=="h"){gm_mapType=G_HYBRID_MAP;gm_zoom=parseInt(params["z"]);}
		if(params["lat"]==null && params["long"]==null && params["q"]!=null && params["q"].indexOf("http://")==-1) {
 			  (new GClientGeocoder()).getLatLng( unescape(params["q"].replace(/\+/g,  " ")), function(point){
						gmMapObject.setCenter(point, gm_zoom, gm_mapType);
						gm_addMarker(point);
				});
		}
		else if(params["q"]!=null && params["q"].indexOf('http://')!=-1){}
		else {
			var point = new GLatLng(params["lat"],params["long"]);
			gmMapObject.setCenter(point, gm_zoom,gm_mapType);
			gm_addMarker(point);
		}
	}
}
function getFrameWidth(){
	if (self.innerWidth) return self.innerWidth;
	else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientWidth;
	else if (document.body) return document.body.clientWidth;
	else return;
}
function getFrameHeight() {
	if (self.innerWidth) return self.innerHeight;
	else if (document.documentElement && document.documentElement.clientWidth) return document.documentElement.clientHeight;
	else if (document.body) return document.body.clientHeight;
	else return;
}
function getScrollWidth() {
   var w = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
   return w ? w : 0;
}
function getScrollHeight() {
   var h = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
   return h ? h : 0;
}
function gm_addMarker(point){
	var myicon = new GIcon();
	myicon.image = "/images/pin.png";
	myicon.iconSize = new GSize(32, 46);
	myicon.iconAnchor = new GPoint(29, 45);
	if(gm_marker!=null) gmMapObject.removeOverlay(gm_marker);
	if( myicon ) gm_marker = new GMarker(point, myicon);
	else gm_marker = new GMarker(point);
	gmMapObject.addOverlay(gm_marker);
}
function gm_addXMLMarker(geoxml) {
	if(gm_marker!=null) gmMapObject.removeOverlay(gm_marker);
	gmMapObject.addOverlay(geoxml);
}
function parseGmapLink(url){
	var parts = url.split("?");
	if(parts.length<2) return new Array();
	var params = parts[1].split("&");
	var gMapParams=new Array();
	for(i = 0 ; i < params.length ; i++) {
		keyValue=params[i].split("=");
		if(keyValue[0]!="ll") gMapParams[keyValue[0]]=keyValue[1];
		else {
			var latlong=keyValue[1].split(",");
			gMapParams["lat"]=latlong[0];
			gMapParams["long"]=latlong[1];
		}
	}
	return gMapParams;
}
$j(document).ready(function(){
	gmLb_init();
});