
function restarFechas(f0, f1) {
var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
var fecha0 = f0;

var matchArray0 = fecha0.match(datePat);
month0 = matchArray0[3];
day0 = matchArray0[1];
year0 = matchArray0[5];


var fecha1 = f1;
var matchArray1 = fecha1.match(datePat);
month1 = matchArray1[3];
day1 = matchArray1[1];
year1 = matchArray1[5];

var fechaIni = new Date();
fechaIni.setFullYear(year0, month0, day0)

var fechaFin = new Date();
fechaFin.setFullYear(year1, month1, day1)

var resta = fechaFin - fechaIni;
resta = resta/86400000;
resta = Math.round (resta);
return(resta);

} 



  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, 4, "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;
  }

function ponerFecha()
{
	var i = 1;
	f = new Date();
	d = f.getDate();
	m = f.getMonth() + 1;
	a = f.getFullYear();

	document.reservas.llegada,value = d + "-" + m + "-" + a;
	document.reservas.noches.value = 3;
	document.reservas.adultos.value = 2;

	return 0
}

function fecha_valida(f,noc,adu)
{
var error = 0;
/* la forma de verificar el formato es la que ya comentamos */
re=/^[0-9][0-9]-[0-9][0-9]-[0-9][0-9][0-9][0-9]$/
if(f.length==0 || !re.exec(f))
{
	alert("La fecha no tiene formato correcto.");
	error = 1;
}

var d = new Date()
d.setFullYear(f.substring(6,10), 
	      f.substring(3,5)-1,
	      f.substring(0,2))

if(d.getMonth() != f.substring(3,5)-1 
	|| d.getDate() != f.substring(0,2))
{
	alert("La fecha de llegada introducida no es válida.")
	error = 1
}

noc = parseInt(noc);
adu = parseInt(adu);
if (noc.length==0 || isNaN(noc)) { error=1; alert ('Debe especificar un número de noches'); }
if (adu.length==0 || isNaN(adu)) { error=1; alert ('Debe especificar un número de adultos'); }

return error
}

function reservar_ya()
{
	document.reservas.noches.value = restarFechas (document.reservas.llegada.value,document.reservas.salida.value);
	if ( fecha_valida (document.reservas.llegada.value, document.reservas.noches.value, document.reservas.adultos.value) == 0)
		document.reservas.submit();
}


