	/**************************************************************************************************************	*/
	/*	Controlli in JavaScript V.2.5	                      																									*/
	/*	Autore: Filippo Di Blasi                               																									*/
	/*	E-mail: filippo.diblasi@puntoinformatico.it     																									*/
	/*	Sito web: http://www.puntoinformatico.it      			 																						*/
	/*	Data: 15-Nov-2005		                     					 																					*/
	/*				                    			  																											*/
	/*	Controlli abilitati: Stringa, Numerico, Data, Ora, Telefono, CAP, E-mail, Web 																	*/
	/*	Ultima aggiunta: aggiunto il controllo sull'ID																									*/
	/*	Da fare: IP, carta di credito, path																													*/
	/**************************************************************************************************************	*/
	

// controllo alfanumerico ************************************************************************************************
function IsTesto(campo_value, campo_nome, obbligatorio, lunghezza_min, lunghezza_max)
{
	//	Inizializzazione
	ok = true;
	messaggio = null;
	//	Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
   	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
   	{
		//	Lunghezza minima
		if (ok)
		{
			if (lunghezza_min!=0)
			{
				if (campo_value.length<lunghezza_min)
				{
					ok = false;
					messaggio = "\nLa lunghezza del campo " + campo_nome + " deve essere almeno di " + lunghezza_min + " lettere!\nAdesso è di " + campo_value.length + " lettere!";
				}
			}
		}
		// 	Lunghezza massima
		if (ok)
		{
			if (lunghezza_max!=0)
			{
				if (campo_value.length>lunghezza_max)
				{
					ok = false;
					messaggio = "\nLa lunghezza del campo " + campo_nome + " deve essere massimo di " + lunghezza_max + " lettere!\nAdesso è di " + campo_value.length + " lettere!";
				}
			}	
		}
   	}
	return messaggio;
}


// controllo numerico **********************************************************************************************************
function IsNumero(campo_value, campo_nome, obbligatorio, valore_min, valore_max) {
	//	Inizializzazione
	ok = true;
	messaggio = null;
	// 	Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	// 	Formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		// http://www.regexlib.com/REDetails.aspx?regexp_id=53
		if (!(new RegExp(/^\d*[0-9](|.\d*[0-9]|,\d*[0-9])?$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nNel campo " + campo_nome + " si possono inserire solo numeri!";
		}
	}
	// 	Valore minimo
	if (ok)
	{
		if (valore_min!=0)
		{
			if (parseInt(campo_value)<valore_min)
			{
				ok = false;
				messaggio = "\nIl valore del campo " + campo_nome + " deve essere almeno uguale a " + valore_min + "!";
			}
		}
	}
	// 	Valore massimo
	if (ok)
	{
		if (valore_max!=0)
		{
			if (parseInt(campo_value)>valore_max)
			{
				ok = false;
				messaggio = "\nIl valore del campo " + campo_nome + " deve essere uguale al massimo a " + valore_max + "!";
			}
		}	
	}
	return messaggio;
}


// controllo data **********************************************************************************************************
function IsData(campo_value, campo_nome, obbligatorio, data_min_str, data_max_str, attuale_inf_str, attuale_sup_str) {
	//	Inizializzazione
	ok = true;
	messaggio = null;
	var data_campo = new Date();
	// Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
   	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
   	{
		// 	Formato
		if (ok)
		{
			// http://www.regexlib.com/REDetails.aspx?regexp_id=156
			if (!(new RegExp(/^(([0-2]\d|[3][0-1])\/([0]\d|[1][0-2])\/\d{4})$/).test(campo_value)))
			{
				ok = false;
				messaggio = "\nCampo " + campo_nome + ": la data non è corretta!";
			}
		}
		// 	Data minima
		if (ok)
		{
			if (data_min_str!=0)
			{
				var data_min = new Date();
				data_campo.setYear(aaaa);
				data_campo.setMonth(mm-1);
				data_campo.setDate(gg);
				data_min.setYear(data_min_str.charAt(6) + data_min_str.charAt(7) + data_min_str.charAt(8) + data_min_str.charAt(9));
				data_min.setMonth(data_min_str.charAt(3) + data_min_str.charAt(4) - 1);
				data_min.setDate(data_min_str.charAt(0) + data_min_str.charAt(1));
				if (data_min>data_campo)
				{
					ok = false;
					messaggio = "\nCampo " + campo_nome + ": la data deve essere almeno uguale a " + data_min_str + "!";
				}
			}
		}
		//	Data massima
		if (ok)
		{
			if (data_max_str!=0)
			{
				var data_max = new Date();
				data_campo.setYear(aaaa);
				data_campo.setMonth(mm-1);
				data_campo.setDate(gg);
				data_max.setYear(data_max_str.charAt(6) + data_max_str.charAt(7) + data_max_str.charAt(8) + data_max_str.charAt(9));
				data_max.setMonth(data_max_str.charAt(3) + data_max_str.charAt(4) - 1);
				data_max.setDate(data_max_str.charAt(0) + data_max_str.charAt(1));
				if (data_max<data_campo)
				{
					ok = false;
					messaggio = "\nCampo " + campo_nome + ": la data deve essere almeno uguale a " + data_max_str + "!";
				}
			}
		}
		// 	Data minima = odierna
		if (ok)
		{
			if (attuale_inf_str!=0)
			{
				var attuale_inf = new Date();
				attuale_inf.setYear(attuale_inf.getYear());
				attuale_inf.setMonth(attuale_inf.getMonth());
				attuale_inf.setDate(attuale_inf.getDate());
				data_campo.setYear(aaaa);
				data_campo.setMonth(mm-1);
				data_campo.setDate(gg);
				if (attuale_inf>data_campo)
				{
					ok = false;
					messaggio = "\nCampo " + campo_nome + ": la data deve essere almeno uguale a " + attuale_inf.getDate() + "/" + (attuale_inf.getMonth()+1) + "/" + attuale_inf.getYear() + "!";
				}
			}
		}
		// 	Data massima = odierna
		if (ok)
		{
			if (attuale_sup_str!=0)
			{
				var attuale_sup = new Date();
				attuale_sup.setYear(attuale_sup.getYear());
				attuale_sup.setMonth(attuale_sup.getMonth());
				attuale_sup.setDate(attuale_sup.getDate());
				data_campo.setYear(aaaa);
				data_campo.setMonth(mm-1);
				data_campo.setDate(gg);
				if (attuale_sup<data_campo)
				{
					ok = false;
					messaggio = "\nCampo " + campo_nome + ": la data deve essere al massimo uguale a " + attuale_sup.getDate() + "/" + (attuale_sup.getMonth()+1) + "/" + attuale_sup.getYear() + "!";
				}
			}
		}
   	}
	return messaggio;
}


// controllo ora **********************************************************************************************************
function IsOra(campo_value, campo_nome, obbligatorio, ora_min_str, ora_max_str) {
	//	Inizializzazione
	ok = true;
	messaggio = null;
	var ora_campo = new Date();
	// 	Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " e\' obbligatoria!";
		}
	}
	// controllo formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		//	http://www.regexlib.com/REDetails.aspx?regexp_id=176
		if (!(new RegExp(/([0-1][0-9]|2[0-3]):[0-5][0-9]/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": il valore inserito non è corretto!\nDev'essere usato il formato hh:mm, ad es. 13:30";
		}
		// 	Ora minima
		if (ok)
		{
			if (ora_min_str!=0)
			{
				var ora_min = new Date();
				ora_campo.setHours(hh, mm);
				ora_min.setHours(ora_min_str.charAt(0) + ora_min_str.charAt(1), ora_min_str.charAt(3) + ora_min_str.charAt(4));
				if (ora_min>ora_campo)
				{
					ok = false;
					messaggio = "\nCampo " + campo_nome + ": l'orario deve essere almeno uguale a " + ora_min_str + "!";
				}
			}
		}
		// 	Ora massima
		if (ok)
		{
			if (ora_max_str!=0)
			{
				var ora_max = new Date();
				ora_campo.setHours(hh, mm);
				ora_max.setHours(ora_max_str.charAt(0) + ora_max_str.charAt(1), ora_max_str.charAt(3) + ora_max_str.charAt(4));
				if (ora_max<ora_campo)
				{
					ok = false;
					messaggio = "\nCampo " + campo_nome + ": l\'ora deve essere almeno uguale a " + ora_max_str + "!";
				}
			}
		}
   	}
	return messaggio;
}



// controllo telefono/fax **********************************************************************************************************
function IsTelefono(campo_value, campo_nome, obbligatorio) {
	//	Inizializzazione
	ok = true;
	messaggio = null;
	// 	Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	// controllo formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		//	http://www.regexlib.com/REDetails.aspx?regexp_id=73
		if (!(new RegExp(/^(\(?\+?[0-9]*\)?)?[0-9_\- \(\)]*$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": il valore inserito non è corretto!\nSi consiglia di usare il formato [prefisso internazionale (Italia: +39)] [prefisso locale] [numero]\nad es. +39 06 12345678\nIn alternativa si può escludere il prefisso internazionale.";
		}
   	}
	return messaggio;
}


// controllo cap **********************************************************************************************************
function IsCap(campo_value, campo_nome, obbligatorio) {
	//	Inizializzazione
	ok = true;
	messaggio = null;
	//	 Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	// controllo formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		//	http://www.regexlib.com/REDetails.aspx?regexp_id=924
		if (!(new RegExp(/^\d{5}((-|\s)?\d{4})?$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": il valore inserito non è corretto!";
		}
   	}
	return messaggio;

}


// controllo e-mail **********************************************************************************************************
function IsEmail(campo_value, campo_nome, obbligatorio)
{
	//	Inizializzazione
	ok = true;
	messaggio = null;
	// 	Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	// 	Formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		// http://www.regexlib.com/REDetails.aspx?regexp_id=295
		if (!(new RegExp(/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": l'e-mail non è corretta!";
		}
	}
	return messaggio;
}


// controllo indirizzo web **********************************************************************************************************
function IsWeb(campo_value, campo_nome, obbligatorio) {
	//	Inizializzazione
	ok = true;
	messaggio = null;
	// 	Obbligatorietà
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	//	Formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		// 	http://www.regexlib.com/REDetails.aspx?regexp_id=732
		if (!(new RegExp(/^(ht|f)tp(s?)\:\/\/[a-zA-Z0-9\-\._]+(\.[a-zA-Z0-9\-\._]+){2,}(\/?)([a-zA-Z0-9\-\.\=\?\,\;\'\/\\\+\&@\%\$#\~_]*)?$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": l'url non è corretta!";
		}
	}
	return messaggio;
}


// controllo ID **********************************************************************************************************
function IsID(campo_value, campo_nome, obbligatorio, lunghezza_min, lunghezza_max)
{
	// Inizializzazione
	ok = true;
	messaggio = null;
	// se l'immissione è obbligatoria la lunghezza del valore immesso deve essere > 0
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	// controllo formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		if (!(new RegExp(/^[a-zA-Z0-9._-]+$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": il valore inserito non è corretto!\nSono permessi caratteri alfanumerici e i caratteri di punteggiatura .-_\nNon sono permessi gli spazi!";
		}
	}
	return messaggio;
}


// controllo ISBN **********************************************************************************************************
function IsIsbn(campo_value, campo_nome, obbligatorio)
{
	// Inizializzazione
	ok = true;
	messaggio = null;
	// se l'immissione è obbligatoria la lunghezza del valore immesso deve essere > 0
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	// controllo formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		//	
		if (!(new RegExp(/(?=.{13}$)\d{1,5}([- ])\d{1,7}\1\d{1,6}\1(\d|X)$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": il valore inserito non è corretto!\nIl formato corretto è n-nnnnn-nnn-n!";
		}
	}
	return messaggio;
}


// controllo ISBN **********************************************************************************************************
function IsCf(campo_value, campo_nome, obbligatorio)
{
	// Inizializzazione
	ok = true;
	messaggio = null;
	// se l'immissione è obbligatoria la lunghezza del valore immesso deve essere > 0
	if (obbligatorio==1)
	{
		if (campo_value.length<1)
		{
			ok = false;
			messaggio = "\nLa compilazione del campo " + campo_nome + " è obbligatoria!";
		}
	}
	// controllo formato
	if (((obbligatorio==1)&&(ok)) || (campo_value.length>0))
	{
		//	
		if (!(new RegExp(/^[A-Za-z]{6}[0-9LMNPQRSTUV]{2}[A-Za-z]{1}[0-9LMNPQRSTUV]{2}[A-Za-z]{1}[0-9LMNPQRSTUV]{3}[A-Za-z]{1}$/).test(campo_value)))
		{
			ok = false;
			messaggio = "\nCampo " + campo_nome + ": il valore inserito non è corretto!";
		}
	}
	return messaggio;
}