function Validar(Length,MaxLength){
	
	CambiaComillaPegado('frmDatos');

//Propósito:	Comprobar que se han rellenado todos los elementos obligatorios
//Entradas:		sNuevo=indica si se trata de un nuevo registro o de una modificación
//Efectos:		Muestra un mensaje de error informando de cada uno de los campos erroneos y
//				marca el nombre del campo erroneo en rojo

	//establezco las variables que me indicaran si todo esta correcto y las que mostrarán los posibles errores
	var bTodoOK=true;
	var sErroresIni="<table width='100%' cellpadding='0' cellspacing='0'><tr><td class='error'><b>Errores</b></td></tr>";
	var sErroresFin="</table>";
	var sErrores="";

	//llamo a la función que lo resetea todo para que no se muestren errores corregidos
	Limpia();

	//validamos el correo		
	if (Trim(document.frmDatos.txtLogin.value.length)==0){
			sErrores=sErrores+"<tr><td class='error'>Por favor escriba una direcci&oacute;n de <b>e-mail</b></td></tr>";
			bEmailOK=false;
	}else{//si escribe algo le validamos el correo o login
		
		//comienza el procedimiento de validación del email
		var sEmail=Trim(document.frmDatos.txtLogin.value)
		
		//establezco el formato de una direccion de correo electrónico, ( algo@algo.xx) 
		var sEmailPat=/^(.+)@(.+)$/ 
		
		// Verificar la existencia de caracteres. ( ) < > @ , ; : \ " . [ ] 
		var sSpecialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]" 
		
		// Verifica los caracteres que son válidos en una dirección de email
		var sValidChars="\[^\\s" + sSpecialChars + "\]" 
		
		var sQuotedUser="(\"[^\"]*\")" 
		
		// Verifica si la dirección de email está representada con una dirección IP Válida 
		var sIpDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
		
		var bEmailOK=true;
		
		// Verificar caracteres inválidos 
		var atom=sValidChars + '+'
		var word="(" + atom + "|" + sQuotedUser + ")"
		var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
		var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
		
		
		var matchArray=sEmail.match(sEmailPat)
		//si no coincide con el formato establecido casca
		if (matchArray==null){		
			sErrores=sErrores+"<tr><td class='error'>Por favor escriba una direcci&oacute;n de <b>e-mail</b> v&aacute;lida</td></tr>";
			bEmailOK=false;
		}else{
			var user=matchArray[1]
			var domain=matchArray[2]
		
			// Si el user "user" es valido 
			if (user.match(userPat)==null) {
			// Si no
				sErrores=sErrores+"<tr><td class='error'>Por favor escriba una direcci&oacute;n de <b>e-mail</b> v&aacute;lida</td></tr>";
				bEmailOK=false;
			}else{
			
				// Si la dirección IP es válida 
				var IPArray=domain.match(sIpDomainPat)
				if (IPArray!=null) {
					for (var i=1;i<=4;i++) {
						if (IPArray[i]>255) {
							sErrores=sErrores+"<tr><td class='error'>Por favor escriba una direcci&oacute;n de <b>e-mail</b> v&aacute;lida</td></tr>";
							bEmailOK=false;
						}
					}
				}
				if (bEmailOK){
					var domainArray=domain.match(domainPat)
					//si el dominio tiene un formato no válido casca
					if (domainArray==null) {
						sErrores=sErrores+"<tr><td class='error'>Por favor escriba una direcci&oacute;n de <b>e-mail</b> v&aacute;lida</td></tr>";
						bEmailOK=false;
					}else{
						
						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){ 
							sErrores=sErrores+"<tr><td class='error'>Por favor escriba una direcci&oacute;n de <b>e-mail</b> v&aacute;lida</td></tr>";
							bEmailOK=false;
						}else{
							if (len<2) {
								var errStr="La direcci&oacute;n es erronea"
								sErrores=sErrores+"<tr><td class='error'>Por favor escriba una direcci&oacute;n de <b>e-mail</b> v&aacute;lida</td></tr>";
								bEmailOK=false;
							}
						}
					}
				}
			}		
		}			
	}	
	
	if (!bEmailOK){//el Email era erroneo o nulo
			bTodoOK=false;
			document.getElementById("cabLogin").innerHTML="<font color='red'>!Identificador</font>";
	}

	//si se han encontrado errores debo mostrarlos
	if (bTodoOK==false){
		document.getElementById("Errores").innerHTML=sErroresIni + sErrores + sErroresFin;
		location.href="#";
		return false;
	}
	
	return true;
}

function Limpia(){
//Propósito:	Restaurar las cadenas de error a su forma original
//Efectos:		Reemplaza los posibles mensajes  de error por los textos originales de los campos
	
	document.getElementById("Errores").innerHTML="";
	document.getElementById("cabLogin").innerHTML="<strong>¿Ha olvidado su contraseña?</strong>";
}