/*
$HeadURL: svn+secure://svn.comminternet.com/main/websites/fairwaycapecod.com/trunk/web/common/framework/javascript/cxGoogleMaps.js $
$LastChangedRevision: 6298 $
$LastChangedDate: 2009-01-21 13:13:00 -0500 (Wed, 21 Jan 2009) $
*/

function cxGoogleMaps_init(pContainer, pLatitude, pLongitude, pZoomLevel, pZoomToFit)
{
    if (!GBrowserIsCompatible())
        return;

    // Save map settings to this map's container.
    pContainer.cxGoogleMaps_center = new GLatLng(pLatitude, pLongitude);
    pContainer.cxGoogleMaps_zoomLevel = pZoomLevel;
    pContainer.cxGoogleMaps_zoomToFit = pZoomToFit;
    pContainer.cxGoogleMaps_markers = new Array;

    var createFunction = function() { cxGoogleMaps_create(pContainer); };

    // Create the map once the page is loaded.
    if (window.addEventListener)
	window.addEventListener("load", createFunction, false);
    else if (window.attachEvent)
	window.attachEvent("onload", createFunction);
}

function cxGoogleMaps_create(pContainer)
{
    var map = new GMap2(pContainer);
    var zoomLevel = pContainer.cxGoogleMaps_zoomLevel;

    pContainer.cxGoogleMaps_map = map;

    if (pContainer.cxGoogleMaps_zoomToFit)
    {
	// Get the zoom level that shows all markers on the map.
	var bounds = new GLatLngBounds;
	for (var i = 0; i < pContainer.cxGoogleMaps_markers.length; ++i)
	    bounds.extend(pContainer.cxGoogleMaps_markers[i].getPoint());

	zoomLevel = map.getBoundsZoomLevel(bounds);

	if (zoomLevel > pContainer.cxGoogleMaps_zoomLevel)
	    zoomLevel = pContainer.cxGoogleMaps_zoomLevel;

	// Recenter the map.
	pContainer.cxGoogleMaps_center = new GLatLng((bounds.getNorthEast().lat() + bounds.getSouthWest().lat()) / 2, (bounds.getNorthEast().lng() + bounds.getSouthWest().lng()) / 2);
    }

    map.addControl(new GSmallMapControl());
    map.setCenter(pContainer.cxGoogleMaps_center, zoomLevel);

    // Add markers to the map.
    for (var i = 0; i < pContainer.cxGoogleMaps_markers.length; ++i)
        map.addOverlay(pContainer.cxGoogleMaps_markers[i]);
}

function cxGoogleMaps_addMarker(pContainer, pLatitude, pLongitude, pInfoWindow, pIcon)
{
    if (!pIcon)
	pIcon = G_DEFAULT_ICON;

    var marker = new GMarker(new GLatLng(pLatitude, pLongitude), pIcon);

    pContainer.cxGoogleMaps_markers.push(marker);

    if (pInfoWindow)
    {
	GEvent.addListener(marker, "click", function() {
	    pInfoWindow.style.display = "block";
	    marker.openInfoWindow(pInfoWindow);
	});
    }
}

function cxGoogleMaps_zoomIn(pContainer)
{
    pContainer.cxGoogleMaps_map.zoomIn();
}

function cxGoogleMaps_zoomOut(pContainer)
{
    pContainer.cxGoogleMaps_map.zoomOut();
}

