var CtrolInput = {

    ChequearEMail: function (pvaremail) {
        var x = pvaremail;
        var filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if (filter.test(x)) {
            return true;
        } else {
            return false;
        }
    },
    ChequearDocumento: function (documento) {
        documento = documento.replace(/[^0-9]/g, "");
        return (documento.length == 8 || (documento.length == 11 && CtrolInput.ChequearCUIT(documento)));
    },

    ChequearCUIT: function (cuit) {
        var lengthCuit = 11;
        var coeficiente = new Array();
        coeficiente[0] = 5;
        coeficiente[1] = 4;
        coeficiente[2] = 3;
        coeficiente[3] = 2;
        coeficiente[4] = 7;
        coeficiente[5] = 6;
        coeficiente[6] = 5;
        coeficiente[7] = 4;
        coeficiente[8] = 3;
        coeficiente[9] = 2;

        cuit = Helper.trim(cuit);
        var cuitRearmado = '';
        // separo cualquier caracter que no tenga que ver con numeros
        for (var i = 0; i < String(cuit).length; i++) {
            if ((String(cuit).charCodeAt(i) >= 48) && (String(cuit).charCodeAt(i) <= 57))
                cuitRearmado += String(cuit).substr(i, 1);
        }
        cuitRearmado = Helper.trim(cuitRearmado);

        if (String(cuitRearmado).length != lengthCuit)
            return false;

        var sumador = 0;
        var resultado = 0;
        // Calculo de digito
        for (var i = 0; i < (lengthCuit - 1); i++) {
            sumador += (parseInt(String(cuitRearmado).substr(i, 1), 10) * coeficiente[i]);
        }
        // Verificacion de resultado
        resultado = sumador % lengthCuit;
        if (resultado == 1)
            return false;
        if (resultado > 0)
            resultado = lengthCuit - resultado;
        // tomo el digito verificador
        var verificador = parseInt(String(cuitRearmado).substr(lengthCuit - 1, 1), 10);
        return (verificador == resultado);
    },

    FormateaCUIT: function (e, obj) {
        var retorno = CtrolInput.ControlIngresoSoloNumeros(e);
        if (retorno == true) {
            var cuit = obj.value;
            var lengthCuit = cuit.length;

            if (lengthCuit >= 0 && lengthCuit <= 1) { primerslap = 0; }
            if (lengthCuit >= 3 && lengthCuit <= 10) { primerslap = 0; }
            if (lengthCuit >= 12) { primerslap = 0; }
            if (lengthCuit == 2) { primerslap = 1; }
            if (lengthCuit == 11) { primerslap = 2; }

            if (lengthCuit >= 11 && primerslap == 2) { cuit = cuit.substr(0, 11) + '-' + cuit.substr(12, 2); }
            else if (lengthCuit >= 2 && primerslap == 1) { cuit = cuit.substr(0, 2) + '-' + cuit.substr(3, 13); }

            obj.value = cuit;
        }
        return retorno;
    },

    ControlIngresoSoloNumeros: function (e) {
        var SoloNumeros = true;
        return CtrolInput.AnularTecla(e, CtrolInput.ControlNumeros(e, SoloNumeros));
    },

    ControlIngresoNumeros: function (e) {
        var SoloNumeros = false;
        return CtrolInput.AnularTecla(e, CtrolInput.ControlNumeros(e, SoloNumeros));
    },

    TeclasExtras: function (e)  // ASCII
    {
        var xkeyCode = CtrolInput.KeyCodePress(e);
        var retorno = true;

        if ((xkeyCode <= 31) || (xkeyCode >= 127)) {        // estándar debajo de caracteres normales
            // + tabla extendida
        } else {
            retorno = false;
        }
        return retorno;
    },

    ControlNumeros: function (e, SoloNumeros)  // ASCII
    {
        var xkeyCode = CtrolInput.KeyCodePress(e);
        var retorno = true;

        if (CtrolInput.TeclasExtras(e)) {
        } else if ((xkeyCode >= 48) && (xkeyCode <= 57)) { // 0 -> 9
        } else if ((SoloNumeros == false) && (xkeyCode == 46)) { // .
        } else if ((SoloNumeros == false) && (xkeyCode == 44)) { // ,
        } else if ((SoloNumeros == false) && (xkeyCode == 43)) { // +
        } else if ((SoloNumeros == false) && (xkeyCode == 45)) { // - 
        } else {
            retorno = false;
        }
        return retorno;
    },

    ControlSoloLetras: function (e)  // ASCII
    {
        var xkeyCode = CtrolInput.KeyCodePress(e);
        var retorno = true;

        if (CtrolInput.TeclasExtras(e)) {
        } else if ((xkeyCode >= 65) && (xkeyCode <= 90)) { // A -> Z
        } else if ((xkeyCode >= 97) && (xkeyCode <= 122)) { // a -> z
        } else {
            retorno = false;
        }
        return CtrolInput.AnularTecla(e, retorno);
    },

    AnularTecla: function (e, retorno) {
        if (window.event) // IE 
        {
            if (retorno == false) { e.keyCode = 0 };
        }
        return retorno;
    },

    KeyCodePress: function (e) {
        var keynum;
        if (window.event) // IE 
        {
            keynum = e.keyCode;
        }
        else if (e.which) // Netscape/Firefox/Opera 
        {
            keynum = e.which;
        }
        return keynum;
    }
}

