var map;
var localSearch = new GlocalSearch();
//alert("candSearch");
var candSearch = new GlocalSearch();
var vacmarkers = [];      
var vicon = new GIcon();
vicon.image = "images/vmarker.png";
//vicon.shadow = "http://www.google.com/mapfiles/shadow50.png";
vicon.iconSize = new GSize(32, 32);
//vicon.shadowSize = new GSize(37, 34);
vicon.iconAnchor = new GPoint(16, 16);

var vicon_r = new GIcon();
vicon_r.image = "images/vmarker_hover.png";
vicon_r.iconSize = new GSize(32, 32);
vicon_r.iconAnchor = new GPoint(16, 16);

var candidate = new GIcon();
candidate.image = "images/cmarker.png";
//candidate.shadow = "http://www.google.com/mapfiles/shadow50.png";
candidate.iconSize = new GSize(32, 32);
//candidate.shadowSize = new GSize(37, 34);
candidate.iconAnchor = new GPoint(16, 16);

/*
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 placeVacAtPostcode(postcode) {
	
	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);
				var marker = new GMarker(point,icon);
				map.addOverlay(marker);
			}else{
				alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(postcode + ", UK");
}

function placeVacAtLatLong(lat,lng,vac_id,posi) {
				// Add a small amount of rnd to lat and lng
				//var rndnum = Math.random()-0.5;
				//rndnum=Math.round(rndnum*10);
				//rndnum=rndnum/1000000;
				//alert (rndnum);
				//lat=lat+rndnum;
				//lng=lng+rndnum;
				var point = new GLatLng(lat,lng);
				
				if (posi.length==1) var offset = new GSize(-4,-7);
				if (posi.length==2) var offset = new GSize(-8,-7);
				var label_txt = '<span class="marker_label">'+posi+'</span>';
				var marker = new LabeledMarker(point, {icon: vicon, labelText: label_txt, labelOffset: offset  });
				vacmarkers.push(marker);
				GEvent.addListener(marker, "click", function() {
	  			map.panTo(point);
				window.location='#'+vac_id;
				for (var i = 0; i < vacmarkers.length; i++) vacmarkers[i].setImage("images/vmarker.png");
				
				marker.setImage("images/vmarker_hover.png");
				var x = document.getElementsByTagName('div');
				
				
				for (var i = 0; i < x.length; i++)
				{
				removeClass(x[i],"result_highlite");
				
				}
		
	      
				addClass(document.getElementById('div_'+vac_id),'result_highlite');
				
				});
				map.addOverlay(marker);
				
}


function placeVacAtLatLongINFO(lat,lng) {
	
				var point = new GLatLng(lat,lng);
				var marker = new LabeledMarker(point, {icon: vicon });
				map.addOverlay(marker);
				map.setCenter(point, 10);
}



function placeCandidateAtPostcode(postcode) {
	
	candSearch.setSearchCompleteCallback(null, 
		function() {
			
			if (candSearch.results[0])
			{	
				
				var resultLat = candSearch.results[0].lat;
				var resultLng = candSearch.results[0].lng;
				var point = new GLatLng(resultLat,resultLng);
				var markerc = new GMarker(point,candidate);
				map.addOverlay(markerc);
				map.setCenter(point, 8, G_NORMAL_MAP);
				
			}else{
				alert("Postcode not found!");
			}
		});	
		
	candSearch.execute(postcode + ", UK");
}

function moveandzoommap(lat,lng,vac_id,posi)
{
	var point = new GLatLng(lat,lng);
	map.panTo(point);
	//map.setCenter(point, 12);
		var x = document.getElementsByTagName('div');
				for (var i = 0; i < vacmarkers.length; i++) 
				{ vacmarkers[i].setImage("images/vmarker.png");
				
				}
				vacmarkers[posi].setImage("images/vmarker_hover.png");
				for (var i = 0; i < x.length; i++)
				{
				removeClass(x[i],"result_highlite");
				}
		
	      
				addClass(document.getElementById('div_'+vac_id),'result_highlite');
				
}
function placeMarkerAtPoint(point)
{
 
	var marker = new GMarker(point,icon);
	
	map.addOverlay(marker);
}


function setCenterToPoint(point)
{
	map.setCenter(point, 9, G_NORMAL_MAP);
}

function showPointLatLng(point)
{
	alert("Latitude: " + point.lat() + "\nLongitude: " + point.lng());
}

function mapLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		
		
		map.addControl(new GSmallMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(54.622978,-2.592773), 4, G_NORMAL_MAP);

	}
}

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();
	  }
	}
}

function hasClass(ele,cls) {
	return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}
function addClass(ele,cls) {
	if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}
function removeClass(ele,cls) {
	if (hasClass(ele,cls)) {
		var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
		ele.className=ele.className.replace(reg,' ');
	}
}





addLoadEvent(mapLoad);
addUnLoadEvent(GUnload);

