function controllaCodiceFiscale(fForm)
{
	var gs=0;
	var i=0;
	var somma=0;

	strCodFis="";
	strcognome="";
	strnome="";
	strgiornosex="";
	chrcontrollo='';


	var sData = fForm.DataNascita.value;
	
	Giorno=parseInt(sData.substr(0,2),10);
	Mese=parseInt(sData.substr(3,2),10);
	Anno = parseInt(sData.substr(8,2),10);
	
	if (fForm.Gender[0].checked) {
		Sesso = fForm.Gender[0].value;
	} 
	if (fForm.Gender[1].checked) {
		Sesso = fForm.Gender[1].value;
	}	

	// Processa il cognome
	//----------------------------------------------------------------
	var sCognome = fForm.Lastname.value.toUpperCase();
	for (i=0; i<sCognome.length; i++) 
	{
		switch (sCognome.charAt(i)) 
		{
			case 'A':
			case 'E':
			case 'I':
			case 'O':
			case 'U': break;            
			default : 
				if((sCognome.charAt(i)<='Z')&& (sCognome.charAt(i)>'A'))
					strcognome = strcognome + sCognome.charAt(i);
		}
	}
	
	if (strcognome.length < 3) 
	{
		for (i=0; i<sCognome.length; i++) 
		{
			switch (sCognome.charAt(i)) 
			{
				case 'A':
				case 'E':
				case 'I':
				case 'O':
				case 'U': 
					strcognome = strcognome + sCognome.charAt(i);
			}
		}
		
		if (strcognome.length < 3) 
		{
			for (i=strcognome.length; i<=3; i++) 
			{ strcognome = strcognome + 'X'; }
		}
	}
	
	strcognome = strcognome.substring(0,3);
	//------------------------------------------------------------ 

	// processa il nome
	//----------------------------------------------------------------
	var sNome = fForm.Firstname.value.toUpperCase();
	for (i=0; i<sNome.length; i++) 
	{
		switch (sNome.charAt(i)) 
		{
			case 'A':
			case 'E':
			case 'I':
			case 'O':
			case 'U': 
				break;
			default:
				if((sNome.charAt(i)<='Z')&& (sNome.charAt(i)>'A'))
					strnome = strnome + sNome.charAt(i);
		}
	}
	
	if (strnome.length > 3) 
	{
		strnome = strnome.substring(0,1) + strnome.substring(2,4);
	} else {
		if (strnome.length < 3) 
		{
			for (i=0; i<sNome.length; i++) 
			{
				switch (sNome.charAt(i)) 
				{
					case 'A':
					case 'E':
					case 'I':
					case 'O':
					case 'U': 
						strnome = strnome + sNome.charAt(i);
				}
			}
			
			if (strnome.length < 3) 
			{
				for (i=strnome.length; i<=3; i++) 
					{strnome = strnome + 'X';}
			}
		}
		strnome = strnome.substring(0,3);
	}
	
//--------------------------------------- Fine processa nome




// processa giorno e sesso
//--------------------------------------------
	var multiSesso = 0;
	if (Sesso == "F") {
		multiSesso = 1;
	}
	
	gs = Giorno + (40 * multiSesso);
	if(gs<10) 
		strgiornosex = "0" + gs;
	else 
		strgiornosex =  gs;
//--------------------------------------------

// processa Mese
//--------------------------------------------
	var sMese = "";
	switch (Mese) {
		case 1:
			sMese = "A";
			break;
		case 2:
			sMese = "B";
			break;
		case 3:
			sMese = "C";
			break;
		case 4:
			sMese = "D";
			break;
		case 5:
			sMese = "E";
			break;
		case 6:
			sMese = "H";
			break;
		case 7:
			sMese = "L";
			break;
		case 8:
			sMese = "M";
			break;
		case 9:
			sMese = "P";
			break;
		case 10:
			sMese = "R";
			break;
		case 11:
			sMese = "S";
			break;
		case 12:
			sMese = "T";
			break;																																	
	}
	strCodFis = (strcognome + strnome + Anno + sMese + strgiornosex).toUpperCase();

	// Verifica che il codice fiscale sia uguale, a quello inserito
	var sCodFiscInsert = fForm.CodiceFiscale.value.toUpperCase();
	
	if (sCodFiscInsert.substr(0,11) != strCodFis) {
		return false;
	}
	
/*
	TOGLIERE CONTROLLO ULTIMO CARATTERE 

	
	strCodFis += sCodFiscInsert.substr(11,4);
	
	// calcola la cifra di controllo
	//--------------------------------------------
	for (i=0; i<15; i++) 
	{
		if (((i+1) % 2) != 0) //caratteri dispari
		{
			switch (strCodFis.charAt(i)) 
			{
				case '0':
				case 'A':{ somma += 1; break;}
				case '1':
				case 'B':{ somma += 0; break;}
				case '2':
				case 'C':{ somma += 5; break;}
				case '3':
				case 'D':{ somma += 7; break;}
				case '4':
				case 'E':{ somma += 9; break;}
				case '5':
				case 'F':{ somma += 13; break;}
				case '6':
				case 'G':{ somma += 15; break;}
				case '7':
				case 'H':{ somma += 17; break;}
				case '8':
				case 'I':{ somma += 19; break;}
				case '9':
				case 'J':{ somma += 21; break;}
				case 'K':{ somma += 2; break;}
				case 'L':{ somma += 4; break;}
				case 'M':{ somma += 18; break;}
				case 'N':{ somma += 20; break;}
				case 'O':{ somma += 11; break;}
				case 'P':{ somma += 3; break;}
				case 'Q':{ somma += 6; break;}
				case 'R':{ somma += 8; break;}
				case 'S':{ somma += 12; break;}
				case 'T':{ somma += 14; break;}
				case 'U':{ somma += 16; break;}
				case 'V':{ somma += 10; break;}
				case 'W':{ somma += 22; break;}
				case 'X':{ somma += 25; break;}
				case 'Y':{ somma += 24; break;}
				case 'Z':{ somma += 23; break;}
			}
		} 
		else //caratteri pari
		{
			switch (strCodFis.charAt(i)) 
			{
				case '0':
				case 'A':{ somma += 0; break;}
				case '1':
				case 'B':{ somma += 1; break;}
				case '2':
				case 'C':{ somma += 2; break;}
				case '3':
				case 'D':{ somma += 3; break;}
				case '4':
				case 'E':{ somma += 4; break;}
				case '5':
				case 'F':{ somma += 5; break;}
				case '6':
				case 'G':{ somma += 6; break;}
				case '7':
				case 'H':{ somma += 7; break;}
				case '8':
				case 'I':{ somma += 8; break;}
				case '9':
				case 'J':{ somma += 9; break;}
				case 'K':{ somma += 10; break;}
				case 'L':{ somma += 11; break;}
				case 'M':{ somma += 12; break;}
				case 'N':{ somma += 13; break;}
				case 'O':{ somma += 14; break;}
				case 'P':{ somma += 15; break;}
				case 'Q':{ somma += 16; break;}
				case 'R':{ somma += 17; break;}
				case 'S':{ somma += 18; break;}
				case 'T':{ somma += 19; break;}
				case 'U':{ somma += 20; break;}
				case 'V':{ somma += 21; break;}
				case 'W':{ somma += 22; break;}
				case 'X':{ somma += 23; break;}
				case 'Y':{ somma += 24; break;}
				case 'Z':{ somma += 25; break;}
			}
		}
	}
	somma %= 26;
	switch (somma) 
	{
		case 0: {chrcontrollo='A'; break;}
		case 1: {chrcontrollo='B'; break;}
		case 2: {chrcontrollo='C'; break;}
		case 3: {chrcontrollo='D'; break;}
		case 4: {chrcontrollo='E'; break;}
		case 5: {chrcontrollo='F'; break;}
		case 6: {chrcontrollo='G'; break;}
		case 7: {chrcontrollo='H'; break;}
		case 8: {chrcontrollo='I'; break;}
		case 9: {chrcontrollo='J'; break;}
		case 10: {chrcontrollo='K'; break;}
		case 11: {chrcontrollo='L'; break;}
		case 12: {chrcontrollo='M'; break;}
		case 13: {chrcontrollo='N'; break;}
		case 14: {chrcontrollo='O'; break;}
		case 15: {chrcontrollo='P'; break;}
		case 16: {chrcontrollo='Q'; break;}
		case 17: {chrcontrollo='R'; break;}
		case 18: {chrcontrollo='S'; break;}
		case 19: {chrcontrollo='T'; break;}
		case 20: {chrcontrollo='U'; break;}
		case 21: {chrcontrollo='V'; break;}
		case 22: {chrcontrollo='W'; break;}
		case 23: {chrcontrollo='X'; break;}
		case 24: {chrcontrollo='Y'; break;}
		case 25: {chrcontrollo='Z'; break;}
	}
	
	//--------------------------------------------

	strCodFis += chrcontrollo;
	
	if (sCodFiscInsert != strCodFis) {
		return false;
	}
	*/	
	return true; 
}

function controllaPartitaIVA(fForm) {
	if (fForm.PartitaIVA.value.length != 11) {
		return false;
	}
	
	var partitaIVA = fForm.PartitaIVA.value;
	for (i=0; i<11; i++) {
		if (partitaIVA.charAt(i) < '0' || partitaIVA.charAt(i) > '9') {
			return false;
		}
	}
	
	return true;
}
