// Copyright (c) 2008 Regenesys. All rights reserved. 

var map;
var localSearch = new GlocalSearch();
var centerPoint = new GLatLng(51.528264,-0.272598);
var zoomPoint = 15;
var labelContainer;

var baseicon = new GIcon(G_DEFAULT_ICON, "gmap/icons/m1.png");
baseicon.iconSize = new GSize(40, 40);
baseicon.iconAnchor = new GPoint(40, 40);

var j = 0;
var gmarkers = [];
var htmls = [];
var strURL = "queries/public_xml_mapquery.cfm";

function getSearch() {
	var MetaSel = "";
	var strKeyword = document.getElementById("MAPSEARCHSTRING"); 
	var strMetaKeyID = document.getElementById("SelectMapSearch").MYGROUPID.length;
	
	for (i = 0; i < strMetaKeyID; i++)
      if (document.getElementById("SelectMapSearch").MYGROUPID[i].checked){
         MetaSel = MetaSel + document.getElementById("SelectMapSearch").MYGROUPID[i].value + "|"
    }

	if(strKeyword.value!="")
		{ strURL = "queries/public_xml_mapquery.cfm?searchstring=" + strKeyword.value + "&groupid=" + MetaSel; }
	else { strURL = "queries/public_xml_mapquery.cfm?groupid=" + MetaSel; }; 
	j = 0;
	gmarkers = [];
	htmls = [];
	mapLoad();
	}

function reQuerySearch() {
	if (GBrowserIsCompatible()) {
		document.getElementById("prpCount").innerHTML ="LOADING...";
		GDownloadUrl(strURL, function(data) { var xml = GXml.parse(data);  
		var markers = xml.documentElement.getElementsByTagName("marker");  
		document.getElementById("prpCount").innerHTML = markers.length + " supplier(s) found:";
		var select_html = "Search Map By Supplier ("+ markers.length +" found):<br /><select style='font-size:80%; width:200px;' onChange='myclick(this)'><option>Select a Supplier...</option>";
		
		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"><strong>' + title + '</strong><br />' + summary + '<br /><br />Address: ' + address1 + ', ' + address2 + ', ' + postcode + '<br />Tel: ' + telephone + '<br /><a href=00,organisation,' + id + ',121,00.htm><strong>More Information</strong></a></div>';

			htmls[i] = html;
			usePointFromPostcode(postcode,i,html); 
			select_html += '<option value="' + i + '">' + title + '<\/option>';
			//select_html += '<a href="javascript:myclick(' + i + ')">' + title + '<\/a><br />';
		}	//labelContainer.innerHTML = select_html;
			document.getElementById("side_bar").innerHTML = select_html + "</select>";
		});
	  }
	else { alert("Sorry, the Google Maps API is not compatible with this browser"); }
}

function usePointFromPostcode(postcode,id,html) {
	localSearch.setSearchCompleteCallback(null, function(id,html) { 
		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++;
		}   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 LabelControl());
		map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		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 LabelControl() {  }
	LabelControl.prototype = new GControl();
	
	LabelControl.prototype.initialize = function(map) {
	labelContainer = document.createElement("div");
	labelContainer.style.overflow="auto";
	labelContainer.style.backgroundColor = "#ffffff";
	labelContainer.style.border = "1px solid black";
	labelContainer.style.height="100px";
	labelContainer.style.width="200px";
	labelContainer.style.paddingLeft="5px";
	
	map.getContainer().appendChild(labelContainer);
	return labelContainer;
	}
	
	LabelControl.prototype.getDefaultPosition = function() {
	return new GControlPosition(G_ANCHOR_TOP_RIGHT, new GSize(7, 33));
	}

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);