function checkForm(form) {
	var emailFilter=/^([^ ][a-zA-Z0-9_\.\-]+)\@(([a-zA-Z0-9\-]+)\.)+([a-zA-Z0-9]{2,4})$/;
	var error_msg = "";
	for ( var i=0;i<form.length;i++ ) {
		
		var campo = form.elements[i];
		var tipo = campo.type;
		var titolo = campo.title;
		if( tipo == "select-one" ) {
			var valore = campo.selectedIndex;
		} else {
			var valore = campo.value;
		}
		
		var classe = campo.className;
		var nome_campo = campo.name;
		var tag = campo.tagName;
		
		if(tipo != "hidden" && tag != "FIELDSET") {
			//alert(tipo + " " + classe + " " + nome_campo);
			if(classe.search(/obbligatorio/i) > -1) {
				/*
				 * Campi con valore utente.
				 */
				if( valore == "" ) {
					if(titolo == "") {
						error_msg += "Completa correttamente il campo " + nome_campo + ".\n";
					} else {
						error_msg += titolo + ".\n";
					}
				} else {
					/*
					 * Controllo sul valore
					 * 	      * * *
					 * Campo di tipo e-mail
					 */					
					if( nome_campo.search(/email/i) > -1 ) {
						if( !emailFilter.test(valore) ) {
							error_msg += "L'e-mail inserita non è in formato valido: "
							if(classe.search(/obbligatorio/i) > -1) {
								error_msg += "è OBBLIGATORIA e deve essere corretta.\n";
							} else {
								error_msg += "NON E' OBBLIGATORIO l'inserimento, quindi è possibile lasciare vuoto questo campo.\n";
							}
						}
					}
					
					/*
					 * Gestione campi di tipo intero.
					 */
					if( classe.search(/input_int/i) > -1 ) {
						if( !isInteger(valore) ) {
							if(titolo == "") {
								error_msg += "Completa correttamente il campo " + nome_campo;
							} else {
								error_msg += titolo;
							}
							error_msg += ": è RICHIESTO un numero intero.\n";
						}
					}
					
					/*
					 * Gestione campi di tipo diverso: checkbox, radio, ecc...
					 */
					if( tipo == "checkbox" && !campo.checked ) {
						error_msg += "Devi accettare le condizioni del campo " + nome_campo + "\n";
					}
					
				}
			}
			

		}
	}
	
	if(error_msg) {
		alert(error_msg);
		return false;	
	} else {
		return true;
	}
}