// Copyright (c) 2008 Regenesys. All rights reserved. 

var map;
var localSearch = new GlocalSearch();
var centerPoint = new GLatLng(50.751934,-1.820984);
var zoomPoint = 15;

var baseicon = new GIcon();
baseicon.iconSize = new GSize(30, 30);
baseicon.iconAnchor = new GPoint(30, 30);
baseicon.infoWindowAnchor = new GPoint(16, 0);
baseicon.image = "../gmap/icons/m1.png";
baseicon.shadow = "";

var j = 0;
var gmarkers = [];
var htmls = [];
var strURL = "../queries/public_xml_mapquery.cfm?contactusid=0";

function reQuerySearch() {
	if (GBrowserIsCompatible()) {
		var strKeyword = 118; 
		if(strKeyword.value!="") { strURL = "../queries/public_xml_mapquery.cfm?contactusid=" + strKeyword;}; 
		GDownloadUrl(strURL, function(data) { var xml = GXml.parse(data);  
		var markers = xml.documentElement.getElementsByTagName("marker");  

		for ( var i = 0; i < markers.length; i++) { 
			var title = markers[i].getAttribute('ORGANISATION_TITLE');
			var postcode = markers[i].getAttribute('ORG_POSTCODE');
			var website = markers[i].getAttribute('ORG_WEBSITE');
			var address1 = markers[i].getAttribute('ORG_ADDRESS1');
			var address2 = markers[i].getAttribute('ORG_ADDRESS2');
			var town = markers[i].getAttribute('ORG_TOWN');
			var borough = markers[i].getAttribute('ORG_BOROUGH');
			var summary = markers[i].getAttribute('ORGANISATION_SUMMARY');
			var telephone = markers[i].getAttribute('ORG_TELEPHONE');
			var id = markers[i].getAttribute('ORGANISATIONID');
			var html = '<div style="width:200px; color:black; font-weight:normal"><strong>' + title + '</strong><br />Address: ' + address1 + ', ' + address2 + ', ' + postcode + '</div>';

			htmls[i] = html;
			usePointFromPostcode(postcode,i,html); 
		}	
		});
	  }
	else { alert("Sorry, the Google Maps API is not compatible with this browser"); }
}

function usePointFromPostcode(postcode,id,html) {
	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 = createMarker(point,j);
			map.addOverlay(marker); 
			gmarkers[j] = marker;
			j++;
			if (j==1){map.setCenter(point, zoomPoint);} 
		}   else{ j++;  /* alert("Postcode not found!"); */	}
	});	
	localSearch.execute(postcode + ", UK");
}

function createMarker(point,id) {
	var marker = new GMarker(point,{icon:baseicon}); 
	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(htmls[id]);
	}); 
	return marker;
}

function mapLoad(point) {
	if (GBrowserIsCompatible()) {
		map = new GMap2(document.getElementById("map")); 
		map.addControl(new GSmallMapControl());
		map.setCenter(centerPoint, zoomPoint);
		reQuerySearch();
	}
}

function myclick(thisClick) { 
	var i = thisClick.selectedIndex - 1; 
	if (i > -1) { 
		gmarkers[i].openInfoWindowHtml(htmls[i]);
	} 
	else { 
		map.closeInfoWindow(); 
	} 
}

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);