var defaultEmptyOK = false
var digits = "0123456789";
var lowercaseLetters = "abcdefghijklmnopqrstuvwxyzáéíóúñü"
var uppercaseLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZÁÉÍÓÚÑ"
var whitespace = " \t\n\r";

var phoneChars = "()-+ ";

function isEmpty(s)
{   return ((s == null) || (s.length == 0))
}

function isDigit (c)
{   return ((c >= "0") && (c <= "9"))
}

function isLetterOrDigit (c)
{   return (isLetter(c) || isDigit(c))
}

function ValidBlanks(frmField,strFldName)
{
	if (frmField.value == "" || frmField.value == null)
	{
	        alert("Debe insertar algo en el campo " + strFldName);
	        frmField.focus();
	        return (false);
	} 
	return (true);
}
//CAMBIO añadir esta funcion 
function BusqCaracteres(texto)
{
	var txt = texto.toString()
	var valido = true
	for(var i = 0;i < texto.length;i++)
	{
		var oneChar = txt.charAt(i)
		if (oneChar == "<" || oneChar == ">"  || oneChar == "#" || oneChar == "/" || oneChar == '\"'  || oneChar == "\'" || oneChar == "\\"  )
		{
			valido = false
		}
	}
	if (!valido)
		return false
	else
		return true
	
}
function ValidField(strFldName,frmField,intLength,strDtType,obligatorio)
{

	switch (strDtType)
		{
			case 'string' : 
					if ((obligatorio) && (!ValidBlanks(frmField,strFldName))) return (false);

					if (frmField.value != "")
						//CAMBIO añadir esta primera condicion
						if(!BusqCaracteres(frmField.value))
							{
							alert("el campo " + strFldName + " contiene caracteres extraños")
							frmField.focus();
							return (false);				
							}
						if (frmField.value.length > intLength)
							{
							alert("La longitud del campo " + strFldName + " no debe ser superior a " + intLength + " caracteres");
							frmField.focus();
							return (false);
							}
				break;
			case 'mail': 
					if ((obligatorio) && (!ValidBlanks(frmField,strFldName))) return (false);
					
					if (frmField.value != "")
						if (!isEmail(frmField.value))
							{
							alert("El contenido del campo " + strFldName + " no es correcto");
							frmField.focus();
							return (false);
							}	
				break;	
			case 'nif': 
					if ((obligatorio) && (!ValidBlanks(frmField,strFldName))) return (false);
					
					if (frmField.value != "")
						if (!isNif(frmField.value))
							{
							alert("El contenido del campo " + strFldName + " no es correcto");
							frmField.focus();
							return (false);
							}	
				break;				
			case 'number': 
					if ((obligatorio) && (!ValidBlanks(frmField,strFldName))) return (false);
					
					if (frmField.value != "")
						if (!isNumber(frmField.value))
							{
							alert("El contenido del campo " + strFldName + " debe ser numerico");
							frmField.focus();
							return (false);
							}	
				break;
			case 'hour': 
					if ((obligatorio) && (!ValidBlanks(frmField,strFldName))) return (false);
								
					if (frmField.value != "")
						if (!isHour(frmField.value))
							{
							alert("El contenido del campo " + strFldName + " no es una hora correcta.El formato correcto es 00:00.");
							frmField.focus();
							return (false);
							}	
				break;	
			case 'date': 
					if ((obligatorio) && (!ValidBlanks(frmField,strFldName))) return (false);
					
					if (frmField.value != "")
						if (isDate(frmField.value)== false)
							{
							alert("El contenido del campo " + strFldName + " no es una fecha correcta. El formato correcto es DD/MM/AAAA.");
							frmField.focus();
							return (false);
							}
				break;
			case 'list' : 
                    if ((obligatorio) && (frmField.selectedIndex==0))
                    {
                            alert("Debe seleccionar algún valor de la lista " + strFldName );
                            frmField.focus();
                            return (false);
                    }
				break;

			case 'positivo' : 
					if ((obligatorio) && (!ValidBlanks(frmField,strFldName))) return (false);
					
					if (frmField.value != "")
						if ((!isNumber(frmField.value))||(frmField.value<0))
							{
							alert("El contenido del campo " + strFldName + " debe ser positivo.");
							frmField.focus();
							return (false);
							}	
				break;				
								
		}
	return (true);
}


function isInteger (s)
{   var i;
    if (isEmpty(s)) 
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);
    
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if( i != 0 ) {
            if (!isDigit(c)) return false;
        } else { 
            if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}

function isNumber (s)
{   
    var i;
    var dotAppeared;
    dotAppeared = false;
    if (isEmpty(s)) 
       if (isNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isNumber.arguments[1] == true);
    
    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if( i != 0 ) {
            if ( c == "," ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else     
                if (!isDigit(c) && c != ".") return false;
        } else { 
            if ( c == "," ) {
                if( !dotAppeared )
                    dotAppeared = true;
                else
                    return false;
            } else
                if (!isDigit(c) && (c != "-") || (c == "+")) return false;
        }
    }
    return true;
}

function isAlphabetic (s)
{   var i;

    if (isEmpty(s)) 
       if (isAlphabetic.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphabetic.arguments[1] == true);
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is letter.
        var c = s.charAt(i);

        if (!isLetter(c))
        return false;
    }
    return true;
}


function isAlphanumeric (s)
{   var i;

    if (isEmpty(s)) 
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    for (i = 0; i < s.length; i++)
    {   
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    return true;
}

function isName (s)
{
    if (isEmpty(s)) 
       if (isName.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);
    
    return( isAlphanumeric( stripCharsInBag( s, whitespace ) ) );
}

letras = new Array("t","r","w","a","g","m","y","f","p","d","x","b","n","j","z","s","q","v","h","l","c","k","e");
function isNif(nif)
{
  nif=nif.toLowerCase();
  nifcorrecto = true;
  dni=nif.substring(0,nif.length-1);
  dni=parseInt(dni);
  letra=nif.charAt(nif.length-1);
  letraCorrecta = letras[ dni % 23];

  if (dni > 99999999)
    nifcorrecto = false;
  if(letra!=letraCorrecta)
    nifcorrecto = false;
    
   if (nifcorrecto) 
	return true;
   else
	return false;
}

function isPhoneNumber (s)
{   var modString;
    if (isEmpty(s)) 
       if (isPhoneNumber.arguments.length == 1) return defaultEmptyOK;
       else return (isPhoneNumber.arguments[1] == true);
    modString = stripCharsInBag( s, phoneChars );
    return (isInteger(modString))
}

function isEmail (s) 
{
	if (isEmpty(s))
		return false; 
	var i = 1; var sLength = s.length; 
	while ((i < sLength) && (s.charAt(i) != "@")) 
	{ 
		i++;
	}
	if ((i >= sLength) || (s.charAt(i) != "@")) 
		return false; 
	else 
		i += 2;
	
	while ((i < sLength) && (s.charAt(i) != ".")) 
	{
		i++; 
	}
	if ((i >= sLength - 1) || (s.charAt(i) != ".")) 
	 	return false; 

	
	else return true; 
} 
function isHour(s)
{
	var Horacorrecta=true
	var horas,min
	horas=parseInt(s.substring(0,2),10)
	min=parseInt(s.substring(3,5),10)
	
	if(s.length!=5) Horacorrecta=false;
	if(s.indexOf(':')==-1) Horacorrecta=false;
	if(horas>24|| horas<0) Horacorrecta=false;
	if(min>60 || min<0) Horacorrecta=false;
	if(isNaN(horas))Horacorrecta=false;
	if(isNaN(min))Horacorrecta=false;
		
	if(Horacorrecta)
		return true
	else
		return false
}
function isDate(s)
{
    var day,month,year,mod,chr
    if (s==null || s.length==0)
        return true
    if (s.length!=10)
        return false

    for (var ij=0;ij<10;ij++)
    {
        chr=s.charAt(ij)
        if (ij!=2 && ij!=5)
        {
            if (chr<"0"||chr>"9") return false
        }
        else
        {
            if (chr!="/") return false
        }
    }
    
/*    day=parseInt(s.substring(0,2),10)
    month=parseInt(s.substring(3,5),10)
    year=parseInt(s.substring(6,10),10)*/

	tempoDate=s.split("/");
	day=parseInt(tempoDate[0],10);
    month=parseInt(tempoDate[1],10);
    year=parseInt(tempoDate[2],10);

    if (1>day || day>31)
        return false
    if (1>month || month>12)
        return false
    if ((1>year)&&(year.length!=4))
        return false
    if ((month==4 || month==6 || month==9 || month==11) && day==31)
        return false
    if (month==2)
    {
        mod=year%4
    	if (mod==0)
    	{
            mod=year%100
	    if(mod==0)
	    {
                var mod2=year%400
                if(mod2==0 &&  day>29)
                    return false
                else if(mod2!=0 && day>28)
                    return false
            }
	    else if(day>29)
	        return false
        }
        else if (day>28)
            return false
    }
    return true 		
}

function compDates(s1, s2)
{
    var f1, f2	

    f1 = s1.substring(6,10) + "/";    
    f1 = f1 + s1.substring(3,5) + "/";
    f1 = f1 + s1.substring(0,2);

    f2 = s2.substring(6,10) + "/";    
    f2 = f2 + s2.substring(3,5) + "/";
    f2 = f2 + s2.substring(0,2);
	if (f1 == f2) 
		return 0
	else	
    	return (f1 < f2) + 1
}

function validatePass(login, pass) {
		
	var TAMANO_PASSWORD = 6;
	var TAMANO_NOMBRE_USUARIO = 4;
	
	var valid=true;
	
	// Validamos que no contenga en el password el nombre
	if (login.value!='' && login.value.length >= TAMANO_NOMBRE_USUARIO) {
         var length = login.value.length;
         var i=0;
         
         for ( i = 0; i < length - 2; i++) {              	 
             var sub = login.value.substring(i, i + 3);
             if (pass.value.toUpperCase().indexOf(sub.toUpperCase()) > -1 ) {
            	 alert('Error de complejidad. Password contiene parte del login');
            	 pass.focus();  
            	 valid = false;       
            	 return valid;
             }
         }
     }else{
    	 alert('Error de complejidad. Nombre de usuario ha de tener al menos '+TAMANO_NOMBRE_USUARIO+ ' caracteres');
    	 login.focus();  
    	 valid = false;    
     }
	if (valid){
		if (pass.value!='' && pass.value.length >= TAMANO_PASSWORD) {			   	
			// Validamos el patron
		    var RegExPattern = ".*[A-Z].*[a-z].*[0-9].*" +
			"|.*[A-Z].*[0-9].*[a-z].*" +
			"|.*[a-z].*[A-Z].*[0-9].*" +
			"|.*[a-z].*[0-9].*[A-Z].*" +
			"|.*[0-9].*[A-Z].*[a-z].*" +
			"|.*[0-9].*[a-z].*[A-Z].*";   
	   
		    if (pass.value.match(RegExPattern)) {   
		        //alert('Password Correcta');    
		    	valid = true;    
		    } else {   
		        alert('Error de complejidad. Password no contiene variedad en los caracteres.');           
		        pass.focus();  
		        valid = false;    
		    }   
		}else{
			 alert('Error de complejidad. Password ha de tener al menos '+TAMANO_PASSWORD+ ' caracteres');
			 pass.focus();  
	    	 valid = false; 
		}
	}
	return valid;
} 
function validatePassName(name, pass) {
	
	var TAMANO_PASSWORD = 6;
	var TAMANO_NOMBRE_USUARIO = 4;
	
	var valid=true;
	
	// Validamos que no contenga en el password el nombre
	if (name!='' && name.length >= TAMANO_NOMBRE_USUARIO) {
         var length = name.length;
         var i=0;
         
         for ( i = 0; i < length - 2; i++) {              	 
             var sub = name.substring(i, i + 3);
             if (pass.value.toUpperCase().indexOf(sub.toUpperCase()) > -1 ) {
            	 alert('Error de complejidad. Password contiene parte del login');
            	 pass.focus();  
            	 valid = false;       
            	 return valid;
             }
         }
     }else{
    	 alert('Error de complejidad. Nombre de usuario ha de tener al menos '+TAMANO_NOMBRE_USUARIO+ ' caracteres');    	
    	 valid = false;    
     }
	if (valid){
		if (pass.value!='' && pass.value.length >= TAMANO_PASSWORD) {			   	
			// Validamos el patron
		    var RegExPattern = ".*[A-Z].*[a-z].*[0-9].*" +
			"|.*[A-Z].*[0-9].*[a-z].*" +
			"|.*[a-z].*[A-Z].*[0-9].*" +
			"|.*[a-z].*[0-9].*[A-Z].*" +
			"|.*[0-9].*[A-Z].*[a-z].*" +
			"|.*[0-9].*[a-z].*[A-Z].*";   
	   
		    if (pass.value.match(RegExPattern)) {   
		        //alert('Password Correcta');    
		    	valid = true;    
		    } else {   
		        alert('Error de complejidad. Password no contiene variedad en los caracteres.');           
		        pass.focus();  
		        valid = false;    
		    }   
		}else{
			 alert('Error de complejidad. Password ha de tener al menos '+TAMANO_PASSWORD+ ' caracteres');
			 pass.focus();  
	    	 valid = false; 
		}
	}
	return valid;
} 



