// JavaScript Document
		function numero_valido(cadena){
			if (isNaN(cadena)){
				return false;
			}else{
				return true;
			}
		}
//Validación Email
	function emailCheck (emailStr) {
		/* Verificar si el email tiene el formato user@dominio. */
		var emailPat=/^(.+)@(.+)$/ ;
		
		/* Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ] */
		var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" ;
		
		/* Verifica los caracteres que son válidos en una dirección de email */
		var validChars="\[^\\s" + specialChars + "\]" ;
	
		var quotedUser="(\"[^\"]*\")" ;
	
		/* Verifica si la dirección de email está representada con una dirección IP Válida */ 
		var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/ ;
	
		/* Verificar caracteres inválidos */ 
		var atom=validChars + '+' ;
		var word="(" + atom + "|" + quotedUser + ")" ;
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$") ;
		/*domain, as opposed to ipDomainPat, shown above. */
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
		
		var matchArray=emailStr.match(emailPat)
		if (matchArray==null) {
			alert("El Email parece incorrecto (revise la @ y el .')")
			return false
		}
		var user=matchArray[1]
		var domain=matchArray[2]
		
		// Si el user "user" es valido 
		if (user.match(userPat)==null) {
		// Si no
			alert("El nombre de usuario no es válido.")
			return false
		}
		
		/* Si la dirección IP es válida */
		var IPArray=domain.match(ipDomainPat)
		if (IPArray!=null) {
			for (var i=1;i<=4;i++) {
				if (IPArray[i]>255) {
					alert("IP de destino inválida")
					return false
				}
			}
			return true
		}
		
		var domainArray=domain.match(domainPat)
		if (domainArray==null) {
			alert("El dominio parece no ser válido.")
			return false
		}
		
		var atomPat=new RegExp(atom,"g")
		var domArr=domain.match(atomPat)
		var len=domArr.length
		if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) { 
			alert("La dirección debe tener 3 letras si es .com o 2 si en de algún pais.")
			return false
		}
		
		if (len<2) {
			var errStr="La dirección es erronea"
			alert(errStr)
			return false
		}
		
		// La dirección de email ingresada es Válida
		return true;
	}
//Fin validación Email	
	function hora_valida(hora){
		var bValido = true;
		var aHora = hora.split(":");
		bValido = isFinite(aHora[0]);
		if(bValido){
			bValido = (aHora[0] > 23 || aHora[0] < 0)?false:true;
			if(bValido){
				bValido = (aHora[1] > 59 || aHora[1] < 0)?false:true;
				if(bValido){
					bValido = isFinite(aHora[1]);
					if (bValido){
						bValido = (aHora[0]<0 || aHora[0]>24)?false:true;
						if (bValido){
							bValido = (aHora[1]<0 || aHora[1]>60)?false:true;
						}
					}
				}
			}
		}
		if (!bValido){
			alert("La HORA introducida no es válida.")
		}
		return bValido;
	}
/*	
	function fecha_valida(fecha){
		var bValido = true;
		var aValores = fecha.split("/");
alert("FECHA: "+fecha+"|"+aValores[0]+"|"+aValores[1]+"|"+aValores[2])		
		if (fecha.indexOf("/")<0){
			bValido = false;
			alert("1");
		}else if(isNaN(aValores[0])){
			bValido = false;
			alert("2");			
		}else  if(parseInt(aValores[0]) > 31 || parseInt(aValores[0]) < 1){
			bValido = false;
			alert("3");			
		}else if(isNaN(aValores[1])){
			bValido = false;
			alert("4");			
		}else if(parseInt(aValores[1]) > 12 || parseInt(aValores[1]) < 1){
			bValido = false;
			alert("5");			
		}else if(isNaN(aValores[2])){
			bValido = false;			
			alert("6");			
		}else if(parseInt(aValores[2]) > 2050 || parseInt(aValores[2]) < 1500){
			bValido = false;			
			alert("7");			
		}
		var dia = aValores[0];
		var mes = aValores[1];
		var anio = aValores[2];
		
		if ( (anio%4 != 0) && (mes ==02) && (dia > 28) ) { 
			bValido = false;
			alert("8");						
		}
	}
*/
function fecha_valida(fecha){
	var date_regex = /^\d{1,2}\/\d{1,2}\/\d{4}$/;
	var dia = fecha.split("/")[0];
	var mes = fecha.split("/")[1];
	var anio = fecha.split("/")[2];
	var maxDia;
	if (!date_regex.test(fecha)){ //La expresión regular valida que el formato se nn/nn/nnnn;
		return false;
	}
	if (mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12 ){
		maxDia = 31;
	}else{
		maxDia = 30;
	}
	if ( dia < 1 || dia > maxDia){
		return false;
	}
	if (mes < 1 || mes > 12){
		return false;
	}
	if (anio < 1900 || anio > 2100){
		return false;
	}
	if ( (anio%4 != 0) && (mes ==02) && (dia > 28) ) { 
		return false;
	}

	return true;
}


	function requeridosCompletos(frmP){

		var frm = (typeof(eval("document."+frmP)) == "undefined")? document.getElementById(frmP) : eval("document."+frmP);
		
		var esValido = true;
		for (i=0;i < frm.elements.length ; i++){
			if (frm.elements[i].name.substr(0,1) == "R"){//es requerido
				if (frm.elements[i].value == ""){
					alert("El campo "+frm.elements[i].name.substr(2)+" es Requerido");
					esValido = false;
				}else{//Si hay valor comprobamos q sea correcto
					if (frm.elements[i].name.substr(1,1) == "T"){//Si es texto pasa.
						
					}else if ((frm.elements[i].name.substr(1,1) == "N")) {//Número
						if (!numero_valido(frm.elements[i].value)){
							alert("El número introducido en "+frm.elements[i].name.substr(2)+" no es válido.");
							esValido = false;
						}
						
					}else if ((frm.elements[i].name.substr(1,1) == "E")) {//Email
						if (!emailCheck(frm.elements[i].value)){
							esValido = false;
						}
					}else if ((frm.elements[i].name.substr(1,1) == "H")) {//Hora
						if (!hora_valida(frm.elements[i].value)){
							esValido = false;
						}
					}else if ((frm.elements[i].name.substr(1,1) == "F")) {//Fecha
						if (!fecha_valida(frm.elements[i].value)){
							alert("La fecha introducida en "+frm.elements[i].name.substr(2)+" no es válida. El formato necesario es dd/mm/aaaa.");
							esValido = false;
						}
					}
					
				}
			}else{//es opcional, pero debemos comprobar q el valor sea correcto
				if (frm.elements[i].value != ""){
					if (frm.elements[i].name.substr(1,1) == "T"){//Si es texto pasa.
						
					}else if ((frm.elements[i].name.substr(1,1) == "N")) {//Número
						if (!numero_valido(frm.elements[i].value)){
							alert("El número introducido en "+frm.elements[i].name.substr(2)+" no es válido.");
							esValido = false;
						}
						
					}else if ((frm.elements[i].name.substr(1,1) == "E")) {//Email
						if (!emailCheck(frm.elements[i].value)){
							esValido = false;
						}
					}else if ((frm.elements[i].name.substr(1,1) == "H")) {//Email
						if (!hora_valida(frm.elements[i].value)){
							esValido = false;
						}
					}else if ((frm.elements[i].name.substr(1,1) == "F")) {//Fecha
						if (!fecha_valida(frm.elements[i].value)){
							alert("La fecha introducida en "+frm.elements[i].name.substr(2)+" no es válida. El formato necesario es dd/mm/aaaa.");
							esValido = false;
						}
					}					
				}
			}
		}
		return esValido;
	}	
