//=======================================================================================
// FUNZIONI PER IL CONTROLLO DEL CODICE FISCALE
//=======================================================================================

function checkCodiceFiscale(strCodice)
{
    var res;
    
    var ALF1 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var CIF1 = "0123456789";
    var ALF2 = "BAKPLCQDREVOSFTGUHMINJWZYX";
    var CIF2 = "10   2 3 4   5 6 7 8 9    ";

    //Caratteri ASCII dal 32 al 127
    var ASCII = " !\"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\\]^_`abcdefghijklmnopqrstuvwxyz{|}~";
    
    var c_Char;
    var c_Code;
    var n_Count;
    var carattere;

    if (strCodice.length == 16)
    {
        strCodice = strCodice.toUpperCase();
        n_Count = 0;
        for (carattere = 1 ; carattere <= 13 ; carattere = carattere + 2)
        {
            c_Char = strCodice.charAt(carattere);
            if (c_Char == "0" || c_Char == "1" || c_Char == "2" || c_Char == "3" || c_Char == "4" || c_Char == "5" || 
                c_Char == "6" || c_Char == "7" || c_Char == "8" || c_Char == "9" )
            {
                n_Count = n_Count + CIF1.indexOf(c_Char) + 1;
            }
            else
            {
                // "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"
                n_Count = n_Count + ALF1.indexOf(c_Char) + 1;
            }
        }
        
        for (carattere = 0 ; carattere <= 14 ; carattere = carattere + 2)
        {
            c_Char = strCodice.charAt(carattere);
            if (c_Char == "0" || c_Char == "1" || c_Char == "2" || c_Char == "3" || c_Char == "4" || c_Char == "5" || 
                c_Char == "6" || c_Char == "7" || c_Char == "8" || c_Char == "9" )
            {
                n_Count = n_Count + CIF2.indexOf(c_Char) + 1;
            }
            else
            {
                // "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"
                n_Count = n_Count + ALF2.indexOf(c_Char) + 1;
            }
        }
        
        n_Count = 1 + ((n_Count - 15) % 26) + 64;
        c_Code = ASCII.charAt(n_Count - 32);
        c_Char = strCodice.charAt(15);
        
        if (c_Code == c_Char)
            res = true;
        else
            res = false;
    }
    else
        res = false;
    //alert(strCodice);
    //alert(res);    
    return res;

}
