theForm = "mail";

function trimS(st) {
	var r, re;
	re = /\s/g;
	r = st.replace(re, "");
	return(r);
}

function testform() {
	var required=false;
	var i = 0, m = 0, conf = "no", vld = "yes";
	var lastFormElement = document.forms[theForm].elements.length, lastArgument=testform.arguments.length;
	while((i<lastFormElement)&&(vld == "yes")) {
		var conf2 = false, j = 0, theType = document.forms[theForm].elements[i].type;
		while(j<lastArgument) {
			if(testform.arguments[j] == document.forms[theForm].elements[i].name) {
				conf = "yes";
				conf2 = true;
			}
			else
				conf="no";
			j++;
		}
		if(conf2==true) {
			if(theType == "textarea" || theType == "text" || theType == "password") {
				if(trimS(document.forms[theForm].elements[i].value) != "")
					vld = "yes";
				else
					vld = "no";
				m = i;
			}
			if(theType=="radio" || theType=="checkbox") {
				if(document.forms[theForm].elements[i].checked)
					vld="yes";
				else
					vld="no";
				m=i;
			}
			if(document.forms[theForm].elements[i].value == "bar") {
				vld="no";
				m=i;
			}
		}
		i++;
	}
	if(vld=="no") {
		alert("Il campo " + document.forms[theForm].elements[m].name + " deve essere compilato per soddisfare la vostra richiesta.");
		document.forms[theForm].elements[m].focus();
		return false;
	}
	else if(vld=="yes") {
		var reg2 = /^[a-zA-Z0-9_\&\-\.\+]+\@(\[?)[a-zA-Z0-9_\-\.]+\.([a-zA-Z]{1,4}|[0-9]{1,4})(\]?)$/;
		var reg3 = /^\d{2,}$/;
		if(vld=="yes") {
			TestEmail = document.forms[theForm].mail.value;
			if(!reg2.test(TestEmail)) {
				alert("Spiacenti, il formato di inserimento del vostro indirizzo e-mail è errato. Riprovate di nuovo.");
				document.forms[theForm].mail.focus();
				vld="no";
				return false;
			}
/*			TestEmail2 = document.forms[theForm].mail.value;
			if(!reg2.test(TestEmail2)) {
				alert("Spiacenti, il formato di inserimento del vostro indirizzo e-mail è errato. Riprovate di nuovo.");
				document.forms[theForm].mail.focus();
				vld="no";
				return false;
			}
*/		}
		return true;
	}
}
