/* 

Script realizzato da Filippo Bonanni
Copyright©2k1FilippoBonanni
e-mail: hyppos@aruba.it

Questo script č di libero utilizzo.
Unica condizione č che non vengano tolti i riferimenti all'autore all'interno 
del codice e che specifichiate se possibile, nella pagina in cui inserirete lo script, 
www.jsdir.com quale sito da cui č possibile prelevarlo.

*/    


function CV_ControlloFisc(source, arguments)
{

    var lung=null;
    var test=null;
    lettere=new Array();

    //array= lettera, valore se pari, valore se dispari
    lettere[0]=["A","0","1"];
    lettere[1]=["B","1","0"];
    lettere[2]=["C","2","5"];
    lettere[3]=["D","3","7"];
    lettere[4]=["E","4","9"];
    lettere[5]=["F","5","13"];
    lettere[6]=["G","6","15"];
    lettere[7]=["H","7","17"];
    lettere[8]=["I","8","19"];
    lettere[9]=["J","9","21"];
    lettere[10]=["K","10","2"];
    lettere[11]=["L","11","4"];
    lettere[12]=["M","12","18"];
    lettere[13]=["N","13","20"];
    lettere[14]=["O","14","11"];
    lettere[15]=["P","15","3"];
    lettere[16]=["Q","16","6"];
    lettere[17]=["R","17","8"];
    lettere[18]=["S","18","12"];
    lettere[19]=["T","19","14"];
    lettere[20]=["U","20","16"];
    lettere[21]=["V","21","10"];
    lettere[22]=["W","22","22"];
    lettere[23]=["X","23","25"];
    lettere[24]=["Y","24","24"];
    lettere[25]=["Z","25","23"];
    lettere[26]=["0","0","1"];
    lettere[27]=["1","1","0"];
    lettere[28]=["2","2","5"];
    lettere[29]=["3","3","7"];
    lettere[30]=["4","4","9"];
    lettere[31]=["5","5","13"];
    lettere[32]=["6","6","15"];
    lettere[33]=["7","7","17"];
    lettere[34]=["8","8","19"];
    lettere[35]=["9","9","21"];

    ConfrontoCarattereControllo=new Array();
    ConfrontoCarattereControllo[0]=["A"];
    ConfrontoCarattereControllo[1]=["B"];
    ConfrontoCarattereControllo[2]=["C"];
    ConfrontoCarattereControllo[3]=["D"];
    ConfrontoCarattereControllo[4]=["E"];
    ConfrontoCarattereControllo[5]=["F"];
    ConfrontoCarattereControllo[6]=["G"];
    ConfrontoCarattereControllo[7]=["H"];
    ConfrontoCarattereControllo[8]=["I"];
    ConfrontoCarattereControllo[9]=["J"];
    ConfrontoCarattereControllo[10]=["K"];
    ConfrontoCarattereControllo[11]=["L"];
    ConfrontoCarattereControllo[12]=["M"];
    ConfrontoCarattereControllo[13]=["N"];
    ConfrontoCarattereControllo[14]=["O"];
    ConfrontoCarattereControllo[15]=["P"];
    ConfrontoCarattereControllo[16]=["Q"];
    ConfrontoCarattereControllo[17]=["R"];
    ConfrontoCarattereControllo[18]=["S"];
    ConfrontoCarattereControllo[19]=["T"];
    ConfrontoCarattereControllo[20]=["U"];
    ConfrontoCarattereControllo[21]=["V"];
    ConfrontoCarattereControllo[22]=["W"];
    ConfrontoCarattereControllo[23]=["X"];
    ConfrontoCarattereControllo[24]=["Y"];
    ConfrontoCarattereControllo[25]=["Z"];


    var Carattere=0;
    var ValorePari=1;
    var ValoreDispari=2;

    var stringa = arguments.Value;
    var SommaCaratteri=0;
    var PariDispari=null;
    stringa=stringa.toUpperCase();

    lung=stringa.length;

    CarattereControllo=stringa.substr(lung-1,1);

    stringa=stringa.substring(lung-1,0);

    lung=stringa.length;

    for (i=0; i<=lung-1; i++){
	    if ((i+1)%2==0) {
		    PariDispari='P'
		} else {
			PariDispari='D'
	    }

		temp=stringa.charAt(i);
		for (t=0; t<=35; t++) {
		    test=lettere[t][Carattere];
			if (temp==test) {
			    break
			}
	    }
		if(PariDispari=='P')	{
			SommaCaratteri=SommaCaratteri+parseInt(lettere[t][ValorePari])
		} else {
			SommaCaratteri=SommaCaratteri+parseInt(lettere[t][ValoreDispari])
	    }
    }
    Risultato=SommaCaratteri % 26;
    Risultato=ConfrontoCarattereControllo[Risultato][0];
    if (Risultato==CarattereControllo || lung==0)	{
	    //alert("Codice Fiscale Corretto!")
		arguments.IsValid = true;
	} else {
		//alert("Codice Fiscale Errato!")
		arguments.IsValid = false;
    }
}

/*
Funzioni di controllo della partita IVA su base codice di controllo
*/
function CV_ControllaPIVA_Length(source, arguments)
{
    var pi = arguments.Value;
    if( pi.length != 11 )
    {
        //alert("Lunghezza della partita IVA non corretta: la partita IVA deve essere lunga\nesattamente 11 caratteri.\n");
		arguments.IsValid = false;
		return;
    }
	arguments.IsValid = true;
}

function CV_ControllaPIVA_Chars(source, arguments)
{
    var pi = arguments.Value;
    validi = "0123456789";
    for( i = 0; i < 11; i++ ){
        if( validi.indexOf( pi.charAt(i) ) == -1 )
        {
            //alert("La partita IVA contiene un carattere non valido (" + pi.charAt(i) + ").\nI caratteri validi sono le cifre.\n");
            arguments.IsValid = false;
    		return;
        }
    }
	arguments.IsValid = true;
}

function CV_ControllaPIVA_Code(source, arguments)
{
    var pi = arguments.Value;
    s = 0;
    for( i = 0; i <= 9; i += 2 )
        s += pi.charCodeAt(i) - '0'.charCodeAt(0);
    for( i = 1; i <= 9; i += 2 ){
        c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
        if( c > 9 )  c = c - 9;
        s += c;
    }
    if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
    {
        arguments.IsValid = false;
		return;
    }
    arguments.IsValid = true;
}


