function initialize() {

	if (GBrowserIsCompatible()) {

			function placeMarkers(xmlquery){
  	
			var url="/return_xml.php"+xmlquery;
			
				GDownloadUrl(url, function(data) {
		
  				var xml = GXml.parse(data);
  				
  				var markerArray=new Array;
  				  			
  				var markers = xml.documentElement.getElementsByTagName("marker");
  				
  			
   				for (i=0;i<markers.length;i++) {
 	  				var name = GXml.value(markers[i].getElementsByTagName("listing_title")[0]);
 	  		
 	  				var adr=GXml.value(markers[i].getElementsByTagName("listing_add1")[0])+", ";
					adr+=(GXml.value(markers[i].getElementsByTagName("listing_add2")[0])!="")? GXml.value(markers[i].getElementsByTagName("listing_add2")[0])+", ": "";
					adr+=(GXml.value(markers[i].getElementsByTagName("listing_add3")[0])!="")? GXml.value(markers[i].getElementsByTagName("listing_add3")[0])+", ": "";
					adr+=GXml.value(markers[i].getElementsByTagName("listing_town")[0]);
					adr+=(GXml.value(markers[i].getElementsByTagName("listing_region")[0])!="")? ", "+GXml.value(markers[i].getElementsByTagName("listing_region")[0]): "";
					adr+=" "+GXml.value(markers[i].getElementsByTagName("listing_pcode")[0])+" "+GXml.value(markers[i].getElementsByTagName("listing_country")[0]);

   			
   					var id=GXml.value(markers[i].getElementsByTagName("listing_id")[0]);
		
					if((GXml.value(markers[i].getElementsByTagName("listing_lat")[0])!="") && (GXml.value(markers[i].getElementsByTagName("listing_lng")[0])!="")) {
					
						var latlng = new GLatLng(parseFloat(GXml.value(markers[i].getElementsByTagName("listing_lat")[0])),parseFloat(GXml.value(markers[i].getElementsByTagName("listing_lng")[0])));
						
						var markerHtml="<h4>"+name+"</h4><p style=\"margin-bottom:0; font-size:0.75em;\">"+adr+"</p><p style=\"margin-bottom:0; font-size:0.75em;\"><a href=\"show.php?lid="+id+"\">More details</a></p>";
						
						var cat=GXml.value(markers[i].getElementsByTagName("category_id")[0]);

						x=createMarker(latlng,markerHtml,cat);
						
						markerArray.push(x);
					
					}
		
					if(!center && location.querystring['listing_town'] && (location.querystring['listing_town'].length>0)){
						center=latlng;
						map.setCenter(center,12);
					}


				}

				manager.addMarkers(markerArray,0);
				manager.refresh();			
					
			});
		}
		
		
		
		var mapDiv=document.getElementById("gmap");
		mapDiv.style.width="98%";
		mapDiv.style.height="334px";
		mapDiv.style.border="1px solid";
        var map = new GMap2(mapDiv);
        map.setCenter(defaultCenter, 6);
        map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		var manager=new MarkerManager(map);

		if(location.querystring.geosearch && location.querystring["geosearch"].length>0) {
			var type="geo";
		} else if(location.querystring.pcode && location.querystring["pcode"].length>0) {
			var type="pcode";
		} else if( location.querystring.venue && location.querystring["venue"].length>0) {
			var type="venue";
		} else {
			var type="listing";
		}
	
 		var center=null;
 		if (type=="geo"){
 			var point = new GLatLng(location.querystring["lat"],location.querystring["lng"]);
 			map.setCenter(point,10);
        	placeMarkers(location.search+(type? "&type="+type: "")+"&query=list");
      	
 			
 		} else if (type=="pcode"){
 			var resultLat=null;
 			var resultLng=null;
 			//geocode postcode and set center
 			var localSearch=new GlocalSearch();
			//localSearch.setCenterPoint("UK");
  			localSearch.setSearchCompleteCallback(null, function() {
      
      			if (localSearch.results[0]) {    
        			resultLat = localSearch.results[0].lat;
           			resultLng = localSearch.results[0].lng;
        			var point = new GLatLng(resultLat,resultLng);
        			map.setCenter(point,10);
        			placeMarkers((location.search? stripslashes(location.search)+"&": "?")+"lat="+resultLat+"&lng="+resultLng+(type? "&type="+type: "")+"&query=list");
      			}else{
        			alert("Postcode not found!");
      			}
    		});  
    
  			localSearch.execute(location.querystring.pcode);
 				
  		} else {
  			if (type=="venue"){
  				//set up venue marker
 
  				vUrl="/return_xml.php"+(location.search? stripslashes(location.search)+"&": "?")+"query=centervenue";
 		 		
  				GDownloadUrl(vUrl, function(data){
  			
  					var venuexml=GXml.parse(data);
  			
  					var venue=venuexml.documentElement.getElementsByTagName("marker")[0];
  			
  					var venueId=GXml.value(venue.getElementsByTagName("listing_id")[0]);
  					var venueName=GXml.value(venue.getElementsByTagName("listing_title")[0]);
  					var venueTown=GXml.value(venue.getElementsByTagName("listing_town")[0]);
	
 	  				var venueAdr=GXml.value(venue.getElementsByTagName("listing_add1")[0])+", ";
					venueAdr+=(GXml.value(venue.getElementsByTagName("listing_add2")[0])!="")? GXml.value(venue.getElementsByTagName("listing_add2")[0])+", ": "";
					venueAdr+=(GXml.value(venue.getElementsByTagName("listing_add3")[0])!="")? GXml.value(venue.getElementsByTagName("listing_add3")[0])+", ": "";
					venueAdr+=GXml.value(venue.getElementsByTagName("listing_town")[0]);
					venueAdr+=(GXml.value(venue.getElementsByTagName("listing_region")[0])!="")? ", "+GXml.value(venue.getElementsByTagName("listing_region")[0]): "";
					venueAdr+=" "+GXml.value(venue.getElementsByTagName("venue_pcode")[0])+" "+GXml.value(venue.getElementsByTagName("listing_country")[0]);

			
					var venueLatLng = new GLatLng(parseFloat(GXml.value(venue.getElementsByTagName("listing_lat")[0])),parseFloat(GXml.value(venue.getElementsByTagName("listing_lng")[0])));
		
					var venueHtml="<h4>"+venueName+"</h4><p style=\"margin-bottom:0; font-size:0.75em;\">"+venueAdr+"</p><p style=\"margin-bottom:0; font-size:0.75em;\"><a href=\"show.php?vid="+venueId+"\">More details</a></p>";
			
					var venueMarker=createMarker(venueLatLng,venueHtml,"5");
			
					map.addOverlay(venueMarker);
		
					if(!center) {
						center=venueLatLng;
						map.setCenter(center,10);
					}
  				});
  			}
  		
  			placeMarkers((location.search? stripslashes(location.search)+"&": "?")+(type? "&type="+type: "")+"&query=list");
		}
	}
}
addEvent(window,"load",initialize,true);
addEvent(window,"unload",GUnload,true);
