var $j = jQuery.noConflict();

var gmap;
var markers = [];
var icon;

$j(document).ready(
	function() {
		initMap();
		initLinks();
	}
);

function initLinks() {
	
	$j('ul.region > li > a').each(
		function() {
			$j(this).click(
				function() {
					
					for(var i=0; i<markers.length; i++) {
						markers[i].closeInfoWindow();
					}
					
					var marker = getMarkerById($j(this).attr('id'));
					
					if(marker) {
						gmap.setCenter(marker.getPoint(), 13);
						marker.openInfoWindowHtml($j('#c'+$j(this).attr('id').substr(1)).html());
						$j('#info').hide();
					}
					else {
						gmap.setCenter(new GLatLng(0, 0), 1); 
						$j('#info').html($j('#c'+$j(this).attr('id').substr(1)).html());
						$j('#info').show();
					}
					
					return false;
				}
			);
			/*
			$j(this).hover(
				function() {
					$j('#info').html($j('#c'+$j(this).attr('id').substr(1)).html());
				},
				function() {
					$j('#info').html(' ');
				}
			);
			*/
		}
	);
	
}

function initMap() {
	var map = document.getElementById('map');
	if (GBrowserIsCompatible()) {
	
		icon = new GIcon();
		icon.image = gicon;
		icon.iconSize = new GSize(giconWidth, giconHeight);
		icon.infoWindowAnchor = new GPoint(giconWidth/2, giconHeight/2);
		icon.iconAnchor = new GPoint(giconWidth/2, giconHeight/2);
	
		gmap = new GMap2(map);
		gmap.setCenter(new GLatLng(0, 0), 1); 
		gmap.addControl(new GSmallMapControl());
		gmap.addControl(new GMapTypeControl());
		GDownloadUrl(sxml, function(data) {
			var xml = GXml.parse(data);
			var xmlMarkers = xml.documentElement.getElementsByTagName('marker');
			for (var i = 0; i < xmlMarkers.length; i++) {
				var id = xmlMarkers[i].getAttribute('id');
				var name = xmlMarkers[i].getAttribute('name');
				var content = GXml.value(xmlMarkers[i].getElementsByTagName('content')[0]);
				var point = new GLatLng(
					parseFloat(xmlMarkers[i].getAttribute('lat')),
					parseFloat(xmlMarkers[i].getAttribute('lng'))
				);
				gmap.addOverlay(createMarker(point, name, content, id));
			}
		});
	}
	else {
		map.style.display = 'none';
	}
}

function createMarker(point, name, content, id) {
	var marker = new GMarker(point);
	marker.id = 'm'+id;
	GEvent.addListener(marker, "click", function() {
		marker.openInfoWindowHtml('<h2>' + name + '</h2>' + '<p>' + content + '</p>');
	});
	markers.push(marker);
	return marker;
}

function getMarkerById(id) {
	for(var i=0; i<markers.length; i++) {
		if(markers[i].id == id) {
			return markers[i];
		}
	}
}