function validarLong(campo, long){
	valor=document.getElementById(campo).value;
	if(valor.length!=long){
		alert("El campo " + campo + " debe tener " + long + " caracteres");
		return false;
	}
	else return true;
}

function validarLongEntero(campo, long){
	valor=document.getElementById(campo).value;
	if(!esEntero(valor) || valor.length!=long){		
		return false;
	}
	else return true;
}

function esVacio(valor){
	valor = trim(valor);
	if(valor=="" || valor==null)
		return true;
	else
		return false;	
}

function trim(cadena){
	for(i=0; i<cadena.length; )
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(i+1, cadena.length);
		else
			break;
	}

	for(i=cadena.length-1; i>=0; i=cadena.length-1)
	{
		if(cadena.charAt(i)==" ")
			cadena=cadena.substring(0,i);
		else
			break;
	}
	
	return cadena;
}

function esLong(valor){
	coma = valor.match(/^[0-9]+(,[0-9]+)?$/);
	punto = valor.match(/^[0-9]+(.[0-9]+)?$/);
	return(coma || punto);
}

function esDNI(DNI){	
	if(DNI.length!=8)return false;
	//Comprobamos si es un NIE
	primer = DNI.substring(0,1).toUpperCase();
	if(primer=="X" || primer=="Y"){
		if(!(/[0-9]{7}/.test(DNI.substring(1))))return false;
	}
	else if(!(/[0-9]{8}/.test(DNI))){return false;}
	
	
	return true;
}

function esNIF(NIF){		
	if(NIF.length!=9){
		alert("EL NIF o NIE ha de tener 9 caracteres");
		return false;}
	//Comprobamos si es un NIE
	primer = NIF.substring(0,1).toUpperCase();
	letra = NIF.substring(8,9).toUpperCase();
	if(primer=="X" || primer=="Y" || primer=="Z"){
		//Para validar la letra final hay que añadir como número inicial 0, 1, 2 en función de la letra inicial
		switch (primer){
			case "X": numeroNIE="0"; break;
			case "Y": numeroNIE="1"; break;
			case "Z": numeroNIE="2"; break;
		}
		digitos = NIF.substring(1,8);
		//alert (digitos);
		if(!(/[0-9]{7}/.test(digitos))){
			//alert("NIE: letra (X, Y, Z) + 7 dígitos + letra");
			return false;}
		digitos = numeroNIE + digitos;	
	}
	else{		
		digitos = NIF.substring(0,8);
		//alert (digitos);
		if(!(/[0-9]{8}/.test(digitos))){
			alert("NIF: 8 dígitos + letra");
			return false;
		}
	}

	if(letra!=letraNIF(digitos)){
			//alert(letra + " != " + letraNIF(digitos));
			alert("La letra final del NIF o NIE no es correcta");
			return false;}	

	return true;
}

function letraNIF(dni){
	var letras="TRWAGMYFPDXBNJZSQVHLCKET";
	var posicion= dni % 23;
	return letras.charAt(posicion);
}

function esEntero(numero){
	var Template = /^\d+$/; //Formato de numero entero sin signo
	return Template.test(numero);
}

function validarFecha(fecha){
	var Temp1 = /^\d{1,2}\/\d{1,2}\/\d{2,4}$/;
	var Temp2 = /^\d{1,2}\-\d{1,2}\-\d{2,4}$/; 
	return (Temp1.test(fecha) || Temp2.test(fecha));
}

//Comprobamos que no es sábado ni domingo
//Previamente se debería haber comprobado que la fecha es correcta
function obtenerNumeroDiaSemana(fecha){
	if(fecha.lastIndexOf('-')==-1){
		fechaT = fecha.split("/");
	}
	else{
		fechaT = fecha.split("-");
	}

	fecha1 = new Date(fechaT[2], fechaT[1]-1, fechaT[0]);
	numero = fecha1.getDay();
	if(numero==0)numero=7;
	return numero;
}

function validarHora(hora){
//Si no se han incluído los minutos
	if(hora.lastIndexOf(':')==-1){
		if(hora.length==2){hora = hora + ":00";}
		else if(hora.length==1){hora = "0" + hora + ":00";}
	}
	else{
		horasT = hora.split(":");
		if(horasT[0].length==1)horasT[0]= "0" + horasT[0];
		if(horasT[1].length==1)horasT[1]=  horasT[1] + "0";
		hora = horasT[0] + ":" + horasT[1];
	}

	if(/^(0[0-9]|1\d|2[0-3]):([0-5]\d)$/.test(hora)){
		return hora;}
	else{return false;}
}

function validarOrdenHoras(hora1, hora2){
	hora1T = validarHora(hora1);
	hora2T = validarHora(hora2);
	
	if(hora1T=="" || hora2T =="" || hora2T<=hora1T){return false;}
	return true;
}

function validarDuracion(hora1, hora2){
	horas1=hora1.split(":");
	horas2=hora2.split(":");
	for(a=0;a<2;a++){
		/*en Javascript los números que empiezan en cero se consideran de base octal
		Por lo tanto 08 y 09 no existen.
		Por eso hay que pasarle parseInt la base del sistema de numeración a usar (10)*/
		horas1[a]=(isNaN(parseInt(horas1[a], 10)))?0:parseInt(horas1[a], 10);
		horas2[a]=(isNaN(parseInt(horas2[a], 10)))?0:parseInt(horas2[a], 10);
	}

	fecha1 = new Date(1970,1,1,horas1[0],horas1[1],0,0);
	fecha2 = new Date(1970,1,1,horas2[0],horas2[1],0,0);
	var duracion = fecha2.getTime()-fecha1.getTime();//Milisegundos
	//alert (duracion);
	if(duracion < 3600000)return false;
	return true;
 }

function esCorreo(correo) {
	if(/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)*(\.[a-zA-Z]{2,4})$/.test(correo)){return true;}
	else {return false;}
}

function esTelefono(tlf){	
	if(tlf.length==9 && (/^\d{1,9}$/.test(tlf))){
		caracter=tlf.charAt(0);
		if(!(caracter=="9" || caracter=="6" || caracter=="7"))
		{
			alert("El primer dígito del teléfono no es válido.");
			return false;
		}
	return true;
	}
	alert("Hay algún carácter no válido en el número de teléfono.");
	return false;
}

//Se utiliza para comprobar que la clave introducida es correcta
function validarClaves(clave1, clave2, long){
		if(clave1.length<long){			
			alert("La contraseña debe tener un mínimo de " + long + " caracteres.");
			return false;
		}

		if(clave1!=clave2){
			alert("Las contraseñas introducidas no son iguales.");
			return false;
		}
	return true;
}
