/**
 * JavaScript for partners map using Google Map API
 *
 * Copyright (c) 2006 TOLRA Micro Systems Limited. All rights reserved.
 *
 * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR IMPLIED
 * WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
 */
 
var baseIcon, map;

function onLoad() {
	baseIcon = new GIcon();
	baseIcon.shadow = 'shadow0.png';
	baseIcon.image = 'marker0.png';
	baseIcon.iconSize = new GSize(15, 26);
	baseIcon.shadowSize = new GSize(28, 26);
	baseIcon.iconAnchor = new GPoint(9, 26);
	baseIcon.infoWindowAnchor = new GPoint(9, 4);
	baseIcon.infoShadowAnchor = new GPoint(18, 25);

	// Create map
	map = new GMap2(document.getElementById("map"));
	map.addControl(new GLargeMapControl());
	map.addControl(new GMapTypeControl());
	map.addControl(new GOverviewMapControl(), new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,10)));

	map.setCenter(new GLatLng(0, 0), 1);
	updateMap();
}

function createMarker(point, html) {
	var icon = new GIcon(baseIcon);
	icon.image = "map/marker.png";
	icon.shadow = "map/shadow.png";
	var marker = new GMarker(point, icon);
	GEvent.addListener(marker, 'click', function() {
		marker.openInfoWindowHtml('<p style="white-space: nowrap;">' + html + "</p>");
	});
	return marker;
}

function updateMap() {

	var request = GXmlHttp.create();
	request.open('GET', 'map/map.xml', true);
	request.onreadystatechange = function() {
		if (request.readyState == 4) {

			// Clear the map and start again
			map.clearOverlays();

			var lat = 0, lng = 0, tlat, tlng;
			var xmlDoc = request.responseXML;
			var markers = xmlDoc.documentElement.getElementsByTagName("marker");
			var ullinks = '';
			for (var i = 0; i < markers.length; i++) {
				var point = new GPoint(parseFloat(markers[i].getAttribute("lng")),
									   parseFloat(markers[i].getAttribute("lat")));
				var html = markers[i].getAttribute("city") + "<br />" + markers[i].getAttribute("country") + "<br />" + markers[i].getAttribute("email");

				map.addOverlay(createMarker(point, html));
				
				if (i != markers.length-1) {
					ullinks = ullinks + "<li><a href='#stay' onclick='javascript:map.setCenter(new GLatLng(" + markers[i].getAttribute("lat") + "," + markers[i].getAttribute("lng") + "), 5);'>" + markers[i].getAttribute("country") + "</a></li>,&nbsp ";
				} else {
					ullinks = ullinks + "<li><a href='#stay' onclick='javascript:map.setCenter(new GLatLng(" + markers[i].getAttribute("lat") + "," + markers[i].getAttribute("lng") + "), 5);'>" + markers[i].getAttribute("country") + "</a></li>.";
				}
			}

			document.getElementById('mapjump').innerHTML = ullinks;
		}
	}
	request.send(null);
}