
// Parse this as PHP
// Pass in path by querystring (or can we look at referer fopr path?)

var objMap;

var centreIcon = new GIcon();
centreIcon.image = _rootFolder + 'images/design/gmap-centre.png';
centreIcon.iconSize = new GSize(18, 25);
centreIcon.shadow = _rootFolder + 'images/design/gmap-centre-shadow.png';
centreIcon.shadowSize = new GSize(26, 25);
centreIcon.iconAnchor = new GPoint(9, 25);
centreIcon.infoWindowAnchor = new GPoint(9, 6);

function createMap(strElem, dblLat, dblLng, intZoom)
{
    if (!GBrowserIsCompatible()) { return false; }
    
    objMap = new GMap2(document.getElementById(strElem));
    objMap.setCenter(new GLatLng(dblLat, dblLng), intZoom);
    objMap.savePosition();
    
    if (document.getElementById('divMapReset')) {
        document.getElementById('divMapReset').style.display = 'block';
    }
    
    return true;    
}

function resetMap()
{
    objMap.returnToSavedPosition();
}

function initHomePageMap(strElem) 
{
    setTimeout('doInitHomePageMap(\'' + strElem + '\');', 500);
}

function doInitHomePageMap(strElem)
{
    if (!createMap(strElem, 54.813348, -4.284668, 5)) { return; }
    objMap.addControl(new GLargeMapControl());
    GDownloadUrl(
        _rootFolder + 'ajax/centres.php',
        function(objReq) {
            plotCentres(objReq, strElem, false);
        }
    );
}

function plotCentres(objReq, strElem, blnCentreAndZoomMap)
{
    var objXML = GXml.parse(objReq);
    var colCentres = objXML.documentElement.getElementsByTagName("centre");   
    
    if (colCentres.length > 0) {
        var dblLat = parseFloat(colCentres[0].getAttribute('lat'));
        var dblLng = parseFloat(colCentres[0].getAttribute('lng'));
    
        var dblMinLat = dblLat;
        var dblMinLng = dblLng;
        var dblMaxLat = dblLat;
        var dblMaxLng = dblLng;
        
        for (var i = 0; i < colCentres.length; i++) {
            var dblLat = parseFloat(colCentres[i].getAttribute('lat'));
            var dblLng = parseFloat(colCentres[i].getAttribute('lng'));
        
            if (dblLat < dblMinLat) { dblMinLat = dblLat; }
            if (dblLat > dblMaxLat) { dblMaxLat = dblLat; }
            if (dblLng < dblMinLng) { dblMinLng = dblLng; }
            if (dblLng > dblMaxLng) { dblMaxLng = dblLng; }
        
            objMap.addOverlay(
                makeCentreMarker(
                    dblLat, 
                    dblLng,
                    colCentres[i].getElementsByTagName('name')[0].firstChild.data,
                    colCentres[i].getElementsByTagName('address')[0].firstChild.data,
                    colCentres[i].getElementsByTagName('vehicles')[0].firstChild.data,
                    colCentres[i].getElementsByTagName('folder_name')[0].firstChild.data
                )
            );
        }

        if (blnCentreAndZoomMap) {
            var dblDiffLat = dblMaxLat - dblMinLat;
            dblMinLat -= (dblDiffLat * 0.1);
            dblMaxLat += (dblDiffLat * 0.1);
            dblDiffLat *= 1.2;
            
            var dblDiffLng = dblMaxLng - dblMinLng;
            dblMinLng -= (dblDiffLng * 0.1);
            dblMaxLng += (dblDiffLng * 0.1);
            dblDiffLng *= 1.2;
            
            var dblLat = dblMinLat + (dblDiffLat / 2);
            var dblLng = dblMinLng + (dblDiffLng / 2);
            var intZoom = objMap.getBoundsZoomLevel(new GLatLngBounds(new GLatLng(dblMinLat, dblMinLng), new GLatLng(dblMaxLat, dblMaxLng)));
            
            objMap.setCenter(new GLatLng(dblLat, dblLng), intZoom);
        }
        objMap.savePosition();
    }
}

function makeCentreMarker(dblLat, dblLng, strName, strAddress, intVehicles, strFolderName)
{
    var objMarker = new GMarker(new GLatLng(dblLat, dblLng), { icon:centreIcon });
    GEvent.addListener(objMarker, "click", function() {
        objMarker.openInfoWindowHtml(
            '<div class=\"gmap-marker\"><p><strong><a href="' + _rootFolder + 'centre/' + strFolderName 
                + '/" title="View used vans at this centre" '
                + 'style=\"background:transparent;color:#000000;text-decoration:none;\">' 
                + strName + '</a></strong><br />'
                + strAddress + '<br />'
                + '<a href="' + _rootFolder + 'centre/' + strFolderName + '/" title="View used vans at this centre">'
                + intVehicles
                + ' vehicle'
                + (intVehicles == 1 ? '' : 's')
                + '</a></p></div>'
        );
    });
    return objMarker;
}

function initBrowseMap(strElem, intCountryID, intCountyID)
{
    setTimeout('doInitBrowseMap(\'' + strElem + '\', ' + intCountryID + ', ' + intCountyID + ');', 500);
}

function doInitBrowseMap(strElem, intCountryID, intCountyID)
{
    if (!createMap(strElem, 54.813348, -4.284668, 5)) { return; }
    objMap.addControl(new GLargeMapControl());
    GDownloadUrl(
        _rootFolder + 'ajax/centres.php?country=' + intCountryID + '&county=' + intCountyID,
        function(objReq) {
            plotCentres(objReq, strElem, true);
        }
    );
}

function initCentreSideBarMap(strElem, dblLat, dblLng)
{
    setTimeout('doInitCentreSideBarMap(\'' + strElem + '\', ' + dblLat + ', ' + dblLng + ');', 500);
}

function doInitCentreSideBarMap(strElem, dblLat, dblLng)
{
    if (!createMap(strElem, dblLat, dblLng, 14)) { return; }
    objMap.addControl(new GSmallZoomControl());
    objMap.addOverlay(new GMarker(new GLatLng(dblLat, dblLng), { icon:centreIcon }));
    objMap.disableDragging();
}