function advControl()
	{var tuttoOK = true
		 
		if ((ControllaMail(document.advMail.adv_email.value) == 'KO') && (tuttoOK == true))
			{
				window.alert('L\'indirizzo di posta elettronica inserito\nnon sembra essere valido.\nVi preghiamo di controllarlo. Grazie');
				tuttoOK = false
			}
		
		if (tuttoOK == true)
			{document.advMail.submit();}
			
	}


function orderControl()
	{var tuttoOK = true
		 var stringa_codice_fiscale = document.order.cli_codice_fiscale.value;
		 var stringa_partita_iva = document.order.cli_partita_iva.value;
		 stringa_codice_fiscale = stringa_codice_fiscale.toUpperCase();
		 document.order.cli_codice_fiscale.value = stringa_codice_fiscale;
		//Primo controllo sulla scelta delle spese di spedizione
		if ((document.order.order_spedizione[0].checked == false) && (document.order.order_spedizione[1].checked == false) && (document.order.order_spedizione[2].checked == false) && (document.order.order_spedizione[3].checked == false) && (tuttoOK == true))
			{
				window.alert('Scegliere il tipo di spedizione/pagamento desiderato');
				tuttoOK = false
			}
		//Secondo controllo sulla scelta della tipologia di utente	
		if ((document.order.order_reg_type[0].checked == false) && (document.order.order_reg_type[1].checked == false) && (tuttoOK == true))
			{
				window.alert('Indicare se siete un nuovo cliente o un cliente già registrato');
				tuttoOK = false
			}
		
		//1° RAMO - Cliente nuovo (il secondo non esiste in realtà perché è una verifica tipo userid e password
		if (document.order.order_reg_type[0].checked == true) {
			if ((document.order.cli_persona_fisica[0].checked == false) && (document.order.cli_persona_fisica[1].checked == false) && (tuttoOK == true))
				{
					window.alert('Privato o Azienda?');
					tuttoOK = false
				}
			// Variante in caso di cliente aziendale
			if (document.order.cli_persona_fisica[1].checked == true) {
				if ((document.order.cli_ragione_sociale.value == '') && (tuttoOK == true))
					{
						window.alert('La Ragione Sociale non può essere omessa in caso di cliente aziendale');
						tuttoOK = false
					}
				}
				if ((document.order.ctt_cognome.value == '') && (tuttoOK == true))
					{
						window.alert('Cognome mancante');
						tuttoOK = false
					}
				if ((document.order.ctt_nome.value == '') && (tuttoOK == true))
					{
						window.alert('Nome mancante');
						tuttoOK = false
					}
				if ((document.order.ctt_telefono.value == '') && (tuttoOK == true))
					{
						window.alert('Telefono fisso necessario');
						tuttoOK = false
					}
				if ((document.order.ctt_cellulare.value == '') && (tuttoOK == true))
					{
						window.alert('Indicare un numero mobile di riferimento');
						tuttoOK = false
					}
				if ((ControllaMail(document.order.ctt_email.value) == 'KO') && (tuttoOK == true))
					{
						window.alert('L\'indirizzo di posta elettronica inserito\nnon sembra essere valido.\nVi preghiamo di controllarlo. Grazie');
						tuttoOK = false
					}
				if ((document.order.ctt_email.value != document.order.ctt_email_conferma.value)  && (tuttoOK == true))
					{
						window.alert('L\'indirizzo email e la conferma non corrispondono, verificare.');
						tuttoOK = false
					}
				if ((document.order.cli_indirizzo_legale.value == '') && (tuttoOK == true))
					{
						window.alert('Manca l\'indirizzo per il recapito della fattura');
						tuttoOK = false
					}
				if ((document.order.cli_cap_legale.value == '') && (tuttoOK == true))
					{
						window.alert('Scrivere il cap del recapito della fattura');
						tuttoOK = false
					}
				if ((document.order.cli_citta_legale.value == '') && (tuttoOK == true))
					{
						window.alert('Scrivere la città della fattura');
						tuttoOK = false
					}
				if ((document.order.cli_provincia_legale.value == '') && (tuttoOK == true))
					{
						window.alert('Scegliere la provincia per il recapito della fattura');
						tuttoOK = false
					}
				if ((document.order.cli_stato_legale.value == '') && (tuttoOK == true))
					{
						window.alert('Scrivere lo stato per il recapito della fattura');
						tuttoOK = false
					}
				
				// Differenziazione tra privato e azianda per il codice fiscale e la partita IVA
				if (document.order.cli_persona_fisica[0].checked == true) {
					if ((document.order.cli_codice_fiscale.value == '') && (tuttoOK == true))
						{
							window.alert('Scrivere Codice Fiscale');
							tuttoOK = false
						}
					if (((document.order.cli_codice_fiscale.value !='') && (stringa_codice_fiscale.length < 16))  && (tuttoOK == true))
						{
							window.alert('Il Codice Fiscale contiene meno di 16 caratteri');
							tuttoOK = false
						}
					if (((document.order.cli_codice_fiscale.value != '') && (controllaCF(stringa_codice_fiscale) == 'KO'))  && (tuttoOK == true))
						{
							window.alert('Il Codice Fiscale inserito non è corretto');
							tuttoOK = false
						}
				} else {
					
					if ((document.order.cli_codice_fiscale.value =='')  && (tuttoOK == true))
						{
							window.alert('Indicare il codice fiscale anche se uguale alla partita iva');
							tuttoOK = false
						}
						
					if ((document.order.cli_partita_iva.value == '') && (tuttoOK == true))
						{
							window.alert('Scrivere la partita IVA');
							tuttoOK = false
						}
						
					if ((document.order.cli_codice_fiscale.value !='')  && (tuttoOK == true))
						{
						if ((stringa_codice_fiscale.length < 16)  && (tuttoOK == true))
							{
								if ((stringa_codice_fiscale.length < 11)  && (tuttoOK == true))
									{
										window.alert('Il Codice Fiscale contiene meno di 11 cifre');
										tuttoOK = false
									} else {
										if ((controllaPIVA(stringa_codice_fiscale) == 'KO') && (tuttoOK == true))
											{
												window.alert('Il Codice Fiscale non è corretto');
												tuttoOK = false
											}
									}
							} else {
								if ((controllaCF(stringa_codice_fiscale) == 'KO')  && (tuttoOK == true))
									{
										window.alert('Il Codice Fiscale inserito non è corretto');
										tuttoOK = false
									}
							}
						}
					
					if (((document.order.cli_partita_iva.value != '') && (stringa_partita_iva.length < 11))  && (tuttoOK == true))
						{
							window.alert('La partita IVA contiene meno di 11 cifre');
							tuttoOK = false
						}	
				
					if (((document.order.cli_partita_iva.value != '') && (controllaPIVA(stringa_partita_iva) == 'KO'))  && (tuttoOK == true))
						{
							window.alert('La partita IVA non è corretta');
							tuttoOK = false
						}
					}
				}
			
		if (tuttoOK == true)
			{document.order.submit();}
			
	}

function controllaPIVA(piva) {
	var cifre = new Array;
	var i
	var calcolo = 0
	var totPari = 0
	var totDispari = 0
	var tot = 0
	var complemento
	var check = piva.charAt(10);
	
	//operazioni di verifica
	for(i=0;i<10;i++) 
		{
			cifre[i] = piva.charAt(i)
		}
		
	for(i=0;i<10;i++) 
		{
			if ((i==1) || (i==3) || (i==5) || (i==7) || (i==9)) 
				{
					calcolo = parseInt(cifre[i],10) * 2;
					if (calcolo > 9) 
						{
							totPari = totPari + Math.floor(calcolo/10);
							totPari = totPari + (calcolo - (Math.floor(calcolo/10))*10);
						}
					else
						{
							totPari = totPari + calcolo;
						}
				}
			else
				{
					totDispari = totDispari + parseInt(cifre[i],10);
				}
		}
	
	tot = totPari + totDispari;
	var totaleStringa = String(tot);
	
	if (totaleStringa.charAt(1) == '0')
		{
			if (check == totaleStringa.charAt(1))
				{
					return('OK')
				}
			else
				{
					return('KO')
				}
		}
	else
		{
			complemento = 10 - parseInt(totaleStringa.charAt(1),10);
			if (check == String(complemento))
				{
					return('OK')
				}
			else
				{
					return('KO')
				}
		}
}

function controllaCF(codice) {
	var cfctot
	var ndigit
	var ckd
	cfctot = 0
	ndigit = 0
   //Estrazione dei caratteri di posizione pari
	for(var i=1;i<14;i=i+2)
		{
			cfctot = cfctot + NumeriPari(codice.charAt(i))
   		}
   //Estrazione dei caratteri di posizione dispari
   for(var i=0;i<15;i=i+2)
		{
			cfctot = cfctot + NumeriDispari(codice.charAt(i))
   		}
   // Calcolo del check-digit di controllo
   ndigit = (cfctot / 26) - Math.floor(cfctot / 26)
   ndigit = Math.round(ndigit * 26)
   // check digit ricavato
   ckd = String.fromCharCode(65 + ndigit)
   if (ckd == codice.charAt(15))
   		{
			return 'OK'
		}
   else	
   		{
			return 'KO'
		}
}

function NumeriDispari(cifra) {
	var i
	var TD = new Array();
	TD[0] = new Array('B',"1");
	TD[1] = new Array('A','0');
	TD[2] = new Array('K','');
	TD[3] = new Array('P','');	
	TD[4] = new Array('L','');
	TD[5] = new Array('C','2');
	TD[6] = new Array('Q','');
	TD[7] = new Array('D','3');
	TD[8] = new Array('R','');
	TD[9] = new Array('E','4');
	TD[10] = new Array('V','');
	TD[11] = new Array('O','');
	TD[12] = new Array('S','');
	TD[13] = new Array('F','5');
	TD[14] = new Array('T','');
	TD[15] = new Array('G','6');
	TD[16] = new Array('U','');
	TD[17] = new Array('H','7');
	TD[18] = new Array('M','');
	TD[19] = new Array('I','8');
	TD[20] = new Array('N','');
	TD[21] = new Array('J','9');
	TD[22] = new Array('W','');
	TD[23] = new Array('Z','');
	TD[24] = new Array('Y','');
	TD[25] = new Array('X','');
	
	for(i=0;i<26;i++)
		{
			if ((TD[i][0] == cifra) || (TD[i][1] == cifra))
				{
					return i;
					//window.alert(i)
				}
		}
}

function NumeriPari(cifra) {
	var i
	var TP = new Array();
	TP[0] = new Array('A',"0");
	TP[1] = new Array('B','1');
	TP[2] = new Array('C','2');
	TP[3] = new Array('D','3');	
	TP[4] = new Array('E','4');
	TP[5] = new Array('F','5');
	TP[6] = new Array('G','6');
	TP[7] = new Array('H','7');
	TP[8] = new Array('I','8');
	TP[9] = new Array('J','9');
	TP[10] = new Array('K','');
	TP[11] = new Array('L','');
	TP[12] = new Array('M','');
	TP[13] = new Array('N','');
	TP[14] = new Array('O','');
	TP[15] = new Array('P','');
	TP[16] = new Array('Q','');
	TP[17] = new Array('R','');
	TP[18] = new Array('S','');
	TP[19] = new Array('T','');
	TP[20] = new Array('U','');
	TP[21] = new Array('V','');
	TP[22] = new Array('W','');
	TP[23] = new Array('X','');
	TP[24] = new Array('Y','');
	TP[25] = new Array('Z','');
	
	for(i=0;i<26;i++)
		{
			if ((TP[i][0] == cifra) || (TP[i][1] == cifra))
				{
					return i;
					//window.alert(i)
				}
		}
}

function ControllaMail(EmailAddr)
   {
   Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
   if (Filtro.test(EmailAddr))
      return 'OK';
   else
      {
      return 'KO';
      }
   }
