function createMarker(map,point,html,icon,link) {

	function Tooltip(marker, text, padding,width,height){
		this.marker_ = marker;
		this.text_ = text;
		this.padding_ = padding;
	}

	Tooltip.prototype = new google.maps.Overlay();
	
	Tooltip.prototype.initialize = function(map){
		var div = document.createElement("div");
		div.innerHTML = this.text_;
		div.className = 'tooltip';
		div.style.position = 'absolute';
		div.style.visibility = 'hidden';
		map.getContainer().appendChild(div);
	
		this.map_ = map;
		this.div_ = div;
		this.map_.size = map.getSize();
	}
	
	Tooltip.prototype.remove = function(){
		this.div_.parentNode.removeChild(this.div_);
	}
	
	Tooltip.prototype.copy = function(){
		return new Tooltip(this.marker_,this.text_,this.padding_);
	}
	
	Tooltip.prototype.redraw = function(force){
		//if (!force) return;
		var mapWidth = this.map_.size.width;
		var mapHeight = this.map_.size.height;
		var markerPos = this.map_.fromLatLngToContainerPixel(this.marker_.getPoint());
		var iconAnchor = this.marker_.getIcon().iconAnchor;
		var boxWidth = this.div_.clientWidth;
		var boxHeight = this.div_.clientHeight;
		var halfBox = boxWidth/2;
			 
		var xPos = 0;
		if(markerPos.x < halfBox)
			xPos = markerPos.x;
		else if(markerPos.x > mapWidth-halfBox)
			xPos = markerPos.x - boxWidth;
		else
			xPos = markerPos.x - halfBox;
	
		var yPos = 0;
		if(markerPos.y > mapHeight-boxHeight)
			yPos = markerPos.y - (boxHeight + iconAnchor.y + this.padding_);
		else
			yPos = markerPos.y + this.padding_;
		
		this.div_.style.top = yPos+'px' ;
		this.div_.style.left = xPos+'px' ;
	}
	
	Tooltip.prototype.show = function(){
		this.div_.style.visibility = 'visible';
	}
	
	Tooltip.prototype.hide = function(){
		this.div_.style.visibility = 'hidden';
	}
		
	var marker = new google.maps.Marker(point,{icon:icon});
	marker.tooltip = new Tooltip(marker,html,5);
	
	google.maps.Event.addListener(marker, "mouseover", function() {this.tooltip.redraw();this.tooltip.show();});
	google.maps.Event.addListener(marker, "mouseout", function() {this.tooltip.hide()});
	google.maps.Event.addListener(marker, "click", function() {location.href=link});
	
	map.addOverlay(marker);	
	map.addOverlay(marker.tooltip);
	
	return marker;	
}

function createMap(){
	if(google.maps.BrowserIsCompatible()){	

		var _gmap = document.getElementById("gmap");
		var map = new google.maps.Map2(_gmap);
		map.setCenter(new google.maps.LatLng(0,0),0);
        map.addControl(new google.maps.HierarchicalMapTypeControl());
		map.addControl(new google.maps.SmallMapControl());
		
		var icon = new google.maps.Icon();
		icon.iconSize=new google.maps.Size(24,24);
		icon.shadowSize=new google.maps.Size(56,32);
		icon.iconAnchor=new google.maps.Point(12,24);
		icon.infoWindowAnchor=new google.maps.Point(22,0);
	
		var bounds = new google.maps.LatLngBounds();
		
		for(i=0;i<pois.length;i++){
			iconHotel = new google.maps.Icon(icon, "http://www.traveleurope.it/img/001_08.png", null, null);
			point = new google.maps.LatLng(pois[i][1],pois[i][2]);
			feed = pois[i][7]>0 ? "<em>"+pois[i][10]+"</em><strong>"+pois[i][7]+"</strong><sub>/10</sub>" : "<em>"+pois[i][10]+"</em><strong>n/a</strong>";
			currency = pois[i][9] ? "- "+pois[i][9]+" -" : "";
			rate = pois[i][8]>0 ? "<em>"+currency+"</em><strong>"+pois[i][8].slice(0,-3)+"</strong>" : "<strong>n/a</strong>";
			html = "<h5><img src='/img/sstars_"+pois[i][5]+".gif'/><strong>"+decodeURIComponent(pois[i][0])+"</strong></h5>"; 
			html += "<p><img class='thumb' alt='' src='"+pois[i][4]+"'/><span class='rate'>"+rate+"</span><span class='feed'>"+feed+"</span>";
			html += "<p class='txt'>"+decodeURIComponent(pois[i][6])+"</p>";	  
			createMarker(map,point,html,iconHotel,pois[i][3]);
			bounds.extend(point); 
		}
	
		map.setZoom(map.getBoundsZoomLevel(bounds));
		var mt = map.getMapTypes();
		for (var i=0; i<mt.length; i++) {
			mt[i].getMinimumResolution = function() {return 8;}
			mt[i].getMaximumResolution = function() {return 16;}
		}
	
		var clat=(bounds.getNorthEast().lat()+bounds.getSouthWest().lat())/2;
		var clng=(bounds.getNorthEast().lng()+bounds.getSouthWest().lng())/2;
		map.setCenter(new google.maps.LatLng(clat,clng));
		
		_gmap.style.position = "relative";
		_gmap.style.left = "0px";
		
		_gmapstatic = document.getElementById("gmapstatic");
		_gmapstatic.style.display="none";
		google.maps.Event.addDomListener(window,'unload',GUnload);
	} else {
		alert("Siamo spiacenti ma il tuo browser non supporta la visualizzazione delle mappe.")
	}	
}
