
//Variable para controlar cuándo se quiere que se muestre la pantalla de "Cargando" y cuando no. De inicio no se muestra
var cargaPagina = 0;

//Variables para almacenar los datos de respuesta de la función "rellenarDdlCalendarioMesEntrada_callback" y 
//"rellenarDdlCalendarioMesSalida_callback"
//var datosCalendarioEntrada, datosCalendarioSalida;
var datosCalendario;

//Variable para almacenar la provincia seleccionada en el buscador de hoteles, y así cuando se pase a la página de resultado de búsqueda,
//poder dejar seleecionado la provincia que se seleccionó
var provSeleccionar = "";
//Variable para almacenar el tipo de habitación seleccionado en el buscador de hoteles, y así cuando se pase a la página de resultado de búsqueda,
//poder dejar seleecionado el tipo de habitación que se seleccionó
var tipoHab = "";
//Variable para almacenar el número de habitaciones seleccionado en el buscador de hoteles, y así cuando se pase a la página de resultado de búsqueda,
//poder dejar seleecionado el número de habitaciones que se seleccionó
var numHab = "";

//Variable para almacenar el html de la ficha del hotel, que se va a mandar por mail
var htmlCorreo = "";

var idRetardo = "";

//Para almacenar el tipo de ordenación a aplicar y el campo por el que se va a ordenar
var tipoOrdenacion = "";
var campoOrdenar = "";

//Variable para guardar el literal de por lo que se está ordenando
var lblOrdenadoPor = "";

//Variable a la que se asignará la venta que se abre al cargar
var ventanaCargando = "";

//variable que carga un hotel inexistente cuando busca o no hay resultados
var detalleFicticio = "<div><img src='/MPTurSpainWeb/images/CRS/ResultadoBusquedaDetalleBN.gif' /></div>";
var detalleFicticioVacio ="";


/*LLAMADA ASÍNCRONA*/
function realizarBusqueda()
{
	deschequearFiltros();
	colocarSlide();
	
	//Se nivela la capa que muestra la información de la ficha de detalle de hotel
	var alCapaFiltros = parseInt(document.getElementById("columnaBuscador").offsetHeight);
	var alCapaFichaHotel = parseInt(document.getElementById("columnaFichaHotel").offsetHeight);
	var diferenciaAlturas = alCapaFiltros-alCapaFichaHotel;
	document.getElementById("columnaFichaHotel").style.height = (alCapaFichaHotel+diferenciaAlturas)+"px";

	//Se muestran unas imágenes que simulan una búsqueda realizada mientras que se está buscando
	var resultadosFicticios = "<div><img src='/MPTurSpainWeb/images/CRS/ResultadoBusquedaBN.gif' /></div>";
	document.getElementById("tablaResultados").innerHTML=resultadosFicticios;
	document.getElementById("detalleHotel").innerHTML=detalleFicticio;

	//alert(document.getElementById("ddlProvincia").value);
	//alert(document.getElementById("ddlTipoHabitacion").value);
	//alert(document.getElementById("ddlNumHabitaciones").value);
	//alert(document.getElementById("txtNombreHotel").value);

	var provincia;
	var valorProvincia;
	var fechaEntrada;
	var fechaSalida;
	var tipoHabitacion;
	var numHab;
	var nombreHotel;

	//alert(document.getElementById("ddlMesEntrada").options[document.getElementById("ddlMesEntrada").selectedIndex].text);

	provincia = document.getElementById("ddlProvincia").options[document.getElementById("ddlProvincia").selectedIndex].text;
	document.getElementById("txtHiddenProvincia").value = provincia;
	valorProvincia = document.getElementById("ddlProvincia").value;

	//fechaEntrada = document.getElementById("ddlDiaEntrada").value + "/" + document.getElementById("ddlMesEntrada").value + "/" + "2007";
	//fechaSalida = document.getElementById("ddlDiaSalida").value + "/" + document.getElementById("ddlMesSalida").value + "/" + "2007";

	//Se corta el text de los combos que muestran el mes, para quedarnos sólo con el año	
	var anoEntrada = document.getElementById("ddlMesEntrada").options[document.getElementById("ddlMesEntrada").selectedIndex].text.split(" ");
	var anoSalida = document.getElementById("ddlMesSalida").options[document.getElementById("ddlMesSalida").selectedIndex].text.split(" ");

	var cultura = document.getElementById('cultura').value;
	
	switch (cultura)
	{
		case "es": case "fr": case "de":
			// dd/mm/aaaa
			fechaEntrada = document.getElementById("ddlDiaEntrada").value + "/" + document.getElementById("ddlMesEntrada").value + "/" + anoEntrada[1];
			fechaSalida = document.getElementById("ddlDiaSalida").value + "/" + document.getElementById("ddlMesSalida").value + "/" + anoSalida[1];
			break;
		case "en": 
			// m/d/aaaa
			fechaEntrada = document.getElementById("ddlMesEntrada").value + "/" + document.getElementById("ddlDiaEntrada").value + "/" + anoEntrada[0];
			fechaSalida = document.getElementById("ddlMesSalida").value + "/" + document.getElementById("ddlDiaSalida").value + "/" + anoSalida[0];
			break;
		case "ko": case "sv":
			// aaa/m/d
			fechaEntrada = document.getElementById("ddlMesEntrada").value + "/" + document.getElementById("ddlDiaEntrada").value + "/" + anoEntrada[1];
			fechaSalida = document.getElementById("ddlMesSalida").value + "/" + document.getElementById("ddlDiaSalida").value + "/" + anoSalida[1];
			break;
		default:
			// dd/mm/aaaa
			fechaEntrada = document.getElementById("ddlDiaEntrada").value + "/" + document.getElementById("ddlMesEntrada").value + "/" + anoEntrada[1];
			fechaSalida = document.getElementById("ddlDiaSalida").value + "/" + document.getElementById("ddlMesSalida").value + "/" + anoSalida[1];
			break;
			
		
	}

	//alert(cultura + " - " + fechaEntrada + " - " + fechaSalida);

	document.getElementById("txtHiddenFechaEntrada").value = fechaEntrada;
	document.getElementById("txtHiddenFechaSalida").value = fechaSalida;

	tipoHabitacion = document.getElementById("ddlTipoHabitacion").value;
	document.getElementById("txtHiddenTipoHabitacion").value = tipoHabitacion;

	numHab = document.getElementById("ddlNumHabitaciones").value;
	document.getElementById("txtHiddenNumHabitaciones").value = numHab;

	nombreHotel = document.getElementById("txtNombreHotel").value;

	var central = document.getElementById("central").value;

	//alert(provincia + " - " + valorProvincia + " - " + fechaEntrada + " - " + fechaSalida  + " - " + tipoHabitacion + " - " + numHab + " - " + nombreHotel);

	//document.getElementById("tablaResultados").innerHTML="";
	//document.getElementById("detalleHotel").innerHTML="";

	MPTurSpainWeb.CRSAjaxUtils.RealizarBusqueda(provincia, valorProvincia, fechaEntrada, fechaSalida, tipoHabitacion, numHab, nombreHotel, central, cultura, realizarBusqueda_callback);
}

function realizarBusqueda_callback(respuesta)
{
	//alert(respuesta.value);
	
	if(respuesta.error == null && respuesta.value != "")
	{
		//Sí devuelve datos
		document.getElementById("tablaResultados").innerHTML=respuesta.value;

		//Se comprueba que existe "algo" de lo que se genera en la transformación entre el XML y el XSL. En este caso, se ha comprobado que existe
		//una de las cajas de texto que esta transformación genera. Si no aparece, es que no ha habido resultados en la búsqueda
		if (respuesta.value.indexOf("celdaNombreHotel")>=0)
		{
			rellenarComboCadenasHoteleras();
			establecerRangosPrecioHotel();
			mostrarFichaHotel('');

			//Se da valor a la variable que almacena por lo que estamos ordenando, para que al buscar y filtrar no se pierda.
			lblOrdenadoPor = document.getElementById("spanOrdenadoPor").innerHTML;

			//Se nivelan las capas que forman el diseño de las tres columnas
			escalarColumnasDiseno();
		}
	}
	else
		//No devuelve nada.
		//document.getElementById("tablaResultados").innerHTML="En estos momentos no hay resultados. Por favor, intente pasados unos segundos.";

	//Una vez finalizada la búsqueda y presentados los datos, se oculta la capa de "cargando"
	//ocultarMostrar("contenedorCargando");
	document.getElementById("contenedorCargando").style.display  = "none";

	//Se elimina el identificador del retardo creado
	//clearTimeout(idRetardo);
}
/*FIN LLAMADA ASÍNCRONA*/


/*OK-->Llamada síncrona*/
/*
function realizarBusqueda()
{
	deschequearFiltros();
	colocarSlide();

	//alert(document.getElementById("ddlProvincia").value);
	//alert(document.getElementById("ddlTipoHabitacion").value);
	//alert(document.getElementById("ddlNumHabitaciones").value);
	//alert(document.getElementById("txtNombreHotel").value);

	var provincia;
	var valorProvincia;
	var fechaEntrada;
	var fechaSalida;
	var tipoHabitacion;
	var numHab;
	var nombreHotel;

	//alert(document.getElementById("ddlMesEntrada").options[document.getElementById("ddlMesEntrada").selectedIndex].text);

	provincia = document.getElementById("ddlProvincia").options[document.getElementById("ddlProvincia").selectedIndex].text;
	document.getElementById("txtHiddenProvincia").value = provincia;
	valorProvincia = document.getElementById("ddlProvincia").value;

	//fechaEntrada = document.getElementById("ddlDiaEntrada").value + "/" + document.getElementById("ddlMesEntrada").value + "/" + "2007";
	//fechaSalida = document.getElementById("ddlDiaSalida").value + "/" + document.getElementById("ddlMesSalida").value + "/" + "2007";

	//Se corta el text de los combos que muestran el mes, para quedarnos sólo con el año	
	var anoEntrada = document.getElementById("ddlMesEntrada").options[document.getElementById("ddlMesEntrada").selectedIndex].text.split(" ");
	var anoSalida = document.getElementById("ddlMesSalida").options[document.getElementById("ddlMesSalida").selectedIndex].text.split(" ");

	var cultura = document.getElementById('cultura').value;

	switch (cultura)
	{
		case "es": case "fr": case "de":
			// dd/mm/aaaa
			fechaEntrada = document.getElementById("ddlDiaEntrada").value + "/" + document.getElementById("ddlMesEntrada").value + "/" + anoEntrada[1];
			fechaSalida = document.getElementById("ddlDiaSalida").value + "/" + document.getElementById("ddlMesSalida").value + "/" + anoSalida[1];
			break;
		case "en":
			// m/d/aaaa
			fechaEntrada = document.getElementById("ddlMesEntrada").value + "/" + document.getElementById("ddlDiaEntrada").value + "/" + anoEntrada[0];
			fechaSalida = document.getElementById("ddlMesSalida").value + "/" + document.getElementById("ddlDiaSalida").value + "/" + anoSalida[0];
			break;
	}

	//alert(cultura + " - " + fechaEntrada + " - " + fechaSalida);

	document.getElementById("txtHiddenFechaEntrada").value = fechaEntrada;
	document.getElementById("txtHiddenFechaSalida").value = fechaSalida;

	tipoHabitacion = document.getElementById("ddlTipoHabitacion").value;
	document.getElementById("txtHiddenTipoHabitacion").value = tipoHabitacion;

	numHab = document.getElementById("ddlNumHabitaciones").value;
	document.getElementById("txtHiddenNumHabitaciones").value = numHab;

	nombreHotel = document.getElementById("txtNombreHotel").value;

	var central = document.getElementById("central").value;

	//alert(provincia + " - " + valorProvincia + " - " + fechaEntrada + " - " + fechaSalida  + " - " + tipoHabitacion + " - " + numHab + " - " + nombreHotel);

	document.getElementById("tablaResultados").innerHTML="";
	document.getElementById("detalleHotel").innerHTML="";

	var respuesta = MPTurSpainWeb.CRSAjaxUtils.RealizarBusqueda(provincia, valorProvincia, fechaEntrada, fechaSalida, tipoHabitacion, numHab, nombreHotel, central, cultura);

	//alert(respuesta.value);

	if(respuesta.error == null && respuesta.value != "")
	{
		//Sí devuelve datos
		document.getElementById("tablaResultados").innerHTML=respuesta.value;

		//Se comprueba que existe "algo" de lo que se genera en la transformación entre el XML y el XSL. En este caso, se ha comprobado que existe
		//una de las cajas de texto que esta transformación genera. Si no aparece, es que no ha habido resultados en la búsqueda
		if (respuesta.value.indexOf("celdaNombreHotel")>=0)
		{
			rellenarComboCadenasHoteleras();
			establecerRangosPrecioHotel();
			mostrarFichaHotel('');
			
			//Se da valor a la variable que almacena por lo que estamos ordenando, para que al buscar y filtrar no se pierda.
			lblOrdenadoPor = document.getElementById("spanOrdenadoPor").innerHTML;

			//Se nivelan las capas que forman el diseño de las tres columnas
			escalarColumnasDiseno();
		}
	}
	else
		//No devuelve nada.
		document.getElementById("tablaResultados").innerHTML="En estos momentos no hay resultados. Por favor, intente pasados unos segundos.";

	//Una vez finalizada la búsqueda y presentados los datos, se oculta la capa de "cargando"
	//ocultarMostrar("contenedorCargando");
	document.getElementById("contenedorCargando").style.display  = "none";

	//Se elimina el identificador del retardo creado
	//setTimeout("clearInterval("+idRetardo+")",0);
	clearTimeout(idRetardo);
	ventanaCargando.close();
}
*/
/*FIN OK-->Llamada síncrona*/

/*Llamada Asíncrona*/
function filtrarOrdenar()
{
	//alert(tipoOrden+" - "+ordenacion);

	//document.getElementById("tablaResultados").innerHTML="";

	var cultura = document.getElementById('cultura').value;

	//alert(tipoOrden + " - " + ordenacion);

	var filtroPrecio = filtroRangoPrecio();
	var filtroHotel = filtroCategoriaHotel();
	var filtroCadHotelera = filtroCadenaHotelera();
	var filtroSer = filtroServicios();

	//alert(filtroPrecio);
	//alert(filtroHotel);
	//alert(filtroCadHotelera);
	//alert(filtroSer);

	//Se comprueba sólo la variable global campoOrdenar, porque si ésta contiene datos, también los tiene tipoOrdenacion
	//alert(tipoOrdenacion+" - "+campoOrdenar);
	if (campoOrdenar)
		MPTurSpainWeb.CRSAjaxUtils.FiltrarOrdenarBusqueda(filtroPrecio, filtroHotel, filtroCadHotelera, filtroSer, campoOrdenar, tipoOrdenacion, cultura,filtrarOrdenar_callback);
	else
		MPTurSpainWeb.CRSAjaxUtils.FiltrarOrdenarBusqueda(filtroPrecio, filtroHotel, filtroCadHotelera, filtroSer, "", "", cultura,filtrarOrdenar_callback);
}

function filtrarOrdenar_callback(respuesta)
{
	//Se comprueba si la llamada nos devuelve datos. Si SÍ devuelve, se pintan. Si no devuelve, se vuelve a realizar la búsqueda
	if(respuesta.error == null && respuesta.value != "")
	{
		//SÍ devuelve datos
		//Se realiza el innerHTML de la respuesta a la capa de resultados
		document.getElementById("tablaResultados").innerHTML=respuesta.value;

		//Se escribe el número de hoteles que hay tras realizar el filtro. Para ello se recorren las cajas de texto que se han generado y que
		//almacenan el guid de cada hotel (una por cada hotel del resultado de la búsqueda).
		var i, txtGuid, numHoteles;
		numHoteles=0;
		for(i=0; (txtGuid = document.getElementsByTagName("input")[i]); i++)
		{
			if( (txtGuid.type == "hidden") && (txtGuid.id.indexOf("guid")>=0) )
			{
				//Número de hoteles
				numHoteles = numHoteles+1;
				//alert(numHoteles + " - " + txtGuid.id);
			}
		}
		//Se realiza el innerHTML del número de hoteles que hay tras realizar el filtro
		document.getElementById("spanNumHoteles").innerHTML = numHoteles;

		//Se muestra la ficha del primer hotel. Para saber cuál es el id del primero, se ha guardado su posición (en el xsl), en un hidden
		if (numHoteles>0)
		{
			//alert(document.getElementById("txtPrimerHotel").value);
			mostrarFichaHotel(document.getElementById("txtPrimerHotel").value);
			
			//if(numHoteles==1)
				
		}
		else
		{
			document.getElementById("detalleHotel").innerHTML=detalleFicticioVacio;
		}

		//Una vez finalizado el filtrado y presentados los datos, se oculta la capa de "cargando"
		//ocultarMostrar("contenedorCargando");
		document.getElementById("contenedorCargando").style.display  = "none";

		//Se elimina el identificador del retardo creado
		//setTimeout("clearInterval("+idRetardo+")",0);
		//clearTimeout(idRetardo);
		//ventanaCargando.close();

		//Se pone por lo que se está ordenando
		document.getElementById("spanOrdenadoPor").innerHTML = lblOrdenadoPor+":";
	}
	else
	{
		//NO devuelve datos.
		//realizarBusqueda();
		//alert("caducando");
		//setTimeout("clearInterval("+idRetardo+")",0);
		//clearTimeout(idRetardo);
		//ventanaCargando.close();
		cargando('buscar');
	}
}
/*FIN Llamada Asíncrona*/



/*OK-->Llamada síncrona*/
/*
function filtrarOrdenar()
{
	//alert(tipoOrden+" - "+ordenacion);

	//document.getElementById("tablaResultados").innerHTML="";

	var cultura = document.getElementById('cultura').value;

	//alert(tipoOrden + " - " + ordenacion);

	var filtroPrecio = filtroRangoPrecio();
	var filtroHotel = filtroCategoriaHotel();
	var filtroCadHotelera = filtroCadenaHotelera();
	var filtroSer = filtroServicios();

	//alert(filtroPrecio);
	//alert(filtroHotel);
	//alert(filtroCadHotelera);
	//alert(filtroSer);

	var respuesta;
	//Se comprueba sólo la variable global campoOrdenar, porque si ésta contiene datos, también los tiene tipoOrdenacion
	//if (ordenacion)
	//alert(tipoOrdenacion+" - "+campoOrdenar);
	if (campoOrdenar)
		//respuesta = MPTurSpainWeb.CRSAjaxUtils.FiltrarOrdenarBusqueda(filtroPrecio, filtroHotel, filtroCadHotelera, filtroSer, ordenacion, tipoOrden, cultura);
		respuesta = MPTurSpainWeb.CRSAjaxUtils.FiltrarOrdenarBusqueda(filtroPrecio, filtroHotel, filtroCadHotelera, filtroSer, campoOrdenar, tipoOrdenacion, cultura);
	else
		respuesta = MPTurSpainWeb.CRSAjaxUtils.FiltrarOrdenarBusqueda(filtroPrecio, filtroHotel, filtroCadHotelera, filtroSer, "", "", cultura);

	//Se comprueba si la llamada nos devuelve datos. Si SÍ devuelve, se pintan. Si no devuelve, se vuelve a realizar la búsqueda
	if(respuesta.error == null && respuesta.value != "")
	{
		//SÍ devuelve datos
		//Se realiza el innerHTML de la respuesta a la capa de resultados
		document.getElementById("tablaResultados").innerHTML=respuesta.value;

		//Se escribe el número de hoteles que hay tras realizar el filtro. Para ello se recorren las cajas de texto que se han generado y que
		//almacenan el guid de cada hotel (una por cada hotel del resultado de la búsqueda).
		var i, txtGuid, numHoteles;
		numHoteles=0;
		for(i=0; (txtGuid = document.getElementsByTagName("input")[i]); i++)
		{
			if( (txtGuid.type == "hidden") && (txtGuid.id.indexOf("guid")>=0) )
			{
				//Número de hoteles
				numHoteles = numHoteles+1;
				//alert(numHoteles + " - " + txtGuid.id);
			}
		}
		//Se realiza el innerHTML del número de hoteles que hay tras realizar el filtro
		document.getElementById("spanNumHoteles").innerHTML = numHoteles;

		//Se muestra la ficha del primer hotel. Para saber cuál es el id del primero, se ha guardado su posición (en el xsl), en un hidden
		if (numHoteles>0)
			//alert(document.getElementById("txtPrimerHotel").value);
			mostrarFichaHotel(document.getElementById("txtPrimerHotel").value);

		//Una vez finalizado el filtrado y presentados los datos, se oculta la capa de "cargando"
		//ocultarMostrar("contenedorCargando");
		document.getElementById("contenedorCargando").style.display  = "none";

		//Se elimina el identificador del retardo creado
		//setTimeout("clearInterval("+idRetardo+")",0);
		//clearTimeout(idRetardo);
		//ventanaCargando.close();

		//Se pone por lo que se está ordenando
		document.getElementById("spanOrdenadoPor").innerHTML = lblOrdenadoPor+":";
	}
	else
	{
		//NO devuelve datos.
		//realizarBusqueda();
		//alert("caducando");
		//setTimeout("clearInterval("+idRetardo+")",0);
		//clearTimeout(idRetardo);
		//ventanaCargando.close();
		cargando('buscar');
	}
}
*/
/*FIN OK-->Llamada síncrona*/


function filtroCadenaHotelera()
{
	return document.getElementById("ddlCadenaHotelera").value;
}

function filtroCategoriaHotel()
{
	resultadoFiltro = new Array ();

	//input type="checkbox"
	var i, a, j;
	j=0;
	for(i=0; (a = document.getElementsByTagName("input")[i]); i++)
	{
		//Se comprueba que sean checkbox, que estén seleccionados y que SÍ sean los check de la categoría
		if( (a.getAttribute("type") == "checkbox") && (a.checked==true) && (a.id.indexOf("estre")>=0) )
		{
			//alert("De la categoria " + a.id);
			resultadoFiltro[j] = a.id;
			//resultadoFiltro[0, j] = a.id;
			//alert(resultadoFiltro);
			//alert(resultadoFiltro.length);
			j++;
		}
	}
	//alert(resultadoFiltro);
	return resultadoFiltro;
}

function filtroServicios()
{
	resultadoFiltro = new Array ();

	//input type="checkbox"
	var i, a, j;
	j=0;
	for(i=0; (a = document.getElementsByTagName("input")[i]); i++)
	{
		//Se comprueba que sean checkbox, que estén seleccionados y que NO sean los check de la categoría
		if( (a.getAttribute("type") == "checkbox") && (a.checked==true) && (a.id.indexOf("estre")<0) )
		{
			//alert("De los servicios " + a.id);
			resultadoFiltro[j] = a.id;
			//resultadoFiltro[j] = a.id;
			 //resultadoFiltro[0, j] = a.id;
			//alert(resultadoFiltro);
			//alert(resultadoFiltro.length);
			j++;
		}
	}

	//alert(resultadoFiltro);
	return resultadoFiltro;
}

//Función para rellenar el combo del filtro de las cadenas hoteleras
function rellenarComboCadenasHoteleras()
{
	selectCadenasHoteleras = document.getElementById("ddlCadenaHotelera");

	//Antes de eliminar las opciones del combo, se almacena la opción que está puesta por defecto y que es la de "todas"
	var opcionTodasText = selectCadenasHoteleras.options[0].text
	var opcionTodasValue = selectCadenasHoteleras[0].value;

	//alert(opcionTodasText + " - " + opcionTodasValue);

	//Se eliminan las opciones del combo, ya que si no al añadir, éstas se añaden a las que ya había antes
	eliminarOpcionesCombo(selectCadenasHoteleras);

	cadenasHoteleras = new Array ();
	cadEchoToken = new Array ();

	//Variable para determinar si ya está añadida la cadena hotelera o no
	var cadenaHotelYaAgregada = 0;

	var i, txtInput, k;

	//Se recorren todas las cajas de texto de la página
	for(i=0; (txtInput = document.getElementsByTagName("input")[i]); i++)
	{
		//Se comprueba que sean de tipo text y que los input sean de las cadenas de hoteles
		//if( (txtInput.getAttribute("type") == "text") && (txtInput.id.indexOf("inputCadHotel")>=0) )
		if( (txtInput.type == "hidden") && (txtInput.id.indexOf("inputCadHotel")>=0) )
		{
			//La primera de todas se añade
			if (cadenasHoteleras.length==0)
			{
				cadenasHoteleras[0] = txtInput.value;

				var indice = txtInput.id.replace("inputCadHotel","");
				cadEchoToken[0] = document.getElementById("inputEchoToken"+indice).value;
			}
			else
			{
				//Se pone a 0 la variable que se emplea para saber si se ha añadido la cadena o no.
				cadenaHotelYaAgregada = 0;
				//Se recorre el array donde se almacenan las cadenas hoteleras para comprobar si ya está añadia la cadena. Si no lo está, se añade
				for(k=0; k<cadenasHoteleras.length; k++)
				{
					//SÍ está la cadena hotelera ya añadida.
					if (cadenasHoteleras[k] == txtInput.value)
					{
						cadenaHotelYaAgregada = 1;
						//Si está añadida, se para el recorrido del bucle.
						break;
					}
				}

				//Si no está, es decir, no lo he puesto a 1 en el if anterior, se añade la cadena hotelera
				if (cadenaHotelYaAgregada == 0)
				{
					//var indice = txtInput.id.substring(txtInput.id.length,txtInput.id.length-1);
					var indice = txtInput.id.replace("inputCadHotel","");
					var longitudArray = cadenasHoteleras.length;
					//alert(cadenasHoteleras.length+" - "+indice+" - "+txtInput.id+" - "+txtInput.value+" - "+document.getElementById("inputEchoToken"+indice).value);

					cadenasHoteleras[longitudArray] = txtInput.value;
					cadEchoToken[longitudArray] = document.getElementById("inputEchoToken"+indice).value;

					//alert(longitudArray+" - "+cadenasHoteleras[longitudArray]+" - "+cadEchoToken[longitudArray]);
					//alert(document.getElementById("inputEchoToken"+indice).value);
				}
			}
		}
	}

	//Se añade la opción que está puesta por defecto en la página
	var opcion = document.createElement("OPTION");
	opcion.text = opcionTodasText;
	opcion.value = opcionTodasValue;
	selectCadenasHoteleras.options.add(opcion);

	//Se generan el resto de opciones del combo con el contenido del array que se ha rellenado
	for(i=0; i<cadenasHoteleras.length; i++)
	{
		//alert(cadenasHoteleras[i] +" - "+cadEchoToken[i]);
		var opcion = document.createElement("OPTION");
		//opcion.text = cadenasHoteleras[i];
		//opcion.value = cadenasHoteleras[i];
		opcion.text = cadenasHoteleras[i];
		opcion.value = cadEchoToken[i];
		selectCadenasHoteleras.options.add(opcion);
	}
	
}

function filtroRangoPrecio()
{
	resultadoFiltro = new Array ();

	//Se recogen los valores de la cajas de texto que almacenan el precio más bajo y el más alto para filtrar por precio
	resultadoFiltro[0] = document.getElementById('value_display_1').value;
	resultadoFiltro[1] = document.getElementById('value_display_5').value;

	//alert(resultadoFiltro);
	return resultadoFiltro;
}

//Función para delimitar el filtro de precio
function establecerRangosPrecioHotel()
{
	resultadoFiltro = new Array ();

	var i, txtInput, j;
	j=0;
	for(i=0; (txtInput = document.getElementsByTagName("input")[i]); i++)
	{
		//Se comprueba que sean cajas de texto y que sean las de los precios
		if( (txtInput.type == "text") && (txtInput.id.indexOf("txtPrecio")>=0) )
		{
			//alert(txtInput.value);
			resultadoFiltro[j] = parseInt(txtInput.value);
			j++
		}
	}

	if ( resultadoFiltro[0] > resultadoFiltro[1] )
	{
		document.getElementById('value_display_1').value = resultadoFiltro[1];
		document.getElementById('value_display_5').value = resultadoFiltro[0];
	}
	else
	{
		document.getElementById('value_display_1').value = resultadoFiltro[0];
		document.getElementById('value_display_5').value = resultadoFiltro[1];
	}
}

//Función para recoger los datos de la ficha de cada hotel
//function mostrarFichaHotel(numFila, cultura)
function mostrarFichaHotel(numFila)
{
	//alert(numFila);
	//Para poder realizar la búsqueda se necesita el guid del hotel,
	//y éste está almacenado en unos campos hidden cuyo id es "guid" más un numFila
	var guid, celda, cultura;

	cultura = document.getElementById("cultura").value;

	//Se comprueba si se ha recibido algún guid. Si no es así, es que se acaba de entrar y por defecto se muestra el primero
	if (numFila)
	{
		//alert("If");
		guid = document.getElementById("guid"+numFila).value;
		//alert("If - "+guid);
		celda = document.getElementById("celdaNombreHotel"+numFila);
		//alert("If - "+celda);
	}
	else
	{
		guid = document.getElementById("guid1").value;
		//alert("Else - "+guid);
		celda = document.getElementById("celdaNombreHotel1");
		//alert("Else - "+celda);
	}
	//alert(guid+" - "+celda);

	if (cultura)
		var contenidoHotel=MPTurSpainWeb.CRSAjaxUtils.GetHotelDetail(guid, cultura);
	else
		var contenidoHotel=MPTurSpainWeb.CRSAjaxUtils.GetHotelDetail(guid);

	//alert(contenidoHotel.value);

	//Si se han devuelto resultados, éstos se muestran y se llama al método que realiza el tracking
	if(contenidoHotel.error == null && contenidoHotel.value != "")
	{
		document.getElementById("detalleHotel").innerHTML=contenidoHotel.value;
		
		establecerColorCeldas(celda);

		//if (celda)
			//celda.style.backgroundColor="#8482b4";
			//celda.style.top='40px';

		//Se guarda el resultado del contenido del hotel en la variable que se va a emplear para mandar el correo
		htmlCorreo = contenidoHotel.value;

		var enlaceReservar = document.getElementById("enlaceReservar");
		var enlaceReservarUrl = "";

		//Una vez pintada la transformación entre el XML y el XSL, se añade el evento onclick al botón de reservar. Se utiliza la misma lógica que se
		//acaba de emplear

		if (numFila)
		{
			enlaceReservarUrl = document.getElementById("urlReserva"+numFila).value;
			//Se le agrega al enlace el href
			//enlaceReservar.href = enlaceReservarUrl;

			//Se le agrega el evento onClick
			enlaceReservar.onclick = function () {recogerParametrosBusqueda(numFila, "FICHA-RESERVA", enlaceReservarUrl);}

			//Se llama al método que recoge todos los parámetros. Se le pasa la fila del hotel y el lugar de monitorizacion

			recogerParametrosBusqueda(numFila, "FICHA", enlaceReservarUrl);
		}
		else
		{
			enlaceReservarUrl = document.getElementById("urlReserva1").value;
			enlaceReservar.onclick = function () {recogerParametrosBusqueda(1, "FICHA-RESERVA", enlaceReservarUrl);}
			//document.getElementById("enlaceReservar").href = document.getElementById("urlReserva1").value;
		}
	}
	else
		//NO devuelve datos.
		realizarBusqueda();
}

function recogerParametrosBusqueda(numFilaHotel, lugarMonitorizacion, urlReserva)
{
	//alert(numFilaHotel + " - " + lugarMonitorizacion);
	var guidHotel, nombreHotel, hotelCode, categoriaHotel, provincia, localidad, precio, precioMed, cadHotel, fechaEntrada, fechaSalida, tipoHab, numHab, nombreHotel;

	//if (!numFilaHotel)
		//numFilaHotel = 1;

	guidHotel=document.getElementById("guid"+numFilaHotel).value;
	nombreHotel=document.getElementById("nombreHotel"+numFilaHotel).value;
	hotelCode = document.getElementById("hotelCode"+numFilaHotel).value;
	categoriaHotel=document.getElementById("categoriaHotel"+numFilaHotel).value;

	provincia=document.getElementById("txtHiddenProvincia").value;

	localidad=document.getElementById("localidad"+numFilaHotel).value;
	precio=document.getElementById("precio"+numFilaHotel).value;
	precioMed=document.getElementById("precioMed"+numFilaHotel).value;

	//cadHotel=document.getElementById("inputCadHotel"+numFilaHotel).value;
	cadHotel=document.getElementById("inputEchoToken"+numFilaHotel).value;

	fechaEntrada = document.getElementById("txtHiddenFechaEntrada").value;
	fechaSalida = document.getElementById("txtHiddenFechaSalida").value;
	tipoHab = document.getElementById("txtHiddenTipoHabitacion").value;
	numHab = document.getElementById("txtHiddenNumHabitaciones").value;

	//alert(guidHotel + " - " + nombreHotel + " - " + hotelCode + " - " + categoriaHotel + " - " + provincia + " - " + localidad + " - " + precio + " - " + precioMed + " - " + cadHotel + " - " + fechaEntrada + " - " + fechaSalida + " - " + tipoHab + " - " + numHab + " - " + lugarMonitorizacion);

	var realizarTracking = MPTurSpainWeb.CRSAjaxUtils.HacerTracking(guidHotel, nombreHotel, hotelCode, categoriaHotel, provincia, localidad, precio, precioMed, cadHotel, fechaEntrada, fechaSalida, tipoHab, numHab, lugarMonitorizacion);

	//Se rellenan las cajas de texto del formulario realizado para hacer la reserva y se hace el submit a la página de salida
	if ( (lugarMonitorizacion=="GRID") || (lugarMonitorizacion=="FICHA-RESERVA") )
	{
		document.getElementById("idHotelReserva").value = guidHotel;
		document.getElementById("nombreHotelReserva").value = nombreHotel;
		document.getElementById("hotelCodeReserva").value = hotelCode;
		document.getElementById("categoriaHotelReserva").value = categoriaHotel;
		document.getElementById("provinciaReserva").value = provincia;
		document.getElementById("localidadReserva").value = localidad;
		document.getElementById("precioReserva").value = precio;
		document.getElementById("precioMedReserva").value = precioMed;
		document.getElementById("cadHotelReserva").value = cadHotel;
		document.getElementById("fechaEntradaReserva").value = fechaEntrada;
		document.getElementById("fechaSalidaReserva").value = fechaSalida;
		document.getElementById("tipoHabReserva").value = tipoHab;
		document.getElementById("numHabReserva").value = numHab;
		document.getElementById("lugarMonitorizacionReserva").value = "RESERVA";
		document.getElementById("urlReserva").value = urlReserva;

		var cultura = document.getElementById('cultura').value;

		document.getElementById("frmParamsReservar").target = "_blank";
		document.getElementById("frmParamsReservar").action="/MPTurSpainWeb/Templates/CRS/RealizarReserva.aspx?language="+cultura;
		document.getElementById("frmParamsReservar").submit();
	}
}

/*OK, para llamadas síncronas*/
/*
function cargando(operacion)
{
	//alert(operacion);

	var ancho = 800;
	var alto = 550;	
	var distanciaIzq = (screen.availWidth - ancho) / 2;
    var distanciaArriba = (screen.availHeight - alto) / 2;

	ventanaCargando = window.open("/prueba.htm","cargando","toolbar=no,scrollbars=no,resizable=no,status=no,directories=no,location=no,width="+ancho+",height="+alto+",left="+distanciaIzq+",top="+distanciaArriba+"");

	document.getElementById("contenedorCargando").style.display  = "";

	if (operacion=='filtrar')
		idRetardo = setTimeout("filtrarOrdenar()",1000);
		
	else
		idRetardo = setTimeout("realizarBusqueda()",1000);

	//realizarBusqueda();
}
*/

/*OK, para llamadas asíncronas*/
function cargando(operacion)
{
	//alert(operacion);
	//document.getElementById("contenedorCargando").style.display  = "";

	if (operacion=='filtrar')
		filtrarOrdenar();
	else
		realizarBusqueda();

	//realizarBusqueda();
}

function rellenarDdlProvincias(prov)
{
	var respuesta = MPTurSpainWeb.CRSAjaxUtils.RellenarDdlProvincias();

	provincias = new Array (respuesta.value.Tables[0].Rows.length);
	selectProvincias = document.getElementById("ddlProvincia");

	//Se eliminan las opciones del combo, ya que si no al añadir, éstas se añaden a las que ya había antes
	eliminarOpcionesCombo(selectProvincias);

	for(var i=0; i<provincias.length; i++)
	{
		var opcion = document.createElement("OPTION");
		opcion.text = respuesta.value.Tables[0].Rows[i].Nombre;
		opcion.value = respuesta.value.Tables[0].Rows[i].CodProvinciaSegitur;
		selectProvincias.options.add(opcion);
		if ( (prov != "") && (prov == opcion.value) )
			opcion.selected = true;
	}
}

function rellenarDdlTipoHabitacion(hab,lang)
{
	var respuesta = MPTurSpainWeb.CRSAjaxUtils.RellenarDdlTipoHabitacion(lang);
	if(respuesta.error == null && respuesta.value != "")
	{
		//alert(respuesta.value);
		tipos = new Array (respuesta.value.Tables[0].Rows.length);
		selectTipoHabitacion = document.getElementById("ddlTipoHabitacion");

		//Se eliminan las opciones del combo, ya que si no al añadir, éstas se añaden a las que ya había antes
		eliminarOpcionesCombo(selectTipoHabitacion);

		for(var i=0; i<tipos.length; i++)
		{
			var opcion = document.createElement("OPTION");
			opcion.text = respuesta.value.Tables[0].Rows[i].Tipo;
			opcion.value = respuesta.value.Tables[0].Rows[i].Valor;
			selectTipoHabitacion.options.add(opcion);
			if ( (hab != "") && (hab == opcion.value) )
				opcion.selected = true;
		}
	}
	
}

function tratarDatosMeses(dia, mes, comboMesRellenar, comboDiasRellenar, cultura)
{
	//alert(dia + " - " + mes + " - " + comboMesRellenar + " - " + comboDiasRellenar + " - " + cultura);

	var respuesta = MPTurSpainWeb.CRSAjaxUtils.RellenarDdlMes(cultura);
	if(respuesta.error == null && respuesta.value != "")
	{
		datosCalendario = respuesta;

		calendario = new Array (respuesta.value.Tables[0].Rows.length);
		selectCalendario = document.getElementById(comboMesRellenar);
		selectCalendarioDias = document.getElementById(comboDiasRellenar);
		
		var siguienteMes=0;

		for(var i=0; i<calendario.length; i++)
		{
			//Se rellena el combo de los meses
			var opcion = document.createElement("OPTION");
			//alert(respuesta.value.Tables[0].Rows[i].Opcion + " - " + respuesta.value.Tables[0].Rows[i].Valor);
			opcion.text = respuesta.value.Tables[0].Rows[i].Opcion;
			opcion.value = respuesta.value.Tables[0].Rows[i].Valor;

			//Se añaden las opciones del combo de los meses
			selectCalendario.options.add(opcion);

			//En la vuelta del for anterior, se vio que ya se había llegado al último día de mes, así que había que dejar seleccionado el mes
			//de mañana, que es el mes de la siguiente vuelta del for, es decir, esta vuelta.
			if (siguienteMes=='1')
			{
				opcion.selected = true;
				siguienteMes = 0;
			}

			//Según se va rellenando el combo de los meses, se comprueba si el campo "Seleccionado" está true. Este campo es el que dice
			//el mes que hay que dejar seleccioando en el combo, que es el mes actual
			if (respuesta.value.Tables[0].Rows[i].Seleccionado == true)
			{
				//alert(respuesta.value.Tables[0].Rows[i].Opcion + " - " + respuesta.value.Tables[0].Rows[i].Valor + " - " + respuesta.value.Tables[0].Rows[i].Seleccionado);
				//Se selecciona la opción del combo
				//opcion.selected = true;

				//Variables para almacenar el número de días del mes actual y el número de día que es hoy
				var numDias=0, diaActual=0;
				numDias = respuesta.value.Tables[1].Rows[i].NDias;
				diaActual = respuesta.value.Tables[1].Rows[i].DiaActual;

				//Se comprueba si es el calendario de salida, ya que en éste se pone un el día siguiente al de hoy; mañana. Si hoy es el último
				//día de mes, al poner el día de mañana, también hay que poner el siguiente mes al actual.
				if (comboDiasRellenar.toLowerCase().indexOf("salida")>-1)
				{
					if (numDias == diaActual)
						siguienteMes = 1;
				}
				else
					//Se está en el mes actual, se deja seleccionado el mes actual
					opcion.selected = true;

				//alert(numDias);
				//alert(diaActual);

				//Se añaden al combo de los días, tantas opciones como días tiene el mes
				for (var j=0;j<numDias;j++)
				{
					var opcionDias = document.createElement("OPTION");
					opcionDias.text = j+1;
					opcionDias.value = j+1;
					selectCalendarioDias.options.add(opcionDias);
					//Se comprueba cuando j es igual al díaActual-1 y se deja esa opción seleccionada. Es diaActual-1, porque j empieza en 0
					if ( (j == diaActual-1) && (comboDiasRellenar.toLowerCase().indexOf("entrada")>-1) )
						opcionDias.selected = true;

					//Se pone el día actual + 1 en el combo de los dias de salida, por ello no se compara con diaActual-1, si no con diaActual
					//if ( (j == diaActual) && (comboDiasRellenar.toLowerCase().indexOf("salida")>-1) )
					if (comboDiasRellenar.toLowerCase().indexOf("salida")>-1)
					{
						if (j == diaActual)
							opcionDias.selected = true;
					}

					//Se añaden las opciones del combo de los días
				}
			}

			//Para dejar seleccionado en la pantalla de resultado de búsqueda, la fecha elegida en el buscador
			for (j=0;j<selectCalendario.length;j++)
			{
				if ( (mes != "") && (mes == selectCalendario[j].value) )
				{
					selectCalendario[j].selected = true;
				}
			}

			for (j=0;j<selectCalendarioDias.length;j++)
			{
				if ( (dia != "") && (dia == selectCalendarioDias[j].value) )
					selectCalendarioDias[j].selected = true;
			}
		}
	}
	//alert(diaSelect + " - " + mesSelect);
	//Una vez rellenados los combos, por facilidad, se selecciona en éstos el día y entrada seleccionada
	//alert("Entrada - " + selectCalendario.id);
	//alert(selectCalendario.id + " - " + selectCalendarioDias.id);
}

//Función que añade al combo de los días, los días que tiene un mes. Si se recibe un día específico (para el apartado del calendario),
//se deja seleccionado éste, además del mes en cuestión

function cambiaMes(comboMes,comboDias, mes, dia)
{
	//alert(document.getElementById("ctlCRSSearchHotelSelector_TxtCheckInYear").value);
	//alert(datos);
	//alert(datosCalendario.value);
	var datosFechas;
	var mesSeleccionado;
	var selectComboMes = "";

	//alert(comboMes + " - " + comboDias + " - " + mes + " - " + dia);
	
	//Se inicializa en función de si se recibe un mes desde el calendario o no
	if (mes.length>0)
	{
		//Para cuando se llama desde el calendario
		selectComboDias = top.document.getElementById(comboDias);
		selectComboMes = top.document.getElementById(comboMes);
		datosFechas = top.datosCalendario;
		mesSeleccionado = mes;
	}
	else
	{
		selectComboDias = document.getElementById(comboDias);
		datosFechas = datosCalendario;
		mesSeleccionado = document.getElementById(comboMes).options[document.getElementById(comboMes).selectedIndex].text;
	}
	dia = ( dia === "" ) ? document.getElementById(comboDias).value : dia;
	eliminarOpcionesCombo(selectComboDias);

	//var mesSeleccionado = document.getElementById(comboMes).value.toLowerCase();
	//var mesSeleccionado = document.getElementById(comboMes).text.toLowerCase();

	//alert(mesSeleccionado.toLowerCase());
	//alert(datos.value.Tables[0].Rows[0].Opcion.toLowerCase());

	var numDias;
	for(var i=0; i<12; i++)
	{
		//alert(datos.value.Tables[1].Rows[i].Mes.toLowerCase() + " - " + mesSeleccionado);
		//alert(datosCalendario.value.Tables[1].Rows[i].Mes.toLowerCase() + " - " + mesSeleccionado);
		//if ( (datos.value.Tables[1].Rows[i].Mes.toLowerCase() == mesSeleccionado.toLowerCase()) )
		if ( (datosFechas.value.Tables[1].Rows[i].Mes.toLowerCase() == mesSeleccionado.toLowerCase()) )
		{
			if (selectComboMes)
				selectComboMes.options[i].selected=true;
			//alert(selectComboMes);

			//numDias = datos.value.Tables[1].Rows[i].NDias;
			numDias = datosFechas.value.Tables[1].Rows[i].NDias;
			//alert(numDias);
			for (var j=0;j<numDias;j++)
			{
				var opcionDias = document.createElement("OPTION");
				opcionDias.text = j+1;
				opcionDias.value = j+1;
				//Se añade la opción

				selectComboDias.options.add(opcionDias);

				//Se comprueba si se ha recibido un día y si es así, se selecciona
				if ( (dia.length>0) &&(parseInt(j+1)==parseInt(dia)) )
					opcionDias.selected = true;
			}
		}
	}
}

//Función seleccionar el número de habitaciones que se ha elegido en la pantalla de búsqueda
function seleccionarNumHab(numHab)
{
	selectNumHab = document.getElementById('ddlNumHabitaciones');
	for (var i=0;i<selectNumHab.length;i++)
	{
		if ( (numHab != "") && (numHab == selectNumHab[i].value) )
			selectNumHab[i].selected = true;
	}
}

function ponerNombreHotel(nomHotel)
{
	if ( nomHotel != "" )
		document.getElementById('txtNombreHotel').value = nomHotel;
}

//Función para eliminar las opciones que tiene un combo, ya que si no se eliminan, al volver a cargarle, éstas se añaden a las que ya había
function eliminarOpcionesCombo(combo)
{
	while (combo.options.length)
	{
		combo.options[0] = null;
	}
}

//Función para deschequear todos los checks de la página
function deschequearFiltros()
{
	var i, checks;
	for(i=0; (checks = document.getElementsByTagName("input")[i]); i++)
	{
		//Se comprueba que sean checkbox y se deschequean
		if( (checks.getAttribute("type") == "checkbox") )
			checks.checked=false;
	}
}

//Función para colocar los dos slide a la derecha y a la izquierda
function colocarSlide()
{
	document.getElementById("horizontal_slider_1").style.left="0px";
	document.getElementById("horizontal_slider_5").style.left="120px";
}

// id --> id de la capa a plegar-desplegar
// idImg --> imagen a intercambiar por una imagen apropiada a si está la capa plegada-desplegada
// imgOn --> imagen que simboliza desplegar la capa, cuando ésta está plegada
// imgOff --> imagen que simboliza plegar la capa, cuando ésta está desplegada
function plegarDesplegar(id,idImg,imgOn,imgOff)
{
	switch (document.getElementById(id).style.display)
	{
		case 'none':
			document.getElementById(id).style.display  = "";
			document.getElementById(idImg).src  = imgOff;
			break;
		default:
			document.getElementById(id).style.display  = "none";
			document.getElementById(idImg).src  = imgOn;
			break;
	}
}

function ocultarMostrar(id)
{
	switch (document.getElementById(id).style.display)
	{
		case 'none':
			document.getElementById(id).style.display  = "";
			break;
		default:
			document.getElementById(id).style.display  = "none";
			break;
	}
}

function cambiarImgFlechaOrdenacion(imgId,ordenadoPor)
{
	//Se asigna a la variable la etiqueta de por lo que se va a ordenar
	lblOrdenadoPor = ordenadoPor;

	var i, imgFlecha;

	//Nombres de las imágenes que simbolizan ordenación ascendente y descendente
	var imgAsc = "IconFlechaOrdenarAsc.gif";
	var imgDesc = "IconFlechaOrdenarDesc.gif";

	//Se recorre el array de imágenes y se comprueba que sea la imagen que ha recibido la función. Se comprueba, además, que tenga en el id
	//la palabra "flecha", porque hay ids sin nada y si se realiza la comprobación directamente del nombre, da error
	for(i=0; (imgFlecha = document.getElementsByTagName("img")[i]); i++)
	{
		if( (imgFlecha.id.indexOf("flecha")>=0) && (imgFlecha.id == imgId) )
		{
			//Se hace un split de la ruta de la imagen, se ve cuál es, y se le cambia por la opuesta
			var imagen = imgFlecha.src.split("/");
			//Para almacenar el tipo de ordenación a aplicar
			//var tipoOrdenacion = "";

			if ( imagen[(imagen.length)-1] == imgAsc )
			{
				imgFlecha.src = "/MPTurSpainWeb/images/CRS/"+imgDesc;
				tipoOrdenacion = "descending";
			}
			else
			{
				imgFlecha.src = "/MPTurSpainWeb/images/CRS/"+imgAsc;
				tipoOrdenacion = "ascending";
			}
		}
	}

	//Se obtiene el campo por el que se va a ordenar
	campoOrdenar = imgId.replace("flecha","").toLowerCase();

	//Se llama a la función que saca el mensaje de cargando
	cargando("filtrar");

	//Una vez cambiada la imagen que simboliza el tipo de ordenación, se llama a la función filtrarOrdenar y se le pasa a ésta
	//el nuevo tipo de ordenación que se ha de aplicar y sobre qué campo. El campo (segundo parámetro), lo obtenemos del parámetro que recibe
	//esta función, eliminando la palabra 'flecha' y pasando a minúsculas
	//filtrarOrdenar(tipoOrdenacion,imgId.replace("flecha","").toLowerCase());
}

//Función que deshabilita o habilita el buscador y los filtros. Se hace para para que mientras se esté buscando o filtrando, no se pueda
//operar con ninguno de ellos.
function deshabilitarHabilitarBuscarFiltrar()
{
	//Se habilita o deshabilita el botón buscar, filtro del rango de precios y filtro de cadena hotelera.
	//Como todo se desactiva o activa todo a la vez (tanto buscador como filtrado), con comprobar uno vale
	btnBuscar = document.getElementById('btnIniciarBuscar');
	sliderIzq = document.getElementById('horizontal_slider_1');
	sliderDrcha = document.getElementById('horizontal_slider_5');

	if (btnBuscar.onclick)
	{
		//Botón buscar
		btnBuscar.onclick = null;
		btnBuscar.style.cursor = "default";
		//Sliders
		//Se oculta empleando una capa con opacidad, porque si se deshabilita y posteriormente se habilita el evento, con Mozilla hay errores
		ocultarMostrar('ocultarSlider');
		/*
		sliderIzq.onmousedown = null;
		sliderIzq.style.cursor = "default";
		sliderDrcha.onmousedown = null;
		sliderDrcha.style.cursor = "default";
		*/
		//Cadena hotelera
		document.getElementById('ddlCadenaHotelera').disabled = true;
	}
	else
	{
		//Botón buscar
		btnBuscar.onclick = function () {return prepararForm();} 
		btnBuscar.style.cursor = "pointer";
		//Sliders
		//Se oculta empleando una capa con opacidad, porque si se deshabilita y posteriormente se habilita el evento, con Mozilla hay errores
		ocultarMostrar('ocultarSlider');
		/*
		sliderIzq.onmousedown = function () {slide(event, 'horizontal', 120, 0, 90, 201, 0, 'value_display_1')}
		sliderIzq.style.cursor = "move";
		sliderDrcha.onmousedown = function () {slide(event, 'horizontal', 120, 10, 100, 201, 0, 'value_display_5');}
		sliderDrcha.style.cursor = "move";
		*/
		//Cadena hotelera
		document.getElementById('ddlCadenaHotelera').disabled = false;
	}

	//Categoría hotel y Servicios
	var i, checks;
	for(i=0; (checks = document.getElementsByTagName("input")[i]); i++)
	{
		//Se comprueba que sean checkbox
		if( (checks.getAttribute("type") == "checkbox") )
		{
			if (checks.disabled == true)
				checks.disabled = false;
			else
				checks.disabled = true;
		}
	}
}

//Función para colocar y dimensionar la capa que aparece cada vez que se realizan llamadas al servidor y que muestra un texto de "espere"
function colocarCapaEsperando()
{
	var anchura="";

	anchura = parseInt( ((window.screen.width*98)/100)-340 );

	//Se pone la altura y margen adecuado para que salga centrado verticalmente la capa de cargando
	document.getElementById("contenedorCargando").style.height = window.screen.height-180+"px";
	document.getElementById("contenedorCargando").style.width = anchura+"px";
	document.getElementById("mensajeCargando").style.marginTop = ((window.screen.height-180)/2)-40+"px";
	//document.getElementById("contenedorCargando").style.display = "";

	//ocultarMostrar("contenedorCargando");
}

//Función para iluminar las filas, al pasar con el ratón por encima, de la tabla del resultado de búsqueda
function iluminarFila(fila)
{
	fila.style.backgroundColor = '#eff0f5';
	//fila.style.cursor = 'pointer';
}

//Función para reestablecer el color de las filas de la tabla del resultado de búsqueda
function apagarFila(fila)
{
	fila.style.backgroundColor = '#ffffff';
}


//Cierra la ventana
function cerrar()
{
	window.close();
}
function validarSearchHotel(mensajeError)
{
	var indiceAno = (language == "en") ? 0 : 1;
	var anoEntrada = document.getElementById("ddlMesEntrada").options[document.getElementById("ddlMesEntrada").selectedIndex].text.split(" ")[indiceAno];
	var anoSalida = document.getElementById("ddlMesSalida").options[document.getElementById("ddlMesSalida").selectedIndex].text.split(" ")[indiceAno];
	var fechaEntrada = new Date(anoEntrada,document.getElementById("ddlMesEntrada").value,document.getElementById("ddlDiaEntrada").value);
	var fechaSalida = new Date(anoSalida,document.getElementById("ddlMesSalida").value,document.getElementById("ddlDiaSalida").value);
	
	if ( fechaSalida < fechaEntrada )
	{
		alert(mensajeError);
		return false;
	}
	return true;
}

//Función para hacer el submit del formulario del CRSHome y pasarle los datos del buscador a CRSSearchResult
function doSubmit(cultura)
{
	//document.forms[0].action="http://10.5.195.97/MPTurSpainWeb/Templates/CRS/CRSSearchResult.aspx?language=es";
	//document.forms[0].action="http://localhost/MPTurSpainWeb/Templates/CRS/CRSSearchResult.aspx?language=es";
	//document.forms[0].submit();
	//Para abrirlo en una ventana nueva y tener control sobre ésta
	//document.forms[0].action="/MPTurSpainWeb/Templates/CRS/CRSSearchResult.aspx?language=es";
	//document.forms[0].action="/MPTurSpainWeb/Templates/CRS/CRSSearchResult.aspx?language="+cultura;
	window.open("","hotels","toolbar=no,scrollbars=yes,resizable=yes,status=yes,directories=no,location=no,left=0,top=0,width="+screen.width+",height="+screen.height+"");
	return true;
}

//Comprueba si se ha introducido una dirección de mail válida
function comprobarEmail(cajaTextoMail)
{
	var dirMail = document.getElementById(cajaTextoMail).value;

	//var emailReg = new RegExp("^[a-z-0-9][a-z-_0-9\.]+@[a-z-_=&gt;0-9\.]+\.[a-z]{2,4}$");
	var emailReg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

	//alert(dirMail.search(emailReg));
	if (dirMail.search(emailReg) != 0)
	{
		alert(mensajes[0]);
		return false;
	}
	else
		enviarMail();
}

//Variable para almacenar el contenedor que almacena el hotel anterior al que se ha pinchado. Se utiliza para restaurar los colores que ha de tener
var contenedorOld="";
//Función para poner los colores pertinentes al hotel del que se está viendo la ficha. El resto de hoteles, se les restablece los colores
function establecerColorCeldas(contenedor)
{
	if (contenedorOld)
	{
		contenedorOld.style.backgroundColor="#f0f0f8";
		contenedorOld.style.color="#8583b5";
	}

	contenedor.style.backgroundColor="#8482b4";
	contenedor.style.color="#ffffff";

	contenedorOld = contenedor;
}

//Función que me captura del querystring la variable que le pase, en mi caso 'control'
//La variable 'control' tiene el valor del DropDownlist en el que quiero escribir la provincia
//que se ha seleccionado del mapa
//Para ello, la página desde la cual se abra la página del mapa, le ha de pasar por el querystring
//el nombre del DropDownlist donde queremos que se carge el valor de la provincia pinchada.
//Ej.: SearchProvince.aspx?control=CRSSearchSelectorUserControl1_DDListProvinces
function getQueryVariable(variable)
{
	var query = window.location.search.substring(1);
	var vars = query.split("&");
	for (var i=0;i<vars.length;i++)
	{
		var pair = vars[i].split("=");
		if (pair[0] == variable)
		{
			return pair[1];
		}
	} 
	//alert('La variable del QueryString ' + variable + ' no se ha encontrado');
}

//Esta función es para pasar la provincia que se ha seleccionado en la película de Flash y que le llegue
//a esta página. Una vez seleccionada y que le ha llegado aquí, ponemos la provincia en el DropDownList
//pertinente
function comunidadID_DoFSCommand(command, args)
{
	for (i=0;document.getElementById("ddlProvincia").options.length;i++)
	{
		if (document.getElementById("ddlProvincia").options[i].text == args)
		{
			document.getElementById("ddlProvincia").options[i].selected=true;
			break;
		}
	}
	ocultarMostrar('mapaEspana');
}

//Llama al método que envía correos. En función de la respuesta de éste, saca un mensaje u otro.
function enviarMail()
{
	if (document.getElementById("txtEnvioMail").value.length>1)
	{
		var dirCorreo = document.getElementById("txtEnvioMail").value;
		var respuesta = MPTurSpainWeb.CRSAjaxUtils.EnviarMail(htmlCorreo,dirCorreo);
		if (respuesta.value == true)
			alert(mensajes[1]);
		else
			alert(mensajes[2]);
		}
	else
	{
		alert(mensajes[0]);
	}
}

//Función para posicionar correctamente la columna de la ficha del hotel
function posicionarColumnaFichaHotel()
{
	//alert(document.getElementById("columnaFichaHotel").style.width);
	document.getElementById("columnaFichaHotel").style.width=(parseInt(document.documentElement.clientWidth-745))+"px";
	//alert(document.getElementById("columnaFichaHotel").style.width);
}

//Función que escala las columnas del diseño, en función de cómo los filtros del buscador vayan creciendo
function escalarColumnasDiseno(filtro)
{
	//imgplegar1 --> precio (50) 	//imgplegar2 --> categoría (70) 	//imgplegar3 --> cadena (30) 	//imgplegar4 --> servicios (210)

	//columnaBuscador
	//columnaContenido

	//Altura de la capa de los filtros
	var alCapaFiltros = parseInt(document.getElementById("columnaBuscador").offsetHeight);
	var alCapaResultadoBusqueda = parseInt(document.getElementById("contenido").offsetHeight);
	var alCapaResultadoBusquedaScroll = parseInt(document.getElementById("scroll").offsetHeight);
	var alCapaFichaHotel = parseInt(document.getElementById("columnaFichaHotel").offsetHeight);

	var diferenciaAlturas;
	var diferenciaAlturas2;

	var diferenciaAlturas3 = parseInt(Math.abs(alCapaFiltros-alCapaFichaHotel));

	if ( !((diferenciaAlturas3>0) && (diferenciaAlturas3<10)) )
	{
		if (alCapaFichaHotel>alCapaFiltros)
		{
			diferenciaAlturas = alCapaFichaHotel-alCapaFiltros;
			diferenciaAlturas2 = alCapaFiltros-alCapaResultadoBusqueda;
			document.getElementById("columnaBuscador").style.height = (alCapaFiltros+diferenciaAlturas)+"px";
			document.getElementById("scroll").style.height = (alCapaResultadoBusquedaScroll+diferenciaAlturas+3)+"px";
		}
		else
		{
			diferenciaAlturas = alCapaFiltros-alCapaFichaHotel;
			diferenciaAlturas2 = alCapaFiltros-alCapaResultadoBusqueda;
			document.getElementById("scroll").style.height = (alCapaResultadoBusquedaScroll+diferenciaAlturas2+3)+"px";
			document.getElementById("columnaFichaHotel").style.height = (alCapaFichaHotel+diferenciaAlturas)+"px";
		}
	}
}

/*
function matchHeight()
{
	
     var divs,contDivs,maxHeight,divHeight,d; 
     // get all <div> elements in the document 
     divs=document.getElementsByTagName('div'); 
     contDivs=[]; 
     // initialize maximum height value 
     maxHeight=0; 

     // iterate over all <div> elements in the document 
     for(var i=0;i<divs.length;i++)
     {
          // make collection with <div> elements with class attribute 'container' 
          //if(/\columna\b/.test(divs[i].className))
          if((divs[i].className.indexOf("columna")>=0))
          {
                d=divs[i]; 
                contDivs[contDivs.length]=d; 

                // determine height for <div> element 
                if(d.offsetHeight)
                {
                     divHeight=d.offsetHeight; 
                } 
                else if(d.style.pixelHeight)
                { 
                     divHeight=d.style.pixelHeight;
                } 

                //calculate maximum height
                maxHeight=Math.max(maxHeight,divHeight); 
          } 
     } 

     // assign maximum height value to all of container <div> elements 

     for(var i=0;i<contDivs.length;i++)
     { 
          contDivs[i].style.height=maxHeight; 
     }
     
}
*/

/* Javascript para el slider del precio */

// carpeGetElementByID: Cross-browser version of "document.getElementById()"
function carpeGetElementById(element)
{
	if (document.getElementById) element = document.getElementById(element);
	else if (document.all) element = document.all[element];
	else element = null;
	//alert(element);
	return element;
	//return document.getElementById(element)
}

// carpeLeft: Cross-browser version of "element.style.left"
function carpeLeft(elmnt, pos)
{
	if (!(elmnt = carpeGetElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.left) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.left = pos + 'px';
		else {
			pos = parseInt(elmnt.style.left);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelLeft) {
		if (typeof(pos) == 'number') elmnt.style.pixelLeft = pos;
		else pos = elmnt.style.pixelLeft;
	}
	return pos;
}

// carpeTop: Cross-browser version of "element.style.top"
function carpeTop(elmnt, pos)
{
	if (!(elmnt = carpeGetElementById(elmnt))) return 0;
	if (elmnt.style && (typeof(elmnt.style.top) == 'string')) {
		if (typeof(pos) == 'number') elmnt.style.top = pos + 'px';
		else {
			pos = parseInt(elmnt.style.top);
			if (isNaN(pos)) pos = 0;
		}
	}
	else if (elmnt.style && elmnt.style.pixelTop) {
		if (typeof(pos) == 'number') elmnt.style.pixelTop = pos;
		else pos = elmnt.style.pixelTop;
	}
	return pos;
}

// moveSlider: Handles slider and display while dragging
function moveSlider(evnt)
{
	var evnt = (!evnt) ? window.event : evnt; // The mousemove event
	if (mouseover) { // Only if slider is dragged
		x = pxLeft + evnt.screenX - xCoord // Horizontal mouse position relative to allowed slider positions
		y = pxTop + evnt.screenY - yCoord // Horizontal mouse position relative to allowed slider positions
		if (x > xMax) x = xMax // Limit horizontal movement
		if (x < 0) x = 0 // Limit horizontal movement
		if (y > yMax) y = yMax // Limit vertical movement
		if (y < 0) y = 0 // Limit vertical movement
		carpeLeft(sliderObj.id, x)  // move slider to new horizontal position
		carpeTop(sliderObj.id, y) // move slider to new vertical position
		sliderVal = x + y // pixel value of slider regardless of orientation
		sliderPos = (sliderObj.pxLen / sliderObj.valCount) * Math.round(sliderObj.valCount * sliderVal / sliderObj.pxLen)
		v = Math.round((sliderPos * sliderObj.scale + sliderObj.fromVal) * // calculate display value
			Math.pow(10, displayObj.dec)) / Math.pow(10, displayObj.dec)
		displayObj.value = v // put the new value in the slider display element
		return false
	}
	return
}

// moveSlider: Handles the start of a slider move.
function slide(evnt, orientation, length, from, to, count, decimals, display)
{
	//Se establecen los valores necesarios para poner inicializar el filtro de precio
	if (display == 'value_display_1')
	{
		//alert("Slide izq");
		from = parseInt(document.getElementById('txtPrecioMin').value);
		to = parseInt((document.getElementById('txtPrecioMax').value))-parseInt((10));
		count = parseInt((document.getElementById('txtPrecioMax').value))-parseInt((10));
	}
	else
	{
		//alert("Slide derec");
		from = parseInt((document.getElementById('txtPrecioMin').value))+parseInt((10));
		to = parseInt(document.getElementById('txtPrecioMax').value);
		count = parseInt(document.getElementById('txtPrecioMax').value);
	}

	//alert(document.getElementById('txtPrecioMin').value);

	//alert(from + " - " + to + " - " + count);

	//length=parseInt(to)-parseInt(from);
	//alert(length);

	if (!evnt) evnt = window.event;
	sliderObj = (evnt.target) ? evnt.target : evnt.srcElement; // Get the activated slider element.
	sliderObj.pxLen = length // The allowed slider movement in pixels.
	sliderObj.valCount = count ? count - 1 : length // Allowed number of values in the interval.
	displayObj = carpeGetElementById(display) // Get the associated display element.
	displayObj.dec = decimals // Number of decimals to be displayed.
	sliderObj.scale = (to - from) / length // Slider-display scale [value-change per pixel of movement].
	if (orientation == 'horizontal') { // Set limits for horizontal sliders.
		sliderObj.fromVal = from;
		xMax = length;
		yMax = 0;
	}
	if (orientation == 'vertical')
	{	//Set limits and scale for vertical sliders.
		sliderObj.fromVal = to;
		xMax = 0;
		yMax = length;
		sliderObj.scale = -sliderObj.scale; // Invert scale for vertical sliders. "Higher is more."
	}
	pxLeft = carpeLeft(sliderObj.id); // Sliders horizontal position at start of slide.
	pxTop  = carpeTop(sliderObj.id); // Sliders vertical position at start of slide.
	xCoord = evnt.screenX; // Horizontal mouse position at start of slide.
	yCoord = evnt.screenY; // Vertical mouse position at start of slide.
	mouseover = true;

	document.onmousemove = moveSlider; // Start the action if the mouse is dragged.
	document.onmouseup = sliderMouseUp; // Stop sliding.
	/*
	if (document.addEventListener)
	{
		
		document.addEventListener('onmousemove', moveSlider, false);
		document.addEventListener('onmouseup', sliderMouseUp, false);
		//alert("Moz");
	}
	else
	{
		document.onmousemove = moveSlider; // Start the action if the mouse is dragged.
		document.onmouseup = sliderMouseUp; // Stop sliding.
	}
	*/
}

// sliderMouseup: Handles the mouseup event after moving a slider.
// Snaps the slider position to allowed/displayed value.
function sliderMouseUp()
{
	mouseover = false // Stop the sliding.
	v = (displayObj.value) ? displayObj.value : 0 // Find last display value.
	pos = (v - sliderObj.fromVal)/(sliderObj.scale) // Calculate slider position (regardless of orientation).
	if (yMax == 0) carpeLeft(sliderObj.id, pos) // Snap horizontal slider to corresponding display position.
	if (xMax == 0) carpeTop(sliderObj.id, pos) // Snap vertical slider to corresponding display position.

	if (document.removeEventListener)
	{
		//Mozilla
		//Remove event listeners from 'document' (Moz&co).
		cargando("filtrar");
		document.onmousemove = null;
		document.onmouseup = null;
	}
	else if (document.detachEvent)
	{
		//IE
		//Remove event listeners from 'document' (IE&co).
		document.detachEvent('onmousemove', moveSlider);
		document.detachEvent('onmouseup', sliderMouseUp);

		document.onmousemove = null;
		document.onmouseup = null;

		//document.all.detachEvent('onmousemove', moveSlider)
		//document.all.detachEvent('onmouseup', sliderMouseUp)
		//alert("else-if");
		cargando("filtrar");
	}
}