    //<![CDATA[
	var map1;
	var pano1;
	var mkr;
	var xmlHttp;

	//load the 2 maps on the page, setting all the default/generic code
    function load() {
      if (!GBrowserIsCompatible()) {
        map1 = document.getElementById("map1");
		map1.innerHTML = "<b>Sorry - Your browser is not compatible with Google maps.</b>"
      } else {
		geocoder = new GClientGeocoder();

		//initialise the map
		map1 = new GMap2(document.getElementById("map1"));
		
		map1.addControl(new GLargeMapControl());
		map1.addControl(new GMapTypeControl());
		map1.addControl(new GOverviewMapControl());
        map1.addControl(new GScaleControl(), new GControlPosition(G_ANCHOR_BOTTOM_LEFT, new GSize(5,35)));
		//map1.setCenter(new GLatLng(-25.735, 134.49), 4);	//default to Aust
		//map1.setCenter(new GLatLng(54.74, -3.25), 5);	//default to UK
		map1.setCenter(new GLatLng(37.00, -98.00), 4);	//default to US
        map1.enableDoubleClickZoom();
        
		//call the function built/written at runtime to display the maps
		showMaps();
	  }
    }

	function createMarker(point, html) {
		var marker = new GMarker(point);
		GEvent.addListener(marker, "click", function() {mapShowInfo(marker, html);});
		return marker;
	}
	function createMarkerIcon(point, html) {	//, icn, shdw, w, h, sw, sh
        var iconCustom = createIcon("marker", "shadow", 20, 34, 37, 34);	//icn, shdw, w, h, sw, sh);
		var marker = new GMarker(point, {title: html, icon: iconCustom });
		GEvent.addListener(marker, "click", function() {mapShowInfo(marker, html);});
		return marker;
	}

	function mapShowInfo(mk, html) {
		mk.openInfoWindowHtml(html);
	}

	function showStreetView() {
		pano1 = document.getElementById("pano")
		if (pano1) {
		  var myPano = new GStreetviewPanorama(pano1);
          GEvent.addListener(myPano, "error", handleNoFlash);
          //svOverlay = new GStreetviewOverlay();
          //map1.addOverlay(svOverlay);
		  if (mkr) {
            myPano.setLocationAndPOV(mkr.getLatLng());
            pano1.style.height = "400px";
		    pano1.style.display = "block";
		  }

		}
	}
	
	function hideMaps() {
		document.getElementById('gmap').style.display='none';
		document.getElementById('gdir').style.display='none';
		document.getElementById('pano').style.display='none';
	}
	function showMap() {
		document.getElementById('gmap').style.display='block';
	}
	function showDriving() {
		document.getElementById('gdir').style.display='block';
	}

	function handleNoFlash(errorCode) {
	  var FLASH_UNAVAILABLE = 603;
	  var NO_NEARBY_PANO = 600;
	  //pano1.style.height = "50px";
	  document.getElementById('gmap').style.display='block';	//default back to the map
      if (errorCode == FLASH_UNAVAILABLE) {
        alert("Sorry: Flash doesn't appear to be supported by your browser.  We can't show the street view panorama.");
        return;
      } else if (errorCode == NO_NEARBY_PANO) {
        alert("Sorry: There is no nearby street view available.  We can't show the panorama.");
        return;
      } else {
		alert("Sorry: An unknown error occurred.  No Street View is possible.");
	  }
    }  


	//US Version
	function showAddress(map, addr, loc, city, state, pcode, area, hdr) {
		var postcode;
		if (pcode.length > 5) {
			postcode = pcode.substring(0,5);
		} else {
			postcode = pcode
		}
		geocoder.getLatLng(addr + ', ' + city + ', ' + state + ' ' + postcode  + ', US', 
		  function(pt) {
		  if (!pt) {
			showSuburb(map, loc, city, state, area, hdr)
		  } else {
			map.setCenter(pt,15);
			var html = '<table border=0 cellspacing=0 cellpadding=0><tr><td><b>' + hdr + '</b><br>'
				 + addr + ',<br>' + loc + ' ' + city + ', ' + state + ' ' + postcode + '<br><br>(' + area + ')</td></tr></table>'
			mkr = createMarker(pt, html);
			map.addOverlay(mkr);
			mkr.openInfoWindowHtml(html);
			
			// Save the lat/lng to database for later use.
			saveLatLng(mkr);

			//Street View
			//showStreetView();
			/*pano1 = document.getElementById("pano")
			if (pano1) {
				pano1.style.display = "block";
			  }*/
			}
		  }
		);
	}
	function showSuburb(map, loc, city, state, area, hdr) {
		geocoder.getLatLng(city + ', ' + state + ', US', 
		function(pt) {
		if (!pt) {
			alert("Sorry, " + city + " not found");
		} else {
			map.setCenter(pt,15);
			var html = '<table border=0 cellspacing=0 cellpadding=0><tr><td><b>' + hdr + '</b><br>'
				 + loc + ' ' + city + ', ' + state + '<br><br>(' + area + ')</td></tr></table>'
				 + '<br><span style="font-size:8pt">(Suburb shown only)</span>'
			mkr = createMarkerIcon(pt, html);
			map.addOverlay(mkr);
			mkr.openInfoWindowHtml(html);
			}
		}
		);
	}
	function showPoint(map, lat, lng, addr, loc, city, state, pcode, area, hdr) {
		var postcode;
		if (pcode.length > 5) {
			postcode = pcode.substring(0,5);
		} else {
			postcode = pcode
		}
		var html = '<table border=0 cellspacing=0 cellpadding=0><tr><td><b>' + hdr + '</b><br>'
			+ addr + ',<br>' + loc + ' ' + city + ', ' + state + ' ' + postcode + '<br><br>(' + area + ')</td></tr></table>'
        var pt = new GLatLng(lat,lng);
        map.setCenter(pt, 15);
        mkr = createMarker(pt, html);
        map.addOverlay(mkr);
        mkr.openInfoWindowHtml(html);

			//Street View
			//showStreetView();
			/*pano1 = document.getElementById("pano")
			if (pano1) {
				pano1.style.display = "block";
			  }*/
	}	

	
	function createIcon(ic, shdw, w, h, sw, sh) {
		var icn = new GIcon();
		icn.image = "gfx/" + ic + ".png";
		icn.shadow = "gfx/" + shdw + ".png";
		icn.iconSize = new GSize(w, h);
		icn.iconAnchor = new GPoint(w >> 1, h >> 1);
	        icn.shadowSize = new GSize(sw, sh);
		icn.infoWindowAnchor = new GPoint(6,1);
		icn.infoShadowAnchor = new GPoint(13,13);
		return icn;
	}

	function createMarkerMove(point) {
		var marker = new GMarker(point, {draggable: true, bouncy: false});
		//getMapInfo(marker);
		GEvent.addListener(marker, "dragend", function() {getMapInfo(marker);});
		return marker;
	}

	function getMapInfo(mk) {
      var nLat = mk.getPoint().lat();
      var nLng = mk.getPoint().lng();
      var tLat = document.getElementById('txtLat');
      var tLng = document.getElementById('txtLong');
      if (tLat) {tLat.value = nLat};
      if (tLng) {tLng.value = nLng};
	}

	//US Version
	function showAddressMove(map, addr, loc, city, state, pcode) {
		geocoder.getLatLng(addr + ', ' + city + ', ' + state + ' ' + pcode  + ', US', 
		  function(pt) {
		  if (!pt) {
			//try just suburb
				geocoder.getLatLng(city + ', ' + state + ' ' + pcode + ', US', 
				function(pt2) {
				if (!pt2) {
					alert("SORRY - Your Suburb was not found.");
				} else {
					map.setCenter(pt2,15);
					var mkr2 = createMarkerMove(pt2);
					map.addOverlay(mkr2);
					}
				}
				);
			//end try just suburb
		  } else {
			map.setCenter(pt,15);
			var mkr = createMarkerMove(pt);
			map.addOverlay(mkr);
			}
		  }
		);
	}

	function getQuerystring(key, default_) {
		if (default_==null) default_="";
		key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
		var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
		var qs = regex.exec(window.location.href);
		if(qs == null)
			return default_;
		else
			return qs[1];
	} 

	function saveLatLng(ll) {
		// Save the lat/lng to database for later use.
		var nLat = ll.getLatLng().lat();
		var nLng = ll.getLatLng().lng();
		var oid = getQuerystring('id');
		var im = document.getElementById("hidImg");
		im.src = 'latlng.aspx?oid=' + oid + '&lat=' + nLat + '&lng=' + nLng + '&acc=0'
		//alert(nLat + ':' + nLng);
		//alert(mk.getLatLng().toUrlValue() );
	}

    //]]>