var map;

function addLoadEvent(func)
{
	var oldonload = window.onload; 
	if (typeof window.onload != 'function')
	{ 
		window.onload = func; 
	}
	else 
	{ 
		window.onload = function() { if (oldonload) { oldonload(); } func(); } 
	} 
} 

function initGoogleMapViewer(centerlng,centerlat,zoom,pointlng,pointlat,title,address)
{
	if (centerlng == "" || centerlat == "")
	{
		centerlng = "53.26521293124656";
		centerlat = "-3.603515625";
		zoom      = "11";
	}

	map = new GMap(document.getElementById("googlemap"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.centerAndZoom(new GPoint(parseFloat(centerlat), parseFloat(centerlng)), parseFloat(zoom));

	if (pointlng!="" && pointlat!="")
	{	
	  	var marker = new createMarker(new GPoint(parseFloat(pointlat), parseFloat(pointlng)),getMarkerDirectionsHTML(pointlng,pointlat,title,address));
	
		map.addOverlay(marker);
	}
}

function initGoogleMap(bEdit)
{
	if (document.cms_form.googlemaps_centerlng.value == "" || document.cms_form.googlemaps_centerlat == "")
	{
		document.cms_form.googlemaps_centerlng.value = "53.26521293124656";
		document.cms_form.googlemaps_centerlat.value = "-3.603515625";
		document.cms_form.googlemaps_zoom.value      = "11";
	}

	centerlng = document.cms_form.googlemaps_centerlng.value;
	centerlat = document.cms_form.googlemaps_centerlat.value;
	zoom      = document.cms_form.googlemaps_zoom.value;
	pointlng  = document.cms_form.googlemaps_pointlng.value;
	pointlat  = document.cms_form.googlemaps_pointlat.value;

	map = new GMap(document.getElementById("googlemap"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.centerAndZoom(new GPoint(parseFloat(centerlat), parseFloat(centerlng)), parseFloat(zoom));

	if (bEdit)
	{
		GEvent.addListener(map, "zoom", function(oldZoomLevel, newZoomLevel) { document.cms_form.googlemaps_zoom.value = newZoomLevel; } );
		GEvent.addListener(map, "moveend", function() { 
	
		var latlng = map.getCenter().toString();
		space = latlng.indexOf(" ");
		document.cms_form.googlemaps_centerlng.value = latlng.substr(1,space-2);
		document.cms_form.googlemaps_centerlat.value = latlng.substr(space+1,(latlng.length - space)-2);
		
		});
		GEvent.addListener(map, 'click', function(overlay, point) {
  
		if (point)
		{
			var latlng = "" + point;
			space = latlng.indexOf(" ");

			pointlng = latlng.substr(1,space-2);
			pointlat = latlng.substr(space+1,(latlng.length - space)-2);

			document.cms_form.googlemaps_pointlng.value = pointlng;
			document.cms_form.googlemaps_pointlat.value = pointlat;

			map.clearOverlays();

			var marker = createMarker(point,getMarkerHTML(pointlng,pointlat));

			map.addOverlay(marker);
		}  	

		});
	}

	if (pointlng!="" && pointlat!="")
	{	
	  	var marker = new createMarker(new GPoint(parseFloat(pointlat), parseFloat(pointlng)),getMarkerHTML(pointlng,pointlat));
	
		map.addOverlay(marker);
	}
}

function getMarkerHTML(pointlng,pointlat)
{
	var html = "";

	html += "<div style=\"width:250px;overflow:auto;text-align:left;\">";
	
	html += "Marker will appear here";

	html += "</form></div>";
	
	return html;
}

function getMarkerDirectionsHTML(pointlng,pointlat,title,address)
{
	var html = "";

	html += "<div style=\"width:250px;height:130px;overflow:hidden;text-align:left;\">";
	
	html += "<form style=\"margin:0px\" class=\"directions\" method=\"get\" action=\"http://maps.google.com/maps\" target=\"_blank\">";
	html += "<p style=\"margin: 0;\"><b>" + title + "</b><br/>" + address + "</p>";

	html += "<p style=\"margin: 8px 0 0 0;\">Get directions to here.<br/>";
	html += "Start address:</p>";

	html += "<input name=\"saddr\" value=\"\" style=\"width: 10em\"> <input type=\"submit\" value=\"Go\">";

	html += "<input name=\"daddr\" value=\"" + pointlng + "," + pointlat + "\" type=\"hidden\">";
	html += "<input name=\"hl\" value=\"en\" type=\"hidden\">";

	html += "</form></div>";
	
	return html;
}

function createMarker(point, html) 
{
    var marker = new GMarker(point);

    GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(html); });

    marker.openInfoWindowHtml(html);

    return marker;
}
