function ValCF(CF){

	var lCF = 0
	var Arr
	var ArrNum
	var nRet = 0
   var TotalPari = 0
   var TotalDispari = 0 
	var NumControllo = 0
	var CarControllo = ""
	var UltimoCarattere = ""
	var numStr=""
	var nSomma =  0
	CF = CF.toUpperCase()
	lCF = CF.length
	Arr = CF.split("")

	UltimoCarattere = CF.substring(lCF  - 1)

	if(lCF == 11)
		{

		var Conta = 0
		 for(Conta = 0 ; Conta < 10 ; Conta++) {
		 	if(NumeroisPari(Conta + 1)) {
	  			 nRet = ((Arr[Conta] - 0)  * 2)
	  			 numStr = nRet.toString()
	  			 if (numStr.length > 1) {
					ArrNum = numStr.split("")
					var Cnt = 0
					nSomma = 0
					for(Cnt = 0 ; Cnt < ArrNum.length   ; Cnt++) {
						nSomma = nSomma + (ArrNum[Cnt] - 0)
					}
					nRet =  nSomma
							  			 	
	  			 }
	  			else{
	  			 	nRet =  numStr - 0
	  			 }
		 		TotalPari = (TotalPari + nRet)
		 		}
		 	else {
				nRet = Arr[Conta] - 0
				TotalDispari = (TotalDispari + nRet)	 
		 		}	
		 }

			NumControllo = 10 - ((TotalPari + TotalDispari) - (Math.floor(((TotalPari + TotalDispari) / 10))*10))
			numStr = NumControllo.toString()
			if (numStr.length > 1) {			
				NumControllo = numStr.substring(numStr.length,1) - 0
			}
			if(NumControllo  == UltimoCarattere - 0){
				return true 		
	 			}
			else{
				alert("Codice Fiscale Errato : " + NumControllo  + UltimoCarattere)
				return false 				
			}
		}
	else if(lCF == 16)
		{
		var Conta = 0
		 for(Conta = 0 ; Conta < 15 ; Conta++) {
		 	if(NumeroisPari(Conta + 1)) {
	  			 nRet = CtoN(Arr[Conta] , true)
		 		TotalPari = (TotalPari + nRet)
		 		}
		 		else {
				 nRet = CtoN(Arr[Conta] , false)
				 TotalDispari = (TotalDispari + nRet)	 
		 		}	
		 }
		
		NumControllo = (TotalPari + TotalDispari) - (Math.floor(((TotalPari + TotalDispari) / 26))*26) 
		CarControllo = AttrCarCtrl(NumControllo)
 		if(CarControllo  == UltimoCarattere){
			return true 		
	 		}
			else{
			alert("Codice Fiscale Errato : " + CarControllo  + UltimoCarattere)
			return false 				
			}
			}
	else if(lCF == 0) {
		return true	
		}	

	else {
			alert("Codice Fiscale Errato : " + CF + "")
		}	
	} 
	
function CtoN(c , isPari) {
	if (isPari) {
		switch(c){
			case 'A' :	
				return 0
			case 'B' :
				return 1
			case 'C' :
				return 2						
			case 'D' :	
				return 3
			case 'E' :
				return 4
			case 'F' :
				return 5						
			case 'G' :	
				return 6
			case 'H' :
				return 7
			case 'I' :
				return 8						
			case 'J' :	
				return 9
			case 'K' :
				return 10
			case 'L' :
				return 11						
			case 'M' :	
				return 12
			case 'N' :
				return 13
			case 'O' :
				return 14						
			case 'P' :	
				return 15
			case 'Q' :
				return 16
			case 'R' :
				return 17						
			case 'S' :	
				return 18
			case 'T' :
				return 19
			case 'U' :
				return 20						
			case 'V' :	
				return 21
			case 'W' :
				return 22
			case 'X' :
				return 23						
			case 'Y' :	
				return 24
			case 'Z' :
				return 25
			case '0' :
				return 0						
			case '1' :	
				return 1
			case '2' :
				return 2
			case '3' :
				return 3						
			case '4' :	
				return 4
			case '5' :
				return 5
			case '6' :
				return 6						
			case '7' :	
				return 7
			case '8' :
				return 8
			case '9' :
				return 9						
			}
		}
	else {
		switch(c){
			case 'A' :	
				return 1
			case 'B' :
				return 0
			case 'C' :
				return 5						
			case 'D' :	
				return 7
			case 'E' :
				return 9
			case 'F' :
				return 13						
			case 'G' :	
				return 15
			case 'H' :
				return 17
			case 'I' :
				return 19						
			case 'J' :	
				return 21
			case 'K' :
				return 2
			case 'L' :
				return 4						
			case 'M' :	
				return 18
			case 'N' :
				return 20
			case 'O' :
				return 11						
			case 'P' :	
				return 3
			case 'Q' :
				return 6
			case 'R' :
				return 8						
			case 'S' :	
				return 12
			case 'T' :
				return 14
			case 'U' :
				return 16						
			case 'V' :	
				return 10
			case 'W' :
				return 22
			case 'X' :
				return 25						
			case 'Y' :	
				return 24
			case 'Z' :
				return 23
			case '0' :
				return 1						
			case '1' :	
				return 0
			case '2' :
				return 5
			case '3' :
				return 7						
			case '4' :	
				return 9
			case '5' :
				return 13
			case '6' :
				return 15						
			case '7' :	
				return 17
			case '8' :
				return 19
			case '9' :
				return  21
			}
		}
} 	


function NumeroisPari(num){
var Res = 0
var Intero = 0
Res = num / 2
Intero = Math.ceil(Res)
	if( Intero == Res){
		return true
		}
	else{
		return false
	}
}

function AttrCarCtrl(nC){

		switch(nC){
			case 0 :	
				return 'A'
			case 1 :	
				return 'B'
			case 2 :	
				return 'C'
			case 3 :	
				return 'D'
			case 4 :	
				return 'E'
			case 5 :	
				return 'F'
			case 6 :	
				return 'G'
			case 7 :	
				return 'H'
			case 8 :	
				return 'I'
			case 9 :	
				return 'J'
			case 10 :	
				return 'K'
			case 11 :	
				return 'L'
			case 12 :	
				return 'M'
			case 13 :	
				return 'N'
			case 14 :	
				return 'O'
			case 15 :	
				return 'P'
			case 16 :	
				return 'Q'
			case 17 :	
				return 'R'
			case 18 :	
				return 'S'
			case 19 :	
				return 'T'
			case 20 :	
				return 'U'
			case 21 :	
				return 'V'
			case 22 :	
				return 'W'
			case 23 :	
				return 'X'
			case 24 :	
				return 'Y'
			case 25 :	
				return 'Z'

	}

}


// A utility function that returns true if a string contains only 
// whitespace characters.
function isblank(s)
{
    for(var i = 0; i < s.length; i++) {
        var c = s.charAt(i);
        if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
    }
    return true;
}

// This is the function that performs form verification. It will be invoked
// from the onSubmit() event handler. The handler should return whatever
// value this function returns.
function verify(f)
{
    var msg;
    var empty_fields = "";
    var errors = "";
		var xpsw = false;
		var xCC = false;
		
    // Loop through the elements of the form, looking for all 
    // text and textarea elements that don't have an "optional" property
    // defined. Then, check for fields that are empty and make a list of them.
    // Also, if any of these elements have a "min" or a "max" property defined,
    // then verify that they are numbers and that they are in the right range.
    // Put together error messages for fields that are wrong.
    for(var i = 0; i < f.length; i++) {
        var e = f.elements[i];
        if (((e.type == "text") || (e.type == "textarea") || (e.type == "password")) && !e.optional) {
            // first check if the field is empty
            if (e.type == "password") {
					   xpsw = true
					}

            if (e.name == "NCARTA") {
					   xCC = true
					}
		
					if ((e.value == null) || (e.value == "") || isblank(e.value)) {
                empty_fields += "\n          " + e.name;
                continue;
            }

            // Now check for fields that are supposed to be numeric.
            if (e.numeric || (e.min != null) || (e.max != null)) { 
                var v = parseFloat(e.value);
                if (isNaN(v) || 
                    ((e.min != null) && (v < e.min)) || 
                    ((e.max != null) && (v > e.max))) {
                    errors += "- The field " + e.name + " must be a number";
                    if (e.min != null) 
                        errors += " that is greater than " + e.min;
                    if (e.max != null && e.min != null) 
                        errors += " and less than " + e.max;
                    else if (e.max != null)
                        errors += " that is less than " + e.max;
                    errors += ".\n";
                }
            }
        }
    }

    // Now, if there were any errors, display the messages, and
    // return false to prevent the form from being submitted. 
    // Otherwise return true.

    if (!empty_fields && !errors) 
			 {
			 	if (xpsw == true) { 
					if (f.elements['PSW'].value == f.elements['PSW1'].value)
					{
			  	   if (f.elements['PSW'].value.length >= 4 && f.elements['USER'].value.length >= 4) 
					   {
					    	if (ValCF(f.elements['CODFIS'].value)) 
			     	   	return true;
					   }
				    }
				else if (xCC == true)
					 {
					   if (f.elements['NCARTA'].value.length == 16 && f.elements['SCCARTA'].value.length == 4) 
			     	   	return true;
					 }
				}
				else { return true;}
			 }	
			 
    msg  = "______________________________________________________\n\n"
    msg += "La richiesta di registrazione non è stata inoltrata,\n";
    msg += "perchè i seguenti campi contengono errori.\n";
		msg += "Inserire correttamente i dati e reinviare.\n";
    msg += "______________________________________________________\n\n"

    if (empty_fields) {
        msg += "- Campi :" 
                + empty_fields + "\n";
        if (errors) msg += "\n";
    }
    msg += errors;
    alert(msg);
    return false;
}


