//<![CDATA[
	/*	
		Google Maps Implementation
		www.yearoffoodandfarming.org.uk
		Edcoms, DRP
	*/
    var map;
    var filters;
    var coordPrecision = 6;
    var populateUrl = "/markers.aspx";
    var infoWindowUrl = "/infoWindowContent.aspx";
    var currentView = null;
    var geocoder = null;
	var currentLocation = "WF4 4QH";
	var currentDistance = 500;
	var mapType = "place";
	var filterIds = Array(3);
	
	var arraySides = new Array();
	var markerLookup = new Array();
	
	var useFiltering = [];
	
	var activeFilters = Array(3);
	activeFilters[0] = 0;
	activeFilters[1] = 0;
	activeFilters[2] = 0;

    /*Initialise*/
    function load(mapCont, zoom, lat, lng) {
		//alert("in load");
		if (GBrowserIsCompatible())  {
			map = new GMap2(document.getElementById(mapCont));
			geocoder = new GClientGeocoder();
		    var center = new GLatLng(lat, lng);
		    map.setCenter(center, zoom);
			
			setFilters();
			requestMarkers();
		}
		else
		{ alert("This page uses Google Maps which your browser does not appear to be compatible with"); }
    }

    function loadMegaMap(mapCont, zoom, lat, lng) {
        //alert(filterIds.length + " - " + filterIds[0] + " - " + filterIds[1] );
		if(zoom == undefined || lat == undefined || lng == undefined)
        {
			//alert("getting start pt");
			if (zoom != undefined)
			{
				getStartPoint(mapCont, zoom);
			} else {
				getStartPoint(mapCont, -1);
			}
        }
        else
        {
			//alert("loading");
            load(mapCont, zoom, lat, lng);
	        if (map!=null)  {
		        map.addControl(new GLargeMapControl());
		        //map.addControl(new GMapTypeControl());
    			
		        //On Zoom remove all stored data
		        GEvent.addListener(map, "zoomend", function() {
		            delete currentView;
			        currentView = null;
			        map.clearOverlays();
		        });
		        GEvent.addListener(map, "moveend", function() { requestMarkers();});
		        GEvent.addListener(map, "click", function(overlay, point) {
                    if (overlay) {
                      loadOverlayInfoWindow(overlay);
                    } 
                    else if (point) { }
                });

                if(window.location.href.indexOf("debug=1") > 0){
		            GEvent.addListener(map, "dragend", function() {
                        alert("Zoom: "+map.getZoom() + "\nLatLong: "+map.getCenter());
                    });
                }
                if(map.enableScrollWheelZoom)
                {
                    map.enableScrollWheelZoom();
                }
	        }
	    }
    }

    function loadRegion(mapCont, zoom, lat, lng) {
	    load(mapCont, zoom, lat, lng);
	    if(map != null)
	    {
	        //Disable Everything
	        map.disableContinuousZoom();
	        map.disableInfoWindow();
	        map.disableDragging();
	        map.disableDoubleClickZoom();
	        if(map.disableScrollWheelZoom)
	        {
	            map.disableScrollWheelZoom();
	        }
	        
	        GEvent.addListener(map, "click", function(overlay, point) {
	            var latLng;
                if (overlay) {
                    if (overlay.getPoint) {
                        latLng = overlay.getPoint();
                    }
                    else{
                        latLng = map.getCenter();
                    }
                } 
                else if (point) { 
                    latLng = point;
                }
                window.location.href = "/Megamap/?z="+map.getZoom()+"&lat="+latLng.lat()+"&lng="+latLng.lng();
            });
	    }
    }
    
    /*Get Start Point from Server*/
    function getStartPoint(mapCont, zoom){
        GDownloadUrl("/mapStartPoint.aspx?nocache="+(new Date()).getTime(), function(xmlData, responseCode) {
            //alert("XML:" + xmlData);
			if(responseCode == 200){
                var xml = GXml.parse(xmlData);
                var markerElements = xml.documentElement.getElementsByTagName("mapView");

                for (var i = 0; i < markerElements.length; i++)  {

                    var xmlElement = markerElements[i];
                    var lat = parseFloat(xmlElement.getAttribute("lat"));
                    var lng = parseFloat(xmlElement.getAttribute("lng"));
                    //var zoom = parseInt(xmlElement.getAttribute("zoom"));
                    //alert(mapCont +"-"+ zoom +"-"+ lat +"-"+ lng);
					if (zoom < 0)
					{
						zoom = parseInt(xmlElement.getAttribute("zoom"));
					}
					loadMegaMap(mapCont, zoom, lat, lng);
                    break;
                }
            }
            else{
                loadMegaMap(mapCont, 0, 0, 3);
            }
        });
    }

    /*Request Markers From Server*/
    function requestMarkers(){
		//alert(getRequestUrl());
        GDownloadUrl(getRequestUrl(), function(xmlData, responseCode) {
		  //document.getElementById("resultlist").innerHTML = xmlData;
		  //alert(xmlData);
		  if(responseCode == 200){
              //Update currentView, with all visible markers
		  	  document.getElementById("resultlist").innerHTML = "";
			  //alert("list");
			  var bounds = map.getBounds();
		      var lastView = currentView;
			  var lastArraySides = arraySides;
			  arraySides = new Array();
              currentView = [];
              currentView.NE = bounds.getNorthEast();
              currentView.SW = bounds.getSouthWest();
              currentView.markers = new Array();
			  
			  currentView.clusters = new Array();

              if(lastView != null){
                  if(lastArraySides != null){
					  //alert("not null"+lastArraySides.length);
					  for(var k = 0; k < lastArraySides.length; k++)
					  {
						var lastMarker = lastArraySides[k];
	
						var point = new GLatLng(lastMarker[9], lastMarker[10]);
						//alert(point);
						if(bounds.contains(point))
						{
							
							markerLookup[lastMarker[8]].keepCluster = 1
							arraySides.push(lastMarker);
							//currentView.markers.push(lastMarker);
							//markerLookup[lastMarker.id] = currentView.markers.length - 1;
							
						} else {
							//alert("no in bounds");	
						}
					  }
				  }
				  //alert(arraySides.length);
				  for(var j = 0; j < lastView.markers.length; j++)
				  {
                    var lastMarker = lastView.markers[j];

					if(bounds.contains(lastMarker.getPoint()))
					{
						currentView.markers.push(lastMarker);
						markerLookup[lastMarker.id] = currentView.markers.length - 1;
					}
					else
					{
						if (!lastMarker.keepCluster== 1)
						{
							map.removeOverlay(lastMarker); //remove markers that can't be seen
						}
						lastMarker.keepCluster = 0;
					}
				  }
              }

              var xml = GXml.parse(xmlData);
              var markerElements = xml.documentElement.getElementsByTagName("marker");
			  //alert("MARKERS: " + markerElements.length);

              for (var i = 0; i < markerElements.length; i++)  {
              
                var xmlElement = markerElements[i];
                var id = parseInt(xmlElement.getAttribute("id"));
                //alert(id);
                //var eventId = parseInt(xmlElement.getAttribute("eid"));
                
                var lat = parseFloat(xmlElement.getAttribute("lat"));
                var lng = parseFloat(xmlElement.getAttribute("lng"));
				var maptype = xmlElement.getAttribute("maptype");
				//alert(maptype);
				var type = parseInt(xmlElement.getAttribute("type"));
				var distance = parseInt(xmlElement.getAttribute("distance"));
				var cluster = parseInt(xmlElement.getAttribute("cluster"));
				var totalevents = parseInt(xmlElement.getAttribute("totalevents"));
				var clustertypes = xmlElement.getAttribute("clustertypes");
				var clusteritems = xmlElement.getAttribute("clusteritems");
				var clustercevas = xmlElement.getAttribute("clustercevas");
				var clustercevasfarm = xmlElement.getAttribute("clustercevasfarm");
				var clusterqualitybadge = xmlElement.getAttribute("clusterqualitybadge");
				var clusteredaccess = xmlElement.getAttribute("clusteredaccess");
				var clusteritemscount = xmlElement.getAttribute("clusteritemscount");
				var cevas;
				var cevasfarm;
				var qualitybadge;
				var edaccess;
				if (xmlElement.getAttribute("cevas") == "1")
				{
					cevas = true;
				} else {
					cevas = false;
				}
				if (xmlElement.getAttribute("cevasfarm") == "1")
				{
					cevasfarm = true;
				} else {
					cevasfarm = false;
				}
				if (xmlElement.getAttribute("qualitybadge") == "1")
				{
					qualitybadge = true;
				} else {
					qualitybadge = false;
				}
				if (xmlElement.getAttribute("edaccess") == "1")
				{
					edaccess = true;
				} else {
					edaccess = false;
				}
				var title = xmlElement.getAttribute("title");
				var description = xmlElement.getAttribute("description");
				
				var marker;
				
				// Calculate cluster area for this marker.
				///var diff = 0.00012 * Math.pow(2,17-map.getZoom()-1);
				//alert("POW: " + Math.pow(2,17-map.getZoom()-1));
				//alert("Z-1: " + (17-map.getZoom()-1));
				//alert("DIFF: " + diff);
				
				//var minLat = lat - diff;
				//var maxLat = lat + diff;
				//var minLng = lng - diff;
				//var maxLng = lng + diff;
				
				//alert(minLat + " - " + maxLat);
				
				// Calculate area of cluster
				//bounds=new GLatLngBounds(new GLatLng(minLat,minLng),new GLatLng(maxLat,maxLng));
				
				if (maptype == "place")
				{
					marker = createPlaceMarker(id, title, lat, lng, description, distance, type, cevas, cevasfarm, cluster, clustertypes, clusteritems, clusteritemscount, totalevents, clustercevas, clustercevasfarm, qualitybadge, clusterqualitybadge, edaccess, clusteredaccess);
				}
				else if (maptype == "support")
				{
					//alert("creating org marker");
					//marker = createOrgMarker(id, title, lat, lng, description, distance, type, cevas, cevasfarm);
					marker = createOrgMarker(id, title, lat, lng, description, distance, type, cluster, clustertypes, clusteritems, clusteritemscount);
				}
				else if (maptype == "event")
				{
					var istraining = parseInt(xmlElement.getAttribute("istraining"));
					marker = createEventMarker(id, title, lat, lng, description, distance, type, cluster, clustertypes, clusteritems, clusteritemscount, istraining);
				}
				else if (maptype == "training")
				{
					var istraining = parseInt(xmlElement.getAttribute("istraining"));
					marker = createTrainingMarker(id, title, lat, lng, description, distance, type, cluster, clustertypes, clusteritems, clusteritemscount, istraining);
				}
				
				// Check if the marker lies in the area of an existing cluster.
				/*for(var cIndex = 0; cIndex < currentView.clusters.length; cIndex++)
				{
					var c = currentView.clusters[cIndex];
					
					if(bounds.contains(c.marker.getPoint()))
					{
						// Add this marker to the exisiting cluster.
						c.markers.push(marker);
						marker.inCluster=true;
						map.removeOverlay(marker);
						break;
					}
				}*/
				
				// Check if there are other markers within this area.
				/*if (!marker.inCluster)
				{
					for(var mIndex = 0; mIndex < currentView.markers.length; mIndex++)
					{
						var m = currentView.markers[mIndex];
						
						if(bounds.contains(m.getPoint()))
						{
							m.inCluster = true;
							map.removeOverlay(m);
							marker.inCluster = true;
							cluster=new Object();
							cluster.bounds=bounds;
							cluster.markers=[];
							cluster.markers.push(marker);
							cluster.markers.push(m);
							//alert("removing overlay " + marker.title);
							//map.removeOverlay(marker);
							//var icon;
							//icon = new GIcon();
							//icon.image = "/furniture/map/multipleproviders.png";
							marker.setImage("/furniture/map/multipleproviders.png")
							//marker.icon = icon;
							//map.addOverlay(marker);
							cluster.marker=marker;
							currentView.clusters.push(cluster);
							break;
						}
						
					}
				}*/
				               
                //var eids;
                //var eidsCSV = xmlElement.getAttribute("eids");
                //if(eidsCSV !=null && eidsCSV.length > 0)
                //{ eids = eidsCSV.split(","); }
                //else{eids = new Array();}
                    
                //if(isNaN(eventId) == false){
                //    marker = createEventMarker(eventId, eids, lat, lng);
                //}
                //else{
                //    var roleId = parseInt(xmlElement.getAttribute("rid"));
                    
                //    var oids;
                //    var oidsCSV = xmlElement.getAttribute("oids");
                //    if(oidsCSV !=null && oidsCSV.length > 0)
                //    { oids = oidsCSV.split(","); }
                //    else{oids = new Array();}
                    
                    //marker = createOrgMarker(userId, lat, lng, roleId, oids, eids);
                    
                //}
                
                if(marker!=null){
                    //Add marker of currentView
					currentView.markers.push(marker);
					markerLookup[marker.id] = currentView.markers.length - 1;
                }
              }
			  //currentView.markers.sort(function (a,b) {return (a.distance - b.distance)});
			  loadSideList(xml);
			  //loadClusters();
              applyFilters();
			  applyFiltersToClusterItemsInSideList();
           }
           else{
            alert("Error: Unable to retieve map content"+responseCode);
           }
        });
    }

    function getRequestUrl()  {
		var bounds = map.getBounds();
		
		var url = populateUrl+"?";
		url += "NE="+bounds.getNorthEast().toUrlValue(coordPrecision);
		url += "&SW="+bounds.getSouthWest().toUrlValue(coordPrecision);
		url += "&Center="+map.getCenter().toUrlValue(coordPrecision);
		url += "&Zoom="+map.getZoom();
		//alert(map.getZoom());
		url += "&Location="+currentLocation;
		url += "&Distance="+currentDistance;
		url += "&MapType="+mapType;
		if(currentView != null)
		{
	        url += "&PreviousView=("+currentView.NE.toUrlValue(coordPrecision)+")"+","+"("+currentView.SW.toUrlValue(coordPrecision)+")";
	    }
        //alert(url);
		return url;
	}
    
    function createPlaceMarker(id, title, lat, lng, description, distance, type, cevas, cevasfarm, cluster, clustertypes, clusteritems, clusteritemscount, totalevents, clustercevas, clustercevasfarm, qualitybadge, clusterqualitybadge, edaccess, clusteredaccess) {
        var m;
        var point = new GLatLng(lat, lng);
		var icon = getIcon(type, cluster);
		if(icon != null){
            m = new GMarker(point, icon);
            m.id = id;
			if (cluster) {
				m.itemcount = 2;	
			} else {
				m.itemcount = 1;
			}
			m.title = title;
			m.description = description;
            m.type = type;
			m.clustertypes = clustertypes;
			m.clusteritems = clusteritems;
			m.clustercevas = clustercevas;
			m.clustercevasfarm = clustercevasfarm;
			m.clusterqualitybadge = clusterqualitybadge;
			m.clusteredaccess = clusteredaccess;
			m.filteredclusteritems = clusteritems;
			m.clusteritemscount = clusteritemscount;
			m.realclusteritemscount = clusteritemscount;
			m.totalevents = parseInt(totalevents);
			m.cevas = cevas;
			m.cevasfarm = cevasfarm;
			m.qualitybadge = qualitybadge;
			m.edaccess = edaccess;
			m.distance = distance;
			m.maptype = "place";
			m.inCluster = cluster;
			map.addOverlay(m);
			//map.removeOverlay(m);
		}
		else { m = null; }
        return m;
	}

	function createOrgMarker(id, title, lat, lng, description, distance, type, cluster, clustertypes, clusteritems, clusteritemscount) {
        var m;
        var point = new GLatLng(lat, lng);
		var icon = getIcon(type, cluster);
		if(icon != null){
            m = new GMarker(point, icon);
            m.id = id;
			if (cluster) {
				m.itemcount = 2;	
			} else {
				m.itemcount = 1;
			}
			m.title = title;
			m.description = description;
            m.type = type;
			m.clustertypes = clustertypes;
			m.clusteritems = clusteritems;
			m.clustercevas = "0";
			m.clustercevasfarm = "0";
			m.clusterqualitybadge = "0";
			m.clusteredaccess = "0";
			m.filteredclusteritems = clusteritems;
			m.clusteritemscount = clusteritemscount;
			m.realclusteritemscount = clusteritemscount;
			m.totalevents = 0;
			m.cevas = 0;
			m.cevasfarm = 0;
			m.qualitybadge = 0;
			m.edaccess = 0;
			m.distance = distance;
			m.maptype = "support";
			m.inCluster = cluster;
			map.addOverlay(m);
			//map.removeOverlay(m);
		}
		else { m = null; }
        return m;
	}
	
	function createEventMarker(id, title, lat, lng, description, distance, type, cluster, clustertypes, clusteritems, clusteritemscount, istraining) {
        var m;
        var point = new GLatLng(lat, lng);
		var icon = getIcon(type == 0 ? type : istraining + 1, cluster);
		if(icon != null){
            m = new GMarker(point, icon);
            m.id = id;
			if (cluster) {
				m.itemcount = 2;	
			} else {
				m.itemcount = 1;
			}
			m.title = title;
			m.description = description;
            m.type = type;
			m.clustertypes = clustertypes;
			m.clusteritems = clusteritems;
			m.clustercevas = "0";
			m.clustercevasfarm = "0";
			m.clusterqualitybadge = "0";
			m.clusteredaccess = "0";
			m.filteredclusteritems = clusteritems;
			m.clusteritemscount = clusteritemscount;
			m.realclusteritemscount = clusteritemscount;
			m.totalevents = 0;
			m.cevas = 0;
			m.cevasfarm = 0;
			m.qualitybadge = 0;
			m.edaccess = 0;
			m.distance = distance;
			m.maptype = "event";
			m.inCluster = cluster;
			m.isTraining = istraining;
			map.addOverlay(m);
			//map.removeOverlay(m);
		}
		else { m = null; }
        return m;
	}
	
	function createTrainingMarker(id, title, lat, lng, description, distance, type, cluster, clustertypes, clusteritems, clusteritemscount, istraining) {
        var m;
        var point = new GLatLng(lat, lng);
		var icon = getIcon(type, cluster);
		if(icon != null){
            m = new GMarker(point, icon);
            m.id = id;
			if (cluster) {
				m.itemcount = 2;	
			} else {
				m.itemcount = 1;
			}
			m.title = title;
			m.description = description;
            m.type = type;
			m.clustertypes = clustertypes;
			m.clusteritems = clusteritems;
			m.clustercevas = "0";
			m.clustercevasfarm = "0";
			m.clusterqualitybadge = "0";
			m.clusteredaccess = "0";
			m.filteredclusteritems = clusteritems;
			m.clusteritemscount = clusteritemscount;
			m.realclusteritemscount = clusteritemscount;
			m.totalevents = 0;
			m.cevas = 0;
			m.cevasfarm = 0;
			m.qualitybadge = 0;
			m.edaccess = 0;
			m.distance = distance;
			m.maptype = "training";
			m.inCluster = cluster;
			m.isTraining = istraining;
			map.addOverlay(m);
			//map.removeOverlay(m);
		}
		else { m = null; }
        return m;
	}

    function getIcon(iconId, isCluster) {
        var icon;
        icon = new GIcon();
        if(isCluster) {
            iconId = 0;
		}
        icon.image = getImageName(iconId, false);
		if (icon.image == null)
		{
			icon = null;
        }
        
		if(icon!=null){
		    icon.shadow = "/furniture/map/xpinShadow.png";
		    icon.iconSize = new GSize(22, 26);
		    icon.shadowSize = new GSize(36, 34);
		    icon.iconAnchor = new GPoint(14, 30);
		    icon.infoWindowAnchor = new GPoint(30, 10);
		}
        return icon;
    }
	
	function loadOverlayInfoWindow(overlay){
        //Check is marker (infowindow close click gets here)
        if(overlay.openInfoWindowHtml != null){
			//alert("IDS: " + overlay.clusteritemscount + " - " + overlay.filteredclusteritems);
            if (overlay.clusteritemscount == 1) {
				// Display Single Marker Popup Window.
				if(overlay.htmlCache != null)
				{
					overlay.openInfoWindowHtml(overlay.htmlCache)
				}
				else{
					overlay.openInfoWindowHtml("Loading from server...");
	
					var url = infoWindowUrl;
					if(overlay.inCluster == 1)
					{ url += "?id="+overlay.filteredclusteritems.substr(1)+"&type="+overlay.maptype; }
					else if(overlay.id != null)
					{ url += "?id="+overlay.id+"&type="+overlay.maptype; }
					//alert(url);
					GDownloadUrl(url, function(xmlData, responseCode) {
						//alert(xmlData);
						if (responseCode==200)
						{
							var xml = GXml.parse(xmlData);
							//alert(xmlData);
							var items = xml.documentElement.getElementsByTagName("item");
							if(items.length > 0){
							
								var content = items[0];
	
								var id = parseInt(content.getAttribute("id"));
								var title = content.getAttribute("title");
								var description = content.getAttribute("description");
								var totalevents = content.getAttribute("totalevents");
								var cevas;
								var cevasfarm;
								var qualitybadge;
								var edaccess;
								if (content.getAttribute("cevas") == "1")
								{
									cevas = true;
								} else {
									cevas = false;
								}
								if (content.getAttribute("cevasfarm") == "1")
								{
									cevasfarm = true;
								} else {
									cevasfarm = false;
								}
								if (content.getAttribute("qualitybadge") == "1")
								{
									qualitybadge = true;
								} else {
									qualitybadge = false;
								}
								if (content.getAttribute("edaccess") == "1")
								{
									edaccess = true;
								} else {
									edaccess = false;
								}
								var result = parseInt(content.getAttribute("result"));
	
								var html = "<div class=\"infWin\" style=\"width:300px;\">"
								
								if(result < 0){
									html +="ERROR<br/>";
								}
								else{/*Good. Nothing*/}
								
								if( isNaN(id) == false)
								{
									if(title!=null)
									{ 
										if (overlay.maptype == "place")
										{
											html += "<a href=\"/Places/Place.aspx?id="+id+"\"><h3 class=\"infoWindowHeader\">"+title+"</h3></a>";
										} else if (overlay.maptype == "support") {
											html += "<a href=\"/Support/Organisation.aspx?id="+id+"\"><h3 class=\"infoWindowHeader\">"+title+"</h3></a>";
										} else if (overlay.maptype == "training") {
											html += "<a href=\"/Training/Event.aspx?id="+id+"\"><h3 class=\"infoWindowHeader\">"+title+"</h3></a>";
										} else if (overlay.maptype == "event") {
											html += "<a href=\"/Training/Event.aspx?id="+id+"\"><h3 class=\"infoWindowHeader\">"+title+"</h3></a>";
										}
									}
									
									if(description!=null)
									{ html += "<p><span class=\"infoWindowDescription\">"+description+"</span></p>"; }
									//alert(cevas);
									if(cevas)
									{ html += "<div style=\"float:left\"><img src=\"/furniture/Map/CEVASFarmer.png\" /></div>"; }
									if(cevasfarm)
									{ html += "<div style=\"float:left\"><img src=\"/furniture/Map/CEVASFarm.png\" /></div>"; }
									if(qualitybadge)
									{ html += "<div style=\"float:left\"><img src=\"/furniture/Map/QualityBadge.png\" /></div>"; }
									if(edaccess)
									{ html += "<div style=\"float:left\"><img src=\"/furniture/Map/EdAccess.png\" /></div>"; }
									if (totalevents > 0)
									{ html += "<div style=\"float:left\"><img src=\"/furniture/Map/event.png\" /></div>"; }
									html += "<div style=\"clear:both;\"></div>"
									
								}
								html += "</div>";
								//alert("-");
								overlay.openInfoWindowHtml(html);
								overlay.htmlCache = html;
							}
						}  
						else { overlay.openInfoWindowHtml("Error: Could not load content"); }
					});
				}
			} else if (overlay.clusteritemscount > 1 && overlay.clusteritemscount <= 4) {
				// Load List of markers (Max 4)
				//alert("Between 1 and 4 markers!");
				var url = infoWindowUrl;
				//if(overlay.eventId != null)
				//{ url += "?eid="+overlay.eventId; }
				//else if(overlay.id != null)
				//{ url += "?id="+overlay.id; }
				if (overlay.filteredclusteritems.charAt(0) == ',')
				{
					overlay.filteredclusteritems = overlay.filteredclusteritems.substring(1)
				}
				url += "?ids="+overlay.filteredclusteritems;
				url += "&location=" + currentLocation;
				url += "&type=" + overlay.maptype;
				//alert(url);

				GDownloadUrl(url, function(xmlData, responseCode) {
					//alert(xmlData);
					if (responseCode==200)
					{
						var xml = GXml.parse(xmlData);
						var markerElements = xml.documentElement.getElementsByTagName("marker");
						if(markerElements.length > 0){
							//alert(markerElements.length);
							var html = "<div class=\"infWin\" style=\"width:300px;\">";
							var sTypeDescription = "places to visit";
							var sTypeLink = "/Places/Place.aspx";
							if (overlay.maptype == "support") {
								sTypeDescription = "support organisations";
								sTypeLink = "/Support/Organisation.aspx";
							} else if (overlay.maptype == "training") {
								sTypeDescription = "training events";
								sTypeLink = "/Training/Event.aspx";
							} else if (overlay.maptype == "event") {
								sTypeDescription = "events";
								sTypeLink = "/Training/Event.aspx";
							}
							html += "<h3>Multiple " + sTypeDescription + " in this area.</h3>";
							for (var i = 0; i < markerElements.length; i++)  {
								var xmlElement = markerElements[i];
								var id = parseInt(xmlElement.getAttribute("id"));
								//alert(id);
								var lat = parseFloat(xmlElement.getAttribute("lat"));
								var lng = parseFloat(xmlElement.getAttribute("lng"));
								//var maptype = xmlElement.getAttribute("maptype");
								//alert(maptype);
								var type = parseInt(xmlElement.getAttribute("type"));
								var distance = parseInt(xmlElement.getAttribute("distance"));
								//var cluster = parseInt(xmlElement.getAttribute("cluster"));
								//var clustertypes = xmlElement.getAttribute("clustertypes");
								//var clusteritems = xmlElement.getAttribute("clusteritems");
								//var clusteritemscount = xmlElement.getAttribute("clusteritemscount");
								//var cevas;
								//var cevasfarm;
								//if (xmlElement.getAttribute("cevas") == "1")
								//{
								//	cevas = true;
								//} else {
								//	cevas = false;
								//}
								//if (xmlElement.getAttribute("cevasfarm") == "1")
								//{
								//	cevasfarm = true;
								//} else {
								//	cevasfarm = false;
								//}
								var title = xmlElement.getAttribute("title");
								//var description = xmlElement.getAttribute("description");
								html += "<a href=\"" + sTypeLink + "?id="+id+"\">"+title+"</a><span> (" + distance + " km)</span><br />";
							}
							html += "</div>";
							overlay.openInfoWindowHtml(html);
							overlay.htmlMoreCache = html;
						}
					}
				});
			} else if (overlay.clusteritemscount > 4) {
				// Load Message saying to zoom in as there are too many markers.
				//alert("More than 4 markers!");
				var sTypeDescription = "places to visit";
				if (overlay.maptype == "support") {
					sTypeDescription = "support organisations";
				} else if (overlay.maptype == "training") {
					sTypeDescription = "training events";
				} else if (overlay.maptype == "event") {
					sTypeDescription = "events";
				}
				var html = "<div class=\"infWin\" style=\"width:300px;\">";
				html += "<h3>There are more than four " + sTypeDescription + " in this area.</h3>";
				html += "<p>Either use the filters on the left hand side or zoom in closer.</p>";
				html += "</div>";
				overlay.openInfoWindowHtml(html);
				overlay.htmlMoreCache = html;
			}
        }
    }
	
	function loadSideList(xml) {
		
		//var xml = GXml.parse(xmlData);
        var sideElements = xml.documentElement.getElementsByTagName("side");
		//alert("SIDE: " + sideElements.length);

        for (var i = 0; i < sideElements.length; i++)  {
              
			var xmlElement = sideElements[i];
            var id = parseInt(xmlElement.getAttribute("id"));
			var title = xmlElement.getAttribute("title");
			var distance = xmlElement.getAttribute("distance");
			var description = xmlElement.getAttribute("description");
			var totalevents = xmlElement.getAttribute("totalevents");
			var cevas = xmlElement.getAttribute("cevas");
			var cevasfarm = xmlElement.getAttribute("cevasfarm");
			var qualitybadge = xmlElement.getAttribute("qualitybadge");
			var edaccess = xmlElement.getAttribute("edaccess");
			var type = xmlElement.getAttribute("type");
			var parentid = xmlElement.getAttribute("parentid");
			var lat = xmlElement.getAttribute("lat");
			var lng = xmlElement.getAttribute("lng");
			
			var dateEvent, istraining;
			if (mapType == "training" || mapType == "event")
			{
				dateEvent = xmlElement.getAttribute("dateofevent");
				istraining = xmlElement.getAttribute("istraining");
			} else {
				dateEvent = "";
				istraining = 0;
			}
		
			arraySides.push([id, title, distance, description, totalevents, cevas, cevasfarm, type, parentid, lat, lng, dateEvent, dateEvent, qualitybadge, istraining, edaccess]);
		}
		
		if (mapType == "training" || mapType == "event")
		{
			// sort by date of event
			arraySides.sort(dmyOrdA);
		} else {
			// sort by distance
			arraySides.sort(function (a,b) {return (a[2] - b[2])});
		}
		
		var sULTemp = ""
		sULTemp = '<ul style="list-style:none; margin:0; padding:0;">';
		//alert("asides:" + arraySides.length);
		for (var i = 0; i < arraySides.length; i++)  {
		//for(var mIndex = 0; mIndex < currentView.markers.length; mIndex++) {
        //	var m = currentView.markers[mIndex];
			var sItemPage = "/Places/Place.aspx"
			
			if (mapType == "support")
			{
				sItemPage = "/Support/Organisation.aspx"
			} else if (mapType == "training")
			{
				sItemPage = "/Training/Event.aspx"
			} else if (mapType == "event")
			{
				sItemPage = "/Training/Event.aspx"
			}
			
			var sTemp = '<li id="listitem_' + arraySides[i][0] + '" style="display:none; margin:0; padding:0; list-style:none;"><a onmouseover="highlight_marker('+arraySides[i][8]+')" onmouseout="default_marker_color('+arraySides[i][8]+')" href="'+sItemPage+'?id='+arraySides[i][0]+'">';
			var sImage = "";
			if (mapType == "training" || mapType == "event")
			{
				if (arraySides[i][14] == 1) {
					sTemp = sTemp + '<h3>' + arraySides[i][12] + '</h3>';
					sImage = '<td width="30" valign="middle" align="center"><img src="/furniture/Map/training.png" border="0" /></td>';
				} else {
					sTemp = sTemp + '<h3>' + arraySides[i][12] + '</h3>';
					sImage = '<td width="30" valign="middle" align="center"><img src="/furniture/Map/eventmap.png" border="0" /></td>';
				}
			}
			sTemp = sTemp + '<h3>' + arraySides[i][1] + '<span> (' + arraySides[i][2] + ' km)</span></h3><table><tr>' + sImage + '<td><p>' + arraySides[i][3] + '...<div>';
			if (arraySides[i][4] > 0) {
				sTemp = sTemp + '<img src="/furniture/Map/event.png" border="0" />';
			}
			if (arraySides[i][6] == 1) {
				sTemp = sTemp + '<img src="/furniture/Map/CEVASFarm.png" border="0" />';
			}
			if (arraySides[i][5] == 1) {
				sTemp = sTemp + '<img src="/furniture/Map/CEVASFarmer.png" border="0" />';
			}
			if (arraySides[i][13] == 1) {
				sTemp = sTemp + '<img src="/furniture/Map/QualityBadge.png" border="0" />';
			}
			if (arraySides[i][15] == 1) {
				sTemp = sTemp + '<img src="/furniture/Map/EdAccess.png" border="0" />';
			}
			sTemp = sTemp + '</div></p></td></tr></table></a></li>';
			
			sULTemp += sTemp;
		}
		sULTemp += "</ul>"
		var div = document.getElementById("resultlist");
		div.innerHTML += sULTemp;
		//alert(div.innerHTML);
	}
	function dmyOrdA(a, b){
		var dateRE = /^(\d{2})[\/\- ](\d{2})[\/\- ](\d{4})/;
		a[11] = a[11].replace(dateRE,"$3$2$1");
		b[11] = b[11].replace(dateRE,"$3$2$1");
		if (a[11]>b[11]) return 1;
		if (a[11]<b[11]) return -1;
		return 0;
	}
	
	function highlight_marker(marker_id)
	{
		//change marker icon  onmouse over by record in the place result list accord marker
		highlight_marker_id = marker_id;
		if (map)
		{
			//alert(markerLookup[marker_id]);
			if (markerLookup[marker_id] >= 0)
			{
				var new_marker_id = markerLookup[marker_id];
				try
				{
					//alert(currentView.markers[new_marker_id].clusteritemscount);
					if (currentView.markers[new_marker_id].clusteritemscount == 1) {
						if (mapType == "event") {
							currentView.markers[new_marker_id].setImage(getImageName(parseInt(currentView.markers[new_marker_id].type) + 1, true));
						} else {
							currentView.markers[new_marker_id].setImage(getImageName(currentView.markers[new_marker_id].type, true));
						}
					} else {
						currentView.markers[new_marker_id].setImage(getImageName(0, true));
					}
				}
				catch(er)
				{
					//was error
					//alert(er);
				}
			}
		}
	}

	function default_marker_color(marker_id)
	{
		//back default marker icon  onmouse out by record in the place result list accord marker
		if (map)
		{
			//alert(markerLookup[marker_id]);
			if (markerLookup[marker_id] >= 0)
			{
				var new_marker_id = markerLookup[marker_id];
				try
				{
					if (currentView.markers[new_marker_id].clusteritemscount == 1) {
						if (mapType == "event") {
							currentView.markers[new_marker_id].setImage(getImageName(parseInt(currentView.markers[new_marker_id].type) + 1));
						} else {
							currentView.markers[new_marker_id].setImage(getImageName(currentView.markers[new_marker_id].type));
						}
					} else {
						currentView.markers[new_marker_id].setImage(getImageName(0));
					}
				}
				catch(er)
				{
					//was error
					//alert(er);
				}
			}
		}
		
	}

	
	/*function loadClusters() {
		for(var cIndex = 0; cIndex < currentView.clusters.length; cIndex++) {
        	var c = currentView.clusters[cIndex];
			c.marker.show();
		}
	}*/
    
	function setFilters(){
		filters = new Array();
		//alert("set filters");
		//filterBy = new Array();
	
		for(var i = 0; i < filterIds.length; i++)
		{
			useFiltering[i] = false;
			filters[i] = new Array();
			//alert(filterIds[i]);
			// TODO : Need to set limit based on number of place types.
			for(var j = 0; j < filterIds[i]; j++)
			{
				filters[i][j] = false;
				//alert(filters[i][j]);
			}
		}
		//alert("resetting filters");
		
		//filterBy[0] = false;
		//filterBy[1] = false;
	}
	
	//function applyFilters(){
//		if(currentView!=null)
//        {
//            for(var mIndex = 0; mIndex < currentView.markers.length; mIndex++) {
//                var m = currentView.markers[mIndex];
//                //m.show();
//				if(m!=null && m.inCluster)
//				{
//					var showMarker = false;
//					
//					// Number of Markers in this cluster
//					var numMarkers = m.clusteritemscount;
//					var markerType = 0; // Cluster
//					var filteredclusteritems = m.clusteritems;
//						
//					// If Filtering By Place Type
//					if (useFiltering[0])
//					{
//						numMarkers = 0;
//						filteredclusteritems = "";
//						var types = m.clustertypes.split(",");
//						var items = m.clusteritems.split(",");
//						var cevas = m.clustercevas.split(",");
//						var cevasfarm = m.clustercevasfarm.split(",");
//						var qualitybadge = m.clusterqualitybadge.split(",");
//						
//						for(var cType = 0; cType < types.length; cType++) {
//							// Item hasnt yet sucessfully passed the filter.
//							var passedFilter = false;
//							
//							// If we are showing this type
//							if (filters[0][types[cType]])
//							{
//								// Are we filtering by CEVAS Farm Types?
//								if (useFiltering[1])
//								{
//									// If we require farms to be CEVAS
//									if (filters[1][1])
//									{
//										// Check That This Farm Is A Cevas Farm.
//										if (cevasfarm[cType] == "1")
//										{
//											// If we require farms to be CEVAS Farmers
//											if (filters[1][2])
//											{
//												// Check That This Farm Is A Cevas Farm.
//												if (cevas[cType] == "1")
//												{
//													// Correct. Add Item to list.
//													passedFilter = true;
//												}
//											} else {
//												// Dont require farm to be CEVAS Farmer.
//												passedFilter = true;
//											}
//										}
//									} else {
//										// Dont require to be CEVAS.
//
//										// If we require farms to be CEVAS Farmers
//										if (filters[1][2])
//										{
//											// Check That This Farm Is A Cevas Farm.
//											if (cevas[cType] == "1")
//											{
//												// Correct. Add Item to list.
//												passedFilter = true;
//											}
//										} else {
//											// Dont require farm to be CEVAS Farmer
//											passedFilter = true;
//										}
//									}
//								} else {
//									// Not using Farm Filtering
//									passedFilter = true;
//								}
//							}
//							
//							if (passedFilter)
//							{
//								numMarkers++;
//								if (numMarkers < 5)
//								{
//									markerType = types[cType];
//									filteredclusteritems += ("," + items[cType]);
//								}
//								//Now there is at least one item, show marker.
//								showMarker = true;
//							}
//						} //End For Loop
//
//					} else {
//						// Not using any filtering.
//						showMarker = true;
//					}
//					
//					if (numMarkers == 1)
//					{
//						var img = getImageName(markerType, false);
//						m.setImage(img);
//						m.clusteritemscount = 1;
//					} else {
//						var img = getImageName(0, false);
//						m.setImage(img);
//						m.clusteritemscount = numMarkers;
//					}
//					m.filteredclusteritems = filteredclusteritems;
//					
//					if(showMarker)
//					{
//						//alert("showing cl: " + m.id + " - " + m.clustertypes);
//						m.show();
//					}
//					else {
//						//alert("hiding cl: " + m.id + " - " + m.clustertypes);
//						m.hide();
//					}
//				}
//				else if(m!=null && !m.inCluster)
//                {
//					//alert("not null");
//					var type = m.type;
//					if(type == null)
//					{  type = "";  }
//
//					var typeFound = false;
//					
//					//Org Checks
//					typeFound = (filters[0][type] == true);
//					
//					var farmTypeFound = false;
//
//					// ARRAY
//					// Cevas = 1
//					// Cevas Farm = 2
//					// Natural England = 3
//					//alert(m.cevas + " - " + m.cevasfarm);
//					if (filters[1][1])
//					{
//						//alert("cevas");
//						farmTypeFound = (m.cevasfarm == "1");
//					}
//					if (filters[1][2])
//					{
//						farmTypeFound = (m.cevas == "1") || farmTypeFound;
//					}
//					// TODO - Natural England Farms
//					
//					
//					if((typeFound || (useFiltering[0] == false)) && (farmTypeFound || (useFiltering[1] == false) || (filters[0][2] == false)))
//					{
//						//alert("showing: " + m.id);
//						m.show();
//						document.getElementById("listitem_"+m.id).style.display = "block";
//					}
//					else {
//						//alert("hiding: " + m.id);
//						m.hide();
//						document.getElementById("listitem_"+m.id).style.display = "none";
//					}
//                }
//            }
//        }
//    }

	function applyFilters(){
		if(currentView!=null)
        {
            for(var mIndex = 0; mIndex < currentView.markers.length; mIndex++) {
                var m = currentView.markers[mIndex];
                //m.show();
				if(m!=null && m.inCluster)
				{
					var showMarker = false;
					
					// Number of Markers in this cluster
					var numMarkers = m.clusteritemscount;
					var markerType = 0; // Cluster
					var filteredclusteritems = m.clusteritems;
						
					// If Filtering By Place Type or Quality Badge
					if (useFiltering[0] || useFiltering[2])
					{
						numMarkers = 0;
						filteredclusteritems = "";
						var types = m.clustertypes.split(",");
						var items = m.clusteritems.split(",");
						var cevas = m.clustercevas.split(",");
						var cevasfarm = m.clustercevasfarm.split(",");
						//alert(m.clustercevas + " - " + m.clusterqualitybadge);
						var qualitybadge = m.clusterqualitybadge.split(",");
						
						
						for(var cType = 0; cType < types.length; cType++) {
							// Item hasnt yet sucessfully passed the filter.
							var passedFilter = false;
							
							// If we are showing this type
							if (useFiltering[0])
							{
								//alert("usefiltering" + cType + types[cType] + filters[0][types[cType]]);
								if (filters[0][types[cType]])
								{
									//alert("show type " + cType)
									// Are we filtering by CEVAS Farm Types?
									if (useFiltering[1])
									{
										//alert("filter cevas? " + useFiltering[1])
										// If we require farms to be CEVAS
										if (filters[1][1])
										{
											// Check That This Farm Is A Cevas Farm.
											if (cevasfarm[cType] == "1")
											{
												// If we require farms to be CEVAS Farmers
												if (filters[1][2])
												{
													// Check That This Farm Is A Cevas Farm.
													if (cevas[cType] == "1")
													{
														// Are we filtering by Quality Badge?
														if (useFiltering[2])
														{
															// If we require places to be Quality Badge places
															if(filters[2][1])
															{
																// Correct. Add Item to list.
																if (qualitybadge[cType] == "1")
																{
																	passedFilter = true;
																}
															}
															else
															{
																passedFilter = true;
															}
														}
														else
														{
															// Not using Farm Filtering
															passedFilter = true;
														}
													}
												} else {
													// Dont require farm to be CEVAS Farmer.
													// Are we filtering by Quality Badge?
													if (useFiltering[2])
													{
														// If we require places to be Quality Badge places
														if(filters[2][1])
														{
															// Correct. Add Item to list.
															if (qualitybadge[cType] == "1")
															{
																passedFilter = true;
															}
														}
														else
														{
															passedFilter = true;
														}
													}
													else
													{
														// Not using Badge Filtering
														passedFilter = true;
													}
												}
											}
										} else {
											// Dont require to be CEVAS.
	
											// If we require farms to be CEVAS Farmers
											if (filters[1][2])
											{
												// Check That This Farm Is A Cevas Farm.
												if (cevas[cType] == "1")
												{
													// Are we filtering by Quality Badge?
													if (useFiltering[2])
													{
														// If we require places to be Quality Badge places
														if(filters[2][1])
														{
															// Correct. Add Item to list.
															if (qualitybadge[cType] == "1")
															{
																passedFilter = true;
															}
														}
														else
														{
															passedFilter = true;
														}
													}
													else
													{
														// Not using Quality Badge Filtering
														passedFilter = true;
													}
												}
											} else {
												// Dont require farm to be CEVAS Farmer
												// Are we filtering by Quality Badge?
												if (useFiltering[2])
												{
													// If we require places to be Quality Badge places
													if(filters[2][1])
													{
														// Correct. Add Item to list.
														if (qualitybadge[cType] == "1")
														{
															passedFilter = true;
														}
													}
													else
													{
														passedFilter = true;
													}
												}
												else
												{
													// Not using Quality Badge Filtering
													passedFilter = true;
												}
											}
										}
									} else {
										// Are we filtering by Quality Badge?
										if (useFiltering[2])
										{
											// If we require places to be Quality Badge places
											if(filters[2][1])
											{
												// Correct. Add Item to list.
												if (qualitybadge[cType] == "1")
												{
													passedFilter = true;
												}
											}
											else
											{
												passedFilter = true;
											}
										}
										else
										{
											// Not using Quality Badge Filtering
											passedFilter = true;
										}
									}
								}
								//alert("passedFilter?:" + passedFilter);
							}
							// Do we filter by Quality Badge?
							else if (useFiltering[2])
							{
								// If we require places to be Quality Badge places
								if(filters[2][1])
								{
									// Correct. Add Item to list.
									if (qualitybadge[cType] == "1")
									{
										//alert(types[cType]);
										passedFilter = true;
									}
								}
								
							}
							
							if (passedFilter)
							{
								numMarkers++;
								if (numMarkers < 5)
								{
									markerType = types[cType];
									filteredclusteritems += ("," + items[cType]);
								}
								//Now there is at least one item, show marker.
								showMarker = true;
							}
						} //End For Loop

					} else {
						// Not using any filtering.
						showMarker = true;
						// Reset Number of Cluster Items
						numMarkers = m.realclusteritemscount;
						
					}
					
					if (numMarkers == 1)
					{
						var img;
						//alert("1 marker" + markerType + parseInt(markerType));
						if (mapType == "event") {
							img = getImageName(parseInt(markerType) + 1, false);
						} else {
							img = getImageName(markerType, false);
						}
						m.setImage(img);
						m.clusteritemscount = 1;
						m.type = markerType;
					} else {
						var img = getImageName(0, false);
						m.setImage(img);
						m.clusteritemscount = numMarkers;
					}
					m.filteredclusteritems = filteredclusteritems;
					
					if(showMarker)
					{
						//alert("showing cl: " + m.id + " - " + m.clustertypes);
						m.show();
					}
					else {
						//alert("hiding cl: " + m.id + " - " + m.clustertypes);
						m.hide();
					}
				}
				else if(m!=null && !m.inCluster)
                {
					//alert("not null");
					var type = m.type;
					if(type == null)
					{  type = "";  }

					var typeFound = false;
					
					//Org Checks
					typeFound = (filters[0][type] == true);
					
					var farmTypeFound = false;

					// ARRAY
					// Cevas = 1
					// Cevas Farm = 2
					// Natural England = 3
					//alert(m.cevas + " - " + m.cevasfarm);
					if (filters[1][1])
					{
						//alert("cevas");
						farmTypeFound = (m.cevasfarm == "1");
					}
					if (filters[1][2])
					{
						farmTypeFound = (m.cevas == "1") || farmTypeFound;
					}
					var badgeTypeFound = false;
					if (filters[2][1])
					{
						badgeTypeFound = (m.qualitybadge == "1");
					}
					
					
					if((typeFound || (useFiltering[0] == false)) && (badgeTypeFound || (useFiltering[2] == false)) && (farmTypeFound || (useFiltering[1] == false) || (filters[0][2] == false)))
					{
						//alert("showing: " + m.id);
						m.show();
						document.getElementById("listitem_"+m.id).style.display = "block";
					}
					else {
						//alert("hiding: " + m.id);
						m.hide();
						document.getElementById("listitem_"+m.id).style.display = "none";
					}
                }
            }
        }
    }
	
	function applyFiltersToClusterItemsInSideList(){
		if(currentView!=null)
        {
			//alert(filters[1][1]);
			//alert(filters[2][1]);
			for(var mIndex = 0; mIndex < arraySides.length; mIndex++) {
                var m = arraySides[mIndex];
                if(m!=null)
                {
					//alert("not null");
					var type = m[7];
					if(type == null)
					{  type = "";  }

					var typeFound = false;
					
					//Org Checks
					typeFound = (filters[0][type] == true);
					
					var farmTypeFound = false;

					// ARRAY
					// Cevas = 1
					// Cevas Farm = 2
					// Natural England = 3
					//alert(m.cevas + " - " + m.cevasfarm);
					if (filters[1][1])
					{
						//alert("cevas");
						farmTypeFound = (m[6] == "1");
					}
					if (filters[1][2])
					{
						farmTypeFound = (m[5] == "1") || farmTypeFound;
					}
					var badgeTypeFound = false;
					if (filters[2][1])
					{
						//alert(m[13]);
						badgeTypeFound = (m[13] == "1");
					}
					
					if((typeFound || (useFiltering[0] == false)) && (badgeTypeFound || (useFiltering[2] == false)) && (farmTypeFound || (useFiltering[1] == false) || (filters[0][2] == false)))
					{
						//alert("showing: " + m[0]);
						document.getElementById("listitem_"+m[0]).style.display = "block";
					}
					else {
						//alert("hiding: " + m.id);
						document.getElementById("listitem_"+m[0]).style.display = "none";
					}
                }
            }
        }
    }
	
    function expand(imageElement, elementId){
        var element = document.getElementById(elementId);
        if(element != null)
        {
            if(element.style.display=="none")
            {
                element.style.display = "block";
                imageElement.src = "/furniture/Map/expanded.png";
            }
            else{
                element.style.display = "none";
                imageElement.src = "/furniture/Map/contracted.png";
            }
        }
    }
	function selectTypeFilter(imageElement,imgName){
		//alert(imageElement+"-"+imgName);
		if(imageElement != null)
		{
			var filterType = parseInt(imageElement.getAttribute("filterType"));
			var filterId = parseInt(imageElement.getAttribute("filterId"));
			
			var checked = true;
			if(imageElement.getAttribute("selected") != "0")
			{
				imageElement.setAttribute("selected", "0");
				imageElement.style.color = "#999999";
				checked = false;
				activeFilters[filterType] = activeFilters[filterType] - 1;
				//alert(activeFilters[filterType]);
				if (activeFilters[filterType] < 1)
				{
					activeFilters[filterType] = 0;
					useFiltering[filterType] = false;
					//alert(useFiltering[filterType]);
				}
			}
			else
			{
				imageElement.setAttribute("selected", "1");
				imageElement.style.color = "#346698";
				checked = true;
				activeFilters[filterType] = activeFilters[filterType] + 1;
				//alert(activeFilters[filterType]);
				useFiltering[filterType] = true;
			}
	
			if (filterType == 0 && filterId == 2 && mapType == "place")
			{
				// Farm filter selected	
				// Show / Hide the cevas filter list
				if (checked)
				{
					document.getElementById("cevasfilter").style.display = "block";
				} else {
					document.getElementById("cevasfilter").style.display = "none";
				}
			}
			//alert(filterType+"-"+filterId);
			mapFilterChange(filterType, filterId, checked);
		}
	}
	
	function mapFilterChange(filterType, filterId, checked) {        
		var filterType = parseInt(filterType);
        var filterId = parseInt(filterId);
		//alert(filterType + ", " + filterId + ", " + checked);
		filters[filterType][filterId] = checked;
        applyFilters();
		applyFiltersToClusterItemsInSideList();
    }

    /*function selectFilter(imageElement,imgName){
        if(imageElement != null)
        {
            var checked = true;
            if(imageElement.getAttribute("selected") != "0"){
                imageElement.setAttribute("selected", "0");
                imageElement.src = "/furniture/Map/unchecked.png";
                checked = false;
            }
            else{
                imageElement.setAttribute("selected", "1");
                imageElement.src = "/furniture/Map/checked"+imgName+".png";
                checked = true;
            }
            var filterType = parseInt(imageElement.getAttribute("filterType"));
            var filterId = parseInt(imageElement.getAttribute("filterId"));
            mapFilterChange(filterType, filterId, checked);
        }
    }*/
    
    function jumpMapTo(geocodeLocation){
        if (geocoder) {
            geocoder.getLatLng(geocodeLocation,
                  function(point) {
                        if (point) {
                            map.setCenter(point, 12);
                            //Could put a marker in (but make sure only have one marker on map)
                        }
                        else{
                            //This is a hack because Google stopped accepting postcode data through GeoCoder
                            //http://emad.fano.us/blog/?p=277
                            var s = document.createElement( "script" );
                            s.src="http://geo.localsearchmaps.com/?use=google2&level=12&zip="+geocodeLocation+"&country=UK";
                            s.type = "text/javascript";
                            document.getElementsByTagName( "head" )[0].appendChild(s);
                        }
                  }
            );
        }
    }
//]]>
