// Util
// Version 1.0

// Check email

function check_email(email_value) {
        var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;

        if(reg.test(email_value) == false)
                return false;

        return true;
}

// Check codfisc

var char = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
            'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
            'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
            'u', 'v', 'w', 'x', 'y', 'z'];

var odd_char = [1, 0, 5, 7, 9, 13, 15, 17, 19, 21, 1, 0, 5, 7,
                9, 13, 15, 17, 19, 21, 2, 4, 18, 20, 11, 3, 6,
                8, 12, 14, 16, 10, 22, 25, 24, 23];

var even_char = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, 1, 2, 3, 4,
                 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
                 18, 19, 20, 21, 22, 23, 24, 25];

var check_char = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
                  'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
                  'u', 'v', 'w', 'x', 'y', 'z'];

var CODFISC_LEN = 16;
var CODFISC_CTRL_VAL = 26;

function check_codfisc(codfisc) {
        var sum = 0;
        codfisc = codfisc.toLowerCase();

        if(codfisc.length != CODFISC_LEN)
                return false;

        for(var i = 0;i < (CODFISC_LEN - 1);i++) {
                var chr = codfisc[i];
                var chr_idx = -1;

                for(var j = 0;j <= char.length;j++) {
                        if(chr == char[j]) {
                                chr_idx = j;
                                break;
                        }
                }

                if(chr_idx < 0)
                        return false;

                if(((i + 1) % 2) == 0)
                        sum += even_char[chr_idx];
                else
                        sum += odd_char[chr_idx];
        }

        var codfisc_check_char = codfisc[CODFISC_LEN - 1];
        var check_val = sum % CODFISC_CTRL_VAL;
        var check_val_char = check_char[check_val];

        if(codfisc_check_char != check_val_char)
                return false;

        return true;
}

// Check piva

var PIVA_LEN = 11;
var PIVA_CTRL_VAL = 10;

function check_piva(piva) {
        var sum = 0;

        if(piva.length != PIVA_LEN)
                return false;

        for(var i = 0;i < (PIVA_LEN - 1);i++) {
                if(((i + 1) % 2) == 0) {
                        var val = parseInt(piva[i]) * 2;

                        if(val > 9)
                                val -= 9;

                        sum += val;
                }
                else
                        sum += parseInt(piva[i]);
        }

        var check_val = sum % PIVA_CTRL_VAL;

        if(check_val > 0)
                check_val = PIVA_CTRL_VAL - check_val;

        if(piva[PIVA_LEN - 1] != check_val)
                return false;

        return true;
}

