
var GMap;
var GMapBounds;

var MarkerArray;
MarkerArray = new Array();
var MarkerCount=0;
var LastMarker=0;
var WindowArray;
WindowArray = new Array();

// Setup default icons
var SkodaIcon = new GIcon(G_DEFAULT_ICON);
SkodaIcon.image = "/images/gmap-skoda-marker.png"; 
SkodaIcon.iconSize = new GSize(20,34);

var HomeIcon = new GIcon(G_DEFAULT_ICON);
HomeIcon.image = "/images/gmap-home-marker.png"; 
HomeIcon.iconSize = new GSize(20,34);


function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

function addUnloadEvent(func) {
  var oldonunload = window.onunload;
  if (typeof window.onunload != 'function') {
    window.onunload = func;
  } else {
    window.onunload = function() {
      if (oldonunload) {
        oldonunload();
      }
      func();
    }
  }
}

function InitMap(){
	if (GBrowserIsCompatible()) {
		GUnload();
		GMap = new GMap2(document.getElementById("map_canvas"));
		GMap.addControl(new GLargeMapControl());
		GMap.addControl(new GMapTypeControl());
		
		// Default location, showing the entire uk
		var point = new GLatLng(54.136696, -3.647461); 
		GMap.setCenter(point, 5);
		
		// Prepare zoom boundry
		GMapBounds = new GLatLngBounds;
		
		addUnloadEvent(function(){ GUnload(); });
	}
}

// Add user's home location
function addHome(Content, Lat, Long){

	ExtendBound(Lat, Long)
	
	var MarkerOptions = { title:Content, icon:HomeIcon };

	var point = new GLatLng(Lat, Long);
	var marker = new GMarker(point, MarkerOptions);
	// GMap.addOverlay(marker); TODO: Hide home point until we get accurate maps back
	
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml("<div class='InfoWindow'>No place like home</div>");
    });

	
	// Store marker for later use
	MarkerArray[0] = marker;
	MarkerCount++;
}

function addYetiDealer(ID, Name, Header, Content, Lat, Long, ZoomTo) {

	if (ZoomTo)
	{
		ExtendBound(Lat, Long)
	}

	var MarkerOptions = { title:Name, icon:SkodaIcon };
	
	var point = new GLatLng(Lat, Long);
	var marker = new GMarker(point, MarkerOptions);
	GMap.addOverlay(marker);
	
	var InfoWindowContent = "<div class='InfoWindow'>"+Header+""+Content+"</div>";
	
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(InfoWindowContent);
    });
	
	// Store marker for later use
	MarkerArray[ID] = marker;
	WindowArray[ID] = InfoWindowContent;
	MarkerCount++;
	LastMarker = marker; // Store last marker, if only 1 marker present map will centre on this point
}

// Add dealer location
function addDealer(ID, Name, Content, Lat, Long){

	ExtendBound(Lat, Long)

	var MarkerOptions = { title:Name, icon:SkodaIcon };
	
	var point = new GLatLng(Lat, Long);
	var marker = new GMarker(point, MarkerOptions);
	GMap.addOverlay(marker);
	
	var MapLink = document.getElementById("MapLink"+ID);
	if(MapLink){
		var Header="<a href='"+MapLink.href+"'>"+Name+"</a>";
	}else{
		var Header="<strong>"+Name+"</strong>";
	}
	
	var InfoWindowContent = "<div class='InfoWindow'><div class='header'>"+Header+"</div><div class='body'>"+Content+"</div></div>";
	
	
	
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(InfoWindowContent);
    });
	
	
	// Store marker for later use
	MarkerArray[ID] = marker;
	WindowArray[ID] = InfoWindowContent;
	MarkerCount++;
	LastMarker = marker; // Store last marker, if only 1 marker present map will centre on this point
}

// Activate InfoWindow for given marker
function ActivateInfoWindow(ID){
	MarkerArray[ID].openInfoWindowHtml(WindowArray[ID]);
}

// Extend map boundry, giving all points a little breathing space
function ExtendBound(Lat, Long){
	GMapBounds.extend(new GLatLng(Lat-0.01, Long-0.01));
	GMapBounds.extend(new GLatLng(Lat+0.01, Long+0.01));
}

function InitRetailerSearch(){

	if (GMap) {
		
		if(MarkerCount>1){
			// Multiple points shown on map
			GMap.setZoom(GMap.getBoundsZoomLevel(GMapBounds));
			GMap.setCenter(GMapBounds.getCenter());
			
		}else if(MarkerCount>0){
			// Only one item on map (infers 1 result and no home marker)
			GMap.setZoom(12);
			GMap.setCenter(LastMarker.getPoint());
			
		}else{
			// Default location for uk map
		}
	}
	
	GMap.savePosition();
}


function InitRetailerLocation(Lat, Long){
	if(Lat && Long){
	
		var MarkerOptions = { icon:SkodaIcon };
		var point = new GLatLng(Lat, Long);
		var marker = new GMarker(point, MarkerOptions);
		GMap.addOverlay(marker);
	
		GMap.setZoom(12);
		GMap.setCenter(point);
		GMap.savePosition();
	}
	
}


