/**
 * @author Juan
 */
function decode_utf8(utftext){
    var plaintext = "";
    var i = 0;
    var c = 0;
    var c1 = 0;
    var c2 = 0;
    // while-Schleife, weil einige Zeichen uebersprungen werden
    while (i < utftext.length) {
        c = utftext.charCodeAt(i);
        if (c < 128) {
            plaintext += String.fromCharCode(c);
            i++;
        }
        else 
            if ((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i + 1);
                plaintext += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i + 1);
                c3 = utftext.charCodeAt(i + 2);
                plaintext += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }
    }
    return plaintext;
}

function validar_email(txt){

    //expresion regular
    var b = /^[^@\s]+@[^@\.\s]+(\.[^@\.\s]+)+$/
    
    //comentar la siguiente linea si no se desea que aparezca el alert()
    //alert("Email " + (b.test(txt)?"":"no ") + "valido.")
    
    //devuelve verdadero si validacion OK, y falso en caso contrario
    return b.test(txt)
}

function validar_nombre(nombre){
    var checkOK = "ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÀÈÌÒÙ " + "abcdefghijklmnñopqrstuvwxyzáéíóúàèìòù&. ";
    var checkStr = nombre.value;
    var allValid = true;
    for (i = 0; i < checkStr.length; i++) {
        ch = checkStr.charAt(i);
        for (j = 0; j < checkOK.length; j++) 
        
            if (ch == checkOK.charAt(j)) 
                break;
        if (j == checkOK.length) {
            allValid = false;
            break;
        }
    }
    return allValid;
}

function validar_direccion(nombre){
	
    var checkOK = "0123456789ABCDEFGHIJKLMNÑOPQRSTUVWXYZÁÉÍÓÚÀÈÌÒÙ " + "abcdefghijklmnñopqrstuvwxyzáéíóúàèìòù " + "/��.,ºª";
	var checkStr = nombre.value;
	var allValid = true;
    for (i = 0; i < checkStr.length; i++) {
        ch = checkStr.charAt(i);
        for (j = 0; j < checkOK.length; j++) 
            if (ch == checkOK.charAt(j)) 
                break;
        if (j == checkOK.length) {
            allValid = false;
            break;
        }
    }
    return allValid;
}

function validar_telefono(telefono){
    var checkOK = "0123456789";
    var checkStr = telefono.value;
    var allValid = true;
    for (i = 0; i < checkStr.length; i++) {
        ch = checkStr.charAt(i);
        for (j = 0; j < checkOK.length; j++) 
            if (ch == checkOK.charAt(j)) 
                break;
        if (j == checkOK.length) {
            allValid = false;
            break;
        }
    }
    return allValid;
}


function validarCIF(cif){
    par = 0
    non = 0
    letras = "ABCDEFGHKLMNPQS"
    let = cif.charAt(0)
    
    if (!isNaN(let)) {
        //nif=cif
        validar(cif)
        return false
    }
    
    if (cif.length != 9) {
        //alert('El Cif debe tener 9 dígitos')
        //document.formulario.nif.focus()
        return false
    }
    
    if (letras.indexOf(let.toUpperCase()) == -1) {
        //alert("El comienzo del Cif no es válido")
        //document.formulario.nif.focus()
        return false
    }
    
    for (zz = 2; zz < 8; zz += 2) {
        par = par + parseInt(cif.charAt(zz))
    }
    
    for (zz = 1; zz < 9; zz += 2) {
        nn = 2 * parseInt(cif.charAt(zz))
        if (nn > 9) 
            nn = 1 + (nn - 10)
        non = non + nn
    }
    
    parcial = par + non
    
    control = (10 - (parcial % 10))
    
    if (control != cif.charAt(8)) {
        //alert("El Cif no es válido")
        //document.formulario.nif.focus()
        return false
    }
    //alert("El Cif es válido")
    return true;
}

function validar(abc){
    dni = abc.substring(0, abc.length - 1)
    let = abc.charAt(abc.length - 1)
    if (!isNaN(let)) {
        //alert('Falta la letra')
        //document.formulario.nif.focus()
        return false
    }
    else {
        cadena = "TRWAGMYFPDXBNJZSQVHLCKET"
        posicion = dni % 23
        letra = cadena.substring(posicion, posicion + 1)
        if (letra != let.toUpperCase()) {
            //alert("Nif no válido")
            //document.formulario.nif.focus()
            return false
        }
    }
    //alert("Nif válido")
    return true;
}

function validarNIF(abc){
    dni = abc.substring(0, abc.length - 1)
    let = abc.charAt(abc.length - 1)
    if (!isNaN(let)) {
        //alert('Falta la letra')
        //document.formulario.nif.focus()
        return false
    }
    else {
        cadena = "TRWAGMYFPDXBNJZSQVHLCKET"
        posicion = dni % 23
        letra = cadena.substring(posicion, posicion + 1)
        if (letra != let.toUpperCase()) {
            //alert("Nif no válido")
            //document.formulario.nif.focus()
            return false
        }
    }
    //alert("Nif válido")
    return true;
}
