﻿//<![CDATA[
//
// Added this all as a seperate js file with seperate AJAX calls rather
// than using the ajax.lib.js in the /common folder
// Mainly just to make it a bit more portable

// main marker
var marker;
var map;
addOnloadEvent(InitMap); // = InitMap;
//
// Load map, wrapped in a function to try and get around IE7 and its bollocks "Operation aborted" issue
//
function InitMap() {
    
    if (GBrowserIsCompatible()) {

        map = new GMap2(document.getElementById("map"));
        map.setUIToDefault();

        var uiOptions = map.getDefaultUI();
        uiOptions.controls.scalecontrol = false;
        uiOptions.controls.largemapcontrol3d = true;
        uiOptions.controls.maptypecontrol = true;

        // Now set the map's UI with the tweaked options.
        map.setUI(uiOptions);


//                   map.addControl(new GLargeMapControl3D());
//                   map.addControl(new GMapTypeControl());
            
            // set centre
            var hdLat = 55.859112;
            var hdLng = -4.246628;
            var defZoom = 15;
		    var center = new GLatLng(hdLat, hdLng);

		    map.setCenter(center, defZoom);
		   // map.setUIToDefault();

		    //marker = new GMarker(center, { icon: new GIcon(G_DEFAULT_ICON, "/common/GMap/bigmarker.png"), draggable: true })

		    var customIcon = new GIcon(G_DEFAULT_ICON)
		    customIcon.image = "/common/GMap/bigmarker.png";
		    customIcon.iconSize = new GSize(61, 60);
		    customIcon.iconAnchor = new GPoint(20, 50);
		    customIcon.draggable = false;

		    markerOptions = { icon: customIcon, clickable: false };
		    marker = new GMarker(center, markerOptions);		    
		    
            GEvent.addListener(marker, "dragstart", function() {
              map.closeInfoWindow();
            });
    		
		    GEvent.addListener(marker, "dragend", function() {
		      document.getElementById(hdLatID).value = marker.getPoint().lat();
		      document.getElementById(hdLngID).value = marker.getPoint().lng();
		    });
    		
		    map.addOverlay(marker);

    }
    else {
      alert("Sorry, the Google Maps API is not compatible with this browser");
    }
}

//
// Make AJAX call if postcode entered
//
var _oldPostCode = null;
var _this = null;
function findPoint(field){
    var validpostcode = new RegExp(/^[a-zA-Z]{1,2}[0-9][0-9A-Za-z]{0,1} {0,1}[0-9][A-Za-z]{2}$/);
    _this = field;
    _oldPostCode = field.value;
    
    if (field.value.match(validpostcode)){
        //valid postcode
        field.style.border = "1px solid #00FF00";
        _oldPostCode = _this.value;
        _this.value = "...loading, please wait...";
        ajaxpack.getAjaxRequest("/admin/GMap/data.ashx", "postcode=" + _oldPostCode, setGeocode, "xml");
    }
    else{
        // invalid postcode
        field.style.border	= "1px solid #FF0000";
    }

}

//
// handles callback functionality once new postcode geodata is loaded
//
function setGeocode(){
    var myajax      = ajaxpack.ajaxobj;
    var myfiletype  = ajaxpack.filetype;
    var XML;

    
    
    if (myajax.readyState == 4){ //if request of file completed
        if (myajax.status==200 || window.location.href.indexOf("http")==-1){ 
            var XML         = myajax.responseXML;
            var geoXML = new GetXMLObject(XML, 'geocode');
            
            // update hidden fields
            document.getElementById(hdLatID).value = geoXML.lat;
            document.getElementById(hdLngID).value = geoXML.lng;

            _this.value = _oldPostCode;
            _this = null;
            _oldPostCode = null;
            
            // move marker
            var center = new GLatLng(geoXML.lat, geoXML.lng);
            marker.setPoint(center);
            map.setCenter(center, 14);
        } // got file
    } // req completed
}

// ---------------------------
// function to add multiple window.onload
function addOnloadEvent(fnc){
  if ( typeof window.addEventListener != "undefined" )
    window.addEventListener( "load", fnc, false );
  else if ( typeof window.attachEvent != "undefined" ) {
    window.attachEvent( "onload", fnc );
  }
  else {
    if ( window.onload != null ) {
      var oldOnload = window.onload;
      window.onload = function ( e ) {
        oldOnload( e );
        window[fnc]();
      };
    }
    else
      window.onload = fnc;
  }
}