/*****************************************
	Controllo della Partita I.V.A.
	Linguaggio: JavaScript
******************************************/

//function ControllaPIVA(pi)


function ControllaPIVA(partitaIVA) {
 var n_Val = 0;
 var n_Som1 = 0;
 var n_Som2 = 0;
 var lcv = 0;

 if (partitaIVA.length !=11) {
  alert("Partita IVA non valida!");	
  return false;
 }
 
 if (partitaIVA =="00000000000") {
  alert("Partita IVA non valida!");	
  return false;
 }
 
 var l_ret = partitaIVA.to_i;


 if (l_ret <= 0) {
  alert("Partita IVA non valida!");		
  return false;
 }
 pivaArray = partitaIVA.split('');
 
 for (lcv = 0; lcv <= 8; lcv+=2) { 
  n_Val = eval(pivaArray[lcv]);
  n_Som1 += n_Val;
  n_Val = pivaArray[lcv+1];
  n_Som1 += (Math.floor(n_Val/5.0) + (n_Val<<1) % 10);
 }

 n_Som2 = 10 - (n_Som1 % 10);
 if (n_Som2 == 10)
  n_Som2 = 0;


 n_Val = pivaArray[10];
 if (n_Som2 == n_Val) {
 	//alert("good");
  return true;
 }

 alert("Partita IVA non valida!");	
 return false;
}

/**************************************
	Controllo del Codice Fiscale
	Linguaggio: JavaScript
***************************************/



function ControllaCF(campo){
   caratteri= new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
   pari= new Array (0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)
   dispari=new Array (1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23)
   cod=campo.value.toLowerCase();
   check=true;
   if (cod.length!=16){
      check=false
      }
     else
      {
      lettere=cod.substr(0,6)+cod.substr(8,1)+cod.substr(11,1)+cod.substr(15);
      numeri=cod.substr(6,2)+cod.substr(9,2)+cod.substr(12,3);
      for (i=0;i<10;i++){
         if (lettere.charCodeAt(i)<97 || lettere.charCodeAt(i)>122){
            check=false;}
      }
      for (i=0;i<8;i++){
         if (numeri.charCodeAt(i)<48 || numeri.charCodeAt(i)>57){
            check=false;
         }
      }   
     }
   //checksum del codice fiscale
   test=cod.substr(15,1);
   var somma=0
   for (i=0;i<16;i=i+2){ //dispari
       carattere=cod.substr(i,1)
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+dispari[k]
             break
          }
       }
    }
    for (i=1;i<15;i=i+2){ //pari
       carattere=cod.substr(i,1)
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+pari[k]
             break
          }
       }
    }
   resto=somma % 26;
   var lettera=String.fromCharCode(97+resto);            
   if (test != lettera){
      check=false;
      }   
   if (check==false){
      alert("Codice fiscale errato!")
      }
      else
      {
     // alert("codice fiscale corretto!!")
      }
   return check;
}

function ControllaCF2(campo){
   caratteri= new Array ("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z")
   pari= new Array (0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25)
   dispari=new Array (1,0,5,7,9,13,15,17,19,21,1,0,5,7,9,13,15,17,19,21,2,4,18,20,11,3,6,8,12,14,16,10,22,25,24,23)
   cod=campo.value.toLowerCase();
   check=true;
   if (cod.length!=16){
      check=false
      }
     else
      {
      lettere=cod.substr(0,6)+cod.substr(8,1)+cod.substr(11,1)+cod.substr(15);
      numeri=cod.substr(6,2)+cod.substr(9,2)+cod.substr(12,3);
      for (i=0;i<10;i++){
         if (lettere.charCodeAt(i)<97 || lettere.charCodeAt(i)>122){
            check=false;}
      }
      for (i=0;i<8;i++){
         if (numeri.charCodeAt(i)<48 || numeri.charCodeAt(i)>57){
            check=false;
         }
      }   
     }
   //checksum del codice fiscale
   test=cod.substr(15,1);
   var somma=0
   for (i=0;i<16;i=i+2){ //dispari
       carattere=cod.substr(i,1)
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+dispari[k]
             break
          }
       }
    }
    for (i=1;i<15;i=i+2){ //pari
       carattere=cod.substr(i,1)
       for (k=0;k<36;k++){
          if (carattere==caratteri[k]){
             somma=somma+pari[k]
             break
          }
       }
    }
   resto=somma % 26;
   var lettera=String.fromCharCode(97+resto);            
   if (test != lettera){
      check=false;
      }   
   if (check==false){
     // alert("codice fiscale non valido!")
      }
      else
      {
     // alert("codice fiscale corretto!!")
      }
   return check;
}

function ControllaPIVA2(partitaIVA) {
 var n_Val = 0;
 var n_Som1 = 0;
 var n_Som2 = 0;
 var lcv = 0;

 if (partitaIVA.length !=11) {
  //alert("Partita IVA non valida!");	
  return false;
 }
 
 if (partitaIVA =="00000000000") {
  //alert("Partita IVA non valida!");	
  return false;
 }
 
 var l_ret = partitaIVA.to_i;


 if (l_ret <= 0) {
  //alert("Partita IVA non valida!");		
  return false;
 }
 pivaArray = partitaIVA.split('');
 
 for (lcv = 0; lcv <= 8; lcv+=2) { 
  n_Val = eval(pivaArray[lcv]);
  n_Som1 += n_Val;
  n_Val = pivaArray[lcv+1];
  n_Som1 += (Math.floor(n_Val/5.0) + (n_Val<<1) % 10);
 }

 n_Som2 = 10 - (n_Som1 % 10);
 if (n_Som2 == 10)
  n_Som2 = 0;


 n_Val = pivaArray[10];
 if (n_Som2 == n_Val) {
 	//alert("good");
  return true;
 }

// alert("Codice fiscale errato!");	
 return false;
}

function ControllaTutto(campo){
	
	if (ControllaCF2(campo) || ControllaPIVA2(campo.value)) return true;
	else {
		alert("Codice fiscale o partita IVA non validi!");
		return false;
		
	}	
	
}


