codice:
<script language="javascript">
 <!--// Verifica Partita Iva 

  function Modulo() {
     // Variabili associate ai campi del modulo
     var ragione = document.modulo.ragione.value;
     var nickname = document.modulo.nickname.value;
     var password = document.modulo.password.value;
     var conferma = document.modulo.conferma.value;
     var citta = document.modulo.citta.value;
	 var provincia = document.modulo.provincia.value;
	 var cap = document.modulo.cap.value;
     var indirizzo = document.modulo.indirizzo.value;
     var telefono = document.modulo.telefono.value;
     var email = document.modulo.email.value;
     var homepage = document.modulo.homepage.value;
     var piva = document.modulo.piva.value;
     // Espressione regolare dell'email
     var email_reg_exp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
        //Effettua il controllo sul campo NOME
        if ((ragione == "") || (ragione == "undefined")) {
           alert("Il campo Nome o Ragione sociale è obbligatorio.");
           document.modulo.ragione.focus();
           return false;
        }
        
        //Effettua il controllo sul campo NICKNAME
        else if ((nickname == "") || (nickname == "undefined")) {
           alert("Il campo Nickname è obbligatorio.");
           document.modulo.nickname.focus();
           return false;
        }
        //Effettua il controllo sul campo PASSWORD
        else if ((password == "") || (password == "undefined")) {
           alert("Il campo Password è obbligatorio.");
           document.modulo.password.focus();
           return false;
        }
		 //Effettua il controllo sul campo piva
        else if ((isNaN(piva)) || (piva == "") || (piva == "undefined")) {
           alert("Il campo Partita IVA è obbligatorio o non è stato immesso correttamente.");
           document.modulo.piva.focus();
           return false;
        }
		//Effettua il SECONDO controllo sul campo piva 
		else if (controllaPIVA(piva) != '')
			alert(controllaPIVA(piva)); 
			document.modulo.piva.focus(); 
			return false;
		}
	

		//Effettua il controllo sul campo CITTA'
        else if ((citta == "") || (citta == "undefined")) {
          alert("Il campo Città è obbligatorio.");
          document.modulo.citta.focus();
          return false;
        }
		//Effettua il controllo sul campo PROVINCIA
        else if ((provincia == "") || (provincia == "undefined")) {
          alert("Il campo provincia è obbligatorio.");
          document.modulo.citta.focus();
          return false;
        }
		 //Effettua il controllo sul campo cap
        else if ((isNaN(cap)) || (cap == "") || (cap == "undefined")) {
           alert("Il campo CAP è obbligatorio.");
           document.modulo.cap.focus();
           return false;
        }
        //Effettua il controllo sul campo CONFERMA PASSWORD
        else if ((conferma == "") || (conferma == "undefined")) {
           alert("Il campo Conferma password è obbligatorio.");
           document.modulo.conferma.focus();
           return false;
        }
        //Verifica l'uguaglianza tra i campi PASSWORD e CONFERMA PASSWORD
        else if (password != conferma) {
           alert("La password confermata è diversa da quella scelta, controllare.");
           document.modulo.conferma.value = "";
           document.modulo.conferma.focus();
           return false;
        }
       
       
        
        //Effettua il controllo sul campo INDIRIZZO
        else if ((indirizzo == "") || (indirizzo == "undefined")) {
           alert("Il campo Indirizzo è obbligatorio.");
           document.modulo.indirizzo.focus();
           return false;
        }
        //Effettua il controllo sul campo TELEFONO
        else if ((isNaN(telefono)) || (telefono == "") || (telefono == "undefined")) {
           alert("Il campo Telefono è numerico ed obbligatorio.");
           document.modulo.telefono.value = "";
           document.modulo.telefono.focus();
           return false;
        }
		//Effettua il controllo sul campo EMAIL
        else if (!email_reg_exp.test(email) || (email == "") || (email == "undefined")) {
           alert("Inserire un indirizzo email corretto.");
           document.modulo.email.select();
           return false;
        }
        
       
        //INVIA IL MODULO
        else {
           document.modulo.action = "Scriviregistrazione.asp";
           document.modulo.submit();
        }
  }
 //-->
 
 function controllaPIVA(pi) 
{ 
	if( pi == '' ) 
		return ''; 
	if( pi.length != 11 ) 
		return "La lunghezza della partita IVA non è\n" + 
			"corretta: la partita IVA dovrebbe essere lunga\n" + 
			"esattamente 11 caratteri.\n"; 
	validi = "0123456789"; 
	for( i = 0; i < 11; i++ )
	{ 
		if( validi.indexOf( pi.charAt(i) ) == -1 ) 
			return "La partita IVA contiene un carattere non valido `" + 
				pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n"; 
	} 
	s = 0; 
	for( i = 0; i <= 9; i += 2 ) 
		s += pi.charCodeAt(i) - '0'.charCodeAt(0); 
	for( i = 1; i <= 9; i += 2 )
	{ 
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) ); 
		if( c > 9 ) 
			c = c - 9; 
		s += c; 
	} 
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) ) 
		return "La partita IVA non è valida:\n" + 
			"il codice di controllo non corrisponde.\n"; 

	return ''; 
} 
</script>
Impostato così mi dà errore nella visualizzazione della pagina

Faccio una domanda da ignorante....ma perchè il secondo controllo controlla la parola (pi) e non piva?