$(document).ready(function(){
	if (GBrowserIsCompatible()) {
		var map;
		var gmarkers = [];
		
		GDownloadUrl("http://www.localissimo.ch/_content/_ajax/get_location.php?map_id="+$.url.param("map_id"), function(data) {
			var xml = GXml.parse(data);
			var location = xml.documentElement.getElementsByTagName("location")[0];
			var mapsize = new GSize(location.getAttribute("map_width"),location.getAttribute("map_height"));
			var point = new GLatLng(parseFloat(location.getAttribute("lat")), parseFloat(location.getAttribute("lng")));
			var mapzoom = parseInt(location.getAttribute("zoom"));
			map = new GMap2( $("#map_canvas").get(0),{ size: mapsize });
			map.setCenter(point, mapzoom);
			map.addControl(new GLargeMapControl());
			map.addControl(new GMapTypeControl());
			map.enableDoubleClickZoom();
				
			GDownloadUrl("http://www.localissimo.ch/_content/_ajax/get_marker.php?map_id="+$.url.param("map_id"), function(data) {
				var xml = GXml.parse(data);
				var markers = xml.documentElement.getElementsByTagName("marker");
				for (var i = 0; i < markers.length; i++) {
					var id = GXml.value(markers[i].getElementsByTagName("id")[0]);
					var name = GXml.value(markers[i].getElementsByTagName("name")[0]);
					var imagepath = GXml.value(markers[i].getElementsByTagName("imagepath")[0]);
					var title = GXml.value(markers[i].getElementsByTagName("title")[0]);
					var text = GXml.value(markers[i].getElementsByTagName("text")[0]);
					var weblink = GXml.value(markers[i].getElementsByTagName("weblink")[0]);
					var cattitle = GXml.value(markers[i].getElementsByTagName("cattitle")[0]);
					var point = new GLatLng(parseFloat(GXml.value(markers[i].getElementsByTagName("lat")[0])),parseFloat(GXml.value(markers[i].getElementsByTagName("lng")[0])));
					var html = title+text;
					var marker = createMarker(point, name, imagepath, html, cattitle, id);
					gmarkers.push(marker);
					map.addOverlay(marker);					
				}
				
				$(gmarkers).each(function(i,gmarkers){
					$("<li />").html(gmarkers.cattitle+' | '+gmarkers.getIcon().name).click(function(){	displayPoint(gmarkers, i);}).appendTo("#list");
					
					GEvent.addListener(gmarkers, "click", function(){
						displayPoint(gmarkers, i);
					});
				});
						
				function displayPoint(marker, index){
					var moveEnd = GEvent.addListener(map, "moveend", function(){
						var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
						GEvent.removeListener(moveEnd);
					});
					map.panTo(marker.getLatLng());
				}						
			});											
		});				
	
	
		function createMarker(point, name, imagepath, html, cattitle, id) {
			var baseIcon = new GIcon();
			baseIcon.category = cattitle;
			baseIcon.name = name;
			baseIcon.id = id;
			//baseIcon.shadow = "http://www.localissimo.ch/_content/_img/shadow.png";
			baseIcon.image = imagepath;
			baseIcon.iconSize = new GSize(24, 32);
			baseIcon.iconAnchor = new GPoint(0, 32);
			baseIcon.infoWindowAnchor = new GPoint(9, 2);      

			var marker = new GMarker(point, { icon:baseIcon  });
			
			marker.cattitle = cattitle;
			
			GEvent.addListener(marker, "click", function() {
				marker.openInfoWindowHtml(html);
			});
			return marker;
		}
	}
});   
