/*Javascript para colocar los calendarios en los formularios de reserva*/
var url = "/disponibilidad.php"; //URL donde está el servidor de XMLs 
var mostraralert=false;
var DiasOcupados = new Array(); 
var EstablecimientoActivo = 0;
/**
* Función que recoge los datos que se pasa por XML
*/
function handleHttpResponse()
{
	if (http.readyState == 4)
	{
		if (http.responseText.indexOf("invalid") == -1)
		{
			xmlDoc=http.responseXML;
			if(!xmlDoc){return;}
			var x=xmlDoc.getElementsByTagName('disponibilidad');

			var AnyoAnterior = 0;
			var MesAnterior = 0;

			var NumeroDias = x.length;
			for(i=0;i<NumeroDias;i++)
			{
				var dia = x.item(i).attributes[0].value;
				var mes = x.item(i).attributes[1].value;
				var anyo = x.item(i).attributes[2].value;
				var ocupado =  x.item(i).attributes[3].value;
			
				if (AnyoAnterior != anyo)
				{
					DiasOcupados[anyo] = new Array();
					AnyoAnterior = anyo;
				}

				if (MesAnterior != mes)
				{
					DiasOcupados[anyo][mes] = new Array();
					MesAnterior = mes;
				}
				
				DiasOcupados[anyo][mes][dia] = ocupado;
			}
		}
		isWorking = false;
	}
}

var isWorking = false;//Bandera para saber si el proceso ajax está trabajando (true) o ya ha parado (false).


/**
* El disparador debe llamarse cuando se activa el evento que debe generarlo.
*
* @param Mes	Mes que se va a consultar
* @param Anyo	Año que se va a consultar
*/
function Disparador(Mes, Anyo)
{
//return;
	if (!isWorking && http)
	{
		//Tomamos el indice más adecuado.
		var Establecimiento = document.getElementById("form_select").options[document.getElementById("form_select").selectedIndex].value;		
		//Envio por post
		http.open("POST", url, true);
		http.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		http.onreadystatechange = handleHttpResponse;
		isWorking = true;
		http.send("evento=disponibilidad_mes_xml&id_establecimiento="+escape(Establecimiento)+"&id_unidad_alojativa=-1&mes="+escape(Mes)+"&anyo="+escape(Anyo));
		//alert("Enviamos la cadena "+"evento=disponibilidad_mes_xml&id_establecimiento="+escape(Establecimiento)+"&id_unidad_alojativa=-1&mes="+escape(Mes)+"&anyo="+escape(Anyo) );
	}
}


/**
* Función básica para el manejo de llamadas AJAX
*/
function getHTTPObject()
{
	var xmlhttp;
	/*@cc_on
	@if (@_jscript_version >= 5)
	try
	{
		xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch (e)
	{
		try
		{
			xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch (E)
		{
			xmlhttp = false;
		}
	}
	@else
		xmlhttp = false;
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest != "undefined")
	{
		try
		{
			xmlhttp = new XMLHttpRequest();
			xmlhttp.overrideMimeType("text/xml");
		}
		catch (e)
		{
			xmlhttp = false;
		}
	}
	return xmlhttp;
}
var http = getHTTPObject(); // We create the HTTP Object


/**
* Determina que estilo se aplica a cada día. En el caso de que se devuelva false el día queda desactivo.
* Los días anteriores a la fecha de hoy deben quedar desactivados. Para la fecha de inicio.
*/
function ourDateStatusFuncInicio(date, y, m, d) 
{
	//Si el día es anterior al día de hoy aparece desmarcado
	var fecha = new Date();
	var dia_actual = fecha.getDate();
	var mes_actual = fecha.getMonth();
	var anyo_actual = fecha.getFullYear();
	if (d<dia_actual && m==mes_actual)
	{
		return 'dia_no_disponible';
	}
	else
	{
		//No se pondrán seleccionar fechas porteriores a la fecha que esté seleccionado en el calendario de salida
		var FechaEntrada = document.getElementById("form_date_out").value;
		if ('' != FechaEntrada)
		{
			var VFechaEntrada = new Array();
			VFechaEntrada = FechaEntrada.split('-');
			dia_actual = VFechaEntrada[0];
			mes_actual = VFechaEntrada[1];
			anyo_actual = VFechaEntrada[2];
			FechaEntrada = anyo_actual+mes_actual+dia_actual;
			dd = d;
			mm = m+1;
			if (dd < 10)
				dd = '0'+dd;
			if (mm < 10)
				mm = '0'+mm;
			FechaActual = y+mm+dd;
			
			if (FechaActual>=FechaEntrada)
			{
				return 'dia_no_disponible';
			}		
		}
	
	
		try
		{
			//Vemos si está cargado el més antes de acceder a su contenido
			if (DiasOcupados[y][m+1][d] != 1)
			{
				return '';
			}
			else
			{
				return 'dia_no_disponible';
			}
		}
		catch(e)
		{
			return 'dia_no_disponible';
		}
	}
}

function DiaAnteriorHoy(Fecha)
{
	var Hoy = new Date();	
	//document.write("Fecha = "+Fecha.getDate()+" < Hoy "+Hoy.getDate+"<br />");
	if (Fecha.getDate() < Hoy.getDate() && Fecha.getMonth() == Hoy.getMonth())
	{
		return true;
	}	
}


/**
* Determina que estilo se aplica a cada día. En el caso de que se devuelva false el día queda desactivo.
* Los días anteriores a la fecha de hoy deben quedar desactivados. Para la fecha de inicio.
*/
function ourDateStatusFuncFin(date, y, m, d) 
{
	var Activo = 1;

	//No se pondrán seleccionar fechas anteriores a la fecha que esté seleccionado en el calendario de entrada
	var FechaEntrada = document.getElementById("form_date_in").value;
	if ('' != FechaEntrada)
	{
		var VFechaEntrada = new Array();
		VFechaEntrada = FechaEntrada.split('-');
		dia_actual = VFechaEntrada[0];
		mes_actual = VFechaEntrada[1];
		anyo_actual = VFechaEntrada[2];
		FechaEntrada = anyo_actual+mes_actual+dia_actual;
		dd = d;
		mm = m+1;
		if (dd < 10)
			dd = '0'+dd;
		if (mm < 10)
			mm = '0'+mm;
		FechaActual = y+mm+dd;
		
		if (FechaActual<=FechaEntrada)
		{
			return 'dia_no_disponible';
		}		
	}
	
	
	try
	{
		//Vemos si está cargado el més antes de acceder a su contenido
		if (DiasOcupados[y][m+1][d] == 1 || DiaAnteriorHoy(date))
		{
			Activo = 0;
		}
	}
	catch(e)
	{
		Activo = 0;
	}
	
	
	if (1 == Activo)
	{
		return '';
	}
	else
	{
		return 'dia_no_disponible';
	}
}

/**
* Función de manejo de fechas para el calendario de inicio
*
* @param cal	Objeto de tipo calendario referido al objeto que invoca el metodo
* @param date	Fecha seleccionada por el objeto
*/
function ControlNavegacionInicio(cal, date)
{
	//Coge una fecha
	document.getElementById("form_date_in").value = date;

	if (!cal.dateClicked) 
	{
		//Vemos cual es la fecha actual seleccionada
		var VFechaEntrada = new Array();
		VFechaEntrada = date.split('-');
		mes_actual = VFechaEntrada[1];
		anyo_actual = VFechaEntrada[2];
		FechaEntrada = anyo_actual+mes_actual;
		
		//Calculamos la fecha de hoy
		FechaHoy = new Date();
		mes_hoy = FechaHoy.getMonth() + 1;
		anyo_hoy = FechaHoy.getFullYear();
		if (mes_hoy < 10 )
			mes_hoy = "0"+mes_hoy;
		FechaHoy = anyo_hoy+mes_hoy;
		
		//Si el mes seleccionado en menor que el mes actual no lo dejamos pasar, lo dejamos en el mes actual.
		if (FechaEntrada<FechaHoy)
		{
			cal.setDate(new Date());
		}
		
		/*
		//Calculamos la fecha de dentro de 6 meses
		FechaHoy = new Date();
		mes_hoy = FechaHoy.getMonth() + 5;
		anyo_hoy = FechaHoy.getFullYear();
		if (mes_hoy > 12)
		{
			mes_hoy = mes_hoy - 12;
			++anyo_hoy;
		}
		if (mes_hoy < 10 )
			mes_hoy = "0"+mes_hoy;
		FechaHoy = anyo_hoy+mes_hoy;
		
		//Si el mes seleccionado en menor que el mes actual no lo dejamos pasar, lo dejamos en el mes actual.
		if (FechaEntrada>FechaHoy)
		{
			cal.setDate(new Date(anyo_hoy,mes_hoy,1));
		}
		*/
	}
	else
	{
		//En el caso de que se pueda vamos a calcular el número de noches que hay entre las dos fechas.
		if ('' != document.getElementById("form_date_out").value )
		{
			var dia_entrada = document.getElementById("form_date_in").value;
			var dia_salida  = document.getElementById("form_date_out").value;
			
			var VFechaEntrada = new Array();
			VFechaEntrada = dia_entrada.split('-');
			var dia_entrada = VFechaEntrada[0];
			var mes_entrada = VFechaEntrada[1];
			var anyo_entrada = VFechaEntrada[2];
			
			var VFechaSalida = new Array();
			VFechaSalida = dia_salida.split('-');
			var dia_salida = VFechaSalida[0];
			var mes_salida = VFechaSalida[1];
			var anyo_salida = VFechaSalida[2];
			
			
			
			var fecha_entrada = new Date(anyo_entrada,mes_entrada-1,dia_entrada);
			var fecha_salida  = new Date(anyo_salida,mes_salida-1,dia_salida);

			//Lo convertimos a días.
			var dias = (fecha_salida-fecha_entrada)/1000; //pasamos a segundos
			dias = dias / 60; //pasamos a minutos
			dias = dias / 60; //pasamos a horas
			dias = dias / 24; //pasamos a dias
			dias = Math.abs(Math.round(dias));
			
			document.getElementById("form_nights").value = dias;
		}
		else
		{
			document.getElementById("form_date_out").value = document.getElementById("form_date_in").value;
		}
		
		//Ocultamos el calendario
		cal.hide();
	}
}


/**
* Función de manejo de fechas para el calendario de salida
*
* @param cal	Objeto de tipo calendario referido al objeto que invoca el metodo
* @param date	Fecha seleccionada por el objeto
*/
function ControlNavegacionFin(cal, date)
{
	//Coge una fecha
	document.getElementById("form_date_out").value = date;

	if (!cal.dateClicked) 
	{
		//Vemos cual es la fecha actual seleccionada
		var VFechaEntrada = new Array();
		VFechaEntrada = date.split('-');
		mes_actual = VFechaEntrada[1];
		anyo_actual = VFechaEntrada[2];
		FechaEntrada = anyo_actual+mes_actual;
		
		//Calculamos la fecha de hoy
		FechaHoy = new Date();
		mes_hoy = FechaHoy.getMonth() + 1;
		anyo_hoy = FechaHoy.getFullYear();
		if (mes_hoy < 10 )
			mes_hoy = "0"+mes_hoy;
		FechaHoy = anyo_hoy+mes_hoy;
		
		//Si el mes seleccionado en menor que el mes actual no lo dejamos pasar, lo dejamos en el mes actual.
		if (FechaEntrada<FechaHoy)
		{
			cal.setDate(new Date());
		}
		
		/*
		//Calculamos la fecha de dentro de 6 meses
		FechaHoy = new Date();
		mes_hoy = FechaHoy.getMonth() + 5;
		anyo_hoy = FechaHoy.getFullYear();
		if (mes_hoy > 12)
		{
			mes_hoy = mes_hoy - 12;
			++anyo_hoy;
		}
		if (mes_hoy < 10 )
			mes_hoy = "0"+mes_hoy;
		FechaHoy = anyo_hoy+mes_hoy;
		
		//Si el mes seleccionado en menor que el mes actual no lo dejamos pasar, lo dejamos en el mes actual.
		if (FechaEntrada>FechaHoy)
		{
			cal.setDate(new Date(anyo_hoy,mes_hoy,1));
		}
		*/		
	}
	else
	{
		//En el caso de que se pueda vamos a calcular el número de noches que hay entre las dos fechas.
		if ('' != document.getElementById("form_date_in").value )
		{
			var dia_entrada = document.getElementById("form_date_in").value;
			var dia_salida  = document.getElementById("form_date_out").value;
			
			var VFechaEntrada = new Array();
			VFechaEntrada = dia_entrada.split('-');
			var dia_entrada = VFechaEntrada[0];
			var mes_entrada = VFechaEntrada[1];
			var anyo_entrada = VFechaEntrada[2];
			
			var VFechaSalida = new Array();
			VFechaSalida = dia_salida.split('-');
			var dia_salida = VFechaSalida[0];
			var mes_salida = VFechaSalida[1];
			var anyo_salida = VFechaSalida[2];
			
			
			
			var fecha_entrada = new Date(anyo_entrada,mes_entrada-1,dia_entrada);
			var fecha_salida  = new Date(anyo_salida,mes_salida-1,dia_salida);

			//Lo convertimos a días.
			var dias = (fecha_salida-fecha_entrada)/1000; //pasamos a segundos
			dias = dias / 60; //pasamos a minutos
			dias = dias / 60; //pasamos a horas
			dias = dias / 24; //pasamos a dias
			dias = Math.abs(Math.round(dias));
			
			document.getElementById("form_nights").value = dias;
		}
		else
		{
			document.getElementById("form_date_in").value = document.getElementById("form_date_out").value;
		}		
		
		//Ocultamos el calendario
		cal.hide();
	}
}



/**
* Ordena la carga de fechas del calendario
*/
function CargarFechasCalendario()
{
	//Disparamos sobre la marcha la carga de los calendarios de los próximos meses.
	var date = new Date();	
	Disparador((date.getMonth()+1), date.getFullYear());
}


/**
* Hay que comprobar el formulario antes de darlo por bueno. Para ello comprobamos que se han puesto las dos fechas.
*/
function ComprobarFormulario()
{
	//Variable que indica si todo está correcto. Por defecto lo está.
	var Correcto = true;
	
	//Cacturamos los valores de las fechas
	var fecha_entrada = document.getElementById('form_date_in').value;
	var fecha_salida = document.getElementById('form_date_out').value;
	
	//Pasamos las fechas a un formato que se pueda comparar
	var VFechaEntrada = new Array();
	VFechaEntrada = fecha_entrada.split('-');
	var DiaEntrada = VFechaEntrada[0];
	var MesEntrada = VFechaEntrada[1];
	var AnyoEntrada = VFechaEntrada[2];
	
	var VFechaSalida = new Array();
	VFechaSalida = fecha_salida.split('-');
	var DiaSalida = VFechaSalida[0];
	var MesSalida = VFechaSalida[1];
	var AnyoSalida = VFechaSalida[2];
	
	var CFechaEntrada = VFechaEntrada[2]+VFechaEntrada[1]+VFechaEntrada[0];
	var CFechaSalida  = VFechaSalida[2]+VFechaSalida[1]+VFechaSalida[0];
	
	var Hoy = new Date() 
	var HoyAnyo = String(Hoy.getFullYear());
	var HoyMes = Hoy.getMonth()+1;
	if (10 > HoyMes)
	{
		HoyMes = "0"+HoyMes;
	}
	else
	{
		HoyMes = String(HoyMes);
	}
	var HoyDia = Hoy.getDate();
	if (10 > HoyDia)
	{
		HoyDia = "0"+HoyDia;
	}
	else
	{
		HoyDia = String(HoyDia);
	}
	
	CHoy = HoyAnyo+HoyMes+HoyDia;
	
	
	//comprobamos que se escribe la fecha de entrada
	if (fecha_entrada == '')
	{
		document.getElementById('error_fecha_entrada').className='texto_error_visible';
		Correcto = false;
	}
	else
	{
		document.getElementById('error_fecha_entrada').className='texto_error_invisible';
	}

	//comprobamos que se escribe la fecha de salida
	if (fecha_salida == '')
	{
		document.getElementById('error_fecha_salida').className='texto_error_visible';
		Correcto = false;
	}
	else
	{
		document.getElementById('error_fecha_salida').className='texto_error_invisible';
	}

	//La fecha de entrada no de debe se anterior al dia de hoy
	if (CFechaEntrada < CHoy)
	{
		document.getElementById('error_fecha_entrada_anterior_hoy').className='texto_error_visible';
		Correcto = false;
	}
	else
	{
		document.getElementById('error_fecha_entrada_anterior_hoy').className='texto_error_invisible';
	}
	
	//Comprobamos que las fecha de entrada es anterior a la fecha de salida
	if (fecha_entrada != '' && fecha_salida != '')
	{
		if(CFechaSalida <= CFechaEntrada)
		{
			document.getElementById('error_fecha').className='texto_error_visible';
			Correcto = false;
		}
		else
		{
			document.getElementById('error_fecha').className='texto_error_invisible';
		}
	}
	else
	{
		document.getElementById('error_fecha').className='texto_error_invisible';
	}
	
	/*Comprobamos que no hay dias ocupados entre las dos fecha elegidas, partimos de la fecha de entrada
	y vamos recorriendo los dias hasta llegar a la fecha de salida.*/
	var DateInicio=new Date(AnyoEntrada,MesEntrada-1,DiaEntrada);
	var DateFinal =new Date(AnyoSalida, MesSalida-1, DiaSalida );
	var DetectadoCierre = false;
	
	while(DateInicio < DateFinal && !DetectadoCierre)
	{
		DateInicio.setDate(DateInicio.getDate()+1);
		if (DiasOcupados[DateInicio.getFullYear()][DateInicio.getMonth()+1][DateInicio.getDate()] == 1)
		{
			document.getElementById('error_cierre').className='texto_error_visible';
			Correcto = false;
			DetectadoCierre = true;
		}
		
	}
	
	if (!DetectadoCierre)
	{
		document.getElementById('error_cierre').className='texto_error_invisible';	
	}


	if (true == Correcto)
	{
		document.getElementById('error').className='caja_error_invisible';
		return true;
	}
	else
	{
		document.getElementById('error').className='caja_error_visible';
		return false;
	}
}

/**
* Construye los calendarios para las entradas y salidas.
*/
function construir_calendario_reserva()
{	
	
	var Hoy = new Date();
	var Manyana = new Date();
	Manyana.setTime(Hoy.getTime() + (60*60*24*1000));
	var Quincena = new Date();
	Quincena.setTime(Hoy.getTime() + (60*60*24*1000*15));
	
	Fechas_Defecto();

	Calendar.setup(
						{
							inputField : "form_date_in", // ID of the input field
							ifFormat : "%d-%m-%Y", // the date format
							button : "fecha_entrada", // ID of the button
							//dateStatusFunc : ourDateStatusFuncInicio,
							disableFunc : disallowDate,
							onUpdate: checkDateRange_INN
						}
					);
					
	Calendar.setup(
						{
							inputField : "form_date_out", // ID of the input field
							ifFormat : "%d-%m-%Y", // the date format
							button : "fecha_salida", // ID of the button
							//dateStatusFunc : ourDateStatusFuncFin,
							disableFunc : disallowDate,
							//onSelect: ControlNavegacionFin,
							onSelect: checkDateRange_OUT
						}
					);
	
	//Cargamos las fechas del calendario por defecto y los Establecimientos
	CargarFechasCalendario();
	set_Establecimientos()
	
	//Cargemos el evento onchange para que carge los calendarios cuando se cambie de establecimiento
	document.getElementById("form_select").onchange = CargarFechasCalendario;
	
	//Cargamos fechas por defecto en los calendarios
	/*document.getElementById("form_date_in").value = '';
	document.getElementById("form_date_out").value = '';*/	

	//Antes de que se envien las fechas deben comprobarse para que los datos pasados sean correctos.
	document.getElementById("form_reserva").onsubmit = ComprobarFormulario;
}

/**
* Construye el SELECT de Establecimientos.
*/
function set_Establecimientos()
{
	// Buscamos el select de los Establecimientos
	var theSelect = document.getElementById("form_select");
	var Orden = new Array();
	var Index = new Array();
	if( theSelect )
		// Si existe, lo inicializamos
		if( theSelect.type.search(/select/i) == 0 )
		{
			theSelect.length = 0;
			if( Ocupacion )
				for( var i=1; i <= Ocupacion['establecimientos']; i++ )
				{
					if( Ocupacion[i]['activo'] ) 
					{
						Orden[parseInt( Ocupacion[i]['id'] )] = parseInt( Ocupacion[i]['orden'] );
						Index[parseInt( Ocupacion[i]['orden'] )] = parseInt( Ocupacion[i]['id'] );
					}
				}
				//Orden = Orden.split('-');
				Orden.sort();
				/*Added Pablo*/
				var alojamiento = document.getElementById('hotel_id');	
				/*End Added*/
				/*Added Antonio*/
				if( EstablecimientoActivo ) {alojamiento.value= EstablecimientoActivo;}
				/*End Added*/
				for( i in Orden )
				{
					{
						if( isNaN(Orden[i]) ) continue;
						theIndex = Index[Orden[i]];
						var y=document.createElement('option');																		
						y.text  = Ocupacion[theIndex]['nombre'];
						y.value = Ocupacion[theIndex]['id'];
						/*Added Pablo*/
						if(alojamiento && alojamiento.value == y.value){y.selected = true;}
						/*End Added*/
						try
						  {
						  theSelect.add(y,null); // standards compliant
						  }
						catch(ex)
						  {
						  theSelect.add(y); // IE only
						  }
					}
				}
		}
}
function right(str,nbr) {
   return str.substr(str.length-nbr)
   // return str.slice(-nbr)
}
var FreeCalendar = false;
function disallowDate(date) {
	// date is a JS Date object
	//alert(date);
	if ( FreeCalendar == true ) { return; }

	var Now= new Date();
	var strNow = Now.getFullYear()+right('0'+Now.getMonth(),2)+right('0'+(Now.getDate()+1),2);
	var strDate = date.getFullYear()+right('0'+date.getMonth(),2)+right('0'+date.getDate(),2);
	/*/
	if ( 
		date.getFullYear() == 2006 &&
		date.getMonth() == 0  &&
		date.getDate() == 5 
		) 
	/*/
	if ( strDate<strNow  ){ return true; } // Deshabilita la fecha
	return false; // Habilita la fecha
}
function checkDateRange_INN(cal)
{
	var AddDays =2; // Días a añadir
	var DateInput = cal.date
	var salida = DateAdd( 'd', AddDays, DateInput );
	
	//alert( cal.date + ' :: ' + cal.params.inputField.value + ' :: ' + salida );
	var DateSelected = cal.params.inputField.value.split( '-' );
	var DateCompared = document.getElementById("form_date_out").value.split('-');
	//var DateCompared = document.getElementById("form_date_out").value;
	DateSelected = DateSelected[2]+DateSelected[1]+DateSelected[0];
	DateCompared = DateCompared[2]+DateCompared[1]+DateCompared[0];
	if( DateCompared < DateSelected ) {
		document.getElementById("form_date_out").value = right('0'+(salida.getDate()),2)+'-'+right('0'+(salida.getMonth()+1),2)+'-'+salida.getFullYear();
	} else {
		//document.getElementById("form_date_in").value = salida.getDate()+'-'+salida.getMonth()+'-'+salida.getFullYear();
	}
	Calcular_Noches();
	if( cal.dateClicked ) cal.hide();
	return true;
}
function checkDateRange_OUT(cal, date)
{
	var DateSelected = date.split( '-' );
	var DateCompared = document.getElementById("form_date_in").value.split('-');

	DateSelected = DateSelected[2]+DateSelected[1]+DateSelected[0];
	DateCompared = DateCompared[2]+DateCompared[1]+DateCompared[0];
	if( DateCompared > DateSelected ) {
		Alerta_Fechas_Incongruentes();
	} else {
		document.getElementById("form_date_out").value = date;
		Calcular_Noches();
	}
	if( cal.dateClicked ) cal.hide();
	return;
}
function Calcular_Noches()
{
	var dia_entrada = document.getElementById("form_date_in").value;
	var dia_salida  = document.getElementById("form_date_out").value;
	
	var VFechaEntrada = new Array();
	VFechaEntrada = dia_entrada.split('-');
	var dia_entrada = VFechaEntrada[0];
	var mes_entrada = VFechaEntrada[1];
	var anyo_entrada = VFechaEntrada[2];
	
	var VFechaSalida = new Array();
	VFechaSalida = dia_salida.split('-');
	var dia_salida = VFechaSalida[0];
	var mes_salida = VFechaSalida[1];
	var anyo_salida = VFechaSalida[2];

	var fecha_entrada = new Date(anyo_entrada,mes_entrada-1,dia_entrada);
	var fecha_salida  = new Date(anyo_salida,mes_salida-1,dia_salida);

	//Lo convertimos a días.
	var dias = (fecha_salida-fecha_entrada)/1000; //pasamos a segundos
	dias = dias / 60; //pasamos a minutos
	dias = dias / 60; //pasamos a horas
	dias = dias / 24; //pasamos a dias
	dias = Math.abs(Math.round(dias));
	
	document.getElementById("form_nights").value = dias;
}
function Alerta_Fechas_Incongruentes()
{
	alert( '¡Fecha de salida no puede ser anterior a la fecha de entrada!' );
}
function Fechas_Defecto() {

	var Hoy = new Date();
	var DateIn = document.getElementById("form_date_in").value;
	var DateOut = document.getElementById("form_date_out").value;

	if( DateIn != '' && DateOut != '') return;
	if( DateIn == '' ) {
		document.getElementById("form_date_in").value = right('0'+(Hoy.getDate()+1),2)+'-'+right('0'+(Hoy.getMonth()+1),2)+'-'+Hoy.getFullYear();
	}
	if( DateOut == '' ) {
		Hoy = DateAdd( 'd', 3, Hoy );
		document.getElementById("form_date_out").value = right('0'+(Hoy.getDate()),2)+'-'+right('0'+(Hoy.getMonth()+1),2)+'-'+Hoy.getFullYear();
	}
	Calcular_Noches();
}
function DateAdd(per,n,d) {
   switch(per) {
      case "yyyy": d.setYear(d.getFullYear()+n); break
      case "m": d.setMonth(d.getMonth()+n); break
      case "ww": n*=7
      case "d": d.setDate(d.getDate()+n); break
      case "h": d.setHours(d.getHours()+n); break
      case "n": d.setMinutes(d.getMinutes()+n); break
      case "s": d.setSeconds(d.getSeconds()+n)
   }
   return d
}
function Get_EstablecimientoID()
{
	try
	{
		return document.forms.form_reserva['form_establishment'].value;
	} catch(e) {
		return 0;
	}
}
