/*------------------------------------------------------------------------------
Author: memic
	    memic.a@email.it
		
	    
		Have Fun...
------------------------------------------------------------------------------*/


// CCC NNN AA M GG L VVV K
function calcolo()
{

	var somma=0;
	var cont=0;
	var mese="0ABCDEHLMPRST";
	var vocali="AEIOU";
	var consonanti="BCDFGHJKLMNPQRSTVWXYZ";
	var numeri="0123456789";

	var ccc='';
	var nnn='';
	var sesso='';
	if (document.calcoloCF.sesso[0].checked==true)
		sesso='M';
	else
		sesso='F';
		
	var aa=document.calcoloCF.anno[document.calcoloCF.anno.selectedIndex].value.substr(2,2);
	var m=mese.substr((document.calcoloCF.mese[document.calcoloCF.mese.selectedIndex].value),1);
	var comune = document.calcoloCF.comune.value;
	var lvvv='';
	var k='';
	var nome='';
	var cognome='';
	var cognome2=document.calcoloCF.cognome.value.toUpperCase();
	var nome2=document.calcoloCF.nome.value.toUpperCase();

	for (i=0;i<cognome2.length;i++)
		if (cognome2.substr(i,1)!=" ")
	 		cognome+=cognome2.substr(i,1);
		
	for (i=0;i<nome2.length;i++)
		if (nome2.substr(i,1)!=" ")
			nome+=nome2.substr(i,1);

	//---------controllo se i campi sono vuoti----------------------
	if (cognome=="")
	{
		alert("inserisci il cognome")
		document.calcoloCF.cognome.focus();
		return false
	}
	if (nome=="")
	{
		alert("inserisci il nome")
		document.calcoloCF.nome.focus();
		return false
	}
	if (comune=='')
	{
		alert("inserisci il comune")
		document.calcoloCF.nome.focus();
		return false
	}
	//-----------------fine controllo-------------------------------

	//----------------calcolo CCC-----------------------------------

	for (i=0;i<cognome.length;i++)
	{
		if (consonanti.indexOf(cognome.substr(i,1),0)!=-1)      //si prendono le prime tre consonanti
			ccc+=cognome.substr(i,1);                           //se sono di meno si aggiungono 
		if (ccc.length==3)                                      //vocali nell ordine in cui si presentano
			break;
	}

	if (ccc.length<3)
		for (i=0;i<cognome.length;i++)
		{
			if (vocali.indexOf(cognome.substr(i,1),0)!=-1)
				ccc+=cognome.substr(i,1);
			if (ccc.length==3)
				break;
		}
		
	while (ccc.length<3)    // se il cognome ha meno di tre lettere si aggiunge la lettera  'X'
		ccc+='X';

	// ---------fine calcolo CCC------------------------------------
	//------------calcolo NNN---------------------------------------
	var c='';
	var v='';

	for (i=0;i<nome.length;i++)
	{
		if (consonanti.indexOf(nome.substr(i,1),0)!=-1)
			c+=nome.substr(i,1);
			
		if (vocali.indexOf(nome.substr(i,1),0)!=-1)
			v+=nome.substr(i,1);
	}
		
	if (c.length>3)                          // se siamo fortunati finisce qui :) 
		nnn=c.substr(0,1)+c.substr(2,2);     // prendo il primo terzo e quarto carattere
	else                                     //altrimenti andiamo avanti
	{
		var i=0;
		var j=0;
		var k=0;
		
		while (nnn.length<3)
		{
			if (i<c.length)
			{
				nnn+=c.substr(i,1);
				i++;
			}
			else if (j<v.length)
			{
				nnn+=v.substr(j,1);
				j++;
			}
			
			k++;				
			if (  k > (i+j)  )
				break;
		}
	}

	while (nnn.length<3)    // se il cognome ha meno di tre lettere si aggiunge la lettera  'X'
		nnn+='X';

	// ---------fine calcolo NNN------------------------------------

	// ---------calcolo GG------------------------------------------
	if (sesso=="M")
		var gg=document.calcoloCF.giorno[document.calcoloCF.giorno.selectedIndex].value;
	else
		var gg=parseInt(document.calcoloCF.giorno[document.calcoloCF.giorno.selectedIndex].value)+40;
	// ---------fine calcolo GG-------------------------------------

	//codice comune  L VVV
	var lunghezza=arrcomuni.length;
	for (i = 0; i < lunghezza; i++)
	{
		if(comune.toUpperCase() == arrcomuni[i][1])
		{
			lvvv=arrcomuni[i][1];
			break;
		}
	}
	if (i>=lunghezza)
	{
		document.calcoloCF.CF.value = 'Comune non trovato, controlla i dati.';
		return 0;
	}
	else
		lvvv = arrcomuni[i][0];            
	

	// ---------------calcolo K-------------------------------------
	var CodFis=ccc+nnn+aa+m+gg+lvvv;
	var CodFis2=new Array();
	var pari="ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	var dispari="BAKPLCQDREVOSFTGUHMINJWZYX";
	var dispariNumeri=new Array(1,0,5,7,9,13,15,17,19,21);

	for (i=0; i<CodFis.length; i++ )
	{
		if (i%2!=0)
		{
			if (pari.indexOf(CodFis.substr(i,1),0)!=-1)
				CodFis2[i]=pari.indexOf(CodFis.substr(i,1),0);
			else
				CodFis2[i]=CodFis.substr(i,1);

			somma+=parseInt(CodFis2[i]);
		}
		else
		{
			if (dispari.indexOf(CodFis.substr(i,1),0)!=-1)
			CodFis2[i]=dispari.indexOf(CodFis.substr(i,1),0);
			else
			CodFis2[i]=dispariNumeri[CodFis.substr(i,1)];
			somma+=parseInt(CodFis2[i]);
		}
		
	}
	k=pari.substr((somma%26),1);
	//-----------fine calcolo K-------------------------------------
			
	//stampa codice fiscale
	document.calcoloCF.CF.value=ccc+" "+nnn+" "+aa+" "+m+" "+gg+" "+lvvv+" "+k;
	return 1;
}
