//<![CDATA[
	function load() {
		if (GBrowserIsCompatible()) {
			
			map.addControl(new GSmallMapControl ());
			map.setCenter(new GLatLng(startingLatitude, startingLongitude), startingZoomlvl);
			var mgr 	= new GMarkerManager(map, {borderPadding:1});
			var bounds  = new GLatLngBounds();

			GDownloadUrl(pubMarkersUrl, function(data)
			{
				var xml 		= GXml.parse(data);
				var xmlMarkers  = xml.documentElement.getElementsByTagName("marker");
		
				for (var i = 0; i < xmlMarkers.length; i++) {
					var marker = createPubMarker(xmlMarkers[i]);
					bounds.extend(marker.getLatLng());
				}
				
		        mgr.addMarkers(gmarkersPubs, zoomlvlPubs);
		        mgr.addMarkers(gmarkersHotels, zoomlvlPubs);
		        mgr.refresh();
				
				map.enableScrollWheelZoom();
				
				if(openPubInfoWindow) {
					showMarker(startingPubId, startingLatitude, startingLongitude, startingZoomlvl);
				}
			});
			
			if(loadRegionMarkers) {
				GDownloadUrl(regionMarkersUrl, function(data)
				{
					var xml 		= GXml.parse(data);
					var xmlMarkers  = xml.documentElement.getElementsByTagName("marker");
			
					for (var i = 0; i < xmlMarkers.length; i++) {
						var marker = createRegionMarker(xmlMarkers[i]);
						bounds.extend(marker.getLatLng());
					}
					
			        mgr.addMarkers(gmarkersRegions, zoomlvlRegions, zoomlvlPubs);
			        mgr.refresh();

					map.enableScrollWheelZoom();
					
					if(openRegionInfoWindow) {
						setTimeout(function() 
						{
							GEvent.trigger(gmarkersRegions[startingRegionId], "click");
						}, 100);
					}
				});
			}
			//GEvent.addListener(map, "click", showCoords);
		}
		
	}
	
	function showCoords(marker, point) {
		if (!marker) {
			debugWindow = window.open("","debugwindow","width=250,height=250");
			debugWindow.document.writeln(point.lat() + ', ' + point.lng());
			debugWindow.document.close();
		}
	}
	
	function createPubMarker(xmlMarker) {
		var pubID		= xmlMarker.getAttribute("pubID");
		var pubName		= xmlMarker.getAttribute("pubName");
		var hotelName	= xmlMarker.getAttribute("hotelName");
		var address		= xmlMarker.getAttribute("address");
		var telephone	= xmlMarker.getAttribute("telephone");
		var pubUrl		= xmlMarker.getAttribute("url");
		var	latitude	= xmlMarker.getAttribute("latitude");
		var longitude	= xmlMarker.getAttribute("longitude");
		var closureText	= xmlMarker.getAttribute("closureText");
	
		var point 		= new GLatLng(parseFloat(latitude), parseFloat(longitude));	
		var pointUrl	= point.toUrlValue();
		
		var pubHtml 	= '<a href="' + pubUrl + '">' + pubName + '</a><br />';
		var hotelHtml 	= '';
		var closureHtml = '';
		var addressHtml	= '<span class="small-text">' + address + '<br />Tel: ' + telephone + '</span><br />';
		var mapHtml		= '<span class="small-text">Directions with Google: <a href="http://maps.google.co.uk/maps?daddr=' + pointUrl + '" target="_blank">To here</a> | <a href="http://maps.google.co.uk/maps?saddr=' + pointUrl + '" target="_blank">From here</a></span><br />'
						+ '<span class="small-text">View on a: <a href="http://maps.google.co.uk/maps?q=' + pointUrl + '" target="_blank">Larger Google map</a></span>';

		if(closureText != "") {
			closureHtml	= '<span class="announcement small-text">' + closureText + '</span><br />';
		}
		if(hotelName == "") {
			var mapMarker = new GMarker(point, {icon:iconPub});
			gmarkersPubs.push(mapMarker);   
			gmarkers[parseInt(pubID)] = mapMarker;
		} else {
			var mapMarker = new GMarker(point, iconHotel);
			gmarkersHotels.push(mapMarker);
			gmarkers[parseInt(pubID)] = mapMarker;
			var hotelHtml 	= '<span class="accommodation small-text"><a class="accommodation" href="' + pubUrl + 'accommodation/">' + hotelName + '</a> Accommodation<br /></span>';
		}
		var infoWidth = map.getSize().width - infoWindowWidthOffset;
		var options = { maxWidth: infoWidth }
		var html 	= pubHtml + closureHtml + addressHtml + hotelHtml + mapHtml;

		GEvent.addListener(mapMarker, 'click', function() { mapMarker.openInfoWindowHtml(html, options); });
		return mapMarker;
	}
	function createRegionMarker(xmlMarker) {
		var zoomlvl   = xmlMarker.getAttribute("zoomlvl_pubs");
		var point 	  = new GLatLng(parseFloat(xmlMarker.getAttribute("latitude")), parseFloat(xmlMarker.getAttribute("longitude")));	
		var mapMarker = new GMarker(point, {icon:iconRegion});
		
		gmarkersRegions.push(mapMarker);      

		var infoWidth 		= map.getSize().width - 50;
		var options 		= { maxWidth: infoWidth }
		var regionLinkHtml 	= '';
		if(showRegionLink) {
			regionLinkHtml = 'Go to the <a href="' + xmlMarker.getAttribute("url") + '">region&#39;s search page</a> or ';
		}
		var html 	= xmlMarker.getAttribute("regionName") 
					+ '<br />' + xmlMarker.getAttribute("countTxt")
					+ '<br /><span class="small-text">' + regionLinkHtml + '<a href="#" onClick="zoomTo('
					+ xmlMarker.getAttribute("latitude") + ', ' + xmlMarker.getAttribute("longitude") + ', '
					+ zoomlvl +');">zoom in</a> on the map.</span>';

		GEvent.addListener(mapMarker, 'click', function() { mapMarker.openInfoWindowHtml(html, options); });
		return mapMarker;
	}

	function showMarker(pubID, latitude, longitude, zoomlvl) {
		if(zoomlvl==null) {
			zoomlvl = zoomlvlFindOnMap;
		}
		var marker = gmarkers[pubID];
		zoomTo(latitude, longitude, zoomlvl);
		setTimeout(function()
		{
			GEvent.trigger(marker, "click");
		}, 100);
	}

	function zoomTo(latitude, longitude, zoomlvl) {
		var point  = new GLatLng(latitude, longitude);
		map.setCenter(point, zoomlvl);
	}

	function searchLatLon(latitude, longitude, address) {
		if(latitude != undefined && longitude != undefined && address != undefined) {
			frm = document.getElementById('frmSearch');
			frm.searchLatitude.value  	= latitude;
			frm.searchLongitude.value 	= longitude;
			frm.searchAddress.value 	= address;
			frm.submit();
		}
	}
	
	function getMapXY() {
		var mapX = 0;
		var mapY = 0;
		obj = document.getElementById('map');
		if (obj.offsetParent) {
			do {
				mapX += obj.offsetLeft;
				mapY += obj.offsetTop;
			} while (obj = obj.offsetParent);
		}
		return [mapX,mapY];
	}
	
	function findOnMapFromLink(link, pubID, latitude, longitude) {
		var mapXY 		= getMapXY(document.getElementById('map'));
		var mapX		= mapXY[0];
		var mapY		= mapXY[1];
		link.className 	= 'dfcMapResults';
		showMarker(pubID, latitude, longitude);
		window.scrollTo(0, mapY, mapX[0]);
	}
//]]>