function letraDNI (campoD,campoL)
{

var validos;
var cadena;
var erroresDNI;
var campoDNI = eval("document.formulario." + campoD);
var campoLetra = eval("document.formulario." + campoL);

campoLetra.value = ""; // borramos la letra o numero que pudiera haber tecleado
validos='0123456789';
erroresDNI = false;
cadena = campoDNI.value;
			
 for (j=0;j<cadena.length;j++)
 {
   if ((validos.indexOf(cadena.charAt(j))==-1) && (erroresDNI == false))
   {
 	 alert("El DNI solo puede contener caracteres numéricos.\nIntroduzca el DNI sin letra, puntos o espacios en blanco.");
	 erroresDNI = true;
	 campoDNI.focus();
	 return 0;
   }
   
   if ((cadena.charAt(j)=='.') && (erroresDNI == false)) {
	 if ((j!=cadena.length-1) && (cadena.charAt(j+1)=='.') && (erroresDNI == false)) {
	   alert("Recuerde que el DNI solo puede contener caracteres numéricos.");
	   erroresDNI = true;
       campoDNI.focus();
	   return 0;
	  }
	 }
 }

	if (erroresDNI == false) {
		cadena="TRWAGMYFPDXBNJZSQVHLCKET";
		posicion = campoDNI.value % 23;
		letra = cadena.substring(posicion,posicion+1);
		//ponemos la letra en su lugar
		if (campoDNI.value != "") {
			campoLetra.value = letra;
		}
		return 1;
  }
} 


function longMinima(cadena, min) {

var longitud = cadena.length;

if (longitud < min) {
	return false;
} else {
	return true;	
}
		
}

function longMaxima(cadena, max) {

var longitud = cadena.length;

if (longitud > max) {
	return false;
} else {
	return true;	
}
		
}


function soloNumeros(cadena)
			   {
			     validos='0123456789';
			
			     // Comprobamos que cadena no tenga algún carácter no contemplado
			     // en el string validos y que no existan dos puntos contiguos
			     for (j=0;j<cadena.length;j++)
			     {
			       if (validos.indexOf(cadena.charAt(j))==-1) return true;
			       if (cadena.charAt(j)=='.')
			         if ((j!=cadena.length-1) && (cadena.charAt(j+1)=='.'))
			           return true;
			     }
			     return false; // No se ha encontrado ninguna irregularidad
			   }

function echeck(email) {
	
  if (email.indexOf(' ')!=-1) // Comprobamos que email no contenga espacios,tampoco en los laterales
			       return false;
			    if (email.indexOf('@')==-1) // Comprobamos que exista al menos un carácter @
			    {
			       return false;
			    }
			    else
			    {
			      var posarroba=email.indexOf('@');
			      var nombre=email.substring(0, posarroba);
			      var dominio=email.substring(posarroba+1);
			
			      // Comprobamos que nombre tenga al menos un carácter
			      if (nombre.length==0)
			         return false;
			
			      // Comprobamos que nombre no sea un solo punto
			      if (nombre=='.')
			         return false;
			
			      // Comprobamos que dominio tenga al menos un carácter
			      if (dominio.length==0)
			         return false;
			
			      // Comprobamos que dominio tenga al menos existe un punto
			      if (dominio.indexOf('.')==-1)
			         return false;
			
			      // Comprobamos que la ni la primera ni la última posición del dominio sea el punto
			      len_dom=dominio.length - 1;
			      if ((dominio.charAt(0)=='.')||(dominio.charAt(len_dom)=='.'))
			         return false;
						    
			    }
			    return true;
			  
			  
			  }
	
	
function CharInCorrectos(cadena)
			   {
			     validos='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_.';
			
			     // Comprobamos que cadena no tenga algún carácter no contemplado
			     // en el string validos y que no existan dos puntos contiguos
			     for (i=0;i<cadena.length;i++)
			     {
			       if (validos.indexOf(cadena.charAt(i))==-1) return true;
			       if (cadena.charAt(i)=='.')
			         if ((i!=cadena.length-1) && (cadena.charAt(i+1)=='.'))
			           return true;
			     }
			     return false; // No se ha encontrado ninguna irregularidad
			   }
			   
			   
			 
			 
   
    var a, mes, dia, anyo, febrero;
   
    /**
    * funcion para comprobar si una año es bisiesto
    * argumento anyo > año extraido de la fecha introducida por el usuario
    */
    function anyoBisiesto(anyo)
    {
        /**
        * si el año introducido es de dos cifras lo pasamos al periodo de 1900. Ejemplo: 25 > 1925
        */
        if (anyo < 100)
            var fin = anyo + 1900;
        else
            var fin = anyo ;

        /*
        * primera condicion: si el resto de dividir el año entre 4 no es cero > el año no es bisiesto
        * es decir, obtenemos año modulo 4, teniendo que cumplirse anyo mod(4)=0 para bisiesto
        */
        if (fin % 4 != 0)
            return false;
        else
        {
            if (fin % 100 == 0)
            {
                /**
                * si el año es divisible por 4 y por 100 y divisible por 400 > es bisiesto
                */
                if (fin % 400 == 0)
                {
                    return true;
                }
                /**
                * si es divisible por 4 y por 100 pero no lo es por 400 > no es bisiesto
                */
                else
                {
                    return false;
                }
            }
            /**
            * si es divisible por 4 y no es divisible por 100 > el año es bisiesto
            */
            else
            {
                return true;
            }
        }
    }
   
    /**
    * funcion principal de validacion de la fecha
    * argumento fecha > cadena de texto de la fecha introducida por el usuario
    */
    function validarFecha(mifecha, minfecha, maxfecha)
    {
       /**
       * obtenemos la fecha introducida y la separamos en dia, mes y año
       */
       a = mifecha;
       dia=a.split("/")[0];
       mes=a.split("/")[1];
       anyo=a.split("/")[2];
    if( (isNaN(dia)==true) || (isNaN(mes)==true) || (isNaN(anyo)==true) )
    {
        alert("La fecha introducida debe estar en el formato dd/mm/aaaa.");
     return false;
       }
       if(anyoBisiesto(anyo))
           febrero=29;
       else
           febrero=28;
       /**
       * si el mes introducido es negativo, 0 o mayor que 12 > alertamos y detenemos ejecucion
       */
       if ((mes<1) || (mes>12))
       {
           alert("El mes introducido no es valido. Por favor, introduzca un mes correcto.");
           document.forms[0].fecha.focus();
           document.forms[0].fecha.select();
           return false;
       }
       /**
       * si el mes introducido es febrero y el dia es mayor que el correspondiente
       * al año introducido > alertamos y detenemos ejecucion
       */
       if ((mes==2) && ((dia<1) || (dia>febrero)))
       {
           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto.");
           document.forms[0].fecha.focus();
           document.forms[0].fecha.select();
           return false;
       }
       /**
       * si el mes introducido es de 31 dias y el dia introducido es mayor de 31 > alertamos y detenemos ejecucion
       */
       if (((mes==1) || (mes==3) || (mes==5) || (mes==7) || (mes==8) || (mes==10) || (mes==12)) && ((dia<1) || (dia>31)))
       {
           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto.");
           document.forms[0].fecha.focus();
           document.forms[0].fecha.select();
           return false;
       }
       /**
       * si el mes introducido es de 30 dias y el dia introducido es mayor de 301 > alertamos y detenemos ejecucion
       */
       if (((mes==4) || (mes==6) || (mes==9) || (mes==11)) && ((dia<1) || (dia>30)))
       {
           alert("El dia introducido no es valido. Por favor, introduzca un dia correcto.");
           document.forms[0].fecha.focus();
           document.forms[0].fecha.select();
           return false;
       }
       /**
       * si el mes año introducido es menor que 1900 o mayor que 2010 > alertamos y detenemos ejecucion
       * NOTA: estos valores son a eleccion vuestra, y no constituyen por si solos fecha erronea
       */
       if ((anyo < minfecha) || (anyo > maxfecha))
       {
           alert("El año introducido no es valido. Por favor, introduzca un año entre " + minfecha + " y " + maxfecha);
		   return false;
       }
       /**
       * en caso de que todo sea correcto > enviamos los datos del formulario
       * para ello debeis descomentar la ultima sentencia
       */
       else
         
		  return true;
         
    }    
