function googleScript () {

	if (GBrowserIsCompatible()) {

		var gmaptype = [];
		gmaptype[0] = G_NORMAL_MAP;
		gmaptype[1] = G_SATELLITE_MAP;
		gmaptype[2] = G_HYBRID_MAP;

		var sidebar_html = "";

		var gmarkers = [];
		var htmls = [];
		var i = 0;

		var hgIcon = new GIcon();
		hgIcon.image = "../images/hg_circle.gif";
		hgIcon.iconSize = new GSize(100, 100);
		hgIcon.iconAnchor = new GPoint(50, 50);
		hgIcon.infoWindowAnchor = new GPoint(50, 50);

		var yellowIcon = new GIcon();
		yellowIcon.image = "../images/yellowmarker.png";
		yellowIcon.iconSize = new GSize(20, 34);
		yellowIcon.iconAnchor = new GPoint(9, 34);
		yellowIcon.infoWindowAnchor = new GPoint(9, 2);

		var icons = [];
		icons[0] = hgIcon;
		icons[1] = yellowIcon;

		var tooltip = document.createElement("div");			

		function createMarker(point,name,html,icontype) {
			var marker = new GMarker(point,icons[icontype]);
			
			marker.tooltip = '<div class="tooltip">' + name + '</div>';

			GEvent.addListener(marker, "click", function() {marker.openInfoWindowHtml(html);});

			GEvent.addListener(marker, "mouseover", function() {showTooltip(marker);});

			GEvent.addListener(marker, "mouseout", function() {tooltip.style.visibility="hidden"});

			gmarkers[i] = marker;
			htmls[i] = html;
				sidebar_html += '<a href="javascript:myclick(' + i + ')" onmouseover="mymouseover(' + i + ')" onmouseout="mymouseout()">' + name + '</a><br>';
			i++;

			return marker;
		}

		function myclick(i) {
			gmarkers[i].openInfoWindowHtml(htmls[i]);
		}

		function myzoom(a) {
			map.setZoom(map.getZoom() + a);
		}

		function showTooltip(marker) {
			tooltip.innerHTML = marker.tooltip;
			var point=map.getCurrentMapType().getProjection().fromLatLngToPixel(map.fromDivPixelToLatLng(new GPoint(0,0),true),map.getZoom());
			var offset=map.getCurrentMapType().getProjection().fromLatLngToPixel(marker.getPoint(),map.getZoom());
			var anchor=marker.getIcon().iconAnchor;
			var width=marker.getIcon().iconSize.width;
			var height=tooltip.clientHeight;
			var pos = new GControlPosition(G_ANCHOR_TOP_LEFT, new GSize(offset.x - point.x - anchor.x + width, offset.y - point.y -anchor.y -height));
			pos.apply(tooltip);
			tooltip.style.visibility="visible";
		}

		function mymouseover(i) {
			showTooltip(gmarkers[i])
		}

		function mymouseout() {
			tooltip.style.visibility="hidden";
		}

		function myclick(i) {
			gmarkers[i].openInfoWindowHtml(htmls[i]);
		}

		function mylocate(marker, point) {
			prompt("Location", point.lat() + " " + point.lng());
		}

		var request = GXmlHttp.create();
		request.open("GET", "../xml/waypoints.xml", true);
		request.onreadystatechange = function() {
			if (request.readyState == 4) {
				var xmlDoc = request.responseXML;

				var mapconfig = xmlDoc.documentElement.getElementsByTagName("mapconfig");
				for (var i = 0; i < mapconfig.length; i++) {
					var mapcenter_lat = parseFloat(mapconfig[i].getAttribute("mapcenter_lat"));
					var mapcenter_lng = parseFloat(mapconfig[i].getAttribute("mapcenter_lng"));
					var mapzoom = parseFloat(mapconfig[i].getAttribute("mapzoom"));
					var maptype = parseFloat(mapconfig[i].getAttribute("maptype"));
				}

				map = new GMap2(document.getElementById("map"));
				map.addControl(new GLargeMapControl());
				map.addControl(new GMapTypeControl());
				map.addControl(new GScaleControl());
				map.setCenter(new GLatLng(mapcenter_lat, mapcenter_lng), mapzoom);
				map.setMapType(gmaptype[maptype]);

				if (pinpoint.length != 0) { GEvent.addListener(map, "click", mylocate); }

				map.getPane(G_MAP_FLOAT_PANE).appendChild(tooltip);
				tooltip.style.visibility="hidden";

				var waypoints = xmlDoc.documentElement.getElementsByTagName("waypoint");
				for (var i = 0; i < waypoints.length; i++) {
					var lat = parseFloat(waypoints[i].getElementsByTagName("lat"));
					var lng = parseFloat(waypoints[i].getElementsByTagName("lng"));
					var point = new GLatLng(lat,lng);
					var html = "<span>" + waypoints[i].getElementsByTagName("trigraph") + "</span>";
					var label = waypoints[i].getElementsByTagName("trigraph");
					var icontype = parseInt(waypoints[i].getElementsByTagName("icontype"));
					var marker = createMarker(point,label,html,icontype);
					map.addOverlay(marker);
					/*					
					var lat = parseFloat(waypoints[i].getAttribute("lat"));
					var lng = parseFloat(waypoints[i].getAttribute("lng"));
					var point = new GLatLng(lat,lng);
					var html = "<span>" + waypoints[i].getAttribute("name") + "</span>";
					var label = waypoints[i].getAttribute("name");
					var icontype = parseInt(waypoints[i].getAttribute("icontype"));
					var marker = createMarker(point,label,html,icontype);
					map.addOverlay(marker);
					*/
				}
				document.getElementById("waypoint_sidebar").innerHTML = sidebar_html;
			}
		}
		request.send(null);
	}
	else {
		alert("Sorry, the Google Maps API is not compatible with this browser");
	}
}
window.onload=googleScript;
