    //<![CDATA[

	// global arrays to hold copies of the markers and html used by the sidebar
	var gmarkers = [];
	var htmls = [];
	var proprefs = [];
	var gpoints = [];

	// global "map" variable
	var map;
	var ROOTURL = "/";

    // This function picks up the sidebar click and opens the corresponding info window
    function myclick(i) {
		map.closeInfoWindow();
		map.recenterOrPanToLatLng(gpoints[i]);
		window.setTimeout(function() {
			gmarkers[i].openInfoWindowHtml(htmls[i]);
		}, 1000);
    }
    
    // This function zooms in or out
    // its not necessary to check for out of range zoom numbers, because the API checks
    function myzoom(a) {
      map.zoomTo(map.getZoomLevel() - a);
    }




	function PageQuery(q)
	{
		try
		{
			if(q.length > 1) this.q = q.substring(1, q.length);
			else this.q = null;
			this.keyValuePairs = new Array();
			if(q) {
				for(var i=0; i < this.q.split("&").length; i++) {
					this.keyValuePairs[i] = this.q.split("&")[i];
				}
			}
			this.getKeyValuePairs = function() { return this.keyValuePairs; }
			this.getValue = function(s) {
				for(var j=0; j < this.keyValuePairs.length; j++) {
					if(this.keyValuePairs[j].split("=")[0] == s)
					return this.keyValuePairs[j].split("=")[1];
				}
			return false;
			}
			this.getParameters = function() {
				var a1 = new Array(this.getLength());
				for(var j=0; j < this.keyValuePairs.length; j++) {
					a1[j] = this.keyValuePairs[j].split("=")[0];
				}
				return a1;
			}
			this.getLength = function() { return this.keyValuePairs.length; }
		}
		catch(e)
		{
		
		}
	}

	function queryString(key){
		var page = new PageQuery(window.location.search);
		return unescape(page.getValue(key));
	}

function onLoad(propref, lat, lon) {
      var sidebar_html = "";
      var i = 0;

		function createMarker(id, point, icon, html) {
			var marker = new GMarker(point, icon);
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(html);
				//populateSources(id);
			});
			gmarkers[i] = marker;
			gpoints[i] = point;
			htmls[i] = html;
			// add a line to the sidebar html
			sidebar_html += '<a href="javascript:myclick(' + i + ')">' + proprefs[i] + '</a><br>';
			i++;
			return marker;
		}
		
		function createMarker2(point, html) {
			// Create a lettered icon for this point using our icon class
			var letteredIcon = new GIcon();
			letteredIcon.image = "/images/house1.png";
			letteredIcon.iconSize = new GSize(12, 10);
			letteredIcon.iconAnchor = new GPoint(6, 5);
			letteredIcon.infoWindowAnchor = new GPoint(6, 1);
			// Set up our GMarkerOptions object
			markerOptions = { icon:letteredIcon };
			var marker = new GMarker(point, markerOptions);
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(html);
			});
			//gmarkers[i] = marker;
			//gpoints[i] = point;
			//htmls[i] = html;
			// add a line to the sidebar html
			//sidebar_html += '<a href="javascript:myclick(' + i + ')">' + proprefs[i] + '</a><br>';
			//i++;
			  return marker;
		}

	
		var icons = [];
		icons[0] = new GIcon();
		icons[0].image = "/images/house1.png";
		icons[0].iconSize = new GSize(12, 10);
		icons[0].iconAnchor = new GPoint(6, 5);
		icons[0].infoWindowAnchor = new GPoint(6, 1);

		map = new GMap(document.getElementById("property_mapframe"));
		map.addControl(new GMapTypeControl());
		map.addControl(new GLargeMapControl());
		map.setCenter(new GLatLng(lat,lon), 11);
		var request = GXmlHttp.create();
		request.open("GET","/includes/map_xml.php?propref="+propref, true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlDoc = request.responseXML;
				var markers = xmlDoc.documentElement.getElementsByTagName("marker");
				for (var ii = 0; ii < markers.length; ii++) {
					var point = new GLatLng(parseFloat(markers[ii].getAttribute("lat")), parseFloat(markers[ii].getAttribute("lng")));
					var html = "<table class='maptable'><tr><td valign='top'><img src='/images/properties/search/" + markers[ii].getAttribute("mainimage") + "' border='0' /></td><td><strong>" + markers[ii].getAttribute("propname") + "<br />Sleeps: </strong>" + markers[ii].getAttribute("sleeps") + "<br /><strong>Bedrooms: </strong>" + markers[ii].getAttribute("bedrooms") + "<br /><br /><a href='/cottage-details/"+markers[ii].getAttribute("propref")+"'>Click here to view this property</a></td></tr></table>";
					var marker2 = new createMarker2(point, html);
					map.addOverlay(marker2);
				}
				var propref = queryString('prop');
				if (propref != 'false') {
					for (var iii = 0; iii < proprefs.length; iii++) {
						if (propref == proprefs[iii]) {
							myclick(iii);
						}
					}
				}
			}
		}
		request.send(null);

	}
	

function mapSearch(lat, lon, zoomlevel, showprops, infomarker, small) {
      var sidebar_html = "";
      var i = 0;

		function createMarker(id, point, icon, html) {
			var marker = new GMarker(point, icon);
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(html);
				//populateSources(id);
			});
			gmarkers[i] = marker;
			gpoints[i] = point;
			htmls[i] = html;
			// add a line to the sidebar html
			sidebar_html += '<a href="javascript:myclick(' + i + ')">' + proprefs[i] + '</a><br>';
			i++;
			return marker;
		}
		
		function createMarker2(point, html) {
			// Create a lettered icon for this point using our icon class
			var letteredIcon = new GIcon();
			letteredIcon.image = "/images/house1.png";
			letteredIcon.iconSize = new GSize(12, 10);
			letteredIcon.iconAnchor = new GPoint(6, 5);
			letteredIcon.infoWindowAnchor = new GPoint(6, 1);
			// Set up our GMarkerOptions object
			markerOptions = { icon:letteredIcon };
			var marker = new GMarker(point, markerOptions);
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(html);
			});
			//gmarkers[i] = marker;
			//gpoints[i] = point;
			//htmls[i] = html;
			// add a line to the sidebar html
			//sidebar_html += '<a href="javascript:myclick(' + i + ')">' + proprefs[i] + '</a><br>';
			//i++;
			  return marker;
		}

	
		var icons = [];
		icons[0] = new GIcon();
		icons[0].image = "/images/house1.png";
		icons[0].iconSize = new GSize(12, 10);
		icons[0].iconAnchor = new GPoint(6, 5);
		icons[0].infoWindowAnchor = new GPoint(6, 1);

		map = new GMap(document.getElementById("property_mapframe"));
		map.addControl(new GSmallZoomControl());
		map.setCenter(new GLatLng(lat,lon), zoomlevel);
		
		if(showprops)
		{
			var request = GXmlHttp.create();
			request.open("GET","/includes/map_xml.php", true);
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					var xmlDoc = request.responseXML;
					var markers = xmlDoc.documentElement.getElementsByTagName("marker");
					for (var ii = 0; ii < markers.length; ii++) {
						var point = new GLatLng(parseFloat(markers[ii].getAttribute("lat")), parseFloat(markers[ii].getAttribute("lng")));
						if (small) {
							var html = "<table class='maptablesmall'><tr><td valign='top'><img src='/images/properties/search/" + markers[ii].getAttribute("mainimage") + "' border='0' /></td><td><strong>" + markers[ii].getAttribute("propname") + "<br />Sleeps: </strong>" + markers[ii].getAttribute("sleeps") + "<br /><strong>Bedrooms: </strong>" + markers[ii].getAttribute("bedrooms") + "<br /><br /><a href='/cottage-details/"+markers[ii].getAttribute("propref")+"'>View this property</a></td></tr></table>";
						} else {
							var html = "<table class='maptable'><tr><td valign='top'><img src='/images/properties/search/" + markers[ii].getAttribute("mainimage") + "' border='0' /></td><td><strong>" + markers[ii].getAttribute("propname") + "<br />Sleeps: </strong>" + markers[ii].getAttribute("sleeps") + "<br /><strong>Bedrooms: </strong>" + markers[ii].getAttribute("bedrooms") + "<br /><br /><a href='/cottage-details/"+markers[ii].getAttribute("propref")+"'>Click here to view this property</a></td></tr></table>";
						}
						var marker2 = new createMarker2(point, html);
						map.addOverlay(marker2);
					}
					var propref = queryString('prop');
					if (propref != 'false') {
						for (var iii = 0; iii < proprefs.length; iii++) {
							if (propref == proprefs[iii]) {
								myclick(iii);
							}
						}
					}
				}
			}
			request.send(null);
		}
		
		if(infomarker)
		{
			var request = GXmlHttp.create();
			request.open("GET","/includes/map_xml.php?infomarker=" + infomarker, true);
			request.onreadystatechange = function() {
				if (request.readyState == 4) {
					var xmlDoc = request.responseXML;
					var markers = xmlDoc.documentElement.getElementsByTagName("marker");
					var lastPoint;
					var lastMessage;
					var lastMarker;
					
					for (var ii = 0; ii < markers.length; ii++) {
						var point = new GLatLng(parseFloat(markers[ii].getAttribute("lat")), parseFloat(markers[ii].getAttribute("lng")));
						var html = markers[ii].getAttribute("htmlmessage");
						
						var marker = new GMarker(point);
						GEvent.addListener(marker, "click", function() {
							marker.openInfoWindowHtml(html);
						});
						
						map.addOverlay(marker);
						lastPoint = point;
						lastMessage = html;
						lastMarker = marker;
					}
					
					map.panTo(lastPoint);
					lastMarker.openInfoWindowHtml(lastMessage);
				}
			}
			request.send(null);
		}
	}


    //]]>

