	function load() {
      if (GBrowserIsCompatible()) {
      	var check = false;
      	var newlatlng;
      	var div = document.createElement('div');
      	div.innerHTML ="<div></div><img style='max-width: 660px' src='' />";
      	div.style.lineHeight = '30px';
      	div.style.fontFamily = 'Arial';
      	div.style.fontWeight = 'bold';
      	div.style.color = '#6EA8E0';
      
        map = new GMap2(document.getElementById("map"));
        map.addControl(new GLargeMapControl());
		map.addControl(new GMapTypeControl());
		
		if (center != false) {
			map.setCenter(new GLatLng(center['lat'], center['long']), 2);
        } else {
        	if (points.length != 0) { 
				randNumber = Math.floor(Math.random() * points.length);	
		        map.setCenter(new GLatLng(points[randNumber]['lat'], points[randNumber]['long']), 3);
	        } else {
	        	map.setCenter(new GLatLng(-25.335448, 135.745076), 3);
	        }
        }
		map.enableScrollWheelZoom();
        // Create a base icon for all of our markers that specifies the
		// shadow, icon dimensions, etc.
		var baseIcon = new GIcon(G_DEFAULT_ICON);
		baseIcon.shadow = "/_resources/shadow.png";
		baseIcon.iconSize = new GSize(23, 40);
		baseIcon.shadowSize = new GSize(37, 40);
		baseIcon.iconAnchor = new GPoint(0, 40);
		baseIcon.infoWindowAnchor = new GPoint(9, 2);
		baseIcon.transparent = "/_resources/trans.png";
		baseIcon.image = "/_resources/flag.png";

		function createMarker(point, index) {
		  // Create a lettered icon for this point using our icon class
		  	var letteredIcon = new GIcon(baseIcon);
			var pointId;

			var infoWindow = div.cloneNode(true);
			if (index != "false")	{
				pointId = points[index]['id'];
				if (!del)
					infoWindow.getElementsByTagName("div")[0].innerHTML = points[index]['title'];
				else {
					var title = points[index]['title'] + "<span style='color: red; cursor: pointer; margin-left: 10px;'>Delete</span>";
					infoWindow.getElementsByTagName("div")[0].innerHTML = title;
					infoWindow.getElementsByTagName("div")[0].getElementsByTagName("span")[0].onclick = function () {deletePoint(pointId)};
				}
				infoWindow.getElementsByTagName("img")[0].src = points[index]['img'];
			}
			
			// Set up our GMarkerOptions object
			markerOptions = { icon:letteredIcon };
			var marker = new GMarker(point, markerOptions);
			
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindow(infoWindow);
			});
			return marker;
		}
		
		for (var i = 0; i < points.length; i++) {
		  var point = new GLatLng(points[i]['lat'],points[i]['long']);
		  point.pointId = points[i]['id'];
		  map.addOverlay(createMarker(point, i));		  
		}
		
		document.getElementById("map").ondblclick = function (e) {
			clearInterval(check);
			check = false;
		};
		
		GEvent.addListener(map, "click", function(overlay, latlng) {
			if (!check) {
				if (latlng) {
					newlatlng = latlng;
					check = setInterval(popup,300);
				}
			} else {
				clearInterval(check);
				check = false;	
			}
		});
		
		function deletePoint(pointId) {
			document.getElementById("pointId").value = pointId;
			document.getElementById("delPoint").submit();
		}
		
		function popup() {
			clearInterval(check);
			check = false;
			popupForm(newlatlng);
			currentMarker = createMarker(newlatlng,"false");
			map.addOverlay(currentMarker);
			map.panTo(newlatlng);
		}
      }     
    }
    
    var del = false;
    var points;
    var center = false;
    var deletePerm;
    var currentMarker;
    var map;
    
    function popupForm(latlng) {
		document.getElementById("overlay").style.display = "block";
    	document.getElementById("lat").value = latlng.lat();
    	document.getElementById("long").value = latlng.lng();
    }
    
	function setup() {
		if (document.getElementById("map")) {
			load();
		  	document.getElementById("overlay").getElementsByTagName("span")[0].onclick = function (e) {
		  		document.getElementById("overlay").style.display = "none";
		  		map.removeOverlay(currentMarker);
		  	}
	  	}
  		if (document.getElementById("error")) {
			if (urlHalves[1]) {
				document.getElementById("error_text").parentNode.parentNode.style.display = "block";
				document.getElementById("error_text").innerHTML = errors[urlHalves[1]];
			}
			document.getElementById("error").getElementsByTagName("span")[0].onclick = function (e) {
		  		document.getElementById("error").style.display = "none";
		  	}
		}
	}
	
	var errors = new Array();
	errors[1] = "Database is currently unavailable.";
	errors[2] = "Verification Image Setup Error. Please check you have cookies enabled.";
	errors[3] = "Verification Text Incorrect.";
	errors[4] = "Error saving uploaded image. Please try again later.";
	errors[5] = "Error opening uploaded image. Please check the file that you uploaded is actually an image.";
	errors[6] = "Internal error. Please try again later.";
	errors[7] = "Point deleted successfully.";
	errors[8] = "Please enable cookies.";
	errors[9] = "Error saving contact data. Please try again later.";
	errors[10] = "You have already contacted us recently.";
	errors[11] = "Email sent.";
	errors[12] = "Email address not valid.";
	errors[13] = "No contact information provided.";
	errors[6969] = "Logged in successfully.";
	
	var urlHalves = String(document.location).split('?e=');