var map;
var localSearch = new GlocalSearch();
var ourP
var icon = new GIcon();
//icon.image = "http://www.google.com/mapfiles/marker.png";
icon.image = "http://www.kashflow.co.uk/images/marker.png";
icon.shadow = "http://www.google.com/mapfiles/shadow50.png";
icon.iconSize = new GSize(20, 34);
icon.shadowSize = new GSize(37, 34);
icon.iconAnchor = new GPoint(10, 34);
var resultLat 
var resultLng
var maploaded = false
var pointsloaded = false
var aPostCodes = new Array()
var aInfoTags = new Array()
var aPoints = new Array()
var aMarkers = new Array()
var aTitles = new Array()
var iMarkerTick = 0;

function showPoints() {
	postcode = aPostCodes[iMarkerTick]
	sInfo = aInfoTags[iMarkerTick]
	if (maploaded) {	
		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);
					addMarker(point, sInfo);
					//aPoints[iMarkerTick] = point;
					doNextPoint();
				}else{
					doNextPoint();//alert("Postcode not found!");
				}
			});	
			
		localSearch.execute(postcode + ", UK");
	}else{
		//alert('gonna wait for ' + postcode);
		setTimeout("showPoints();",200)	
	}
}
function doNextPoint(){
	
	if (iMarkerTick < (aPostCodes.length -1)){
		iMarkerTick++;
		showPoints();
	}else{
		pointsloaded = true	
	}
}
function ifPointsLoaded(sExec){
	if(pointsloaded){
		eval(sExec);	
	}else{
		setTimeout("ifPointsLoaded(" + sExec + ");",200)	
	}
}
function addMapPoint(sPC, sTitle, sInfo){
 	x = aPostCodes.length;
	aPostCodes[x] = sPC
	aTitles[x] = sTitle
    aInfoTags[x] = sInfo
}
function addMarker(point,txt) {
	var marker = new GMarker(point);
	marker.title = aTitles[iMarkerTick];
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(txt);
	});
	map.addOverlay(marker);
	//marker.openInfoWindowHtml(txt)
	aMarkers[iMarkerTick] = marker
}

function centerOnMapPoint(sPC, bShowText){
	for (i=0;i<=aPostCodes.length;i++){
		if (aPostCodes[i] == sPC) {
			map.setCenter(aPoints[i], 12);
			if (bShowText) {
				var marker = aMarkers[i];
				marker.openInfoWindowHtml(aInfoTags[i]);
			}
		}
	}
}
function placeMarkerAndCentre(point)
{
	//var marker = new GMarker(point,icon);
	//map.addOverlay(marker);
	myInfo = "This is a <b>test</b>";
	myMarker = createMarker(point, myInfo);
	map.addOverlay(myMarker);
	myMarker.openInfoWindowHtml(myInfo)
	map.setCenter(point, 16);
}
function placeMarkerAtPoint(point)
{
	var marker = new GMarker(point,icon);
	map.addOverlay(marker);
}

function setCenterToPoint(point)
{
	map.setCenter(point, 8);
	
}

function showPointLatLng(point)
{
	alert("Latitude: " + point.lat() + "\nLongitude: " + point.lng());
}

function mapLoad() {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map"));
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		map.setCenter(new GLatLng(0,0), 10, G_NORMAL_MAP);
	}
}

function createMarker(point,txt) {
	var marker = new GMarker(point);
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml(txt);
	});
	return marker;
}
//
//
//
//
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 loadAccountantMap(postcode, zoomrate) {
	
	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);
				map = new GMap2(document.getElementById("map"));
				map.addControl(new GLargeMapControl());
				//map.addControl(new GMapTypeControl());
				map.setCenter(point, zoomrate, G_NORMAL_MAP);
				maploaded = true;
			}else{
				//alert("Postcode not found!");
			}
		});	
		
	localSearch.execute(postcode + ", UK");
	
}
addUnLoadEvent(GUnload);
