//Funzione per la selezione delle province (usata solo per il sito italiano)

//Funzione per verificare se una stringa è alfanumerica
function isAlfanumeric(str){
	var re=/^[0-9A-Za-z]*$/;
	return re.test(str);
}

//Funzione per verificare se una stringa è alfabetica
function isAlfabetic(str){
	var re=/^[A-Za-z]*$/;
	return re.test(str);
}

//Funzione per verificare se una stringa è numerica
function isNum(str){
	var re=/^[0-9]+$/;
	return re.test(str);
}


//restituisce la stringa in input eliminando gli spazi 
//all'inizio e alla fine
function trim(str, charToTrim){
	var tmp = "";
	var res = "";
	var foundNoSpace = false;

	if (typeof charToTrim == "undefined")
		charToTrim = " ";
	var first_space = str.indexOf(' ');
	if (first_space == 0){
		for (var i=0; str.length; ++i)
			if (str.charAt(i) == charToTrim)
				continue;
			else{
				tmp = str.substr(i);
				break;
			}
	}
	else tmp = str;

	var last_space = tmp.lastIndexOf(charToTrim);
	while ((last_space != -1)){
		++last_space;
		if (last_space == tmp.length){
			tmp = tmp.substr(0, last_space-1);
			last_space = tmp.lastIndexOf(charToTrim);
		}else break;
	}
	return tmp;
}


//Funzione per verificare la correttezza del formato della data
function isValidDate(gg, mm, aa, birthdate) { 
   var dateObj = new Date();

   var check = true;
 if (gg == "" && mm == "" && aa == "") {
	 document.forms['anag_form'].a_birthdate.value = "";  
     return check; 
 }
 else{
   		if (aa>=1901){
   		    mm = mm -1;
			dateObj = new Date(aa, mm, gg);			   
			if (isNaN(dateObj)){
				 check = false;
			     alert("Formato della data di nascita non corretto"); 
			} else {
			    if (dateObj.getMonth() != mm || dateObj.getFullYear() != aa){
					check = false;
			        alert("Formato della data di nascita non corretto"); 			    
			    }else{
					check = true;					
			        document.forms['anag_form'].a_birthdate.value = birthdate; 
			    }  
   		    }
   		}else{
			check = false;
   		    alert("Anno non valido"); 
   		}
 }		
   return check;
}


//Funzione x comporre la data di nascita nel formato yyyy-mm-dd
function compoundDate (giorno, mese, anno){
    var birthdate = anno.value +"-"+mese.value+"-"+giorno.value;
	var check = true;
	//Verifica se il formato della data è corretto
	check = isValidDate(giorno.value, mese.value, anno.value, birthdate);	
	
	return check;
}

//Funzione per verificare il riempimento di alcuni campi in base alla selezione di 'Persona' o 'Società'
function checkParameter (a_anag_Type, a_last_name, a_first_name, a_company_name){
   var check = true;

   eval("var lastName = document.anag_form."+a_last_name);
   eval("var firstName = document.anag_form."+a_first_name);
   eval("var companyName = document.anag_form."+a_company_name);
   eval("var anagType = document.anag_form."+a_anag_Type);
  
   var anag_type = anagType.options[anagType.selectedIndex].value;   
   
   if (anag_type == 1){//è una persona
       if ((lastName.value == "") || (firstName.value) == ""){
			check = false;
			alert("Inserire il nome e il cognome");
	   }
   }else{//è una società
       if (companyName.value == ""){
			check = false;
			alert("Inserire la ragione sociale");
	   }
   }
   return check;
}



//Funzione per verificare la correttezza di alcuni valori
function isValidUserField (a_zip_code, a_email, a_contact_phone, a_address, a_city, a_province, giorno, mese, anno){
   var vatuttobene = true;  
   	eval("var zipCode = document.anag_form."+a_zip_code);
	eval("var email = document.anag_form."+a_email);
	eval("var contactPhone = document.anag_form."+a_contact_phone);
	eval("var city = document.anag_form."+a_city);
	eval("var address = document.anag_form."+a_address);
	eval("var province = document.anag_form."+a_province);
	
   
   if (city.value == ""){
	     vatuttobene = false;
	     alert("Inserire la citta'.");
   }else if (zipCode.value == ""){
	     vatuttobene = false;
	     alert("Inserire il CAP.");
   }else if (zipCode.value != "" && !isNum(zipCode.value)){
	      vatuttobene = false;
	      alert("Il CAP non è in formato corretto.");
   }else if (isNum(zipCode.value)  && zipCode.value.length != 5){
	     vatuttobene = false;
	     alert("Il CAP deve essere di 5 cifre.");
    }else if (contactPhone.value == ""){
	     vatuttobene = false;
	     alert("Inserire il numero di telefono.");
   }else if (contactPhone.value != "" && isAlfabetic(contactPhone.value)){
	     vatuttobene = false;
	     alert("Il Numero telefonico non è in formato corretto.");
   }else if	(!compoundDate (giorno, mese, anno)){
		  vatuttobene = false;
   }else if (address.value == ""){
	     vatuttobene = false;
	     alert("Inserire l'indirizzo'.");
   }else if (province.options[province.selectedIndex].value == ""){
	     vatuttobene = false;
	     alert("Inserire la provincia.");
   }else if (email.value == ""){
	    vatuttobene = false;
	    alert("Inserire l'indirizzo email.");
   }else if (email.value != "" && email.value.indexOf('@', 0) == -1 || email.value.indexOf('.',email.value.indexOf('@', 0)) == -1){
	    vatuttobene = false;
	    alert("Il formato dell'indirizzo email non è corretto.");
   }
   
   return vatuttobene;
}   




//Funzione per verificare la correttezza di alcuni valori
//del destinatario
function checkDestField (controlloD, d_zip_code, /*d_paese,*/ d_last_name, d_company_name, d_address, d_city, d_province){
   var vatuttobene = true; 

	//eval("var paese = document.anag_form."+d_paese);
	eval("var zipCode = document.anag_form."+d_zip_code);
	eval("var zipCode = document.anag_form."+d_zip_code);
	//eval("var country = document.anag_form."+d_paese);
	eval("var lastName = document.anag_form."+d_last_name);
	eval("var companyName = document.anag_form."+d_company_name);
	eval("var address = document.anag_form."+d_address);
	eval("var city = document.anag_form."+d_city);
	eval("var province = document.anag_form."+d_province);

		
   //Se è stato selezionato il checkbox vengono effettuati i controlli   
   if (controlloD.checked){	   
	   if (lastName.value == "" && companyName.value == ""){
		  vatuttobene = false;
		  alert("Inserire il cognome o il nome dell'azienda.");
       }else if (city.value == ""){
		  vatuttobene = false;
		  alert("Inserire la citta'.");		  
	   /*}else if (country.options[country.selectedIndex].value == ""){
		  vatuttobene = false;
		  alert("Inserire il paese.");	*/	   	  
	   }else if (zipCode.value == "" ){
		  vatuttobene = false;
		  alert("Inserire il CAP.");
	   }else if (/*country.options[country.selectedIndex].value.toLowerCase()== "it" &&*/ zipCode.value != "" && !isNum(zipCode.value)){
		  vatuttobene = false;
		  alert("Il CAP non è in formato corretto.");
	   }else if (/*country.options[country.selectedIndex].value.toLowerCase()== "it" &&*/ isNum(zipCode.value)  && zipCode.value.length != 5){
		  vatuttobene = false;
		  alert("Il CAP deve essere di 5 cifre.");
	   }else if (address.value == ""){
		  vatuttobene = false;
		  alert("Inserire l'indirizzo.");
       }else if (province.options[province.selectedIndex].value== ""){
		  vatuttobene = false;
		  alert("Inserire la provincia.");
       }/*else if (province.options[province.selectedIndex].value != "ALTRO" && country.options[country.selectedIndex].value.toLowerCase()!= "it"){
		  vatuttobene = false;
		  alert("La provincia selezionata è valida solo per l'Italia.");
	   }*/	  
   }//end if controllo_dest
   
   return vatuttobene;
} 





//Funzione per verificare le varie Condizioni e Termini di Utilizzo del Servizio
function conditionAccepted (){
   var accept = true;   

   return accept;
}



function checkFormato(a_anagType, a_vat_number, a_cognome, a_nome, a_gender){

  var check = true;
  eval("var anagType = document.anag_form."+a_anagType);
  eval("var vatnumber = document.anag_form."+a_vat_number);
  eval("var nome = document.anag_form."+a_nome);
  eval("var cognome = document.anag_form."+a_cognome);
  eval("var gender = document.anag_form."+a_gender);
	
  //Per il momento non vi è nessun controllo sul sesso
  
  //Persona o Società
   var anag_type = anagType.options[anagType.selectedIndex].value;
   //Stato
  
   //CodFiscale o PIva	
	if (anag_type == 1){//è una persona
		if (vatnumber.value == "") {
			check = false;
			alert("Devi specificare il codice fiscale");
		}else check = ControlloCodiceFiscale(vatnumber.value.toUpperCase(), nome.value.toUpperCase(), cognome.value.toUpperCase());				
	}else{//è una società
		if (vatnumber.value == ""){
			check = false;
			alert("Devi specificare la partita IVA");
		}else if (!isNum(trim(vatnumber.value, " "))){
			check = false;			
			alert("La Partita IVA non è in formato corretto");
		}else if (isNum(trim(vatnumber.value, " ")) && trim(vatnumber.value, " ").length != 11){			
			check = false;
			alert("La Partita IVA deve essere di 11 caratteri");
		}
	}
		
   return check;
}



/*
Inizio funzioni per il controllo del codice fiscale
*/

// --------------------------------------------------------------------------
function CheckCognome(cognome)
{
	if(cognome.length < 1)
   	{
    	alert("Attenzione:\nManca il Cognome!");
    	return(0);
   	}
	var Cognome = cognome.toUpperCase();
	return(1);
}

// --------------------------------------------------------------------------
function CheckNome(nome)
{ 	
	if(nome.length < 1)
   	{
    	alert("Attenzione:\nManca il Nome!");
    	return(0);
   	}
	var Nome = nome.toUpperCase();
	return(1);
}

// --------------------------------------------------------------------------
function CheckCodFis(codFisc)
{
 	if(codFisc.length < 1)
   	{
    	alert("Attenzione:\nManca il Codice Fiscale!");
    	return(0);
   	}
	var CodFis = codFisc.toUpperCase();
	return(1);
}

//--------------------------------------------------------------------------
function ControlloCodiceFiscale(codFis, nome, cognome)
{
 var retCode = false;
 var somma = 0;

 strCodFis = "";
 strcognome = "";
 strnome = "";
 chrcontrollo = '';
 
 var strContCognome = codFis.substring(0,3);
 var strContNome = codFis.substring(3,6);
 var chrContCarat = codFis.substring(15,16);
 
 if (CheckNome(nome) && CheckCognome(cognome) && CheckCodFis(codFis))
 {

  // 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);				  
                }
        }
    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);
                 }
          }
       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);
                        }
                }
             if (strnome.length < 3) 
               {
                for (i=strnome.length; i<=3; i++) 
                   {strnome = strnome + 'X';}
               }
            }
          strnome = strnome.substring(0,3);		    

         }
 //--------------------------------------- Fine processa nome

// strCodFis = strcognome + strnome + AnnoDieci + AnnoZero + Mese + strgiornosex + Comune;

strCodFis = codFis.substring(0,15);
 
 // 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;}
         }
 //--------------------------------------------

	if ( (strContCognome == strcognome) && (strContNome == strnome) && (chrContCarat == chrcontrollo))	
		retCode = true;		
	else alert("Attenzione: Il codice fiscale inserito non risulta corretto.");
 }
 return retCode;
}
//-------------------------------------------------------------





//Funzione generale che invoca tutti i metodi necessari per i controlli
//se tutti i metodi restituiscono true allora effettua il submit
function prepareForSubmit(a_zipcode, a_email, a_fax, a_contact_phone, a_country,
a_anag_type, a_last_name, a_first_name, a_company_name, a_vatnumber, a_gender, a_address, a_city, a_province
, cf__gg, cf__mm, cf__aaaa){	
	
	if (checkParameter(a_anag_type, a_last_name, a_first_name, a_company_name)
	  && isValidUserField (a_zipcode, a_email, a_contact_phone, a_address, a_city, a_province, cf__gg, cf__mm, cf__aaaa)	
	  && checkFormato(a_anag_type, a_vatnumber, a_last_name, a_first_name, a_gender)
	        && conditionAccepted ()
     // && compoundDate (cf__gg, cf__mm, cf__aaaa)
	)
		document.forms["anag_form"].submit();			
}



