




var info = new Layer("info", "link_info");
info.setLayerClassNames("show", "hidden");
info.setTexts("Hide", "Show more");

var infoText = new Layer("infoText");
infoText.setLayerClassNames("show", "hidden");

var numPricesRange = 6;

function initFilter(numHotels) {
	eraseAllChecks();
	cleanServices();
	activeDeactiveChecks(numHotels);
}

function submitNarrowSearchForm(urlParam) {
	var url = urlParam;
	var f= document.formNarrowSearch;
	var numServices = f.numServices.value;
	var numRooms = f.numRooms.value;

	var servicesString = "";
	for(i=0;i<numServices;i++) {
		var service = document.getElementById("service_"+i);
		if(service.checked == true) {
			servicesString+= service.value + ",";
		}
	}
	if(servicesString != null) {
		servicesString = servicesString.substring(0, servicesString.length-1);
		url = url + "&services=" + servicesString;
	}

	var roomsString = "";
	for(i=0;i<numRooms;i++) {
		var room = document.getElementById("room_"+i);
		if(room.checked == true) {
			roomsString+= room.value + ",";
		}
	}
	if(roomsString) { url = url + "&rooms=" + roomsString.substring(0, roomsString.length-1); }
	if (f.priceRange != null) url = url + "&priceRange=" + getRadioValue(f.priceRange);
	
	document.location.href=url;
}

function selectService(check) {
	var hotelsFound = new Array();
	var hotelsTotal = new Array();
	var numHotels = 0;
	if (check != null) {
		if (check.checked == true) {
			servicesSelected[check.value] = check.value;
		} else {
			servicesSelected[check.value] = null;
		}
	}

	var priceRangeSelected = getRadioValue(document.formNarrowSearch.priceRange);
	var numServicesSelected = getSize(servicesSelected);

	if (numServicesSelected > 0) {
		// Hacemos la interseccion de los hoteles.
		//PASO 1: Recorremos el array donde se encuentran los servicios
		for(var idService in servicesSelected) {
			if( idService == null || servicesSelected[idService] == null) continue;
			//PASO 2: Obtenemos, a partir del identificador del servicio, el array de hoteles que tienen dicho
			//servicio. Recorremos el array y para cada uno de los elementos obtenemos el resto de arrays de hoteles
			//que contienen el resto de servicios y buscamos si está en ellos.
			var hotelArrayNow = servicesHotels[idService];
			if (hotelArrayNow == null || getSize(hotelArrayNow == 0)) continue;
			for( var idHotelNow in hotelArrayNow) {
				if (idHotelNow == null || hotelArrayNow[idHotelNow] == null) continue;
				if(findIntersection(idService, idHotelNow)) {
					if (priceInRange(priceRangeSelected, hotelArrayNow[idHotelNow])) {
						hotelsFound[idHotelNow] = idHotelNow;
					}
				}
			}
		}
		//En la variable hotelsFound tenemos la interseccion de los hoteles
		numHotels = getSize(hotelsFound);
		activeDeactiveChecks(numHotels);
	} else {
		numHotels = getPriceRange(priceRangeSelected)[3];
		activeDeactiveChecks(numHotels);
	}


	var pSpan = document.getElementById("pNumHot");
	var span = document.getElementById("numHot");
	var button = document.getElementById("bActualizar");
	span.innerHTML = numHotels;
	if (numHotels == 0) {
		pSpan.className="notfound_results";
		button.disabled="disabled";
		button.className="disabled";
	} else {
		pSpan.className="found_results";
		button.disabled = false;
		button.className="button-3";
	}
}

function findIntersection(idService, idHotelNow) {
	for( var indexService in servicesSelected) {
		if(idService != indexService) {
			if(indexService == null || servicesSelected[indexService] == null) continue;
			var hotel = servicesHotels[indexService];
			if( hotel == null || hotel[idHotelNow] == 'undefined' || hotel[idHotelNow] == null) {
				return false;
			}
		}
	}
	return true;
}

function eraseAllChecks() {
	var numServices = getSize(servicesHotels);
	for (var i = 0;i<numServices;i++) {
		var check = document.getElementById("service_" + i);
		if (check != null) { check.checked = false; }
		check = document.getElementById("room_" + i);
		if (check != null) { check.checked = false; }
	}
}

function activeDeactiveChecks(numHotels) {
	var numServices = getSize(servicesHotels);
	for (var i = 0;i<numServices;i++) {
		var check = document.getElementById("service_" + i);
		actionCheck(numHotels, check);
		check = document.getElementById("room_" + i);
		actionCheck(numHotels, check);
	}
	/*
	var radio = document.formNarrowSearch.priceRange;
	for (var index=0;index<numPricesRange;index++) {
		if (numHotels == 0) {
			radio[index].disabled = true;
		} else {
			radio[index].disabled = false;
		}
	}
	*/
}

function cleanServices(formToUse) {
	//PASO 1: Volvemos al caso inicial de servicios
	servicesSelected = new Array();
	initServicesSelected();

	//PASO 2: Deschequeamos los servicios que no estén en el array services Selected
	var f = (formToUse == null)?document.formNarrowSearch:formToUse;
	var numHotels = (f.numHotels != null)?f.numHotels.value:null;
	var numServices = getSize(servicesHotels);
	for (var i=0;i<numServices;i++) {
		var check = document.getElementById("service_"+i);
		if (check != null) {
			check.disabled = false;
			var value = check.value;
			if (servicesSelected[value] != null) {
				check.checked = true;
			} else {
				check.checked = false;
			}
		}
		check = document.getElementById("room_"+i);
		if (check != null) {
			check.disabled = false;
			var value = check.value;
			 if (servicesSelected[value] != null) {
				check.checked = true;
			} else {
				check.checked = false;
			}
		}
	}
	if (numHotels != null) {
		activeDeactiveChecks(numHotels);

		var pSpan = document.getElementById("pNumHot");
		var span = document.getElementById("numHot");
		var button = document.getElementById("bActualizar");
		span.innerHTML = f.numHotels.value;
		if (numHotels == 0) {
			pSpan.className="notfound_results";
			button.disabled = true;
			button.className="disabled";
		} else {
			pSpan.className="found_results";
			button.disabled = false;
			button.className="button-3";
		}
		pSpan.blur();
		button.blur();
	}
}

function actionCheck (numHotels, check) {
	if (check != null) {
		if(numHotels == 0) {
			if(check.checked == false) {
				check.disabled = true;
			} else {
				check.disabled = false;
			}
		} else {
			check.disabled = false;
		}
	}
}

function getSize(myArray) {
	var size = 0;
	for(var i in myArray) {
		if (myArray[i] != null) {
			size = size + 1;
		}
	}
	return size;
}

function priceInRange(priceRangeSelected, idHotel) {
	if (priceRangeSelected == 0) {return true;}

	for (var i = 0; i < (hotelsInPriceRangeMap.length-1); i+=2) {
		if (hotelsInPriceRangeMap[i] == priceRangeSelected) {
			var hotelsInRangeSelected = hotelsInPriceRangeMap[(i+1)];
			for (var j = 0; j < hotelsInRangeSelected.length; j++) { // Hotels in Price Range Selected Array
				if (parseInt(hotelsInRangeSelected[j]) == idHotel) {
					return true;
				}
			}
			break;
		}
	}
	return false;
}

function getPriceRange(priceRangeId) {
	for (var i = 0; i < priceRanges.length; i++) {
		if (priceRangeId == priceRanges[i][0]) {
			return priceRanges[i];
		}
	}
	return null;
}

function getHotelPrice(idHotel) {
	for (var i in hotelPrices) {
		if (idHotel == hotelPrices[i][0]) {return hotelPrices[i];}
	}
}

