var map;
var localSearch = new GlocalSearch();
var mapzoom;
var storelat;
var storelong;


function addEvent(oTarget, sType, fpDest) {
  sType = 'on'+sType;
  var oOldEvent = oTarget[sType];
  if (typeof oOldEvent != "function") {
    oTarget[sType] = fpDest;
  } else {
    oTarget[sType] = function(e) {
      oOldEvent(e);
      fpDest(e);
    }
  }
}


function getDirectionsToStore( postcode )
{
    var start = document.getElementById('start').value;
    window.open("http://maps.google.co.uk/maps?saddr=" + escape(start) + "&daddr=" + postcode);
}

function getDirectionsFromStore( postcode )
{
    var end = document.getElementById('end').value;
    window.open("http://maps.google.co.uk/maps?daddr=" + escape(end) + "&saddr=" + postcode);
}


function placeMarker()
{
    var Icon = new GIcon();
    Icon.image = "/img/markerSign.png";
    Icon.iconSize = new GSize(45, 45);
    Icon.shadow = "/img/markerSignShadow.png";
    Icon.shadowSize = new GSize(78, 47);
    Icon.iconAnchor = new GPoint(10, 45);
    Icon.infoWindowAnchor = new GPoint(21, 0);
    title = '';
    point = new GLatLng(storelat,storelong);
    var marker = new GMarker(point, {icon: Icon, title: title}); 
    marker.name = title; // add some info that we can access later for linking               
    marker.id =  '';
    // add marker to the map
    map.addOverlay(marker);
}


function createMap()
{
    // basic  function just to create the google map
    map = new GMap2(document.getElementById("storeMap"));
    map.addControl(new GLargeMapControl());
    map.addControl(new GMapTypeControl());
    map.addMapType(G_PHYSICAL_MAP);
    map.addMapType(G_NORMAL_MAP); 
    
     // set min/max map scale
    var minmapscale = 5;
    var maxmapscale = 15;
    // get array of map types
    var mapTypes = map.getMapTypes();
    // overwrite the getMinimumResolution() and getMaximumResolution() methods for each map type
    for (var i=0; i<mapTypes.length; i++) {
        mapTypes[i].getMinimumResolution = function() {return minmapscale;}
        mapTypes[i].getMaximumResolution = function() {return maxmapscale;}
    }

}


function addMapListeners()
{
    // lets add some listeners for click and zoom events
    GEvent.addListener(map, "moveend", function() { checkZoom(); });
    GEvent.addListener(map, "zoom", function() { checkZoom(); });
}

function checkZoom()
{
    placeMarker(); 
}


function mapLoad( ) 
{
  // unless we are setting the zoom to be something else default it to 4 veiw of europe
  if (GBrowserIsCompatible()) 
  {
      storelat = document.getElementById('storelat').value;
      storelong = document.getElementById('storelong').value;
      createMap();  
      map.setCenter(new GLatLng(storelat,storelong), 15, G_NORMAL_MAP);
      placeMarker()
      //addMapListeners();    
            
  }
}


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}

function addUnLoadEvent(func) {
// we need this to avoid memory leaks
var oldonunload = window.onunload;
if (typeof window.onunload != 'function') {
  window.onunload = func;
  } else {
    window.onunload = function() {
        oldonunload();
            func();
              }
              }
}



addLoadEvent(mapLoad);


addUnLoadEvent(GUnload);
