﻿/* Constants */
var MinZoom = 6;
var MaxZoom = 15;
var DefaultZoom = 9;
var PostcodeZoomLevel = 13;
var MinimumAddressAccuracyLevel = 4;
var UrlToKml = "http://www.jemena.com.au/maps/faults.kml?rand="+(new Date(mapTime)).valueOf();

/* Page Variables */
var geoXml;
var map;
var geocoder;
var checkForAddressAccuracy = true;
               
function loadMap(mapDiv)
{    
    if (!GBrowserIsCompatible())
    {
        mapDiv.innerHTML = 'Sorry, your browser isn\'t compatible with Google Maps.';
    }
    else
    {
        map = new GMap2(mapDiv, { mapTypes: [G_NORMAL_MAP]});        
        map.setCenter(new GLatLng(-37.886372,144.915161), DefaultZoom);               
        
        map.addControl(new GSmallMapControl());
        //map.addControl(new GScaleControl());
        //map.addControl(new GOverviewMapControl());
        //map.addControl(new GMapTypeControl());
        
        setZoomLevels();        
        
        geocoder = new GClientGeocoder();
        geocoder.setBaseCountryCode('AU');
        
        geoXml = new GGeoXml(UrlToKml, kmlLoaded);
        map.addOverlay(geoXml);
    }
}

function kmlLoaded()
{
    geoXml.gotoDefaultViewport(map);
}

function setZoomLevels()
{
    G_NORMAL_MAP.getMinimumResolution = function () { return MinZoom };
    G_NORMAL_MAP.getMaximumResolution = function () { return MaxZoom };

    //G_PHYSICAL_MAP.getMinimumResolution = function () { return MinZoom };
    //G_PHYSICAL_MAP.getMaximumResolution = function () { return MaxZoom };
    
    //G_SATELLITE_MAP.getMinimumResolution = function () { return MinZoom };
    //G_SATELLITE_MAP.getMaximumResolution = function () { return MaxZoom };
    
    //G_HYBRID_MAP.getMinimumResolution = function () { return MinZoom };
    //G_HYBRID_MAP.getMaximumResolution = function () { return MaxZoom };
}

function showAddress(address)
{
    if (geocoder)
    {
	map.closeInfoWindow();

        if (address.length > 0)
        {
            geocoder.getLocations(address + ', Victoria, AU', addToMap);           
        }
        else
        {
            kmlLoaded();
        }
    }
}

function addToMap(response)
{
   var geoStatusCode = response.Status.code;
   
   //alert("entered SetLocation with status code "+geoStatusCode);
   if (geoStatusCode == G_GEO_SUCCESS)
   {    
       place = response.Placemark[0];
   
       if (place.AddressDetails.Country.CountryNameCode == 'AU')
       {
           if (checkForAddressAccuracy && place.AddressDetails.Accuracy < MinimumAddressAccuracyLevel)
           {
               //alert('Accuracy not met');
               kmlLoaded();
               return;
           }
          
           point = new GLatLng(place.Point.coordinates[1],
                               place.Point.coordinates[0]);
               
           map.setCenter(point, PostcodeZoomLevel);
       }
       else
       {
           //alert('not found');
           kmlLoaded();
       }
   }
   else
   {
       //alert('not found');
       kmlLoaded();
   }
}