

function validaForm(nomeform,listacontrolli) 
{
		//ogni elemento del vettore è così formato (es:"id,nome,testo,dato,");
		//0 = id (univoco)
		//1 = nome del controllo (descrittivo)
		//2 = testo da mostrare in caso di non validazione 
		//3 = tipo di validazione (data, mail etc.) 
		//4 = parametri del validatore (possono essere tanti)
		/*
		valori ritornati :
		false = il dato non è valido 
		true  = il dato è valido 
		
		descrizione algoritmo (base) :
		1-ciclo il vettore di controlli 
		2-per ogni controllo verifico 
			2.1- se è vuoto 
			2.2- se è  un tipo particolare 
				 delega alle altre funzioni che controllano il formato 
				 (data, mail ecc.) 
			
		*/
		var pos_id,pos_nome,pos_testo,pos_tipodato;
		var bret,salert;
		pos_id = 0;
		pos_nome = 1;
		pos_testo = 2;
		pos_tipodato = 3;
		pos_extra = 4;

    /*
    server per avere compatibilità verso le altre
    versioni
    se listacontrolli == null 
    siggnifica che non è stato passato nomeform
    (codice vecchio)
    quindi il form non ha nome do per scontato
    che sia solo uno e lo metto a zero.
    */
		if (listacontrolli == null)
		{
      listacontrolli = nomeform;
      nomeform = 0;
    }
					

			
			for (var i=0; i<listacontrolli.length; i++) {
					var obj = 	listacontrolli[i].split(",");
					
					var ctrl = document.forms[nomeform].elements[obj[pos_id]];
          					
					salert = obj[pos_testo]; //testo di alert

					if (ctrl.value == "")  bret = false;
          else
					if (ctrl.value != "") { //non è vuoto verifico che tipo di dato è 

							if (obj[pos_tipodato] != "") 
              {  //se è un tipo particolare delega ...
								switch (obj[pos_tipodato]) 
                {
									case 'data': 
									bret = validaData(ctrl.value);
									break;
									
									case 'mail':
									bret = validaMail(ctrl.value);
									break;
									
									case 'radio':
									bret = validaRadioBtn(ctrl2,obj[pos_extra]);
									break;
								}
							}
					}
					
					
					if (bret == false) //mostra il messaggio
          {  
						alert(salert);
						return bret;
					}
					
			  }// for 
		return true;
}
