
var strCodFis="";
var strcognome="";
var strnome="";
var strgiornosex="";
var chrcontrollo='';



// Controls/Definitions:
// --------------------------------------------------------------------------
DefaultValues();

// --------------------------------------------------------------------------

// Functions:

// --------------------------------------------------------------------------
// Setta i prodotti ed i valori di default
// --------------------------------------------------------------------------
function DefaultValues()
{
	strCodFis="";
	strcognome="";
	strnome="";
	strgiornosex="";
	chrcontrollo='';

	Cognome = "";
	Nome = "";
	Sesso = 0;
	Comune = "";
	CodiceFiscale = "";
	AnnoCento = 19;
	AnnoDieci = "0";
	AnnoZero = "0";
	Mese = "A";
	Giorno = 1;
 
	return;
}


// --------------------------------------------------------------------------
function CheckCognome()
{
	if (document.getElementById("txtCognome").value.length < 1)
	{
		alert("Attenzione:\nManca il Cognome!");
		return(0);
	}
	//document.frmDati.txtCognome.value = document.frmDati.txtCognome.value.toUpperCase();
	return(1);
}

// --------------------------------------------------------------------------
function CheckNome()
{
	if (document.getElementById("txtNome").value.length < 1)
	{
		alert("Attenzione:\nManca il Nome!");
		return(0);
	}
	//document.frmDati.txtNome.value = document.frmDati.txtNome.value.toUpperCase();
	return(1);
}

// --------------------------------------------------------------------------
function CheckComune()
{
	if (document.getElementById("hidCodComuneNascita").value.length < 1)
	{
		alert("Attenzione:\nManca il Comune!");
		return(0);
	}
	document.getElementById("hidCodComuneNascita").value = document.getElementById("hidCodComuneNascita").value.toUpperCase();
	return(1);
}

function CheckSesso()
{
	if (document.getElementById("cboSesso").value == "")
	{
		alert("Attenzione:\nManca il Sesso!");
		return(0);
	}
	return(1);
}

function CheckDataNascita()
{
	if (document.getElementById("cboDataNascitaD").value == 0 || document.getElementById("cboDataNascitaM").value == 0 || document.getElementById("cboDataNascitaY").value == 0)
	{
		alert("Attenzione:\nData di nascita non inserita!");
		return(0);
	}
	return(1);
}

// --------------------------------------------------------------------------
function CalcolaCodiceFiscale()
{
	var gs = 0;
	var i = 0;
	var somma = 0;

	strCodFis = "";
	strcognome = "";
	strnome = "";
	strgiornosex = "";
	chrcontrollo = "";
 
	Giorno = parseInt(document.getElementById("cboDataNascitaD").value, 10);
	Mese = parseInt(document.getElementById("cboDataNascitaM").value, 10);
	Anno = document.getElementById("cboDataNascitaY").value;
	AnnoCento = Anno.substr(0, 2);
	AnnoDieci = Anno.substr(2, 1);
	AnnoZero = Anno.substr(3, 1);
	Comune = document.getElementById("hidCodComuneNascita").value;
	Sesso = document.getElementById("cboSesso").value;

	if (CheckCognome() && CheckNome() && CheckSesso() && CheckDataNascita() && CheckComune())
	{
		Nome = document.getElementById("txtNome").value.toUpperCase();
		Cognome = document.getElementById("txtCognome").value.toUpperCase();
		// Processa il cognome
		//----------------------------------------------------------------
		for (i = 0; i < Cognome.length; i++) 
        {
			switch (Cognome.charAt(i)) 
            {
				case 'A':
                case 'E':
                case 'I':
                case 'O':
                case 'U': break;            
                default :
					if ((Cognome.charAt(i) <= 'Z') && (Cognome.charAt(i) > 'A'))
						strcognome = strcognome + Cognome.charAt(i);
					break;
            }
        }
		if (strcognome.length < 3) 
		{
			for (i = 0; i < Cognome.length; i++) 
			{
				switch (Cognome.charAt(i)) 
                {
					case 'A':
					case 'E':
					case 'I':
					case 'O':
					case 'U':
						strcognome = strcognome + Cognome.charAt(i);
						break;
                }
			}
			if (strcognome.length < 3) 
			{
				for (i = strcognome.length; i <= 3; i++)
					strcognome = strcognome + 'X';
			}
		}
		strcognome = strcognome.substring(0,3);
		//------------------------------------------------------------ 

		// processa il nome
		//----------------------------------------------------------------
		for (i=0; i<Nome.length; i++) 
		{
			switch (Nome.charAt(i)) 
            {
				case 'A':
				case 'E':
				case 'I':
				case 'O':
				case 'U': break;
				default:
					if ((Nome.charAt(i) <= 'Z') && (Nome.charAt(i) > 'A'))
						strnome = strnome + Nome.charAt(i);
            }
		}
		if (strnome.length > 3) 
		{
			strnome = strnome.substring(0, 1) + strnome.substring(2, 4);
		} 
		else
		{
			if (strnome.length < 3) 
            {
				for (i = 0; i < Nome.length; i++) 
                {
					switch (Nome.charAt(i)) 
                    {
                        case 'A':
                        case 'E':
                        case 'I':
                        case 'O':
                        case 'U':
							strnome = strnome + Nome.charAt(i);
							break;
                    }
                }
				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
		//--------------------------------------------
		gs = Giorno + (40 * Sesso);
		if (gs < 10)
			strgiornosex = "0" + gs;
		else
			strgiornosex =  gs;
		//--------------------------------------------
 
		//processa il mese
		//-------------------------------------------
		switch (Mese)
		{
			case  1: Mese = "A"; break;
			case  2: Mese = "B"; break;
			case  3: Mese = "C"; break;
			case  4: Mese = "D"; break;
			case  5: Mese = "E"; break;
			case  6: Mese = "H"; break;
			case  7: Mese = "L"; break;
			case  8: Mese = "M"; break;
			case  9: Mese = "P"; break;
			case 10: Mese = "R"; break;
			case 11: Mese = "S"; break;
			case 12: Mese = "T"; break;
		}
		//---------------------------------------------

		strCodFis = strcognome + strnome + AnnoDieci + AnnoZero + Mese + strgiornosex + Comune;
 
		// 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;
		}
		
		//--------------------------------------------
		document.getElementById("txtCodiceFiscale").value = strCodFis + chrcontrollo;
	}
	return; 
}

// --------------------------------------------------------------------------
//  END OF SCRIPT
// --------------------------------------------------------------------------


