// JavaScript Document
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function TBGMap(mapId) {
	this.counter = 0;
	this.marker = null;
	this.map = new GMap2(document.getElementById(mapId));
	this.switchView = function(view) {
		if (view == "hk") {
			this.map.setCenter(new GLatLng(22.246204347963577,
					114.18571472167969), 12);
		} else if (view == "kn") {
			this.map.setCenter(new GLatLng(22.32038344304661,
					114.17713165283203), 13);
		} else if (view == "nt") {
			this.map.setCenter(new GLatLng(22.43578293037226,
					114.14588928222656), 11);
		} else {
			this.map.setCenter(new GLatLng(22.355156218589755,
					114.1204833984375), 10);
		}
	};
	this.switchView();
	this.map.setUIToDefault();
	this.map.enableGoogleBar();
	this.map.disableScrollWheelZoom();
	this.setMarker = function(lat, lng) {
		if (lat != 0 && lng != 0) {
			if (this.marker != null) {
				this.map.removeOverlay(this.marker);
			}
			this.marker = new GMarker(new GLatLng(lat, lng), {
				draggable : true
			});
			if (typeof TBGMap_OnUpdate == "function") {
				TBGMap_OnUpdate();
				GEvent.addListener(this.marker, "dragend", TBGMap_OnUpdate);
			}
			this.map.addOverlay(this.marker);
			this.counter++;
		}
	};
	this.MapOnClickEventListener = GEvent.bind(this.map, "click", this,
			function(overlay, latlng) {
				if (latlng) {
					this.setMarker(latlng.lat(), latlng.lng());
				} else if (overlay instanceof GMarker) {
					// This code is never executed as the event listener is 
					// removed the second time this event is triggered
			this.removeOverlay(this.marker)
		}
		// GEvent.removeListener(this.MapOnClickEventListener);
	});
	this.lockMarker = function(){
		if (this.MapOnClickEventListener != null)
		{
			GEvent.removeListener(this.MapOnClickEventListener);
			this.MapOnClickEventListener = null;
		}
		this.marker.disableDragging();
	};
	this.contextmenu = document.createElement("div");
	this.contextmenu.style.visibility = "hidden";
	this.contextmenu.style.background = "#ffffff";
	this.contextmenu.style.border = "1px solid #000000";
	this.contextmenu.innerHTML = '<a href="javascript:LockMarker()"><div class="context">Lock Marker</div></a>';
	this.map.getContainer().appendChild(this.contextmenu);

	var MapRightClickEventListener = GEvent.addListener(this.map,
			"singlerightclick", function(pixel, tile) {
			// store the "pixel" info in case we need it later
			// adjust the context menu location if near an egde
			// create a GControlPosition
			// apply it to the context menu, and make the context menu visible
			//clickedPixel = pixel;
			//var x=pixel.x;
			//var y=pixel.y;
			//if (x > this.getSize().width - 120) { x = this.getSize().width - 120 }
			//if (y > this.getSize().height - 100) { y = this.getSize().height - 100 }
			//var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(x,y));  
			//pos.apply(this.contextmenu);
			//this.contextmenu.style.visibility = "visible";
	});
}
