numeros="0123456789";
var error=new Array();
error[0]="Se deben rellenar todos los campos con asterisco";
error[1]="El número de habitaciones con cama supletoria debe ser inferior o igual al número de habitaciones total";
error[2]="La cantidad de habitaciones y de camas supletorias debe ser un número";
error[3]="Formato de fecha de entrada incorrecto, el formato debe ser dd/mm/aaaa";
error[4]="Fecha de entrada no real, verifíquela y vuelva a intentarlo";
error[5]="Formato de fecha de salida incorrecto, el formato debe ser dd/mm/aaaa";
error[6]="Fecha de salida no real, verifíquela y vuelva a intentarlo";
error[7]="Formato de e-mail incorrecto";
error[8]="E-mail incorrecto (e-mail y e-mail repetido deben ser iguales)"


function numero(c)
{
	return numeros.indexOf(c)>=0;
}

function esNatural(contenido)
{
	if(contenido.length==0)	
		return true;
		
	if(contenido=="0")
	    return false;
		
	for(var i=0;i<contenido.length;i++)
		if(!numero(contenido.charAt(i)))
			return false;
	return true;		
}

//Devuelve verdadero si la cadena "contenido" es vacia
function esVacio(contenido)
{
	if(contenido.length==0)
		return true;

	return false;
}

//Devuelve verdadero si el mail pasado como argumento tiene un formato correcto
function esFormatoMailCorrecto(correo)
{
 	 //Se crea una expresión regular que empareje el formato correcto del correo
     var e=new RegExp("([A-Za-z0-9\.]+)([A-Za-z0-9]+)@([A-Za-z0-9\.]+)[\.]([A-Za-z0-9]+)","g"); //g indica que se explora la cadena completa
	 var resultado;
	 
	 if((resultado=e.exec(correo))!=null) //Intenta emparejar el correo según la expresión regular e
	 {
	     //Lo que se empareje debe ser igual a la cadena (sólo un correo)
		 if(resultado[0]==correo)
	           return true;
	 }
	 
	 return false;
}



//Devuelve verdadero si la fecha pasada como argumento tiene un formato correcto
function esFormatoFechaCorrecto(fecha)
{
 	 //Se crea una expresión regular que empareje el formato correcto de la fecha
     var e=new RegExp("[0-9]{2}\/[0-9]{2}\/[0-9]{4}","g"); //g indica que se explora la cadena completa
	 var resultado;
	 
	 if((resultado=e.exec(fecha))!=null) //Intenta emparejar la fecha según la expresión regular e
	 {
	     //Lo que se empareje debe ser igual a la cadena (sólo una fecha)
		 //   Ejemplo: no sería válida la fecha 20/11/2002/2 y, sin embargo, sí se empareja
	     if(resultado[0]==fecha)
	           return true;
	 }
	 
	 return false;
}

//Devuelve verdadero si la fecha es real (es decir, es posible que se dé la fecha)
function esFechaReal(fecha)
{
     var aux;
	 var dia, mes, anyo;
	 
	 //split divide la cadena fecha en función del separados "/"
	 //aux[0] -> dia
	 //aux[1] -> mes
	 //aux[2] -> año
	 aux=fecha.split("/");
	 
	 //Se convierten el día, mes y año en enteros en base 10
	 dia=parseInt(aux[0],10);
	 mes=parseInt(aux[1],10);
	 anyo=parseInt(aux[2],10);
	 	 
	 //Dia mes y año no pueden ser 0.
	 if(dia==0 || mes==0 || anyo==0)
	      return false;
	 
	 //Dia no puede ser mayor de 31 y mes no puede ser mayor de 12
	 if(dia>31 || mes>12)
	      return false;
	
	//Abril, junio, septirmbre y noviembre tienen 30 días
	 if(dia==31)
	      if(mes==4 || mes==6 || mes==9 || mes==11)
		       return false;
	 
	 //Caso de febrero: tiene como mucho 29 días si es año es bisiesto (cada 4 años -> resto de la división del año entre 4 es 0)
	 if(mes==2)
	      if(dia==31 || dia==30 || (dia==29 && anyo%4!=0))
		       return false;
     
	 return true;
}

function todoNaturales()
{
	if(esNatural(document.reservas.hab_individual.value)
	|| esNatural(document.reservas.hab_doble.value)
	|| esNatural(document.reservas.num_sup_doble.value)
	|| esNatural(document.reservas.hab_matrimonio.value)
	|| esNatural(document.reservas.num_sup_matrimonio.value)
	|| esNatural(document.reservas.hab_triple.value)
	|| esNatural(document.reservas.num_sup_triple.value))
		return true;		
	else
		return false;
}


function camaSupletoriaOK()
{
	if(document.reservas.hab_doble.value>=document.reservas.num_sup_doble.value
	&& document.reservas.hab_matrimonio.value>=document.reservas.num_sup_matrimonio.value
	&& document.reservas.hab_triple.value>=document.reservas.num_sup_triple.value)
		return true;
	else
		return false;
}

function validaFormulario()
{
	if(esVacio(document.reservas.nombre.value)
	|| esVacio(document.reservas.dni.value)
	|| esVacio(document.reservas.pais.value)
	|| esVacio(document.reservas.email.value)
	|| document.reservas.hora_llegada.value==-1)
	{
		alert(error[0]);
		return false;
	}
	else
	{
		if(todoNaturales())
		{
			if(camaSupletoriaOK())
			{
				if(!esFormatoFechaCorrecto(document.reservas.fechaEntrada.value))
	     		{
				     alert(error[3]);
					 return false;
				}
				else
				{
	   			     if(!esFechaReal(document.reservas.fechaEntrada.value))
	   			     {
		   		          alert(error[4]);
						  return false;
	   				 }
				}
				
				if(!esFormatoFechaCorrecto(document.reservas.fechaSalida.value))
	     		{
				     alert(error[5]);
					 return false;
				}
				else
				{
	   			     if(!esFechaReal(document.reservas.fechaSalida.value))
	   			     {
		   		          alert(error[6]);
						  return false;
	   				 }
				}
				
				if(!esFormatoMailCorrecto(document.reservas.email.value) || !esFormatoMailCorrecto(document.reservas.email2.value))
				{
		   		          alert(error[7]);
					  return false;
	   			}

				if(document.reservas.email.value!=document.reservas.email2.value)
				{
					alert(error[8]);
					return false;

				}
				
				return true;
			}
			else
			{
				alert(error[1]);
				return false;
			}
		}
		else
		{
			alert(error[2]);
			return false;
		}
	}
}
