var o_GMap;
var o_GDeocoder;
var int_GoogleMapZoom = 14;

function fLoadGoogleMap (flt_GoogleLat, flt_GoogleLng, str_GoogleAddress)
{
	if (GBrowserIsCompatible())
	{
		o_GDeocoder = new GClientGeocoder();
		o_GMap = new GMap2(document.getElementById('box_GoogleMap'));

		o_GMap.addControl(new GSmallMapControl());
		o_GMap.addControl(new GMapTypeControl());

		o_GMap.enableContinuousZoom();
		o_GMap.enableDoubleClickZoom();
		o_GMap.enableScrollWheelZoom();

		o_GMap.setCenter(new GLatLng(45.421902, -75.744698), int_GoogleMapZoom);

		if ((flt_GoogleLat != 0.0) &&
			 (flt_GoogleLng != 0.0))
		{
			o_GPoint = new GLatLng(flt_GoogleLat, flt_GoogleLng);

			o_GMarker = fCreateMarker(o_GPoint, str_GoogleAddress);

			o_GMap.addOverlay(o_GMarker);

			o_GMap.setCenter(o_GPoint, int_GoogleMapZoom);
		}
		else if (str_GoogleAddress != '')
		{
			fShowLocation (str_GoogleAddress);
		}
	}
}


// fAddMarker() is called when the o_GDeocoder returns an answer
function fAddMarker (var_GResponse)
{
	o_GMap.clearOverlays();

	if (var_GResponse && var_GResponse.Status.code == 200)
	{
		o_GPlace = var_GResponse.Placemark[0];

		o_GPoint = new GLatLng(o_GPlace.Point.coordinates[1], o_GPlace.Point.coordinates[0]);

		var str_MarkerHtml = o_GPlace.address;
	
		o_GMarker = fCreateMarker(o_GPoint, str_MarkerHtml);

		o_GMap.addOverlay(o_GMarker);
	}

	o_GMap.setCenter(o_GPoint, int_GoogleMapZoom);
}


function fShowLocation (str_GoogleAddress)
{
	o_GDeocoder.getLocations(str_GoogleAddress, fAddMarker);
}


function fCreateMarker (o_GPoint, str_MarkerHtml)
{
	var o_GMarker = new GMarker(o_GPoint);

	GEvent.addListener(o_GMarker, 'click', function()
		{
			o_GMarker.openInfoWindowHtml(str_MarkerHtml);
		}
	);

	return o_GMarker;
}


// This functions prevents the browser scrollbar from moving when scrolling on the map.
function fHandleWheelEvent(e)
{
	if (!e)
	{
		e = window.event
	}

	if (e.preventDefault)
	{
		e.preventDefault()
	}

	e.returnValue = false;
}

GEvent.addDomListener(o_GMap.getContainer(), "DOMMouseScroll", fHandleWheelEvent);
o_GMap.getContainer().onmousewheel = fHandleWheelEvent;
