if (GBrowserIsCompatible()) {
	var icon = new GIcon();
	icon.image = "http://www.dominilino.com/img/marker2.png";
	icon.iconSize = new GSize(11,13);
	icon.iconAnchor = new GPoint(11, 13);
	icon.infoWindowAnchor = new GPoint(0, 0);
	var markersArray = [];
	var map = new GMap2(document.getElementById("map"));
	map.addControl(new GSmallMapControl());
	map.disableDragging();
	map.enableScrollWheelZoom();
	map.setCenter(new GLatLng(42.064692,11.608642),5);
	GEvent.addListener(map, "zoomend", function(oldzoom,newzoom){
		if(map.getZoom()<5){
			oldzoom=5;
			map.setZoom(5);
		}else if(map.getZoom()==5){
			map.disableDragging();
			map.setCenter(new GLatLng(42.064692,11.608642),5);
		}else{
			map.enableDragging();
		}
		if(map.getZoom()!=oldzoom && oldzoom<9 || map.getZoom()==8){
			clearOverlays(map,markersArray);
			getMarkers(map);
		}
	});

	var sw = new GLatLng(31.709839,-5.408026);
	var ne = new GLatLng(50.600051,29.381269);
	GEvent.addListener(map, "move", function() {
        	checkBounds();
	});

	var bounds=new GLatLngBounds(sw,ne);
	var overlay = EInsert.groundOverlay("http://www.dominilino.com/img/italia_mappa.png",bounds,1,9);
	map.addOverlay(overlay);

	getMarkers(map);
// 	GEvent.addListener(map, "click",function(){$("#message").hide()});
    }
	function getMarkers(map){
		var file='mappa';
		if(lingua=='EN')file='mappa_en';
		if(lingua=='DE')file='mappa_de';
		if(lingua=='FR')file='mappa_fr';
		var linked_lista='Vai alla lista';
		if(lingua=='EN')linked_lista='Go to list';
		if(lingua=='DE')linked_lista='Gehen auf die Liste';
		if(lingua=='FR')linked_lista='Aller &agrave; la liste';
		var linked_scheda='Scheda';
		if(lingua=='EN')linked_scheda='Detail';
		if(lingua=='DE')linked_scheda='Detail';
		if(lingua=='FR')linked_scheda='D&eacute;tail';
		GDownloadUrl("http://www.dominilino.com/inc/"+file+".php?zoom="+map.getZoom(), function(data) {
			var xml = GXml.parse(data.toString());
			var markers = xml.documentElement.getElementsByTagName("marker");

			for (var i = 0; i < markers.length; i++) {
				var punto = new GLatLng(parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
				var titolo = markers[i].getAttribute("name");
				var tipo = markers[i].getAttribute("type");
				var indirizzo = markers[i].getAttribute("address");
				var linked = markers[i].getAttribute("linked");
				if(markers[i].getAttribute("foto")!=''){
					var foto = "<img class='foto' src='http://www.dominilino.com/admin/uploaded/thumb_"+markers[i].getAttribute("foto")+"'/>";
					var tooltip = '<div id="tooltip_map"><div class="fl" style="width: 132px; overflow: hidden; margin-bottom:5px;">'+foto+'</div><div class="fl" style="width: 120px;"><strong>'+titolo+'</strong><br><a  href="'+linked+'" class>'+linked_scheda+'</a></div><div class="cb"></div>';
				}else{
					var tooltip = '<div id="tooltip_map"><div style="width: 100px;margin-left: 5px">'+titolo+'<br><a href="'+linked+'" class>'+linked_lista+'</a></div>';
				}
				var marker = createMarker(map,punto,tooltip,icon);
				markersArray.push(marker);
				map.addOverlay(marker);
			}
		});
	}

	$("#message").appendTo(map.getPane(G_MAP_FLOAT_SHADOW_PANE));

	function createMarker(map,posn,tip,icon) {
		var marker = new GMarker(posn,icon);
		marker.tooltip = tip;
		GEvent.addListener(marker, "click",function(){displayMarker(map,marker)});
		return marker;
	}

	function displayMarker(map,marker){
		$("#message").hide();
		$("#message").html(marker.tooltip);
		if(map.getZoom()>5 && map.getZoom()<9){
			var markerLatLon=marker.getLatLng();
			map.panTo(new GLatLng(markerLatLon.lat(),markerLatLon.lng()));
		}else if(map.getZoom()==9){
			var markerLatLon=marker.getLatLng();
			map.panTo(new GLatLng(markerLatLon.lat()-0.15,markerLatLon.lng()+0.25));
		}else if(map.getZoom()==10){
			var markerLatLon=marker.getLatLng();
			map.panTo(new GLatLng(markerLatLon.lat()-0.05,markerLatLon.lng()+0.10));
		}else if(map.getZoom()==11){
			var markerLatLon=marker.getLatLng();
			map.panTo(new GLatLng(markerLatLon.lat()-0.05,markerLatLon.lng()));
		}
		var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
		$("#message").show().css({ top:markerOffset.y, left:markerOffset.x });
		var moveEnd = GEvent.addListener(map, "move", function(){
			var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
			$("#message").css({ top:markerOffset.y, left:markerOffset.x });
		});
// 		GEvent.removeListener(moveEnd);
		var zoomEnd = GEvent.addListener(map, "zoomend", function(oldzoom,newzoom){
			if(oldzoom<newzoom && (oldzoom!='6' && newzoom!='7') && (oldzoom!='7' && newzoom!='8') && (oldzoom!='8' && newzoom!='9')){
				var markerOffset = map.fromLatLngToDivPixel(marker.getLatLng());
				$("#message").css({ top:markerOffset.y, left:markerOffset.x });
			}else{
				$("#message").hide();
			}
		});
// 		GEvent.removeListener(zoomEnd);
	}

	function clearOverlays(map,markersArray) {
		if (markersArray) {
			for (i in markersArray) {
				map.removeOverlay(markersArray[i]);
			}
		}
	}

      var allowedBounds = new GLatLngBounds(new GLatLng(35.509839,-1.408026),new GLatLng(48.000051,25.501269));

      function checkBounds() {
		if (allowedBounds.contains(map.getCenter())) {
			return;
		}
		var C = map.getCenter();
		var X = C.lng();
		var Y = C.lat();

		var AmaxX = allowedBounds.getNorthEast().lng();
		var AmaxY = allowedBounds.getNorthEast().lat();
		var AminX = allowedBounds.getSouthWest().lng();
		var AminY = allowedBounds.getSouthWest().lat();

		if (X < AminX) {X = AminX;}
		if (X > AmaxX) {X = AmaxX;}
		if (Y < AminY) {Y = AminY;}
		if (Y > AmaxY) {Y = AmaxY;}

		map.setCenter(new GLatLng(Y,X));
      	}
