//-----------------------------------------------------------
//  FUNCIONES DE VALIDACION DE FORMULARIOS
//-----------------------------------------------------------

function EsVacio(val) {
    return ((val == null) || (val.length == 0));
}

function EsNumerico(val) {
    num = parseFloat(val);
    if (val!=''+num) return false;
    return true;
}

function EsLetra(val) {
    return ( ((val >= "a") && (val <= "z")) || ((val >= "A") && (val <= "Z")) );
}

function EsDigito(val) {
    return ((val >= "0") && (val <= "9"));
}

function EsDigitos(val) {
    for(i=0;i<val.length;i++){
        if(!EsDigito(val.charAt(i))) return false;
    }
    return true;
}    
    
function EsRango(val,min,max) {
    if (!EsNumerico(val)) return false;
    if (val<min || max<val) return false;
    return true;
}

function MinCaracteres(val,num) {
    return !(val.length<num);
}

function EsTelefono(val) {
    if (!MinCaracteres(val,9)) return false;
    if (!EsDigitos(val)) return false;
    return true;
}

function EsMovil(val) {
    if (!MinCaracteres(val,9)) return false;
    if (!EsDigitos(val)) return false;
    if (val.charAt(0)!="6") return false;
    return true;
}

function EsEmail(val) {
    arroba = val.lastIndexOf('@');

    if ( arroba < 1 )
        return false;
    else {
    punto = val.indexOf('.', arroba);
      if ( punto < arroba + 2 ||
         punto > val.length - 2 ) {
         return false;
      }
   }
   return true;
}

function EsCodigoPostal(val,provincia) {
    if (!MinCaracteres(val,5)) return false;
    if (!EsDigitos(val)) return false;
    if (val.substring(0,2)!=provincia) return false;
    return true;
}

function EsCNAE(val) {
    if (!MinCaracteres(val,5)) return false;
    if (!EsDigitos(val.substr(0,2))) return false;
    if (!EsDigitos(val.substr(3,2))) return false;
    if (val.charAt(2)!='.') return false;
    return true;
}

function EsCIFNIF(val) {
    val = val.toUpperCase()
    if (val.charAt(0) == 'X' || EsDigito(val.charAt(0)) )
        return EsNIF(val)
    else
        return EsCIF(val);
}

function EsNIF(val) {
    val = val.toUpperCase()
    var LetrasNIF = "TRWAGMYFPDXBNJZSQVHLCKE"
    
    if (!MinCaracteres(val,8)) return false;
    Letra = val.charAt(val.length-1);
    if (LetrasNIF.indexOf(Letra) == -1) return false;
    if (val.charAt(0) == 'X')
       Numero = val.substring(1,val.length-1)
    else
       Numero = val.substring(0,val.length-1);
    if (!EsDigitos(Numero)) return false;
    Numero = parseInt(Numero,10)
    Indice = Numero-(parseInt(Numero/23,10)*23);
    if (Letra != LetrasNIF.charAt(Indice)) return false;
    return true;
}

function EsCIF(val) {
    val = val.toUpperCase();
    var LetrasCIF = "ABCDEFGHNPSQ";
    var LetrasOrganismos = "JABCDEFGHI";
    var Organismo = false;
    
    if (!MinCaracteres(val,9)) return false;
    var Letra = val.charAt(0);
    if (LetrasCIF.indexOf(Letra) == -1) return false;
    if (Letra == 'P' || Letra == 'Q' || Letra == 'S') Organismo = true;
    if (!EsDigitos(val.substr(1,val.length-2))) return false;
    var CodigoControl = val.charAt(val.length-1)

    Suma1 = parseInt( val.charAt(2), 10) + parseInt( val.charAt(4), 10) + parseInt(val.charAt(6), 10 );
    Suma2 = 0;
    for( var i = 1; i < 8; i += 2) {
         Aux = parseInt(val.charAt(i), 10) * 2;
         if (Aux > 9) 
            Suma2 = Suma2 + parseInt(Aux / 10, 10) + Aux % 10
         else
            Suma2 = Suma2 + Aux;
    }
    Suma = Suma1 + Suma2;
    Codigo = 10 - Suma % 10;
    if( Codigo > 9) Codigo = 0;
    
    if (!Organismo) {
       if (Codigo != parseInt(CodigoControl, 10)) return false; }
    else {
       if (LetrasOrganismos.charAt(Codigo) != CodigoControl ) return false; }
    
    return true;
}

function EsLogin(val) {
    if (!EsLetra(val.charAt(0))) return false;
    for(i=1;i<val.length;i++){
        if( (!EsDigito(val.charAt(i))) && (!EsLetra(val.charAt(i))) ) return false;
    }
    return true;
}

function EsPassword(val) {
    for(i=1;i<val.length;i++){
        if( (!EsDigito(val.charAt(i))) && (!EsLetra(val.charAt(i))) ) return false;
    }
    return true;
}

function EsFecha(val) {
    var dia = parseInt(val.substr(0,2),10);
    var mes = parseInt(val.substr(3,2),10);
    var anyo = parseInt(val.substr(6,4),10);
  
    if(val.length!=10) return false;
    d = new Date(val)
    if (isNaN( d.valueOf() )) return false;
    sArray = val.split("/")
    if (sArray.length > 3) return false;
    if( (sArray[0].length!=2) || (sArray[1].length!=2) || (sArray[2].length!=4) ) return false;
    if( (anyo<0) || (anyo>9999) ) return false;
    if((mes>12) || (mes<1)) return false;
    if((mes==4)||(mes==6)||(mes==9)||(mes==11)) {
        if((dia>30) || (dia<1)) return false;
    }
    if((mes==1)||(mes==3)||(mes==5)||(mes==7)||(mes==8)||(mes==10)||(mes==12)) {
            if((dia>31) || (dia<1)) return false;
    }
    if((mes==2) && (!EsBisiesto(anyo))) {
            if((dia>28) || (dia<1)) return false;
    } else if((mes==2) && (EsBisiesto(anyo))) {
            if((dia>29) || (dia<1)) return false;
    }
    return true;
}

function EsBisiesto(val) {
    return ((val % 4 == 0) && ((!(val % 100 == 0)) || (val % 400 == 0)));
}


//-----------------------------------------------------------
//  FUNCIONES DE PROPOSITO GENERAL
//-----------------------------------------------------------

function setRadio(rad,value) {
    for(x=0;x<rad.length;x++) {
        if(rad[x].value==value) {
            rad[x].checked=true;
            break;
        }
    }
}

function setSelect(sel,value) {
    for(x=0;x<sel.options.length;x++) {
        if(sel.options[x].value==value) {
            sel.options[x].selected=true;
            break;
        }
    }
}
