/*
 * Sets up the Dynamic Google Maps API
 */

var gmapLoaded=[];
var gmap=[];

// API loaded?
function loadedGMap()
{
	window.gmapReady=true;
}

// Show interactive map
function showInteractiveMap(id,lat,lng,zoom,type)
{
	if (window.gmapReady && !window.gmapLoaded[id])
	{
		window.gmapLoaded[id]=true;
		var mapLatLng = new google.maps.LatLng(lat,lng);
		var mapType = google.maps.MapTypeId.ROADMAP;
		if (type=='satellite')
		{
			mapType = google.maps.MapTypeId.SATELLITE;
		}
		else if (type=='hybrid')
		{
			mapType = google.maps.MapTypeId.HYBRID;
		}
		else if (type=='terrain')
		{
			mapType = google.maps.MapTypeId.TERRAIN;
		}
		var mapOptions = {
			center: mapLatLng,
			zoom: zoom,
			mapTypeId: mapType,
			mapTypeControl: true,
			zoomControl: true
		}
		// Load map
		gmap[id] = new google.maps.Map(document.getElementById("cke-gmap-dynamicmap-"+id),mapOptions);
		// Add marker
		var marker = new google.maps.Marker({
			position: mapLatLng, 
			map: gmap[id]
		});
		// Remove static (when tilesloaded)
		google.maps.event.addListener(gmap[id], "tilesloaded", Function("pushStaticMap("+id+");"));
		// If event doesn work, in 2 seconds (seems to work:)
		//removeStaticMap(id);
	}
	else if (!window.gmapReady)
	{
		// Not yet ready, try again in 200ms
		setTimeout('showInteractiveMap('+id+','+lat+','+lng+','+zoom+',\''+type+'\');',200);
	}
}

// Functions to "remove" static map when dynamic has been loaded
function removeStaticMap(id)
{
	setTimeout(Function("pushStaticMap("+id+");"),2000);
}
function pushStaticMap(id)
{
	var staticMapImage = document.getElementById("cke-gmap-staticmapimg-"+id);
	staticMapImage.style.zIndex = 0;
}

// Add event to onload
function addLoadEvent(func)
{
	var oldonload = window.onload; 
	if (typeof window.onload != 'function')
	{
		window.onload = func; 
	}
	else
	{
		window.onload = function()
		{ 
			if (oldonload)
			{ 
				oldonload(); 
			} 
			func(); 
		}
	} 
} 

// Load only once
function loadGMapScript()
{
	if (window.gmapLoadRequested)
	{
		return;
	}
	window.gmapLoadRequested=true;
	var gmapapi = document.createElement("script");
	gmapapi.type="text/javascript";
	gmapapi.src="http://maps.google.com/maps/api/js?sensor=false&callback=loadedGMap";
	document.body.appendChild(gmapapi); 
}

// Add event
addLoadEvent(loadGMapScript);

