function validazione(objForm) {
	/* -------------------------------
		Validazione campi nei forms
		Versione 1.0 #16/05/2002
		by Marino T - Vicenza - Italy
	---------------------------------- */ 
/*
 	var msg =  "N.\tNome\tTipo\tValue\t\tChecked\n";
		msg += "--\t------\t-------\t--------\t\t--------\n";
	for (j = 0; j < objForm.length; j++) {
		msg += j + "\t[" + objForm[j].name + "]\t(" + objForm[j].type + ")\t[" + objForm[j].value + "]\t\t[" + objForm[j].checked + "]\n";
	}
	alert (msg);
	return (false);
*/

	// ---- patterns espressioni regolari
	// tutte le parole (eliminando gli spazi prima e dopo) separate da una virgola
	pattern_campi = /\s*,\s*/;
	// pattern per email
	pattern_email = /^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}$/;

	// inizio controllo array -- obbligatori --
	if (objForm._valid_obbligatori) {
		obbligatori = objForm._valid_obbligatori.value.split(pattern_campi);	
	
		for (j = 0; j < obbligatori.length; j++) {
			// verifica il tipo di campo e pone la condizione necessaria
			campo = objForm[obbligatori[j]];
			nome = obbligatori[j];
			if (!campo.length) { // se non e' un array...
				switch (campo.type) {
					case "text":
						blocca = (campo.value == "");
						break;
					case "textarea":
						blocca = (campo.value == "");
						break;
					case "checkbox":
						blocca = !campo.checked;
						break;
					case "radio":
						blocca = !campo.checked;
						break;
					case "select-one":
						blocca = (campo.value == "");
						break;
					default:
						blocca = false;
				}
			} else { // se e' un array di campi (proprieta' .name uguale)
				var xini = 0;
				var blocca = false;
				for (x = 0; x < campo.length; x++) {
					switch (campo[x].type) {
						case "text":
							if (campo[x].value != "") xini++;
							break;
						case "textarea":
							if (campo[x].value != "") xini++;
							break;
						case "checkbox":
							if (campo[x].checked) xini++;
							break;
						case "radio":
							if (campo[x].checked) xini++;
							break;
						case "select-one":
							if (campo[x].value != "") xini++;
							break;
					}
				}
				if (xini==0) blocca=true;
			}
			
			// controlla la condizione per questo campo
			if (blocca) {
				msg  = "Il campo [" + nome + "] e' obbligatorio!";
				alert(msg);
				if (!campo.length) campo.focus();
				return (false);
			}
		}
	}
	// fine controllo array -- obbligatori --
	
	// inizio controllo array -- email --
	if (objForm._valid_email) {
		email = objForm._valid_email.value.split(pattern_campi);
		for (j = 0; j < email.length; j++) {
			if (!pattern_email.test(objForm[email[j]].value)) {
				alert("Il campo [" + objForm[email[j]].name + "] non e' conforme.\nInserire un indirizzo valido");
				objForm[email[j]].focus();
				return (false);
			}
		}
	}
	// fine controllo array -- email --
	return (true);
}
