
var map;
var localSearch = new GlocalSearch();

var imagePath = "http://www.foodanddrinknsacademy.co.uk/images/icons/";
//************************************************************
//Set Up Icons
//*************************************************************
//Bakery
var bakery = new GIcon();

bakery.image = imagePath+"bakery.png";
bakery.shadow = imagePath+"shadow.png";
bakery.iconSize = new GSize(28, 32);
bakery.shadowSize = new GSize(33, 32);
bakery.iconAnchor = new GPoint(14, 32);
bakery.infoWindowAnchor = new GPoint(14, 1);

//Bakery Master
var bakeryMaster = new GIcon();

bakeryMaster.image = imagePath+"bakery_master.png";
bakeryMaster.shadow = imagePath+"shadow.png";
bakeryMaster.iconSize = new GSize(28, 32);
bakeryMaster.shadowSize = new GSize(33, 32);
bakeryMaster.iconAnchor = new GPoint(14, 32);
bakeryMaster.infoWindowAnchor = new GPoint(14, 1);

//commercial
var commercial = new GIcon();

commercial.image = imagePath+"commercial.png";
commercial.shadow = imagePath+"shadow.png";
commercial.iconSize = new GSize(28, 32);
commercial.shadowSize = new GSize(33, 32);
commercial.iconAnchor = new GPoint(14, 32);
commercial.infoWindowAnchor = new GPoint(14, 1);

//commercial Master
var commercialMaster = new GIcon();

commercialMaster.image = imagePath+"commercial_master.png";
commercialMaster.shadow = imagePath+"shadow.png";
commercialMaster.iconSize = new GSize(28, 32);
commercialMaster.shadowSize = new GSize(33, 32);
commercialMaster.iconAnchor = new GPoint(14, 32);
commercialMaster.infoWindowAnchor = new GPoint(14, 1);

//dairy
var dairy = new GIcon();

dairy.image = imagePath+"dairy.png";
dairy.shadow = imagePath+"shadow.png";
dairy.iconSize = new GSize(28, 32);
dairy.shadowSize = new GSize(33, 32);
dairy.iconAnchor = new GPoint(14, 32);
dairy.infoWindowAnchor = new GPoint(14, 1);

//commercial Master
var dairyMaster = new GIcon();

dairyMaster.image = imagePath+"dairy_master.png";
dairyMaster.shadow = imagePath+"shadow.png";
dairyMaster.iconSize = new GSize(28, 32);
dairyMaster.shadowSize = new GSize(33, 32);
dairyMaster.iconAnchor = new GPoint(14, 32);
dairyMaster.infoWindowAnchor = new GPoint(14, 1);

//drinks
var drinks = new GIcon();

drinks.image = imagePath+"drinks.png";
drinks.shadow = imagePath+"shadow.png";
drinks.iconSize = new GSize(28, 32);
drinks.shadowSize = new GSize(33, 32);
drinks.iconAnchor = new GPoint(14, 32);
drinks.infoWindowAnchor = new GPoint(14, 1);

//drinks Master
var drinksMaster = new GIcon();

drinksMaster.image = imagePath+"drinks_master.png";
drinksMaster.shadow = imagePath+"shadow.png";
drinksMaster.iconSize = new GSize(28, 32);
drinksMaster.shadowSize = new GSize(33, 32);
drinksMaster.iconAnchor = new GPoint(14, 32);
drinksMaster.infoWindowAnchor = new GPoint(14, 1);

//energy
var energy = new GIcon();

energy.image = imagePath+"energy.png";
energy.shadow = imagePath+"shadow.png";
energy.iconSize = new GSize(28, 32);
energy.shadowSize = new GSize(33, 32);
energy.iconAnchor = new GPoint(14, 32);
energy.infoWindowAnchor = new GPoint(14, 1);

//energy Master
var energyMaster = new GIcon();

energyMaster.image = imagePath+"energy_master.png";
energyMaster.shadow = imagePath+"shadow.png";
energyMaster.iconSize = new GSize(28, 32);
energyMaster.shadowSize = new GSize(33, 32);
energyMaster.iconAnchor = new GPoint(14, 32);
energyMaster.infoWindowAnchor = new GPoint(14, 1);


//fooddrink
var fooddrink = new GIcon();

fooddrink.image = imagePath+"fooddrink.png";
fooddrink.shadow = imagePath+"shadow.png";
fooddrink.iconSize = new GSize(28, 32);
fooddrink.shadowSize = new GSize(33, 32);
fooddrink.iconAnchor = new GPoint(14, 32);
fooddrink.infoWindowAnchor = new GPoint(14, 1);

//fooddrink Master
var fooddrinkMaster = new GIcon();

fooddrinkMaster.image = imagePath+"fooddrink_master.png";
fooddrinkMaster.shadow = imagePath+"shadow.png";
fooddrinkMaster.iconSize = new GSize(28, 32);
fooddrinkMaster.shadowSize = new GSize(33, 32);
fooddrinkMaster.iconAnchor = new GPoint(14, 32);
fooddrinkMaster.infoWindowAnchor = new GPoint(14, 1);


//fresh
var fresh = new GIcon();

fresh.image = imagePath+"fresh.png";
fresh.shadow = imagePath+"shadow.png";
fresh.iconSize = new GSize(28, 32);
fresh.shadowSize = new GSize(33, 32);
fresh.iconAnchor = new GPoint(14, 32);
fresh.infoWindowAnchor = new GPoint(14, 1);

//fresh Master
var freshMaster = new GIcon();

freshMaster.image = imagePath+"fresh_master.png";
freshMaster.shadow = imagePath+"shadow.png";
freshMaster.iconSize = new GSize(28, 32);
freshMaster.shadowSize = new GSize(33, 32);
freshMaster.iconAnchor = new GPoint(14, 32);
freshMaster.infoWindowAnchor = new GPoint(14, 1);


//innovation
var innovation = new GIcon();

innovation.image = imagePath+"innovation.png";
innovation.shadow = imagePath+"shadow.png";
innovation.iconSize = new GSize(28, 32);
innovation.shadowSize = new GSize(33, 32);
innovation.iconAnchor = new GPoint(14, 32);
innovation.infoWindowAnchor = new GPoint(14, 1);

//innovationMaster Master
var innovationMaster = new GIcon();

innovationMaster.image = imagePath+"innovation_master.png";
innovationMaster.shadow = imagePath+"shadow.png";
innovationMaster.iconSize = new GSize(28, 32);
innovationMaster.shadowSize = new GSize(33, 32);
innovationMaster.iconAnchor = new GPoint(14, 32);
innovationMaster.infoWindowAnchor = new GPoint(14, 1);


//leadership
var leadership = new GIcon();

leadership.image = imagePath+"leadership.png";
leadership.shadow = imagePath+"shadow.png";
leadership.iconSize = new GSize(28, 32);
leadership.shadowSize = new GSize(33, 32);
leadership.iconAnchor = new GPoint(14, 32);
leadership.infoWindowAnchor = new GPoint(14, 1);

//leadership Master
var leadershipMaster = new GIcon();

leadershipMaster.image = imagePath+"leadership_master.png";
leadershipMaster.shadow = imagePath+"shadow.png";
leadershipMaster.iconSize = new GSize(28, 32);
leadershipMaster.shadowSize = new GSize(33, 32);
leadershipMaster.iconAnchor = new GPoint(14, 32);
leadershipMaster.infoWindowAnchor = new GPoint(14, 1);

//lean
var lean = new GIcon();

lean.image = imagePath+"lean.png";
lean.shadow = imagePath+"shadow.png";
lean.iconSize = new GSize(28, 32);
lean.shadowSize = new GSize(33, 32);
lean.iconAnchor = new GPoint(14, 32);
lean.infoWindowAnchor = new GPoint(14, 1);

//lean Master
var leanMaster = new GIcon();

leanMaster.image = imagePath+"lean_master.png";
leanMaster.shadow = imagePath+"shadow.png";
leanMaster.iconSize = new GSize(28, 32);
leanMaster.shadowSize = new GSize(33, 32);
leanMaster.iconAnchor = new GPoint(14, 32);
leanMaster.infoWindowAnchor = new GPoint(14, 1);

//meat
var meat = new GIcon();

meat.image = imagePath+"meat.png";
meat.shadow = imagePath+"shadow.png";
meat.iconSize = new GSize(28, 32);
meat.shadowSize = new GSize(33, 32);
meat.iconAnchor = new GPoint(14, 32);
meat.infoWindowAnchor = new GPoint(14, 1);

//meat Master
var meatMaster = new GIcon();

meatMaster.image = imagePath+"meat_master.png";
meatMaster.shadow = imagePath+"shadow.png";
meatMaster.iconSize = new GSize(28, 32);
meatMaster.shadowSize = new GSize(33, 32);
meatMaster.iconAnchor = new GPoint(14, 32);
meatMaster.infoWindowAnchor = new GPoint(14, 1);

//robots
var robots = new GIcon();

robots.image = imagePath+"robots.png";
robots.shadow = imagePath+"shadow.png";
robots.iconSize = new GSize(28, 32);
robots.shadowSize = new GSize(33, 32);
robots.iconAnchor = new GPoint(14, 32);
robots.infoWindowAnchor = new GPoint(14, 1);

//robots Master
var robotsMaster = new GIcon();

robotsMaster.image = imagePath+"robots_master.png";
robotsMaster.shadow = imagePath+"shadow.png";
robotsMaster.iconSize = new GSize(28, 32);
robotsMaster.shadowSize = new GSize(33, 32);
robotsMaster.iconAnchor = new GPoint(14, 32);
robotsMaster.infoWindowAnchor = new GPoint(14, 1);

//rural
var rural = new GIcon();

rural.image = imagePath+"rural.png";
rural.shadow = imagePath+"shadow.png";
rural.iconSize = new GSize(28, 32);
rural.shadowSize = new GSize(33, 32);
rural.iconAnchor = new GPoint(14, 32);
rural.infoWindowAnchor = new GPoint(14, 1);

//rural Master
var ruralMaster = new GIcon();

ruralMaster.image = imagePath+"rural_master.png";
ruralMaster.shadow = imagePath+"shadow.png";
ruralMaster.iconSize = new GSize(28, 32);
ruralMaster.shadowSize = new GSize(33, 32);
ruralMaster.iconAnchor = new GPoint(14, 32);
ruralMaster.infoWindowAnchor = new GPoint(14, 1);

//seafood
var seafood = new GIcon();

seafood.image = imagePath+"seafood.png";
seafood.shadow = imagePath+"shadow.png";
seafood.iconSize = new GSize(28, 32);
seafood.shadowSize = new GSize(33, 32);
seafood.iconAnchor = new GPoint(14, 32);
seafood.infoWindowAnchor = new GPoint(14, 1);

//rural Master
var seafoodMaster = new GIcon();

seafoodMaster.image = imagePath+"seafood_master.png";
seafoodMaster.shadow = imagePath+"shadow.png";
seafoodMaster.iconSize = new GSize(28, 32);
seafoodMaster.shadowSize = new GSize(33, 32);
seafoodMaster.iconAnchor = new GPoint(14, 32);
seafoodMaster.infoWindowAnchor = new GPoint(14, 1);

//logistics
var logistics = new GIcon();

logistics.image = imagePath+"logistics.png";
logistics.shadow = imagePath+"shadow.png";
logistics.iconSize = new GSize(28, 32);
logistics.shadowSize = new GSize(33, 32);
logistics.iconAnchor = new GPoint(14, 32);
logistics.infoWindowAnchor = new GPoint(14, 1);

//logistics Master
var logisticsMaster = new GIcon();

logisticsMaster.image = imagePath+"logistics_master.png";
logisticsMaster.shadow = imagePath+"shadow.png";
logisticsMaster.iconSize = new GSize(28, 32);
logisticsMaster.shadowSize = new GSize(33, 32);
logisticsMaster.iconAnchor = new GPoint(14, 32);
logisticsMaster.infoWindowAnchor = new GPoint(14, 1);

//engineering
var engineering = new GIcon();

engineering.image = imagePath+"engineering.png";
engineering.shadow = imagePath+"shadow.png";
engineering.iconSize = new GSize(28, 32);
engineering.shadowSize = new GSize(33, 32);
engineering.iconAnchor = new GPoint(14, 32);
engineering.infoWindowAnchor = new GPoint(14, 1);

//engineering Master
var engineeringMaster = new GIcon();

engineeringMaster.image = imagePath+"engineering_master.png";
engineeringMaster.shadow = imagePath+"shadow.png";
engineeringMaster.iconSize = new GSize(28, 32);
engineeringMaster.shadowSize = new GSize(33, 32);
engineeringMaster.iconAnchor = new GPoint(14, 32);
engineeringMaster.infoWindowAnchor = new GPoint(14, 1);

//mult 2
var mult2 = new GIcon();

mult2.image = imagePath+"2.png";
mult2.shadow = imagePath+"shadow.png";
mult2.iconSize = new GSize(28, 32);
mult2.shadowSize = new GSize(33, 32);
mult2.iconAnchor = new GPoint(14, 32);
mult2.infoWindowAnchor = new GPoint(14, 1);

//mult 3
var mult3 = new GIcon();

mult3.image = imagePath+"3.png";
mult3.shadow = imagePath+"shadow.png";
mult3.iconSize = new GSize(28, 32);
mult3.shadowSize = new GSize(33, 32);
mult3.iconAnchor = new GPoint(14, 32);
mult3.infoWindowAnchor = new GPoint(14, 1);

//mult 4
var mult4 = new GIcon();

mult4.image = imagePath+"4.png";
mult4.shadow = imagePath+"shadow.png";
mult4.iconSize = new GSize(28, 32);
mult4.shadowSize = new GSize(33, 32);
mult4.iconAnchor = new GPoint(14, 32);
mult4.infoWindowAnchor = new GPoint(14, 1);

//mult 5
var mult5 = new GIcon();

mult5.image = imagePath+"5.png";
mult5.shadow = imagePath+"shadow.png";
mult5.iconSize = new GSize(28, 32);
mult5.shadowSize = new GSize(33, 32);
mult5.iconAnchor = new GPoint(14, 32);
mult5.infoWindowAnchor = new GPoint(14, 1);

//mult 6
var mult6 = new GIcon();

mult6.image = imagePath+"6.png";
mult6.shadow = imagePath+"shadow.png";
mult6.iconSize = new GSize(28, 32);
mult6.shadowSize = new GSize(33, 32);
mult6.iconAnchor = new GPoint(14, 32);
mult6.infoWindowAnchor = new GPoint(14, 1);

//mult 7
var mult7 = new GIcon();

mult7.image = imagePath+"7.png";
mult7.shadow = imagePath+"shadow.png";
mult7.iconSize = new GSize(28, 32);
mult7.shadowSize = new GSize(33, 32);
mult7.iconAnchor = new GPoint(14, 32);
mult7.infoWindowAnchor = new GPoint(14, 1);

//mult 8
var mult8 = new GIcon();

mult8.image = imagePath+"8.png";
mult8.shadow = imagePath+"shadow.png";
mult8.iconSize = new GSize(28, 32);
mult8.shadowSize = new GSize(33, 32);
mult8.iconAnchor = new GPoint(14, 32);
mult8.infoWindowAnchor = new GPoint(14, 1);

//mult 9
var mult9 = new GIcon();

mult9.image = imagePath+"9.png";
mult9.shadow = imagePath+"shadow.png";
mult9.iconSize = new GSize(28, 32);
mult9.shadowSize = new GSize(33, 32);
mult9.iconAnchor = new GPoint(14, 32);
mult9.infoWindowAnchor = new GPoint(14, 1);

//*************************************************

var homeIcon = new GIcon();

homeIcon.image = "http://maps.google.com/mapfiles/kml/pal3/icon56.png";
homeIcon.shadow = "http://maps.google.com/mapfiles/kml/pal3/icon56s.png";
homeIcon.iconSize = new GSize(32, 32);
homeIcon.shadowSize = new GSize(56, 32);
homeIcon.iconAnchor = new GPoint(16, 32);
homeIcon.infoWindowAnchor = new GPoint(5, 1);


 

// The allowed region which the whole map must be within
 var allowedBounds = new GLatLngBounds(new GLatLng(49.5,-10), new GLatLng(59,2.6));
      
 // If the map position is out of range, move it back
 function checkBounds() {
 // Perform the check and return if OK
 if (allowedBounds.contains(map.getCenter())) {
      return;
 }
 // It`s not OK, so find the nearest allowed point and move there
        var C = map.getCenter();
        var X = C.lng();
        var Y = C.lat();

        var AmaxX = allowedBounds.getNorthEast().lng();
        var AmaxY = allowedBounds.getNorthEast().lat();
        var AminX = allowedBounds.getSouthWest().lng();
        var AminY = allowedBounds.getSouthWest().lat();

        if (X < AminX) {X = AminX;}
        if (X > AmaxX) {X = AmaxX;}
        if (Y < AminY) {Y = AminY;}
        if (Y > AmaxY) {Y = AmaxY;}
        //alert ("Restricting "+Y+" "+X);
        map.setCenter(new GLatLng(Y,X));
  }



function usePointFromPostcode(postcode, callbackFunction) {
	
	localSearch.setSearchCompleteCallback(null, 
		function() {
			
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				callbackFunction(point);

			}else{
				alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(postcode + ", UK");
}


function getLongLatPostcode(postcode) {
	
	localSearch.setSearchCompleteCallback(null, 
		function() {
			
			if (localSearch.results[0])
			{		
				var resultLat = localSearch.results[0].lat;
				var resultLng = localSearch.results[0].lng;
				var url = 'ajax/convert_postcode_ajax.php?long=' + localSearch.results[0].lng + '&lat=' + localSearch.results[0].lat + '&postcode=' + postcode;
				run_ajax(convertPost,url);
			}else{
				alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(postcode + ", UK");
}


function showRegion(){

	var region = document.getElementById('region').value;
	var url = 'ajax/get_region.php?id=' + region;
	run_ajax(setMapToRegion,url);
	
}

function showRegionSetUp(){

	var region = document.getElementById('region').value;
	var url = 'ajax/get_region.php?id=' + region;
	run_ajax(setMapToRegionSetUp,url);
	
}

function showNetwork(){
	mapSetUp();
	var network = document.getElementById('network').value;
	var url = 'ajax/get_network.php?id='+network;
	run_ajax(outputNetworks,url);
	
}

function showNetworkReg(){
	mapSetUp();
	var network = document.getElementById('network').value;
	if(network == 0){
		network = 13;	
	}
	var url = 'ajax/get_network.php?id='+network;
	run_ajax(outputNetworks,url);
	
}




function placeMarkerAtPoint(point)
{
	var marker = new GMarker(point,bakery);
	
	var html = "<b>" + document.getElementById('postcode').value + "</b>";  
	GEvent.addListener(marker, 'click', function() {    
		marker.openInfoWindowHtml(html);
	});  
	
	map.addOverlay(marker);
}




function createMarker(point, outIcon, name,town,postcode,url,networkName) {  
	

	
	switch(outIcon){
		case "bakery": var marker = new GMarker(point, bakery);break;
		case "bakeryMaster": var marker = new GMarker(point, bakeryMaster);break;
		case "commercial": var marker = new GMarker(point, commercial);break;
		case "commercialMaster": var marker = new GMarker(point, commercialMaster);break;
		case "dairy": var marker = new GMarker(point, dairy);break;
		case "dairyMaster": var marker = new GMarker(point, dairyMaster);break;
		case "drinks": var marker = new GMarker(point, drinks);break;
		case "drinksMaster": var marker = new GMarker(point, drinksMaster);break;
		case "dairy": var marker = new GMarker(point, dairy);break;
		case "dairyMaster": var marker = new GMarker(point, dairyMaster);break;
		case "energy": var marker = new GMarker(point, energy);break;
		case "energyMaster": var marker = new GMarker(point, energyMaster);break;
		case "fooddrink": var marker = new GMarker(point, fooddrink);break;
		case "fooddrinkMaster": var marker = new GMarker(point, fooddrinkMaster);break;
		case "fresh": var marker = new GMarker(point, fresh);break;
		case "freshMaster": var marker = new GMarker(point, freshMaster);break;
		case "innovation": var marker = new GMarker(point, innovation);break;
		case "innovationMaster": var marker = new GMarker(point, innovationMaster);break;
		case "leadership": var marker = new GMarker(point, leadership);break;
		case "leadershipMaster": var marker = new GMarker(point, leadershipMaster);break;
		case "lean": var marker = new GMarker(point, lean);break;
		case "leanMaster": var marker = new GMarker(point, leanMaster);break;
		case "meat": var marker = new GMarker(point, meat);break;
		case "meatMaster": var marker = new GMarker(point, meatMaster);break;
		case "robots": var marker = new GMarker(point, robots);break;
		case "robotsMaster": var marker = new GMarker(point, robotsMaster);break;
		case "rural": var marker = new GMarker(point, rural);break;
		case "ruralMaster": var marker = new GMarker(point, ruralMaster);break;
		case "seafood": var marker = new GMarker(point, seafood);break;
		case "seafoodMaster": var marker = new GMarker(point, seafoodMaster);break;
		case "logistics": var marker = new GMarker(point, logistics);break;
		case "logisticsMaster": var marker = new GMarker(point, logisticsMaster);break;
		case "engineering": var marker = new GMarker(point, engineering);break;
		case "engineeringMaster": var marker = new GMarker(point, engineeringMaster);break;
		case "mult2": var marker = new GMarker(point, mult2);break;
		case "mult3": var marker = new GMarker(point, mult3);break;
		case "mult4": var marker = new GMarker(point, mult4);break;
		case "mult5": var marker = new GMarker(point, mult5);break;
		case "mult6": var marker = new GMarker(point, mult6);break;
		case "mult7": var marker = new GMarker(point, mult7);break;
		case "mult8": var marker = new GMarker(point, mult8);break;
		case "mult9": var marker = new GMarker(point, mult9);break;
		
	}
	
/*	var marker = new GMarker(point, outIcon);  */
	var html = "<span style=\"font-size:12px;\"><b>"+ networkName + "</b><br /><b>" + name + "</b> <br/>" + town + "<br /><b>" + postcode +" </b><br /><a href=\"" + url + "\">More Info</a></span>";  
	GEvent.addListener(marker, 'click', function() {    
		marker.openInfoWindowHtml(html);
	});  
	return marker;
}


function centerMap(supps){
	
	map.setCenter(new GLatLng(supps[1],supps[0]));
	var zoom = parseInt(supps[2]);
	map.setZoom(zoom);
}


function outputPins(supps){
	
	for ( i=0; i < supps.length; i++ )
    {
		
		var name = supps[i][0];
		var town = supps[i][1];
		var postcode = supps[i][2];
		var url = supps[i][3];
		var outIcon = supps[i][6];
		var point = new GLatLng(supps[i][5],supps[i][4]);
		var networkName = supps[i][7];
		var marker = createMarker(point,outIcon,name,town,postcode,url,networkName);
		map.addOverlay(marker);
	
	}
	
}


function mapLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.setCenter(new GLatLng(54.622978,-2.592773), 6, G_NORMAL_MAP);
		map.enableScrollWheelZoom();
		// Add a move listener to restrict the bounds range
		GEvent.addListener(map, "move", function() {
      		 checkBounds();
		});
		
		
	  // ====== Restricting the range of Zoom Levels =====
      // Get the list of map types      
      var mt = map.getMapTypes();
      // Overwrite the getMinimumResolution() and getMaximumResolution() methods
      for (var i=0; i<mt.length; i++) {
        mt[i].getMinimumResolution = function() {return 5;}
        mt[i].getMaximumResolution = function() {return 16;}
      }
	  
	  showRegionSetUp();
	  
	  showNetwork();
		
	}

}



function mapSetUp(){
	
	map.clearOverlays();

}



function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}



function addUnLoadEvent(func) {
	var oldonunload = window.onunload; 
	if (typeof window.onunload != 'function') {
	  window.onunload = func;
	} else {
	  window.onunload = function() {
	    oldonunload();
	    func();
	  }
	}
}



addLoadEvent(mapLoad);
addUnLoadEvent(GUnload);
