function controlla(parametro)
{
	var numberForms = parametro.length;
	var formIndex;
	var campoAttuale;
	var valoreAttuale;
	prosegui=1;
	messaggio="";
	for (formIndex = 0; formIndex < numberForms; formIndex++)
	{
		campoAttuale=parametro[formIndex].name;
		valoreAttuale=parametro[formIndex].value;
		if (campoAttuale.indexOf("_text")>=1) {if (!nonVuoto(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-5)+" non può essere vuoto.";}}
		if (campoAttuale.indexOf("_mail")>=1) {if (!ControllaMail(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-5)+" non è corretto.";}}
		if (campoAttuale.indexOf("_login")>=1) {if (!ControllaLoginConLunghezzaMin(valoreAttuale,6)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-6)+" non è corretto.";}}
		if (campoAttuale.indexOf("_password")>=1) {if (!ControllaPasswordConLunghezzaMin(valoreAttuale,6)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-9)+" non è corretto.";}}
		if (campoAttuale.indexOf("_numero")>=1) {if (!ControllaNumero(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-7)+" deve essere numerico.";}}
		if (campoAttuale.indexOf("_cap")>=1) {if (!ControllaCap(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-4)+" non e' corretto.";}}
		if (campoAttuale.indexOf("_data")>=1) {if (!verificaData(campoAttuale,parametro)) {messaggio="Il valore del campo "+campoAttuale.substr(7,campoAttuale.length-12)+" non e' corretto.";}}
		if (campoAttuale.indexOf("_privacy")>=1) {if (!CheckboxSpuntata(parametro[formIndex])) {messaggio="Occorre aver autorizzato il trattamento dei dati.";}}
	}
	if (messaggio=="")
	{
		parametro.submit();
		//alert("ok");
	}
	else
	{
		alert (messaggio);
	}
}

function controllaInverso(parametro)
{
	var numberForms = parametro.length-1;
	var formIndex;
	var campoAttuale;
	var valoreAttuale;
	prosegui=1;
	messaggio="";
	for (formIndex = numberForms; formIndex >= 0; formIndex--)
	{
		campoAttuale=parametro[formIndex].name;
		valoreAttuale=parametro[formIndex].value;
		if (campoAttuale.indexOf("_text")>=1) {if (!nonVuoto(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-5)+" non può essere vuoto.";}}
		if (campoAttuale.indexOf("_mail")>=1) {if (!ControllaMail(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-5)+" non è corretto.";}}
		if (campoAttuale.indexOf("_login")>=1) {if (!ControllaLoginConLunghezzaMin(valoreAttuale,6)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-6)+" non è corretto.";}}
		if (campoAttuale.indexOf("_password")>=1) {if (!ControllaPasswordConLunghezzaMin(valoreAttuale,6)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-9)+" non è corretto.";}}
		if (campoAttuale.indexOf("_numero")>=1) {if (!ControllaNumero(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-7)+" deve essere numerico.";}}
		if (campoAttuale.indexOf("_cap")>=1) {if (!ControllaCap(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-4)+" non e' corretto.";}}
		if (campoAttuale.indexOf("_data")>=1) {if (!verificaData(campoAttuale,parametro)) {messaggio="Il valore del campo "+campoAttuale.substr(7,campoAttuale.length-12)+" non e' corretto.";}}
	}
		//if (campoAttuale.indexOf("_spunta")>=1) {if (!CheckboxSpuntata(valoreAttuale)) {messaggio="Il valore del campo "+campoAttuale.substr(0,campoAttuale.length-5)+" non può essere vuoto.";}}

	if (messaggio=="")
	{parametro.submit();}
	else
	{
		alert (messaggio);
	}
}

function nonVuoto(parametro)
{
	// testa solamente che il campo non sia vuoto
	if (parametro != "") 
	{return true;}
	else
	{return false;}
} 

function ControllaMail(parametro)
{
	// valida la sintassi di un indirizzao di mail: xxxx@xxxx.xxx
	// cartteri + @ + caratteri (almeno 2) + . + caratteri (almeno 2)
	filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
	if (filtro.test(parametro)) 
	{return true;}
	else
	{return false;}
}

function ControllaLogin(parametro)
{
	// valida la login
	// i caratteri ammessi sono solo lettere (minuscole e maiuscole) e numeri
	filtro = /^([a-zA-Z0-9])+$/;
	if (filtro.test(parametro)) 
	{return true;}
	else
	{return false;}
}

function ControllaLoginConLunghezzaMin(parametro,parametro2)
{
	// valida la login
	// i caratteri ammessi sono solo lettere (minuscole e maiuscole) e numeri
	// la lunghezza minima e' il valore del parametro2
	if (parametro.length < parametro2)
	{return false;}
	else
	{
		filtro = /^([a-zA-Z0-9])+$/;
		if (filtro.test(parametro)) 
		{return true;}
		else
		{return false;}
	}
}

function ControllaPassword(parametro)
{
	// valida la password
	// i caratteri ammessi sono solo lettere (minuscole e maiuscole) e numeri
	filtro = /^([a-zA-Z0-9])+$/;
	if (filtro.test(parametro)) 
	{return true;}
	else
	{return false;}
}

function ControllaPasswordConLunghezzaMin(parametro,parametro2)
{
	// valida la password
	// i caratteri ammessi sono solo lettere (minuscole e maiuscole) e numeri
	// la lunghezza minima e' il valore del parametro2
	if (parametro.length < parametro2)
	{return false;}
	else
	{
		filtro = /^([a-zA-Z0-9])+$/;
		if (filtro.test(parametro)) 
		{return true;}
		else
		{return false;}
	}
}

function ControllaNumero(parametro)
{
	filtro = /^([0-9])+$/;
	if (filtro.test(parametro)) 
	{return true;}
	else
	{return false;}
}

function ControllaNumeroConLunghezzaMin(parametro,parametro2)
{
	// valida che il campo contenga solo numeri
	// la lunghezza minima e' il valore del parametro2
	if (parametro.length < parametro2)
	{return false;}
	else
	{
		filtro = /^([0-9])+$/;
		if (filtro.test(parametro)) 
		{return true;}
		else
		{return false;}
	}
}

function ControllaCap(parametro)
{
	// valida che il campo contenga solo numeri
	// la lunghezza minima e' il valore del parametro2
	if (parametro.length != 5)
	{return false;}
	else
	{
		filtro = /^([0-9])+$/;
		if (filtro.test(parametro)) 
		{return true;}
		else
		{return false;}
	}
}


function verificaData(oggettoCampo,oggettoForm)
{
	//	dal campo parametro ricavo i nomi dei campi che creno la data
	giornoNome=oggettoCampo.substr(0,2);
	meseNome=oggettoCampo.substr(2,2);
	annoNome=oggettoCampo.substr(4,2);
	
	var numberForms = oggettoForm.length-1;
	var formIndex;
	var campoAttuale;
	var valoreAttuale;

	for (formIndex = numberForms; formIndex >= 0; formIndex--)
	{
		campoAttuale=oggettoForm[formIndex].name;
		valoreAttuale=oggettoForm[formIndex].value;
		if (campoAttuale==giornoNome) {d=valoreAttuale;}
		if (campoAttuale==meseNome) {m=valoreAttuale;}
		if (campoAttuale==annoNome) {anno=valoreAttuale;}
	}
	
	return verificaCorrettezzaData(d+"-"+m+"-"+anno);
}


function verificaCorrettezzaData(parametro)
{
	// il giono e' il primo parametro a sinistra di "-"
	primoEl=parametro.indexOf("-");
	if (primoEl<1)  {return false;}
	secondoEl=parametro.lastIndexOf("-");
	if (secondoEl<=primoEl) {return false;}
	if (secondoEl+1 > parametro.length) {return false;}
	
	// la data ha la sintassi corretta
	
	d=parametro.substr(0,primoEl);
	m=parametro.substr(primoEl+1,secondoEl-primoEl-1);
	anno=parametro.substr(secondoEl+1,parametro.length-secondoEl);

	if (d<1) {return false;}
	if (d>31) {return false;}
	if (m<1) {return false;}
	if (m>12) {return false;}
	
	if ((m==4)||(m==6)||(m==9)||(m==11)) {if (d>30){return false;}}
	if (m==2)
	{
		if ((anno % 400 == 0) || (anno % 4 == 0 && anno % 100 != 0))
			{
				if (d>29)
				{return false;}
			}
		else
			{
				if (d>28)
				{return false;}
			}				
	}
	return true;
}

function CheckboxSpuntata(parametro)
{
	if(parametro.checked==true)
		{return true;}
		else
		{return false;}
}