function comprobarBusqueda(){
	//Desde el directorio de venezuelatuya no se permite la búsqueda por locación
	if (window.desdeDir) return [true];
	if (window.desdeBus){
		var searchField = locationValue();
		var searchValue = GE(searchField).value;
		if ('HOTNombre' == searchField  && searchValue.length < 3){
			//Vino el nombre y no tiene al menos 3 caracteres
			return [false, MM['NombreAlMenos3Letras'], GE('HOTNombre')];
		}else if ('HOTLinea1' == searchField  && searchValue.length < 3){
			//Vino la ciudad y no tiene al menos 3 caracteres
			return [false, MM['CiudadAlMenos3Letras'], GE('HOTLinea1')];
		}else if ('' == searchValue){
			//El valor es nulo. Para cualquiera de las búsquedas esto es fatal
			return [false, MM['IndicarDestino'], GE(searchField)];
		};
	}else{
		var vHOTNombre = GE('HOTNombre').value;
		var vHOTLinea1 = GE('HOTLinea1').value;
		var vHOTLista1 = GE('HOTLista1').value;
		var vHOTLista2 = GE('HOTLista2').value;
		if (vHOTNombre){
			if (vHOTNombre.length < 3){
				//Vino el nombre y no tiene al menos 3 caracteres
				return [false, MM['NombreAlMenos3Letras'], GE('HOTNombre')];
			};
		}else if (vHOTLinea1){
			if (vHOTLinea1.length < 3){
				//Vino la ciudad y no tiene al menos 3 caracteres
				return [false, MM['CiudadAlMenos3Letras'], GE('HOTLinea1')];
			};
		}else if (!vHOTLista1 && !vHOTLista2){
			//El valor es nulo. Para cualquiera de las búsquedas esto es fatal
			return [false, MM['IndicarDestino'], GE(searchField)];
		};
	};
	return [true];
};
function locationValue(){
	var elems = document.forms['search'].location;
	for (i = 0; i < elems.length; i ++){
		if (elems[i].checked) return elems[i].value.substring(1);
	};
	return undefined;
};
function locationClicked(){
	//Dar tiempo para que después de click se cambie el valor
	setTimeout(locationChanged, 50);
};
function locationChanged(){
	var searchField = locationValue();
	var disabled;
	$.each(['HOTLista1', 'HOTLista2', 'HOTLinea1', 'HOTNombre'], function(dummy, currField){
		if (currField == searchField){
			disabled = false;
		}else{
			disabled = true;
		};
		GE(currField).disabled = disabled;
	});
	actCantHoteles();
};
function getSearchParam(){
	//Datos de la búsqueda
	var param = {
		'se':se,
		'TA1': GE('TA1').checked ? 1 : 0,
		'TA2': GE('TA2').checked ? 1 : 0,
		'TA3': GE('TA3').checked ? 1 : 0,
		'TA4': GE('TA4').checked ? 1 : 0,
		//Esto cambia la manera de la que se reciben los códigos y mantiene la búsqueda activa aún cuando el sistema esté deshabilitado
		'desdeVT': window.desdeVT ? 1 : 0,
		'PAGCodigo': PAGCodigo
	};
	if (window.desdeDir){
		//Desde el directorio de venezuelatuya siempre hay región
		param['HOTLista1'] = GE('HOTLista1').value;
	}else if (window.desdeBus){
		//En cualquier otro caso sólo vamos a colocar el campo que se esté buscando
		var searchField = locationValue();
		param[searchField] = GE(searchField).value;
	}else{
		param['HOTLista1'] = GE('HOTLista1').value;
		param['HOTLista2'] = GE('HOTLista2').value;
		param['HOTLinea1'] = GE('HOTLinea1').value;
		param['HOTNombre'] = GE('HOTNombre').value;
	};
	var check;
	for (var i = 0; i < cajasAvanzada.length; i ++){
		check = cajasAvanzada[i];
		param[check] = GE(check).checked ? 1 : 0;
	};
	// Validaciones de fechas
	var fechasValidas = comprobarFechas();
	if (!fechasValidas[0]){
		$('.fastResults').html(fechasValidas[1]);
	}else if(window.desdeVT){
		//En caso de venir desde venezuelatuya sólo se necesitan concidiones extra
		param['condicionExtra'] = GE('condicionExtra').value;
	}else{
		param['fechaDesde'] = GE('fechaDesde').value;
		param['fechaHasta'] = GE('fechaHasta').value;
		param['cantPersonas'] = GE('cantPersonas').value;
	};
	return param;
};
function actCantHoteles(){
	var spanColor;
	//Vaciar la lista de hoteles de la búsqueda anterior
	$('.results').html(
		"<table class='searchAction' cellspacing='0'><tr><td class='fastResults'></td><td>" +
		"&nbsp;<input class='showButton' type='submit' onclick='buscar();' value='" + MM['Mostrar'] + "' style='display:none' />" +
		"</td></tr></table>"
	);
	//Marcar las características activadas
	for (var i = 0; i < cajasAvanzada.length; i ++){
		var caja = cajasAvanzada[i];
		var obj = GE(caja);
		if (obj.checked){
			spanColor = 'yellow';
		}else{
			spanColor = '';
		};
		$('#td' + caja).css('background-color', spanColor);
	};
	var busquedaValida = comprobarBusqueda();
	if (!busquedaValida[0]){
		$('.fastResults')
			.css('background-color', 'salmon')
			.html(busquedaValida[1]);
		return false;
	};
	$('.fastResults')
		.css('background-color', '#73DD4F')
		.html("<img src='"+URLstl+"/ajax-loader-busqueda.gif' height='11' /> " + MM['Buscando'] + '...');
	//Get search parameters
	var param = getSearchParam();
	busquedasEnviadas ++;
	//Obtener resultados de una vez
	ajax = ajaxRequest(URLpax + '/buscar.php', param, obtenerResultados);
};
function resultadosRapidos(cantidades){
	var disp = cantidades[0];
	busquedasRecibidas ++;
	//Evitar mostrar resultados si se está haciendo aún otra búsqueda
	if (busquedasEnviadas != busquedasRecibidas) return true;
	$('.fastResults').html(
		MM['BusquedaExisten'].replace('[[CANT]]', disp)
	);
	$('input.showButton').css('display', 'inline');
	return true;
};
function chequearBuscar(e){
	if(!e) e = window.event;
	var key = e.keycode ? e.keycode : e.which;
	if (13 == key) buscar();
};
function buscar(){
	var busquedaValida = comprobarBusqueda();
	if (!busquedaValida[0]){
		busquedaValida[2].focus();
		alert(busquedaValida[1]);
		return false;
	};
	// Validaciones de fechas
	var fechasValidas = comprobarFechas();
	if (!fechasValidas[0]){
		fechasValidas[2].focus();
		alert(fechasValidas[1]);
		return false;
	};
	busquedasEnviadas ++;
	var param = getSearchParam();
	ajax = ajaxRequest(URLpax + '/buscar.php', param,
		function(hoteles){
			obtenerResultados(hoteles);
			if (!window.desdeVT){
				window.location.href = '#ResultadosBusqueda';
			};
		}
	, 'Buscando');
};
function obtenerResultados(hoteles){
	busquedasRecibidas ++;
	//Evitar mostrar resultados si se está haciendo aún otra búsqueda
	if (busquedasEnviadas != busquedasRecibidas) return true;
	if (!window.desdeVT){
		var fechaDesde = GE('fechaDesde').value;
		var fechaHasta = GE('fechaHasta').value;
	};
	if (0 != hoteles.length){
		if (!window.desdeVT && fechaDesde && fechaHasta){
			$('.mensajes').html(MM['SoloDisponibles']);
		}else{
			//$('.mensajes').html(MM['EncabezadoBusqSinFecha']);
		};
	};
	$('#resultTitle').text(hoteles.length + ' Resultados');
	//Vaciar la lista de hoteles de la búsqueda anterior
	var jResults = $('.results').html('');
	//Añadir la línea de hoteles
	var jBoxLine = $("<div></div>");
	//Siempre se compara con la ciudad anterior
	var ultimos = false, saltarAUltimos = true; i = 0, ciudad = '';
	//Llenar la tabla de los hoteles
	$.each(hoteles, function(dummy, hotel){
		//Si no hay ciudad, ya se pasó a los últimos
		if (saltarAUltimos && !hotel[6]){
			ultimos = true;
			i = 0;
		};
		//Cada cinco divs se salta de línea. También se salta de línea cuando se pasa a los que no tienen ciudad o foto.
		if (i && i % 5 == 0 || ultimos && saltarAUltimos){
			//Crear un div transparente para solucionar el problema de duplicación de márgenes en IE6
			jBoxLine.append("<div style='float:left;visibility:hidden;'></div>");
			//Averiguar el tamaño del div ya que todos sus elementos son flotantes (NS)
			jBoxLine.append("<div style='clear:both;visibility:hidden;'></div>");
			//Añadir la línea de hoteles
			jResults.append(jBoxLine);
			//Crear la nueva línea de hoteles
			jBoxLine = $("<div></div>");
		};
		//Div que contiene el html completo del hotel
		var jHotel = $("<div class='hotel'></div>");
		//Ciudad tipo título
		jHotel.append("<span class='cityTitle'>" + hotel[4] + "</span>");
		//Clase especial para reservación instantánea
		var inst = 1 == hotel[5] ? 'Inst' : '';
		//Colocar el texto explicativo de las reservaciones instantáneas
		if (0 == i && inst){
			jResults.append("<p class='explicFondoAmarillo'><b>" + MM['ExplicFondoAmarillo'] + "</b></p>");
		};
		//Añadir la imagen de tope
		jHotel.append("<div class='hotelTop" + inst + "'></div>");
		//La clase cambia dependiendo de si es un hotel
		if (ultimos){
			var classHotelMiddle = 'hotelMiddleLast' + inst;
		}else{
			var classHotelMiddle = 'hotelMiddle' + inst;
		};
		//Contenido del hotel
		var jHotelMiddle = $("<div class='" + classHotelMiddle + "'></div>");
		//Dependiendo del lugar, el enlace varía
		if (window.desdeVT){
			var enlace = 'mostrarhotel.htm?HOTCode=' + hotel[0];
		}else{
			var enlace = URLpax + '/crear.php?HOTCode=' + hotel[0];
		};
		if (window.desdeBus){
			var target = " target='_blank'";
		}else{
			var target = '';
		};
		//Nombre
		jHotelMiddle.append("<span class='name'><a href='" + enlace + "'" + target + ">" + hotel[1] + "</a></span>");
		//Imagen
		if (hotel[6] && !ultimos){
			jHotelMiddle.append("<div class='thumb'><a href='" + enlace + "'" + target + "><img src='" + URLimg + '/' + hotel[6] + "' alt='" + hotel[1] + "' /></a></div>");
		};
		ciudad = '';
		if (hotel[3]){
			ciudad = '<br />' + hotel[3];
		};
		//Tipo y Precio
		jHotelMiddle.append("<span class='tipo-precio'>" + hotel[2] + ciudad + "</span>");
		//Añadi el contenido
		jHotel.append(jHotelMiddle);
		//Añadir la imagen de pie
		jHotel.append("<div class='hotelBottom" + inst + "'></div>");
		//Añadir el hotel a la línea
		jBoxLine.append(jHotel);
		i ++;
		//Si ya se empezaron los divs sin foto, ya se realizó el salto
		if (ultimos) saltarAUltimos = false;
	});
	if (0 == hoteles.length){
		jBoxLine.append("<p class='noResults'>" + MM['NoResultados'] + "</p>");
	}else{;
		//Crear un div transparente para solucionar el problema de duplicación de márgenes en IE6
		jBoxLine.append("<div style='float:left;visibility:hidden;'></div>");
		//Averiguar el tamaño del div ya que todos sus elementos son flotantes (NS)
		jBoxLine.append("<div style='clear:both;visibility:hidden;'></div>");
	};
	//Añadir la última línea de hoteles
	jResults.append(jBoxLine);
	//Fix IE6 style bugs
	if (window.ie6StyleFix) ie6StyleFix();
};
function divHotel(hotel, ultimos){
	return jHotel;
};