
// Recargar el buscador
function actualizaBuscador() {
	
	var iHabitaciones = document.forms[1].habitaciones.value;
	var idRegimen = document.forms[1].regimen.value;
	
	// Borrar los valores de las habitaciones
	document.forms[3].hab_1.value=0;
	document.forms[3].hab_2.value=0;
	document.forms[3].hab_3.value=0;
	
	var sUrl = "?id=" + document.forms[1].id.value + "&idHotel=" + document.forms[1].id.value + "&destino=" + document.forms[1].destino.value + "&hotel=" + document.forms[1].hotel.value 
		+ "&habitaciones=" + document.forms[1].habitaciones.value + "&categoria=" + document.forms[1].categoria.value + "&fecha=" + document.forms[1].fecha.value
		+ "&fentrada=" + document.forms[1].fentrada.value + "&fsalida=" + document.forms[1].fsalida.value
		+ "&adultos_1=" + document.forms[1].adultos_1.value + "&adultos_2=" + document.forms[1].adultos_2.value + "&adultos_3=" + document.forms[1].adultos_3.value
		+ "&ninos_1=" + document.forms[1].ninos_1.value + "&ninos_2=" + document.forms[1].ninos_2.value + "&ninos_3=" + document.forms[1].ninos_3.value
		+ "&regimen=" + document.forms[1].regimen.value;

	// Borrar los valores en el resto de formularios
	var aElems = document.getElementsByName("habitaciones");
	for(var i=0;i<aElems.length;i++) aElems[i].value = iHabitaciones;
	var aElems = document.getElementsByName("regimen");
	for(var i=0;i<aElems.length;i++) aElems[i].value = idRegimen;
	
	// Cargar el buscador
	ajaxCal("/inc/aplicacionesPerso/reservas/buscadorTipo.asp",sUrl,"tiposBusqueda","",false);
//	ajaxCal("/inc/aplicaciones/reservas/buscadorTipo.asp","?habitaciones=" + iHabitaciones + "&Regimen=" + idRegimen,"tiposBusqueda");

	buscar(document.forms[2],true);
}

// Realizar la búsqueda de disponibilidad
// Argumentos:
// - Formulario para cargar los datos (cupo, fechas, adultos, niños, ...) OBLIGATORIO
// - True para no borrar las habitaciones actualmente seleccionadas
function buscar() {
	
	var oForm = arguments[0];
	var bNoBorrar = arguments[1] ? arguments[1] : false;
	
	var idHotel = document.forms[3].id.value;

	// Si cargamos los valores defecto
	if (oForm.regimen.value == ""){
		var idRegimen = document.forms[1].regimen.options[document.forms[1].regimen.selectedIndex].value;
	}else{
		var idRegimen = oForm.regimen.value;
	}
	
	var iCupo = oForm.habitaciones.value;
	var fecha = oForm.fecha.value;
	var fechaInicio = oForm.fentrada.value;
	var fechaFin = oForm.fsalida.value;
	var iAdultos1 = oForm.adultos_1.value;
	var iAdultos2 = oForm.adultos_2.value;
	var iAdultos3 = oForm.adultos_3.value;
	var iNinos1 = oForm.ninos_1.value;
	var iNinos2 = oForm.ninos_2.value;
	var iNinos3 = oForm.ninos_3.value;
	
	//Limpiar habitaciones seleccionadas
	if(!bNoBorrar) {
		var aElems = document.getElementsByTagName("input")
		for(var i=0;i<aElems.length;i++) {
			if(aElems[i].type=="radio" && aElems[i].id.substring(0,3) == "hab" ) aElems[i].checked=false;
		}
	}
	
	//Carga los valores en el resto de formularios
	var aElems = document.getElementsByName("adultos_1");
	for(var i=0;i<aElems.length;i++) aElems[i].value = iAdultos1
	var aElems = document.getElementsByName("adultos_2");
	for(var i=0;i<aElems.length;i++) aElems[i].value = iAdultos2;
	var aElems = document.getElementsByName("adultos_3");
	for(var i=0;i<aElems.length;i++) aElems[i].value = iAdultos3;
	var aElems = document.getElementsByName("regimen");
	for(var i=0;i<aElems.length;i++) aElems[i].value = idRegimen;
	var aElems = document.getElementsByName("ninos_1");
	for(var i=0;i<aElems.length;i++) aElems[i].value = iNinos1
	var aElems = document.getElementsByName("ninos_2");
	for(var i=0;i<aElems.length;i++) aElems[i].value = iNinos2;
	var aElems = document.getElementsByName("ninos_3");
	for(var i=0;i<aElems.length;i++) aElems[i].value = iNinos3;

	// Cargar el calendario
	setFecha(idHotel, idRegimen, iCupo, fecha, fechaInicio, fechaFin,0);

	return false;
}

// Limpiar y recargar el calendario 
function limpiar(dFecha) {
	var idHotel = document.forms[1].id.value;
	var iHabitaciones = document.forms[1].habitaciones.value;
	var idRegimen = document.forms[1].regimen.value;
	
	setFecha(idHotel, idRegimen, iHabitaciones, dFecha, "", "",0);
}

// Variable para saber si estamos mostrando el calendario desglosado
var bDesglosando = false;

// Marcar los días seleccionados
function setFecha(idHotel, idRegimen, iCupo, fecha, fechaInicio, fechaFin, iTipoHabADesglosar) {
	
	var aHab = new Array("","","","");
	
	if(iTipoHabADesglosar > 0) bDesglosando = true;
	else bDesglosando = false;
	
	var sUrl = "?id=" + idHotel + "&idHotel=" + idHotel + "&destino=" + document.forms[1].destino.value + "&hotel=" + document.forms[1].hotel.value 
		+ "&habitaciones=" + iCupo + "&categoria=" + document.forms[1].categoria.value + "&fecha=" + fecha
		+ "&fentrada=" + fechaInicio + "&fsalida=" + fechaFin
		+ "&idRegimen=" + idRegimen + "&cupo=" + iCupo + "&fechaInicio=" + fechaInicio + "&fechaFin=" + fechaFin + "&TipoHabADesglosar=" + iTipoHabADesglosar;

	if (iCupo >= 1) sUrl += "&adultos_1=" + document.forms[1].adultos_1.value + "&ninos_1=" + document.forms[1].ninos_1.value;
	
	if (iCupo >= 2) sUrl += "&adultos_2=" + document.forms[1].adultos_2.value + "&ninos_2=" + document.forms[1].ninos_2.value;
	
	if (iCupo >= 3) sUrl += "&adultos_3=" + document.forms[1].adultos_3.value + "&ninos_3=" + document.forms[1].ninos_3.value;

	// Capturar los valores de las habitaciones
	for(var i=1;i<=iCupo;i++) {
		if(eval("document.forms[2].hab_" + i)) {
			
			if(eval("document.forms[2].hab_" + i + ".value") && eval("document.forms[2].hab_" + i + ".checked")) {
				aHab[i] =  eval("document.forms[2].hab_" + i + ".value");
			}
			else {
				for(var j=0;j<eval("document.forms[2].hab_" + i + ".length");j++) {
					if( eval("document.forms[2].hab_" + i + "[" + j + "].checked") ) aHab[i] =  eval("document.forms[2].hab_" + i + "[" + j + "].value");
				}
			}
		}
	}
	
	sUrl += "&hab_1=" + aHab[1] + "&hab_2=" + aHab[2] + "&hab_3=" + aHab[3];
	
//	prompt("aa",sUrl);

	// Registrar los días en el resto de formularios
	var aElems = document.getElementsByName("fentrada");
	for(var i=0;i<aElems.length;i++) aElems[i].value = fechaInicio;
	var aElems = document.getElementsByName("fsalida");
	for(var i=0;i<aElems.length;i++) aElems[i].value = fechaFin;

	// Cargar el calendario
	ajaxCal("/inc/aplicacionesPerso/reservas/calendario.asp",sUrl,"calendario","a_alertaCalendario",false);
//	ajaxCal("/inc/aplicaciones/reservas/calendario.asp","?idHotel=" + idHotel + "&idRegimen=" + idRegimen + "&cupo=" + iCupo + "&fecha=" + fecha + "&fechaInicio=" + fechaInicio + "&fechaFin=" + fechaFin,"calendario","a_alertaCalendario");
	
}

// Capturar los datos de las habitaciones
function capturarDatosHabitaciones() {

	var aHab = new Array("","","","","");
	
		// Capturar los valores de las habitaciones
	for(var i=1;i<=3;i++) {
		if(eval("document.forms[2].hab_" + i)) {
			
			if(eval("document.forms[2].hab_" + i + ".value")) {
				aHab[i] =  eval("document.forms[2].hab_" + i + ".value");
			}
			else {
				for(var j=0;j<eval("document.forms[2].hab_" + i + ".length");j++) {
//					alert(eval("document.forms[2].hab_" + i + "[" + j + "].value"));
					if( eval("document.forms[2].hab_" + i + "[" + j + "].checked") == true ) {
						aHab[i] =  eval("document.forms[2].hab_" + i + "[" + j + "].value");
					}
				}
			}
		}
	}
	
	// Registrar los valores de las habitaciones
//	document.forms[1].hab_1.value = aHab[1];
	document.forms[3].hab_1.value = aHab[1];
//	document.forms[1].hab_2.value = aHab[2];
	document.forms[3].hab_2.value = aHab[2];
//	document.forms[1].hab_3.value = aHab[3];
	document.forms[3].hab_3.value = aHab[3];

//	alert("Hab 1:" + aHab[1]);

	return aHab;
	
}

// Cargar los tipos de habitación
function cargarTiposHab() {
	
//	var aHab = new Array("","","","");
	
	var sUrl = "?idHotel=" + document.forms[1].id.value + "&destino=" + document.forms[1].destino.value + "&hotel=" + document.forms[1].hotel.value 
		+ "&habitaciones=" + document.forms[1].habitaciones.value + "&categoria=" + document.forms[1].categoria.value + "&fecha=" + document.forms[1].fecha.value
		+ "&fentrada=" + document.forms[1].fentrada.value + "&fsalida=" + document.forms[1].fsalida.value
		+ "&adultos_1=" + document.forms[1].adultos_1.value + "&adultos_2=" + document.forms[1].adultos_2.value + "&adultos_3=" + document.forms[1].adultos_3.value
		+ "&ninos_1=" + document.forms[1].ninos_1.value + "&ninos_2=" + document.forms[1].ninos_2.value + "&ninos_3=" + document.forms[1].ninos_3.value
		+ "&regimen=" + document.forms[1].regimen.value;

	var aHab = capturarDatosHabitaciones();
	
	sUrl += "&hab_1=" + aHab[1] + "&hab_2=" + aHab[2] + "&hab_3=" + aHab[3];
	
	ajaxCal("/inc/aplicacionesPerso/reservas/habitaciones.asp",sUrl,"a_habitaciones","",false);
	
}

function calcular() {
	cargarTiposHab();
	
	buscar(document.forms[2],true);
	
	return false;
}

//---------------------------------------------------------------------
// Carga una página web mediante AJAX.
// Parámetros:
// - Url a cargar
// - Parámetros para la url
// - Capa para cargar el resultado (NO OBLIGATORIO)
// - Capa para cargar los errores (NO OBLIGATORIO)
// - Petición asincrona (true/false) (NO OBLIGATORIO, ASINCRONO POR DEFECTO) 
//		ATENCIÓN -- EN EL FIREFOX FUNCIONA DE FORMA ASINCRONA --
// - Objeto representando al formulario a validar (NO OBLIGATORIO)
//---------------------------------------------------------------------
function ajaxCal(){
	
	var sFichero	= arguments[0];
	var sParametros	= arguments[1];
	var sDiv		= arguments[2];
	var sDivError	= arguments[3];
	var bAsincrono	= arguments[4] ? arguments[4] : true;
	var oForm		= arguments[5];
	
	var peticion = false;
	if (window.XMLHttpRequest){
		peticion = new XMLHttpRequest();
	}else if (window.ActiveXObject) {
		peticion = new ActiveXObject("Microsoft.XMLHTTP");
	}

	//prompt('',fichero+parametros);

	if(peticion) {
		if(!oForm){
	  		peticion.open("GET", sFichero+sParametros, bAsincrono);
	  	}else{
	  		peticion.open("POST", sFichero);
	  		peticion.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		}
		if (sDivError!="") {devolverResultadoCal(peticion, sDiv, sDivError, oForm);}
	  	else if (sDiv!=""){devolverResultadoCal(peticion, sDiv, oForm);}
		if(!oForm){
			peticion.send(null);
		}else{
			peticion.send(sParametros); 
		}
	}
}

//---------------------------------------------------------------------
// Devuelve el resultado de la petición AJAX.
// Parámetros:
// - Objeto httpRequest
// - Nombre de la capa para escribir los resultados
// - Nombre de la capa para escribir los errores
// - Objeto representado al formulario a validar (NO OBLIGATORIO)
//		Submita el formulario si no hay errores de validación
//---------------------------------------------------------------------
function devolverResultadoCal(){
	
	var peticion	= arguments[0];
	var sDiv		= arguments[1];
	var sDivError	= arguments[2];
	var oFormulario	= arguments[3];
	

	var sDivLoader = "<div id='cuerpodestacado'><div style='text-align:center; padding-top: 40px; height: 80px;'><img src='/img/comunes/ajax-loader_" + sPortal + ".gif' /></div></div>";
	
	var obj = document.getElementById(sDiv);

	if(sDivError!="" && document.getElementById(sDivError)) var objError = document.getElementById(sDivError);
	
	if(obj){
		peticion.onreadystatechange = function(){
//			if (peticion.readyState == 1 && sDiv=="a_habitaciones"){
//					obj.innerHTML = sDivLoader;
//			}
			if (peticion.readyState == 4){
				
				// Submitar el formulario
				if (!peticion.responseText && oFormulario) oFormulario.submit();
				else {
					// Seleccionar en que capa se mostrará resultado / error
					if ( peticion.responseText.substr(0,sDiv.length) == sDiv ) {
						
						if(sDiv == "calendario" && bDesglosando) alerta(peticion.responseText.substr(sDiv.length,peticion.responseText.length-sDiv.length),"366");
						else {
							obj.innerHTML = peticion.responseText.substr(sDiv.length,peticion.responseText.length-sDiv.length);
							if(objError && objError.innerHTML != "") objError.innerHTML = "";
						}

						// Controlar acciones
						if(sDiv == "calendario" || sDivError == "a_alertaCalendario") {

							// Recargar capa con el listado de habitaciones (si no estamos desglosando)
							if(!bDesglosando) cargarTiposHab();
							
						}else if(sDiv == "tiposBusqueda") {
							// Realizar la búsqueda
							buscar(document.forms[2],true);
						}else if(sDiv == "a_habitaciones") {
							//Recargar los valores de las habitaciones
							capturarDatosHabitaciones();
//							buscar(document.forms[2]);
						}
					}
					else {
						objError.innerHTML = peticion.responseText;
						
						// Controlar acciones
						if(sDivError == "a_alertaCalendario") {
							// Recargar capa con el listado de habitaciones
							cargarTiposHab();
						}
					}
						
					if(oFormulario!="") {
						// Ocultar la capa de los errores de ASP
						if(document.getElementById("errorvalidacion") && obj.innerHTML=="") document.getElementById("errorvalidacion").style.display = "none";
		
						// Mostrar alertas 
						obj.style.display='block';
						if(oFormulario) location.hash = "a_alerta";
					}
				}
			}
		}
	}
}
