function mktime(fecha) {
	var diasxmes = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	var f=fecha.split('/');
	var dias = 0;
	var dia = parseInt(f[0],10);
	var mes = parseInt(f[1],10);
	var anio = parseInt(f[2],10);
	for (var i=2000; i<anio; i++) {
		dias += 365; if (i%4==0) dias++;
	}
	for (var i=1; i<mes; i++) {
		dias += diasxmes[i-1]; if ((i==2) && (anio%4==0)) dias++;
	}
	dias += (dia-1);
	return dias;
}

function validar_fecha(dia,mes,anio) {
	var diasxmes = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if (anio%4==0) diasxmes[1] = 29;
	if (dia <= diasxmes[mes-1]) return true;
	else return false;
}

function validar_datos_reserva (form, hoy) {
	var error = false;
	
	if (form) {
		if ((form.diain.value == '') || (form.mesin.value == '') || (form.anioin.value == '')) {
			alert('No ha indicado la fecha de inicio');
			error = true;
		}else if (!validar_fecha(parseInt(form.diain.value, 10),parseInt(form.mesin.value, 10),parseInt(form.anioin.value, 10))) {
			alert('La fecha de inicio es incorrecta');
			error = true;
		}else {
			form.fentrada.value = form.diain.value + '/' + form.mesin.value + '/' + form.anioin.value;
		}
		
		if (error) return false;
		
	
		if (mktime(form.fentrada.value)<=mktime(hoy)) {
			alert ('La fecha de inicio tiene que ser posterior a la fecha de hoy');
			error = true;
		}else if ((form.diaout.value == '') || (form.mesout.value == '') || (form.anioout.value == '')) {
			alert('No ha indicado la fecha final');
			error = true;
		}else if (!validar_fecha(parseInt(form.diaout.value, 10),parseInt(form.mesout.value, 10),parseInt(form.anioout.value, 10))) {
			alert('La fecha final es incorrecta');
			error = true;
		}else {
			form.fsalida.value = form.diaout.value + '/' + form.mesout.value + '/' + form.anioout.value;
		}
	
		if (error) return false;
		
		
		if (mktime(form.fentrada.value)>=mktime(form.fsalida.value)) {
			alert ('La fecha final tiene que ser posterior a la fecha de inicio');
			error = true;
		}else if ((mktime(form.fsalida.value)-mktime(form.fentrada.value))>30) {
			alert ('El perido reserva online solo puede ser un mes como máximo. Para estancias superiores pongase en contaco.');
			error = true;
		}else if ((form.adultos.value == '') || (parseInt(form.adultos.value, 10) == 0)) {
			alert ('Tiene que seleccionar los ocupantes');
			error = true;
		}
		
	}
	
//	if ((!error) && (l=document.getElementById('loading'))) l.style.display='';

	if (error)	return false;
	else		return true;
}

function validar_tarjeta (cadena) {
	var longitud = cadena.length;
	var cifra = null;
	var cifra_cad=null;
	var suma=0;
	for (var i=0; i < longitud; i+=2){
		cifra = parseInt(cadena.charAt(i))*2;
		// Si la cifra resultante es mayor que 9 sumamos las cifras
		if (cifra > 9){ 
			cifra_cad = cifra.toString();
			cifra = parseInt(cifra_cad.charAt(0))+parseInt(cifra_cad.charAt(1));
		}
		suma+=cifra;
	}
	// Paso 2: Tomamos las cifras en posiciones pares y las sumamos
	for (var i=1; i < longitud; i+=2){
		suma += parseInt(cadena.charAt(i));
	}
		
	// Paso 3: Comprobamos que el resultado es múltiplo de 10
	if ((suma % 10) == 0)	{
		// Si todo es correcto devolvemos false
		error = false;
	} else {
		// Sino devolvemos el error
		error = true;
	}
	return error;
}

function validar_datos_cliente (form, hoy) {
	var error = false;
	var shab = false;

	if (form) {
		if (form.habitacion.length) {
			for (i=0; i<form.habitacion.length; i++) {
				if (form.habitacion[i].checked == true) {
					shab = true;
				}
			}
			if (shab == false) {
				alert ('Tiene que seleccionar el tipo de habitación');
				error = true;
			}
		}else if (form.habitacion.checked == false) {
			alert ('Tiene que seleccionar el tipo de habitación');
			error = true;
		}
		
		if (error) return false;
		
		if (form.nombre.value == '') {
			alert ('Falta su nombre');
			form.nombre.select();
			error = true;
		}else if (form.apellidos.value == '') {
			alert ('Faltan sus apellidos');
			form.apellidos.select();
			error = true;
		}else if (form.nacionalidad.value == '') {
			alert ('Falta sus nacionalidad');
			form.nacionalidad.select();
			error = true;
		}else if (form.dni.value == '') {
			alert ('Falta su documento');
			form.dni.select();
			error = true;
		}else if (form.telefono.value == '') {
			alert ('Falta su teléfono');
			form.telefono.select();
			error = true;
		}else if (form.email.value == '') {
			alert ('Falta su email');
			form.email.select();
			error = true;
		}else if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form.email.value)) {
			alert ('El email no es correcto');
			form.email.select();
			error = true;
		}else if (form.direccion.value == '') {
			alert ('Falta su dirección');
			form.direccion.select();
			error = true;
		}else if (form.cp.value == '') {
			alert ('Falta su código postal');
			form.cp.select();
			error = true;
		}else if (form.ciudad.value == '') {
			alert ('Falta su ciudad');
			form.ciudad.select();
			error = true;
		}else if (form.pais.value == '') {
			alert ('Falta su pais');
			form.pais.select();
			error = true;
		}else if (!/^\d{16}$/.test(form.tarjeta.value)) {
			alert ('La tarjeta es incorrecta. Escriba los número sin espacios ni guiones.');
			error = true;
		}else if (validar_tarjeta(form.tarjeta.value)) {
			alert ('El número de tarjeta no corresponde con una tarjeta válida');
			error = true;
		}else if ((form.tarjetaMes.value=='') || (form.tarjetaAnio.value=='')) {
			alert ('La fecha de caducidad de su tarjeta no puede estar en blanco');
			error = true;
		}else {
			tarjetaCaducidad = '01/' + form.tarjetaMes.value + '/' + form.tarjetaAnio.value;
		}

		if (error) return false;

		if (mktime(tarjetaCaducidad)<=mktime(hoy)) {
			alert ('Su tarjeta ha caducado');
			error = true;
		}
	}

	if (error)	return false;
	else		return true;
}

function validar_datos_contacto (form) {
	var error = false;

	if (form) {
		if (form.nombre.value == '') {
			alert ('Falta su nombre');
			form.nombre.select();
			error = true;
		}else if (form.email.value == '') {
			alert ('Faltan su email');
			form.email.select();
			error = true;
		}else if (!/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(form.email.value)) {
			alert ('El email no es correcto');
			form.email.select();
			error = true;
		}else if (form.telefono.value == '') {
			alert ('Falta su Teléfono');
			form.telefono.select();
			error = true;
		}else if (form.mensaje.value == '') {
			alert ('No ha indicado su mensaje');
			error = true;
		}
	}

	if (error)	return false;
	else		return true;
}
