var plantillaNuvol="";

var finalHotels=false;
var totalHotelsLoaded=0;
var pos;
var hotels;
var pestanyes=new Array(
        "{NOM_HOTEL}", 
        "{ID_FOTO}", 
        "{URL_FOTO}",
        "{POBLACIO}",
        "{PROVINCIA}",
        "{DESCRIPCIO}",
        "{URL_HOTELINFO}",
        "{URL_HOTELRESERVA}",
        "{LONGITUD}",
        "{LATITUD}",
        "{CATEGORIA}",
        "{}",
        "{FORMAPAGO}"
	);

minprice=999999999;		
maxprice=0;
filtresVisibles=true;
concurrencia1=0;
	
function replaceAll(s,s1,s2) { while (s.indexOf(s1)!=-1) s=s.replace(s1,s2); return s; }
	
function setBoxValue(val, box) {
	val=Math.round(val*1000)/1000;
	
	var preu=parseInt(((maxprice-minprice)*val)+minprice)+1;
	
	document.getElementById("maxPreu").innerHTML=preu;	
	
	filtraHotels();
	}	
	
function filtraHotels() {
	concurrencia1++;
	var jo=concurrencia1;
	
	// Filtro per preu ***
	var vis=0;
	var novis=0;
	var preu=parseInt( document.getElementById("maxPreu").innerHTML );
	for (var i=0;i<hotels.length;i++) {
		if (hotels[i][2]<=preu && validaEstrelles(i)) {
				if (!hotels[i][4]) showdiv("hot"+i);
				hotels[i][4]=true;
				vis++;		
			} else {
				if (hotels[i][4]) hidediv("hot"+i);
				hotels[i][4]=false;
				novis++;
			}
			
		if (jo!=concurrencia1) return;
		}
	
	document.getElementById("visiblesHoteles").innerHTML=vis;
	document.getElementById("totalHoteles").innerHTML=hotels.length;
	}
	
function validaEstrelles(i) {
	
	if (document.getElementById("check9").checked) return true;
	
	if (hotels[i][3]!=null) {
		if (parseInt(hotels[i][3][10])==1 && document.getElementById("check1").checked) return true;
		if (parseInt(hotels[i][3][10])==2 && document.getElementById("check2").checked) return true;
		if (parseInt(hotels[i][3][10])==3 && document.getElementById("check3").checked) return true;
		if (parseInt(hotels[i][3][10])==4 && document.getElementById("check4").checked) return true;
		if (parseInt(hotels[i][3][10])==5 && document.getElementById("check5").checked) return true;
		}
	
	return false;
	}
	
function inicialitzaSlider() {
	var clickdown=false;
	
	addAnEvent( document.getElementById("slider01") , 'mousedown', function(e){
		sliderClick(e);
		var el=sliderFromEvent(e);
		if (!el) return;
		activeSlider=el.num;
		stopEvent(e);
		clickdown=true;
		});
		
	addAnEvent( document.getElementById("slider01") , 'mousemove', function(e){
		if (clickdown) {
			sliderClick(e);
			var el=sliderFromEvent(e);
			if (!el) return;
			activeSlider=el.num;
			stopEvent(e);
			}
		});
		
	addAnEvent( document.getElementById("slider01") , 'mouseup', function(e){
		activeSlider=-1;
		stopEvent(e);
		clickdown=false;
		});

	addAnEvent( document.getElementById("slider01") , 'mouseout', function(e){
		activeSlider=-1;
		stopEvent(e);
		});
		
	document.getElementById("slider01").min=0;
	document.getElementById("slider01").max=1;		
	document.getElementById("slider01").num=1;		
	document.getElementById("slider01").val=1;		
	document.getElementById("slider01").onchange=setBoxValue;
		
	addAnEvent(document, 'mousemove', sliderMouseMove);	
	
	setBoxValue(1,document.getElementById("slider01"));
	}
	
function controladorChecks( c ) {
	
	if (c.id!="check9" && c.checked) document.getElementById("check9").checked=false;
	
	filtraHotels();
	}
	
function mostrar() {
	if (filtresVisibles)
		hidediv("controlCerca");
		else
		showdiv("controlCerca");
		
	filtresVisibles=!filtresVisibles;
	}

function carregaMapa() {
	var totalHotels=0;
	var longitudMitjana=0;
	var latitudMitjana=0;

	for (var i=0;i<hotels.length;i++) {
		if (hotels[i][3]!=null) {
			var longitud=parseFloat(hotels[i][3][8]);
			var latitud=parseFloat(hotels[i][3][9]);

			if (longitud!=0 && latitud!=0) {
				longitudMitjana+=longitud;
				latitudMitjana+=latitud;
				totalHotels++;
				}
			}
		}

	if (totalHotels!=0) {
		longitudMitjana=longitudMitjana/totalHotels;
		latitudMitjana=latitudMitjana/totalHotels;
		}

	if (longitudMitjana==0 && latitudMitjana==0) {
		document.getElementById("contenidorMapaGran").innerHTML="<div style='text-align: center; padding: 100px;'>Mapa no disponible / Map not available</div>"
		return
		}


      	if (GBrowserIsCompatible() && longitudMitjana!=0 && latitudMitjana!=0) {
		var map2 = new GMap2(document.getElementById("contenidorMapaGran"));
		var point2 = new GLatLng(parseFloat(latitudMitjana),parseFloat(longitudMitjana));
		
        	map2.addControl(new GSmallMapControl());
		map2.addControl(new GMapTypeControl());
        	map2.setCenter(point2, 13);

		for (var i=0;i<hotels.length;i++) {
			if (hotels[i][3]!=null) {
				var longitud=parseFloat(hotels[i][3][8]);
				var latitud=parseFloat(hotels[i][3][9]);

				if (longitud!=0) {
					var texte=plantillaNuvol;

					for (var z=0;z<pestanyes.length;z++)
	        	   			texte=replaceAll(texte,pestanyes[z],hotels[i][3][z]);

	           			texte=replaceAll(texte,"{PREU}",hotels[i][2]);
					texte=replaceAll(texte,"{PARAMETRES_CRIDA}",hotels[i][5]);
        
		        		map2.addOverlay( createMarker( new GLatLng(latitud, longitud),texte ) );
					}
				}
			}
      		}
	}

function createMarker(point, texte) {
  	var marker = new GMarker(point);

  	GEvent.addListener(marker, "click", function() { 
		marker.openInfoWindowHtml(texte); 
		}
		);

  	return marker;
	}

function maximizarMapa() {
	var fm=document.getElementById("finestraMapaGran");
	var cm=document.getElementById("contenidorMapaGran");
	
	fm.style.position="absolute";
	fm.style.top=(document.body.scrollTop+10)+"px";
	fm.style.left=(document.body.scrollLeft+10)+"px";
	cm.style.width= (getWindowSize().width-60) +"px";
	cm.style.height=(getWindowSize().height-60)+"px";

	showdiv("finestraMapaGran");

	carregaMapa();
	}

function minimizarMapa() {
	hidediv("finestraMapaGran");
	}


function getWindowSize() {
	var ret= { "width": 0, "height":0 }

	if (parseInt(navigator.appVersion)>3) {
 		if (navigator.appName.indexOf("Microsoft")!=-1) {
 			ret.width = document.body.offsetWidth;
  			ret.height = document.body.offsetHeight;
			return ret;
 			}

		ret.width = window.innerWidth;
		ret.height = window.innerHeight;
		}

	return ret;
	}


function hidediv(id) {
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'none';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'none';
		}
		else { // IE 4
			document.all.id.style.display = 'none';
		}
	}
}

function showdiv(id) {
	//safe function to show an element with a specified id
		  
	if (document.getElementById) { // DOM3 = IE5, NS6
		document.getElementById(id).style.display = 'block';
	}
	else {
		if (document.layers) { // Netscape 4
			document.id.display = 'block';
		}
		else { // IE 4
			document.all.id.style.display = 'block';
		}
	}
}	


function getAbsolutePosition(el) {
	var SL = 0, ST = 0;

	var is_div = /^div$/i.test(el.tagName);

	if (is_div && el.scrollLeft) SL = el.scrollLeft;
	if (is_div && el.scrollTop) ST = el.scrollTop;

	var r = { x: el.offsetLeft - SL, y: el.offsetTop - ST };

	if (el.offsetParent) {
		var tmp = getAbsolutePosition(el.offsetParent);
		r.x += tmp.x;
		r.y += tmp.y;
		}

	return r;
	} 

function eventElement(e) {
	if (e.target) return e.target;
	if (e.srcElement) return e.srcElement;

	return null;
	} 

function getMousePosition(e) {
	var ret={ x: 0, y: 0 };

	if (!e.pageX) { 
		ret.x = event.clientX + document.body.scrollLeft;
		ret.y = event.clientY + document.body.scrollTop;
	} else { 
		ret.x = e.pageX; 
		ret.y = e.pageY;
		}

	return ret;
	} 

/* Tooltip */
var tipobj=null

function initTooltip() {
	tipobj=document.createElement("div");
	tipobj.id="acctooltip";
	tipobj.style.position="absolute";

	document.getElementsByTagName("body")[0].appendChild(tipobj);
	accTooltipHide();
	}

function accTooltip(obj, texte) {
	obj.textTooltip=texte;

	addAnEvent( obj , 'mouseout', function(e) { accTooltipHide(); });
	addAnEvent( obj , 'mousemove', accTooltipPosition );
	
	return false;
	}

function accTooltipPosition(e) {
	if ( tipobj==null ) initTooltip();

	var el=eventElement(e);
	var pos=getMousePosition(e);

	tipobj.innerHTML=el.textTooltip;
	tipobj.style.left=(pos.x+15)+"px";
	tipobj.style.top=(pos.y+15)+"px";

	showdiv( tipobj.id );
	}

function accTooltipHide() { hidediv( tipobj.id ); }

