function valida(nomeid) {
// parametro di controllo per il server
var elemento = prendiElementoDaId(nomeid).value;

if(elemento !=""){ //se il campo non è vuoto
//carico un'immagine per l'attesa
var e = document.getElementById('codice'); 
//e.innerHTML = "<img src=\"img/wait.gif\" />"; 

//questo per evitare di fare un'altra richiesta prima che sia completa la precedente
var isWorking = false;

// assegnazione oggetto XMLHttpRequest
var oggetto = assegnaXMLHttpRequest();

// se l'oggetto XMLHttpRequest non è nullo ed ho fatto una sola richiesta
  if(oggetto && !isWorking) {

    var r = Math.random();//uso un numero casuale per il problema della cache su ie
	var url = "validatore.php";//indirizzo del mio server,  dato che uso la POST, i parametri li spedisco con la SEND
	var params = "param="+escape(elemento)+"&rand="+escape(r);//parametri inviati nella SEND

	
  // impostazione richiesta asincrona POST del file specificato
  oggetto.open("POST", url, true);
  
  // imposto il giusto header per la POST, con la GET non serve
  oggetto.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  oggetto.setRequestHeader("Content-length", params.length);

  // rimozione dell'header "connection" come "keep alive"
  oggetto.setRequestHeader("connection", "close");
	
  // impostazione controllo e stato della richiesta
    oggetto.onreadystatechange = function() {

	// verifica dello stato
      if(oggetto.readyState == readyState.COMPLETATO) {
	  //verifica della risposta da parte del server
	  if(statusText[oggetto.status] == "OK"){
	  e.innerHTML = oggetto.responseText;
		  }
        else {
          // errore di caricamento
          e.innerHTML = "Impossibile effettuare l'operazione richiesta.<br />";
          e.innerHTML += "Errore riscontrato: " + statusText[oggetto.status];
        }
	  }
      }
      } 

    // invio richiesta
    oggetto.send(params);
	}
   }//end function 