		if (GBrowserIsCompatible()) {
		  var map;
		  var gmarkers = [];
		  var baseIcon = new GIcon();
			  baseIcon.iconSize=new GSize(32,32);
			  baseIcon.shadowSize=new GSize(56,32);
			  baseIcon.iconAnchor=new GPoint(16,32);
			  baseIcon.infoWindowAnchor=new GPoint(16,0);
		  
		  // === Create an associative array of GIcons() ===
		  var gicons = [];
		  for(var i=0; i<cat_name_js.length; i++){
			 gicons[cat_name_js[i]] = new GIcon(baseIcon, "http://"+domain+"/forms_icons/"+cat_image_js[i], null, null);
		  }
		  

		  // A function to create the marker and set up the event window
      function createMarker(point,name,html,category) {
      
      
        var options = { title: name+" ("+category+")", icon: gicons[category] };		  
		  
		  
		  
        var marker = new GMarker(point, options);
        // === Store the category and name info as a marker properties ===
        marker.mycategory = category;                                 
        marker.myname = name;
        GEvent.addListener(marker, "click", function() {
		// map.setCenter(marker.getPoint(lat,lng),15); 
          marker.openInfoWindowHtml(html);
        });
        gmarkers.push(marker);
        return marker;
      }
	
		  // == shows all markers of a particular category, and ensures the checkbox is checked ==
		  function show(category) {
			for (var i=0; i<gmarkers.length; i++) {
			  if (gmarkers[i].mycategory == category) {
				gmarkers[i].show();
			  }
			}
			// == check the checkbox ==
			if (document.getElementById(category+"box"))
				document.getElementById(category+"box").checked = true;
		  }
	
		  // == hides all markers of a particular category, and ensures the checkbox is cleared ==
		  function hide(category) {
			for (var i=0; i<gmarkers.length; i++) {
			  if (gmarkers[i].mycategory == category) {
				if(gmarkers[i].myname!=ad_title){
					gmarkers[i].hide();
				}
			  }
			}
			// == clear the checkbox ==
			if (document.getElementById(category+"box"))
				document.getElementById(category+"box").checked = false;
			// == close the info window, in case its open on a marker that we just hid
			
		  }
		 

		 
		 function yav_boxclick(box,category_id) {
			if (box.checked) {
			  for(var i=0; i<cat_fatherid_js.length; i++){
			  	if(cat_fatherid_js[i]==category_id){
					show(cat_name_js[i]);	
				}
			  }
			} else {
			   for(var i=0; i<cat_fatherid_js.length; i++){
			  	if(cat_fatherid_js[i]==category_id){
					hide(cat_name_js[i]);
				}
			  }
			}
			map.closeInfoWindow();
			// == rebuild the side bar
			//makeSidebar();
		  }
		  // == a checkbox has been clicked ==
		  function boxclick(box,category) {
			if (box.checked) {
			  show(category);
			} else {
			  hide(category);
			}
			map.closeInfoWindow();
			// == rebuild the side bar
//			makeSidebar();
		  }
	
		  function myclick(i) {
			GEvent.trigger(gmarkers[i],"click");
		  }
	
	
		  // == rebuilds the sidebar to match the markers currently displayed ==
		  function makeSidebar() {
			var html = "";
			for (var i=0; i<gmarkers.length; i++) {
			  if (!gmarkers[i].isHidden()) {
				html += '<a href="javascript:myclick(' + i + ')">' + gmarkers[i].myname + '</a><br>';
			  }
			}
//			document.getElementById("side_bar").innerHTML = html;
		  }
	
	
		  // create the map
		  function initMap() {
		  var start_lat = map_latitude;
		  var start_lng = map_longitude;
		  //alert(map_latitude+' '+map_longitude);
		  map = new GMap2(document.getElementById("map"));
		  
		  map.addControl(new GLargeMapControl());
		  map.addControl(new GMapTypeControl());
		  map.setCenter(new GLatLng(start_lat,start_lng), 15);	
		  
		  map.setMapType(G_HYBRID_MAP);
		  
		  // Read the data
		  var d = new Date();
		  GDownloadUrl("mapdata.xml?t="+d.getTime(), function(doc) {
			var xmlDoc = GXml.parse(doc);
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
			  
			for (var i = 0; i < markers.length; i++) {
			  // obtain the attribues of each marker
			  var lat = parseFloat(markers[i].getAttribute("lat"));
			  var lng = parseFloat(markers[i].getAttribute("lng"));
			  var point = new GLatLng(lat,lng);
			  var street1 = markers[i].getAttribute("street1");
			  var street2 = markers[i].getAttribute("street2");
			  var city = markers[i].getAttribute("city");
			  var postcode = markers[i].getAttribute("postcode");
			  var image = markers[i].getAttribute("image");
			  var imagewidth = markers[i].getAttribute("imagewidth");
			  var imageheight = markers[i].getAttribute("imageheight");
			  var entryID = markers[i].getAttribute("entryID");
			  var name = markers[i].getAttribute("label");
			  
			  if (image == "") {
				image="no_image.gif";
				imagewidth="40";
				imageheight="40";
			  }
			  
			  var html = "<div style='font-family:verdana,arial,helvetica,sans-serif;font-size:80%;line-height:normal;'><img src=http://"+domain+"/images/"+image+" width="+imagewidth+" height="+imageheight+"><br /><a href=/detail.php?id="+entryID+"><strong>"+name+"</strong></a><br />"+street1+"<br />"+street2+"<br />"+city+"<br />"+postcode+"<br /><br /></div>";
			  var category = markers[i].getAttribute("icontype");
			  // create the marker
			  var marker = createMarker(point,name,html,category);			  
			  map.addOverlay(marker);
			}
	        
	        //alert(category);
	        //alert(image);
	        //alert(html);
	        
			for(var cat=0; cat<cat_name_js.length; cat++){
				hide(cat_name_js[cat]);
			}
			
			// == show or hide the categories initially ==
//			show("house");
//			show("pushpin");
			// == create the initial sidebar ==
//			makeSidebar();
		  });
		}

		}
	
		else {
		  alert("Sorry, the Google Maps API is not compatible with this browser");
		}

mapInitialized = false;

function onTabChange(div){
	if (!mapInitialized && div.id=="tabLocation") {
		initMap();
		mapInitialized = true;
	}
	$('topLink').focus();
}

function change_lang() {
	var lang = document.language.lang_choice.options[document.language.lang_choice.selectedIndex].value
	window.location.href = lang;
}