function ControllaCF(cf)
{
    var validi, i, s, set1, set2, setpari, setdisp;
	
    if( cf == '' ){
       alert("La lunghezza del codice fiscale non è\n corretta");
		return false;
	}
	
    cf = cf.toUpperCase();
	
    if( cf.length != 16 ){
       alert("La lunghezza del codice fiscale non è\n corretta: il codice fiscale dovrebbe essere lungo\n esattamente 16 caratteri.\n");
	   return false;
	}
	
    validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
	
    for( i = 0; i < 16; i++ ){
        if( validi.indexOf( cf.charAt(i) ) == -1 ){
            alert("Il codice fiscale contiene un carattere non valido `" +cf.charAt(i) +"'.\nI caratteri validi sono le lettere e le cifre.\n");
			return false;
		}
    }
	
    set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
    s = 0;
	
    for( i = 1; i <= 13; i += 2 )
        s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
		
    for( i = 0; i <= 14; i += 2 )
        s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
		
    if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) ){		
        alert("Il codice fiscale non è corretto");
		return false
	}
	
    return true;
}


function checkData()
{
	var elForm
	if(checkData.arguments.length>0) elForm = document.forms[checkData.arguments[0]]
	else elForm = document.forms[0]	 
		
	for(i=0;i<valori.length;i++){
	
		if ((valoriObbligatoriName[i]=="1")&& (elForm.elements[valori[i]].value=="")){
			alert("Campo "+valoriName[i]+" obbligatorio");
			return false;
		} 	
		else if(elForm.elements[valori[i]].value!= ""){
			
			if ((valoriObbligatoriType[i]== "string") && (!isAlphabetic(elForm.elements[valori[i]].value)))	{
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere alfabetico!" 
								alert(stringaErrore)
								return false;
			} else if ((valoriObbligatoriType[i] == "number")  && (!isNumber(elForm.elements[valori[i]].value))){
								var stringaErrore =	"Il valore di "+valoriName[i]+" deve essere numerico!" 
								alert(stringaErrore);
								return false;
			} else if ((valoriObbligatoriType[i] == "email") && (!isEmail(elForm.elements[valori[i]].value))){
								var emErrore="L'"+valoriName[i]+" inserita non è corretta!" 
								alert(emErrore)
								return false;
			} else if ((valoriObbligatoriType[i]== "data") && (!isData(elForm.elements[valori[i]].value))){
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere una data!" 
								alert(stringaErrore)
								return false;
			} else if ((valoriObbligatoriType[i]== "boolean") && (!isBoolean(elForm.elements[valori[i]].value))) {
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere booleano!" 
								alert(stringaErrore)
								return false;
			} else if ((valoriObbligatoriType[i]== "recapito") && (!isRecapito(elForm.elements[valori[i]].value))){
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere un recapito!" 
								alert(stringaErrore)
								return false;
			} else if ((valoriObbligatoriType[i]== "dati") && (!isDati(elForm.elements[valori[i]].value))){
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere un dato!" 
								alert(stringaErrore)
								return false;
			} else if ((valoriObbligatoriType[i]== "cap") && (!isCap(elForm.elements[valori[i]].value))){
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere un CAP valido di 5 numeri!" 
								alert(stringaErrore)
								return false;
			} else if ((valoriObbligatoriType[i]== "tel") && (!isTel(elForm.elements[valori[i]].value))){
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere un numero di telefono valido!" 
								alert(stringaErrore)
								return false;
			} else if ((valoriObbligatoriType[i]== "cell") && (!isTel(elForm.elements[valori[i]].value))){
								var stringaErrore="Il valore di "+valoriName[i]+" deve essere un numero di cellulare valido con 10 cifre!" 
								alert(stringaErrore)
								return false;									
			} else if ((valoriObbligatoriType[i]== "codfis") && (!isCodFis(elForm.elements[valori[i]].value))){
								return false;
			}



		}
			
	}

}



function isCodFis(string){
	return ControllaCF(string);
}



function isAlphabetic(string)
{
	for (k=0;k<parseInt(string.length);k++)
	{
		if ((string.charAt(k) < "9" && string.charAt(k) > "0"))
		{
			return false;
		}
	}

	return true;
}


function isBoolean(string)
{
	if ((string=="true") || (string=="false")) return true;
	else return false;
}


function isNumber(number)
{
	
	if(number.charAt(0)==".")
	{ 
		return false;
	}
	for (s=0;s<parseInt(number.length);s++)
	{
		if ((number.charAt(s) > "9" || number.charAt(s) < "0") && number.charAt(s)!="." && number.charAt(s)!=",")
		{
			return false;
		}
	}

	return true;
}

function isCap(number){
	
	if(number.length!=5) return false;
	for (s=0;s<parseInt(number.length);s++)
	{
		if ((number.charAt(s) > "9" || number.charAt(s) < "0"))
		{
			return false;
		}
	}
	
	return true;
}

function isTel(number){
	
	if((number.length<7) || number.length>12) return false;
	for (s=0;s<parseInt(number.length);s++)
	{
		if ((number.charAt(s) > "9" || number.charAt(s) < "0"))
		{
			return false;
		}
	}
	
	return true;
}

function isCell(number){
	
	if(number.length!=10) return false;
	for (s=0;s<parseInt(number.length);s++)
	{
		if ((number.charAt(s) > "9" || number.charAt(s) < "0"))
		{
			return false;
		}
	}
	
	return true;
}

function isEmail(email)
{	
	emailValida = false
	
	indexOfAt = email.length + 10;
	for (j=0;j<parseInt(email.length) && !emailValida;j++)
	{
		if (email.charAt(j) == "@")
		{
			emailValida = true;
			indexOfAt = j
		}
	}
	
	if(emailValida) 
	{
		indexOfDot = email.lastIndexOf(".")
		
		if((indexOfDot <= (indexOfAt + 1)) || (indexOfDot >=parseInt(email.length)-2))
		{
			
			emailValida = false;
		}	
	}
	
	if(! emailValida)
	{
		
		alert("L'indirizzo di email non sembra corretto (controlla @ e .)")
	}
	return emailValida;
}



function isData(number)
{
	if(number.length<10)
	return false;
	
	if(number.charAt(0)=="/" || number.charAt(0)=="-")
	{ 
		return false;
	}
	for (s=0;s<parseInt(number.length);s++)
	{
		if ((number.charAt(s) > "9" || number.charAt(s) < "0") && number.charAt(s)!="-" && number.charAt(s)!="/")
		{
			return false;
		}
	}

	return true;
}


function isRecapito(number)
{
	if(number.length<8)
	return false;
	
	if(number.charAt(0)=="/" || number.charAt(0)=="-")
	{ 
		return false;
	}
	for (s=0;s<parseInt(number.length);s++)
	{
		if ((number.charAt(s) > "9" || number.charAt(s) < "0") && number.charAt(s)!="-" && number.charAt(s)!="/")
		{
			return false;
		}
	}

	return true;
}

function isDati(a)
{
	if(a.length>0)	return true;
	else return false;
}
