// JavaScript Document

function numeroNoches(v1,v2){  
    var d1 = v1.split("/");  
    var dat1 = new Date(d1[2], parseFloat(d1[1])-1, parseFloat(d1[0]));  
    var d2 = v2.split("/");  
    var dat2 = new Date(d2[2], parseFloat(d2[1])-1, parseFloat(d2[0]));  
    var fin = dat2.getTime() - dat1.getTime();  
    var dias = Math.floor(fin / (1000 * 60 * 60 * 24))    
    return Math.abs(dias);  
} 

var aFinMes = new Array(31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31); 
  
  function finMes(nMes, nAno){ 
    return aFinMes[nMes - 1] + (((nMes == 2) && (nAno % 4) == 0)? 1: 0); 
  } 

  function padNmb(nStr, nLen, sChr){ 
    var sRes = String(nStr); 
    for (var i = 0; i < nLen - String(nStr).length; i++) 
     sRes = sChr + sRes; 
    return sRes; 
   } 
  
  function makeDateFormat(nDay, nMonth, nYear){ 
    var sRes; 
    sRes = padNmb(nDay, 2, "0") + "/" + padNmb(nMonth, 2, "0") + "/" + padNmb(nYear, 2, "0"); 
    return sRes; 
   }
  
  function incDate(sFec0){ 
    var nDia = parseInt(sFec0.substr(0, 2), 10); 
    var nMes = parseInt(sFec0.substr(3, 2), 10); 
    var nAno = parseInt(sFec0.substr(6, 4), 10); 
    nDia += 1; 
    if (nDia > finMes(nMes, nAno)){ 
     nDia = 1; 
     nMes += 1; 
    if (nMes == 13){ 
     nMes = 1; 
     nAno += 1; 
    } 
   } 
   return makeDateFormat(nDia, nMes, nAno); 
  } 

  function decDate(sFec0){ 
   var nDia = Number(sFec0.substr(0, 2)); 
   var nMes = Number(sFec0.substr(3, 2)); 
   var nAno = Number(sFec0.substr(6, 4)); 
   nDia -= 1; 
   if (nDia == 0){ 
    nMes -= 1; 
    if (nMes == 0){ 
     nMes = 12; 
     nAno -= 1; 
    } 
    nDia = finMes(nMes, nAno); 
   } 
   return makeDateFormat(nDia, nMes, nAno); 
  } 
  
  function addToDate(sFec0, sInc){ 
   var nInc = Math.abs(parseInt(sInc)); 
   var sRes = sFec0; 
   if (parseInt(sInc) >= 0) 
    for (var i = 0; i < nInc; i++) sRes = incDate(sRes); 
   else 
    for (var i = 0; i < nInc; i++) sRes = decDate(sRes); 
   return sRes; 
  }
  
  /* Funciones búsquedas de hotel */
  function recalcF1_hotel(form){
		nNoches = form.busq_hotel_n_noches.value;
		form.busq_hotel_fhasta.value = addToDate(form.busq_hotel_fdesde.value, nNoches ); 
		switch(nNoches){
			case '1':case '2':	form.busq_hotel_mdesde.value = addToDate(form.busq_hotel_fdesde.value, -6);
						break;
			case '3':case '4':	form.busq_hotel_mdesde.value = addToDate(form.busq_hotel_fdesde.value, -5);
						break;
			case '5':case '6':	form.busq_hotel_mdesde.value = addToDate(form.busq_hotel_fdesde.value, -4);
						break;
			case '7':case '8':	form.busq_hotel_mdesde.value = addToDate(form.busq_hotel_fdesde.value, -3);
						break;
			case '9':case '10':	form.busq_hotel_mdesde.value = addToDate(form.busq_hotel_fdesde.value, -2);
						break;
			case '11':case '12':form.busq_hotel_mdesde.value = addToDate(form.busq_hotel_fdesde.value, -1);
						break;
			case '13':case '14':case '15':	form.busq_hotel_mdesde.value = addToDate(form.busq_hotel_fdesde.value,  0);
						break;
		}
		form.busq_hotel_mhasta.value = addToDate(form.busq_hotel_mdesde.value, 15);
	}
	
	function recalcula_hotel(cal) {
		recalcF1_hotel(document.form_hoteles);
	}
	
	function calcularNoches_hotel(cal) {
   //Obtiene los datos del formulario  
   CadenaFecha1 = document.form_hoteles.busq_hotel_fhasta.value;  
   CadenaFecha2 = document.form_hoteles.busq_hotel_fdesde.value; 
     
   //Obtiene dia, mes y año  
   var fecha1 = new fecha( CadenaFecha1 );
   var fecha2 = new fecha( CadenaFecha2 );
     
   //Obtiene objetos Date  
   var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia );
   var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia );
  
   //Resta fechas y redondea  
   var diferencia = miFecha1.getTime() - miFecha2.getTime();
   var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
   var segundos = Math.floor(diferencia / 1000);

	 if(dias<0){
	 	alert ('La fecha de salida debe ser superior a la de entrada.');
	 	document.form_hoteles.busq_hotel_fdesde.value = document.form_hoteles.busq_hotel_fdesde.value;
	 	document.form_hoteles.busq_hotel_n_noches.value = 1;
	 	recalcF1(document.form_hoteles);
	 } else {
	 	dias = numeroNoches(CadenaFecha1,CadenaFecha2);
	 	document.form_hoteles.busq_hotel_n_noches.value = dias;
	 }
   return false;
	}
	
	/* Funciones búsquedas de casas */
	function recalcF1_casa(form){
		nNoches = form.busq_casa_n_noches.value;
		form.busq_casa_fhasta.value = addToDate(form.busq_casa_fdesde.value, nNoches ); 
		switch(nNoches){
			case '1':case '2':	form.busq_casa_mdesde.value = addToDate(form.busq_casa_fdesde.value, -6);
						break;
			case '3':case '4':	form.busq_casa_mdesde.value = addToDate(form.busq_casa_fdesde.value, -5);
						break;
			case '5':case '6':	form.busq_casa_mdesde.value = addToDate(form.busq_casa_fdesde.value, -4);
						break;
			case '7':case '8':	form.busq_casa_mdesde.value = addToDate(form.busq_casa_fdesde.value, -3);
						break;
			case '9':case '10':	form.busq_casa_mdesde.value = addToDate(form.busq_casa_fdesde.value, -2);
						break;
			case '11':case '12':form.busq_casa_mdesde.value = addToDate(form.busq_casa_fdesde.value, -1);
						break;
			case '13':case '14':case '15':	form.busq_casa_mdesde.value = addToDate(form.busq_casa_fdesde.value,  0);
						break;
		}
		form.busq_casa_mhasta.value = addToDate(form.busq_casa_mdesde.value, 15);
  }
 
	function recalcula_casa(cal) {
		recalcF1_casa(document.form_casas);
	}

	function calcularNoches_casa(cal) {
   //Obtiene los datos del formulario  
   CadenaFecha1 = document.form_casas.busq_casa_fhasta.value;  
   CadenaFecha2 = document.form_casas.busq_casa_fdesde.value; 
     
   //Obtiene dia, mes y año  
   var fecha1 = new fecha( CadenaFecha1 );
   var fecha2 = new fecha( CadenaFecha2 );
     
   //Obtiene objetos Date  
   var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia );
   var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia );
  
   //Resta fechas y redondea  
   var diferencia = miFecha1.getTime() - miFecha2.getTime();
   var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
   var segundos = Math.floor(diferencia / 1000);

	 if(dias<0){
	 	alert ('La fecha de salida debe ser superior a la de entrada.');
	 	document.form_casas.busq_casa_fdesde.value = document.form_casas.busq_casa_fdesde.value;
	 	document.form_casas.busq_casa_n_noches.value = 1;
	 	recalcF1(document.form_casas);
	 } else {
	 	dias = numeroNoches(CadenaFecha1,CadenaFecha2);
	 	document.form_casas.busq_casa_n_noches.value = dias;
	 }
   return false;
	}

/* Funciones Búsqueda genérica */
function recalcF1(form){
	nNoches = form.busq_disp_n_noches.value;
	form.busq_disp_fhasta.value = addToDate(form.busq_disp_fdesde.value, nNoches ); 
	switch(nNoches){
		case '1':case '2':	form.busq_disp_mdesde.value = addToDate(form.busq_disp_fdesde.value, -6);
						break;
		case '3':case '4':	form.busq_disp_mdesde.value = addToDate(form.busq_disp_fdesde.value, -5);
						break;
		case '5':case '6':	form.busq_disp_mdesde.value = addToDate(form.busq_disp_fdesde.value, -4);
						break;
		case '7':case '8':	form.busq_disp_mdesde.value = addToDate(form.busq_disp_fdesde.value, -3);
						break;
		case '9':case '10':	form.busq_disp_mdesde.value = addToDate(form.busq_disp_fdesde.value, -2);
						break;
		case '11':case '12':form.busq_disp_mdesde.value = addToDate(form.busq_disp_fdesde.value, -1);
						break;
		case '13':case '14':case '15':	form.busq_disp_mdesde.value = addToDate(form.busq_disp_fdesde.value,  0);
						break;
	}
	form.busq_disp_mhasta.value = addToDate(form.busq_disp_mdesde.value, 15);
} 

function recalcula(cal) {
	recalcF1(document.busq_disp);
}


function calcularNoches(cal) {
   //Obtiene los datos del formulario  
   CadenaFecha1 = document.busq_disp.busq_disp_fhasta.value;  
   CadenaFecha2 = document.busq_disp.busq_disp_fdesde.value; 
   
     
   //Obtiene dia, mes y año  
   var fecha1 = new fecha( CadenaFecha1 );
   var fecha2 = new fecha( CadenaFecha2 );
     
   //Obtiene objetos Date  
   var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia );
   var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia );
  
   //Resta fechas y redondea  
   var diferencia = miFecha1.getTime() - miFecha2.getTime();
   var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
   var segundos = Math.floor(diferencia / 1000);
   
	 if(dias<0){
	 	alert ('La fecha de salida debe ser superior a la de entrada.');
	 	document.busq_disp.busq_disp_fhasta.value = document.busq_disp.busq_disp_fdesde.value;
	 	document.busq_disp.busq_disp_n_noches.value = 1;
	 	recalcF1(document.busq_disp);
	 } else {
	 	dias = numeroNoches(CadenaFecha1,CadenaFecha2);
	 	document.busq_disp.busq_disp_n_noches.value = dias;
	 }
   return false;
}

/* Funciones búesqueda formulario previo */

 function recalcF1_form_previo(form){
	//alert(form.nro_noches.value);
	 nNoches = form.nro_noches.value;
 	//alert(nNoches);
     form.FECHA_HASTA.value = addToDate(form.FECHA_DESDE.value, nNoches ); 
	 switch(nNoches){
		case '1':case '2':	form.mostrar_desde.value = addToDate(form.FECHA_DESDE.value, -6);
						break;
		case '3':case '4':	form.mostrar_desde.value = addToDate(form.FECHA_DESDE.value, -5);
						break;
		case '5':case '6':	form.mostrar_desde.value = addToDate(form.FECHA_DESDE.value, -4);
						break;
		case '7':case '8':	form.mostrar_desde.value = addToDate(form.FECHA_DESDE.value, -3);
						break;
		case '9':case '10':	form.mostrar_desde.value = addToDate(form.FECHA_DESDE.value, -2);
						break;
		case '11':case '12':form.mostrar_desde.value = addToDate(form.FECHA_DESDE.value, -1);
						break;
		case '13':case '14':case '15':	form.mostrar_desde.value = addToDate(form.FECHA_DESDE.value,  0);
						break;
	 }
	 form.mostrar_hasta.value = addToDate(form.mostrar_desde.value, 15);
	//
   } 

function recalcula_form_previo(cal) {
	recalcF1_form_previo(document.form_reserva_previa);
}

function calcularNoches_form_previo(cal) {
   //Obtiene los datos del formulario  
   CadenaFecha1 = document.form_reserva_previa.FECHA_HASTA.value;  
   CadenaFecha2 = document.form_reserva_previa.FECHA_DESDE.value; 
     
   //Obtiene dia, mes y año  
   var fecha1 = new fecha( CadenaFecha1 );
   var fecha2 = new fecha( CadenaFecha2 );
     
   //Obtiene objetos Date  
   var miFecha1 = new Date( fecha1.anio, fecha1.mes-1, fecha1.dia );
   var miFecha2 = new Date( fecha2.anio, fecha2.mes-1, fecha2.dia );
  
   //Resta fechas y redondea  
   var diferencia = miFecha1.getTime() - miFecha2.getTime();
   var dias = Math.floor(diferencia / (1000 * 60 * 60 * 24));
   var segundos = Math.floor(diferencia / 1000);

	 if(dias<0){
	 	alert ('La fecha de salida debe ser superior a la de entrada.');
	 	document.form_reserva_previa.FECHA_HASTA.value = document.form_reserva_previa.FECHA_DESDE.value;
	 	document.form_reserva_previa.nro_noches.value = 1;
	 	recalcF1(document.form_reserva_previa);
	 } else {
	 	dias = numeroNoches(CadenaFecha1,CadenaFecha2);
	 	document.form_reserva_previa.nro_noches.value = dias;
	 }
   return false;
}

/*******************************************************************/

function fecha(cadena) {  
  
   //Separador para la introduccion de las fechas  
   var separador = "/"  
  
   //Separa por dia, mes y año  
   if ( cadena.indexOf( separador ) != -1 ) {  
        var posi1 = 0  
        var posi2 = cadena.indexOf( separador, posi1 + 1 )  
        var posi3 = cadena.indexOf( separador, posi2 + 1 )  
        this.dia = cadena.substring( posi1, posi2 )  
        this.mes = cadena.substring( posi2 + 1, posi3 )  
        this.anio = cadena.substring( posi3 + 1, cadena.length )  
   } else {  
        this.dia = 0  
        this.mes = 0  
        this.anio = 0     
   }  
}

function enviarFormulario (form) {
	form.submit();
}

/* Al pulsar un tag se agrega al campo de búsqueda de destino */

function agregarTag (tag) {
		document.busq_disp.busq_disp_destino.value = tag;
		return false;
}

function iSubmitEnterDisp(oEvento, oFormulario, form){
     var iAscii;

     if (oEvento.keyCode)
         iAscii = oEvento.keyCode;
     else if (oEvento.which)
         iAscii = oEvento.which;
     else
         return false;

     //if (iAscii == 13) oFormulario.submit();
     
     if (iAscii == 13) validar_busq_disp (form);

     return true;
} 

function iSubmitEnter(oEvento, oFormulario){
     var iAscii;

     if (oEvento.keyCode)
         iAscii = oEvento.keyCode;
     else if (oEvento.which)
         iAscii = oEvento.which;
     else
         return false;

     if (iAscii == 13) oFormulario.submit();

     return true;
} 

/* Validar el formulario de busqueda de disponibilidad */

function validar_busq_disp (form) {
	
	if (form.tipo_conjunto[0].checked){
		form.busq_disp_tipo_conjunto.value = '0,2'
		form.action = form.parametro_dominio.value+"/casas-rurales.php";
	}
	if (form.tipo_conjunto[1].checked){
		form.busq_disp_tipo_conjunto.value = '1'
		form.action = form.parametro_dominio.value+"/hoteles-rurales.php";
	}
	if (form.busq_disp_destino.style.color == 'gray') {
		form.busq_disp_destino.value = '';
	}
	
	if(form.busq_disp_tipo_conjunto.value!=''){
		form.submit();
	} else {
		alert("Debe Seleccionar Hotel Rural o Casa Rural.");
		form.tipo_conjunto[0].focus();
		return false;
	}

}

/* Eliminar Todos los datos del formulario */

function borrar_datos_form (form) {
	
	var destino=document.getElementById("busq_disp_destino");
	destino.value = '';
	var fdesde=document.getElementById("busq_disp_fdesde");
	fdesde.value = '';
	var fhasta=document.getElementById("busq_disp_fhasta");
	fhasta.value = '';
	var nnoches=document.getElementById("busq_disp_n_noches");
	nnoches.value = '';
	var pdesde=document.getElementById("pdesde");
	pdesde.value = '1';
	var phasta=document.getElementById("phasta");
	phasta.value = '99';
	var provincia=document.getElementById("busq_disp_provincia");
	provincia.value = '';
	//var piscina=document.getElementById("13");
	//piscina.checked= false;
	//var adperro=document.getElementById("caracteristicas14");
	//adperro.checked= false;

	return true;
}

function borrarDescripcion(identificador) {
	var destino = document.getElementById(identificador);
	destino.value = '';
	destino.style.color = 'black';
	return true;
}