	function validateString(widget, name, minlen, maxlen) 
	{
		var x = checkString(widget, minlen, maxlen);
		if (x!=0) {
			widget.focus();
	
			if (x == 1)
			{
				alert(name + ' \u00E8 vuoto');
				return false;
			} else
			if (x == 2)
			{
				alert(name + ' \u00E8 troppo corto. Lunghezza minima \u00E8 ' + minlen);
				return false;
			} else
			if (x == 3)
			{
				alert(name + ' \u00E8 troppo lungo. La massima lunghezza \u00E8 ' + maxlen);
				return false;
			} else 
			if (x == 8)
			{
				alert(name + ' contiene spazi all\'inizio e/o alla fine');
				return false;
			} else 
			if (x == 9)
			{
				alert(name + ' contiene caratteri invalidi');
				return false;
			}
		}
		return true;
	}

	function validateNumber(widget, name, required, def, minlen, maxlen, check_min, check_max) 
	{
		var x = checkNum(widget, required, def, minlen, maxlen, check_min, check_max);
		if (x == 1)
		{
			alert(name + ' \u00E8 vuoto');
			return false;
		}
		if (x == 2)
		{
			alert(name + ' \u00E8 troppo corto. Lunghezza minima \u00E8 ' + minlen);
			return false;
		}
		if (x == 3)
		{
			alert(name + ' \u00E8 troppo lungo. La massima lunghezza \u00E8 ' + maxlen);
			return false;
		}
		if (x == 9)
		{
			alert(name + ' contiene caratteri invalidi');
			return false;
		}
		return true;
	}
	
	function checkNumRetNull(num, required, def, min, max, check_min, check_max)
	{
		if (num.value.length == 0 && required)
		{
			num.focus();
			return 1;
		}
		
		var re = new RegExp("\[^0-9.\]"); //not in 0-9
		if ( num.value.match(re) )
		{
			num.focus();
			return 9;
		}
		if (num.value.length >= max && check_max)
		{
			return 3
		}
		if (num.value.length <= min && check_min)
		{
			return 2
		}
		return "";
	}
	function validateNumberRetNull(widget, name, required, def, minlen, maxlen, check_min, check_max) 
	{
		var x = checkNumRetNull(widget, required, def, minlen, maxlen, check_min, check_max);
		if (x == 1)
		{
			alert(name + ' \u00E8 vuoto');
			return false;
		}
		if (x == 2)
		{
			alert(name + ' \u00E8 troppo corto. Lunghezza minima \u00E8 ' + minlen);
			return false;
		}
		if (x == 3)
		{
			alert(name + ' \u00E8 troppo lungo. La massima lunghezza \u00E8 ' + maxlen);
			return false;
		}
		if (x == 9)
		{
			alert(name + ' contiene caratteri invalidi');
			return false;
		}
		return true;
	}


	function validateDate(widget, name) 
	{
		var x = checkDate(widget);
		if (x == 1)
		{
			alert(name + ' is empty');
			return false;
		}
		if (x == 2)
		{
			alert(name + ' \u00E8 troppo corto. Lunghezza minima \u00E8 ' + minlen);
			return false;
		}
		if (x == 3)
		{
			alert(name + ' \u00E8 troppo lungo. La massima lunghezza \u00E8 ' + maxlen);
			return false;
		}
		if (x == 9)
		{
			alert(name + ' contiene caratteri invalidi o formato di data invalido (dd/mm/yyyy)');
			return false;
		}
		return true;
	}

/***
0=OK
1=campo vuoto
2=campo troppo corto
3=campo troppo lungo
8=spazi all'iniio o alla fine
9=caratteri invalidi
*/

	function checkString(widget, minlen, maxlen) {
		
		var validchars = '$_.-';
		var validcharsMessage = '!@#$%^&*()+=-[]\{}\":<>;.?';
		
		if (widget.value.length < minlen)
		{
			if (widget.value.length == 0)
				return 1;
			else
				return 2;
		}
		
		if (widget.value.length > maxlen) {
			return 3;
		}

		if (widget.value.length > 0) 
		{
			var re = null;
			
			if(widget.name=='password' || widget.name=='newPassword') { // se il campo contiene una password allora ammetto alcuni caratteri speciali: validchars
				re = new RegExp("[^a-zA-Z0-9" + unescape("%u0153") + validchars + "]");
			}
			else {
				var wdgValue = trimStr(widget.value);
				if (widget.name=='username' && wdgValue.length<widget.value.length) {
					return 8;
				}
				if(widget.name=='messaggio'){
					re = new RegExp("[^a-zA-Z0-9" + unescape("%u0153") + validcharsMessage + "]");
				}
				else {
					// return 0;
					re = new RegExp("[^a-zA-Z0-9 \s]");
				}
			}
			if (widget.value.match(re) )
			{
				return 9;
			}
		}
		
		return 0;
	}	
	
	function checkStringSize(widget, minlen, maxlen)
	{
		if (widget.value.length < minlen)
		{
			widget.focus();
			if (minlen == 1)
				return 1;
			else
				return 2;
		}
		
		if (widget.value.length > maxlen) {
				
			widget.focus();
			return 3;
		}
		return 0;
	}	
	
/***
0=OK
1=campo vuoto
2=campo troppo corto
3=campo troppo lungo
9=caratteri invalidi
*/
	
	function checkNum(num, required, def, min, max, check_min, check_max)
	{
		if (num.value.length == 0 && required)
		{
			num.focus();
			return 1;
		}
		if (num.value.length == 0 && !required)
		{
			num.value = def;
		}
		
		var re = new RegExp("\[^0-9.\]"); //not in 0-9
		if ( num.value.match(re) )
		{
			num.focus();
			return 9;
		}
		if (num.value.length >= max && check_max)
		{
			return 3
		}
		if (num.value.length <= min && check_min)
		{
			return 2
		}
		return 0;
	}



	function checkCombo(combo)
	{
		if (combo.selectedIndex == 0)
		{
			combo.focus();
			return false;
		}
		return true;
	}

	function isSelected(combo)
	{
		if (combo.selectedIndex == -1)
			return false;
		if (selectedValue(combo) == -1)
			return false;
					
		return true;
	}
	
	function selectedValue(combo)
	{
		return combo.options[combo.selectedIndex].value;
	}
	

/***
0=OK
1=campo vuoto
9=data invalida
*/
	
function checkDate(dtfld) 
{
var x = checkStringSize(dtfld, 10, 10);
if (x != 0)
	return x;
		
var err = 0;
var dtstr = dtfld.value;
var valid = "0123456789/";
var temp;
for (var i=0; i< dtstr.length; i++) 
{
	temp = "" + dtstr.substring(i, i+1);
	if (valid.indexOf(temp) == "-1") 
		err = 1;
}
if (dtstr.length != 10) 
	Err=1;

b = dtstr.substring(0, 2); // day
c = dtstr.substring(2, 3); // '/'

d = dtstr.substring(3, 5); // month
e = dtstr.substring(5, 6); // '/'
f = dtstr.substring(6, 10); // year
if (b<1 || b>31) err = 1;
if (c != '/') err = 1;
if (d<1 || d>12) err = 1;
if (e != '/') err = 1;


if (f<1900 || f>2099) err = 1;
if (d==4 || d==6 || d==9 || d==11)
{
	if (b==31) 
		err=1;
}
if (d==2)
{
	var g=parseInt(f/4);
	if (isNaN(g)) 
	{
		err=1;
	}
	if (b>29) 
		err=1;
	if (b==29 && ((f/4)!=parseInt(f/4))) 
		err=1;
}
//var bb = dtform.Dy.value;
//var dd = dtform.Mn.value;
//var ff = dtform.Yr.value;
//var sDate = new Date(ff,dd,bb);
//var iDate = new Date(f,d,b);

if (err==1) 
{
		dtfld.focus();
		dtfld.select();
		return 9;
	}
	else 
	{
	return 0;
}
}	

function getDate(text)
{
	dd = text.substring(0, 2) // day
	mm = text.substring(3, 5) // month
	yyyy = text.substring(6, 10) // year
	
	return new Date(yyyy, mm, dd);	
}

function checkMail(widget, text){
	Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9_\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
            
    if (!Filtro.test(widget.value)) {
     alert("Email vuota o invalida.");
	 return false;
    }
      
	return true;	
}

function trimStr(StrToTrim) {
    if (typeof StrToTrim != "string")
    {
        return StrToTrim;
    }

    var StrBlank = StrToTrim.substring(0, 1);

    while (StrBlank == " ")
    {
        StrToTrim = StrToTrim.substring(1, StrToTrim.length);
        StrBlank = StrToTrim.substring(0, 1);
    }

    StrBlank = StrToTrim.substring(StrToTrim.length - 1, StrToTrim.length);

    while (StrBlank == " ")
    {
        StrToTrim = StrToTrim.substring(0, StrToTrim.length-1);
        StrBlank = StrToTrim.substring(StrToTrim.length-1, StrToTrim.length);
    }

    while (StrToTrim.indexOf("  ") != -1)
    {
        StrToTrim = StrToTrim.substring(0, StrToTrim.indexOf("  "));
        StrToTrim += StrToTrim.substring(StrToTrim.indexOf("  ") + 1, StrToTrim.length);
    }

    return StrToTrim;
}



