/*
	string				ReadValue			(Form, Element)
	string				ReadElementValue	(pElement)
	string				ReadValueRADIO		(Form, Element)
	
	bool				CheckINT			(Form, Element, CanBeNull, NoMessage)
	bool				CheckDEC			(Form, Element, CanBeNull, Separator, NoMessage)
	bool				CheckSTR			(Form, Element, CanBeNull, NoMessage)
	bool				CheckRADIO			(Form, Element, NoMessage)
*/

function ReadValue(Form, Element)
{
	var pElement = document.forms[Form].elements[Element];
	return ReadElementValue(pElement);
}

function WriteValue(Form, Element, Value)
{
	var pElement = document.forms[Form].elements[Element];
	return WriteElementValue(pElement, Value);
}

function ReadValueRADIO(Form, Element)
{
	var pElement		= document.forms[Form].elements[Element];
	var ElementLength	= pElement.length;
	var strReturn		= "";
	
	for (i = 0; i < ElementLength; i++)
	{
		if (pElement[i].checked)
		{
			strReturn = pElement[i].value;
			break;
		}
	}
	
	return strReturn;
}

function ReadElementValue( pElement )
{
	var vLength	= isNull( pElement.length, 1);
	var vValue	= "";
	
	if ( vLength > 1)
	{
		if ( ( pElement[0].tagName == "INPUT" ) && ( pElement[0].type == "radio" ) )
		{
			for (i = 0; i < vLength; i++)
			{
				if ( pElement[i].checked )
				{
					vValue = pElement[i].value;
					break;
				}
			}
		}
	}
	else
	{
		switch ( pElement.tagName )
		{
			case "INPUT"	:
			{
				switch ( pElement.type )
				{				
					case "password"	: vValue = pElement.value; break;
					case "text"		: vValue = pElement.value; break;
					case "textarea"	: vValue = pElement.value; break;
					case "hidden"	: vValue = pElement.value; break;
					case "checkbox"	: vValue = pElement.checked ? true : false; break;
					case "radio"	: vValue = pElement.checked ? true : false; break;
				}
	
				break;
			}
			case "TEXTAREA"	:
			{
				vValue = pElement.value;
				break;
			}
			case "SELECT"	: 
				if ( pElement.selectedIndex != -1 ) {
					vValue = pElement.options[pElement.selectedIndex].value; 
				}
				
				break;
		}
	}

	return vValue;
}

function WriteElementValue(pElement, pValue)
{
	var Value = "";

	switch (pElement.tagName)
	{
		case "INPUT"	:
		{
			switch (pElement.type)
			{
				case "password"	: pElement.value = pValue; break;
				case "text"		: pElement.value = pValue; break;
				case "textarea"	: pElement.value = pValue; break;
				case "hidden"	: pElement.value = pValue; break;
				case "checkbox"	: pElement.checked = (pValue ? true : false); break;
				case "radio"	: alert("RADIO"); break;
			}

			break;
		}
		case "SELECT"	: 
			for ( var ii = 0; ii < pElement.options.length; ii++ ) {
				if ( pElement.options[ii].value == pValue ) {
					pElement.selectedIndex = ii;
					
					break;
				}
			}
			
			break;
	}

	return Value;
}

function CheckUINT(Form, Element, CanBeNull, NoMessage)
{
	var pElement		= document.forms[Form].elements[Element];	
	var ElementValue	= TrimExt(ReadElementValue(pElement));

	if (!CanBeNull)
	{
		if (isNull(ElementValue))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(0);
				pElement.focus();
			}
			
			return false;
		}
	}
	else
	{
		if (isNull(ElementValue))
			return true;
	}

	if (ElementValue.indexOf(",") >= 0)
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			ShowCheckError(1);
			pElement.focus();
		}

		return false;
	}

	if (ElementValue.indexOf(".") >= 0)
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			ShowCheckError(1);
			pElement.focus();
		}

		return false;
	}

	var ii;
	ii = 0;
	
	if ( ElementValue.charAt(0) == "+" )
	{
		ii = 1;
	}

	for ( ; ii < ElementValue.length; ii++ ) {
		if ( !((ElementValue.charAt(ii) >= "0") && (ElementValue.charAt(ii) <= "9")) ) {
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(1);
				pElement.focus();
			}

			return false;
		}
	}

/*
	if ( isNaN(parseInt(ElementValue)) )
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			ShowCheckError(1);
			pElement.focus();
		}
		
		return false;
	}	
	else return true;
*/

	return true;	
}

function GetUINT( pValue )
{
	if ( isNull(pValue) ) {
		return ( null );
	}

	pValue = TrimExt(String(pValue));

	if ( pValue == "" ) {
		return ( null );
	}

	if (pValue.indexOf(",") >= 0) {
		return ( null );
	}

	if (pValue.indexOf(".") >= 0) {
		return ( null );
	}

/*
	var ii;

	for ( ii = 0; ii < pValue.length; ii++ ) {
		if ( !((pValue.charAt(ii) >= "0") && (pValue.charAt(ii) <= "9")) ) {
			return ( null );
		}
	}
*/

	var ii;
	ii = 0;

	var vNumber;
	vNumber = 0;
	
	if ( pValue.charAt(0) == "+" ) 
	{
		ii = 1;
	}

	for ( ; ii < pValue.length; ii++ ) {
		if ( !((pValue.charAt(ii) >= "0") && (pValue.charAt(ii) <= "9")) ) {
			return ( null );
		}
		
		vNumber = vNumber * 10 + (pValue.charAt(ii) - "0");
	}

/*
	var vNumber = parseInt( pValue ); 

	if ( isNaN(vNumber) ) {
		return ( null );
	}
*/

	return ( vNumber );
}

function CheckINT(Form, Element, CanBeNull, NoMessage)
{
	var pElement		= document.forms[Form].elements[Element];	
	var ElementValue	= TrimExt(ReadElementValue(pElement));

	if (!CanBeNull)
	{
		if (isNull(ElementValue))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(0);
				pElement.focus();
			}
			
			return false;
		}
	}
	else
	{
		if (isNull(ElementValue))
			return true;
	}

	if (ElementValue.indexOf(",") >= 0)
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			ShowCheckError(1);
			pElement.focus();
		}

		return false;
	}

	if (ElementValue.indexOf(".") >= 0)
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			ShowCheckError(1);
			pElement.focus();
		}

		return false;
	}

	var ii;
	ii = 0;
	
	if ( (ElementValue.charAt(0) == "+") || (ElementValue.charAt(0) == "-") )
	{
		ii = 1;
	}

	for ( ; ii < ElementValue.length; ii++ ) {
		if ( !((ElementValue.charAt(ii) >= "0") && (ElementValue.charAt(ii) <= "9")) ) {
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(1);
				pElement.focus();
			}

			return false;
		}
	}

/*
	if ( isNaN(parseInt(ElementValue)) )
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			ShowCheckError(1);
			pElement.focus();
		}
		
		return false;
	}	
	else return true;
*/

	return true;	
}

function GetINT( pValue )
{
	if ( isNull(pValue) ) {
		return ( null );
	}

	pValue = TrimExt(String(pValue));

	if ( pValue == "" ) {
		return ( null );
	}

	if (pValue.indexOf(",") >= 0) {
		return ( null );
	}

	if (pValue.indexOf(".") >= 0) {
		return ( null );
	}

/*
	var ii;

	for ( ii = 0; ii < pValue.length; ii++ ) {
		if ( !((pValue.charAt(ii) >= "0") && (pValue.charAt(ii) <= "9")) ) {
			return ( null );
		}
	}
*/

	var ii;
	ii = 0;

	var vSign;
	var vNumber;
	
	if ( pValue.charAt(0) == "+" ) 
	{
		ii = 1;
		
		vSign = 1;
	}

	if ( pValue.charAt(0) == "-" ) 
	{
		ii = 1;
		
		vSign = -1;
	}

	vNumber = 0;

	for ( ; ii < pValue.length; ii++ ) {
		if ( !((pValue.charAt(ii) >= "0") && (pValue.charAt(ii) <= "9")) ) {
			return ( null );
		}
		
		vNumber = vNumber * 10 + (pValue.charAt(ii) - "0");
	}

/*
	var vNumber = parseInt( pValue ); 

	if ( isNaN(vNumber) ) {
		return ( null );
	}
*/

	return ( vSign * vNumber );
}

function CheckSTR(Form, Element, CanBeNull, NoMessage)
{
	var pElement		= document.forms[Form].elements[Element];
	var ElementValue	= ReadElementValue(pElement);
	
	if (!CanBeNull)
	{
		if (isNull(ElementValue))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(0);
				pElement.focus();
			}
			
			return false;
		}
	}
	
	return true;
}

function CheckRADIO(Form, Element, NoMessage)
{
	var pElement		= document.forms[Form].elements[Element];
	var ElementLength	= pElement.length;
	var strReturn		= false;
	
	for (i = 0; i < ElementLength; i++)
	{
		if (pElement[i].checked)
			strReturn = true;
	}
	
	if (!strReturn)
	{
		if ( (NoMessage == null) || (NoMessage == false) )
			ShowCheckError(0);
		else
			ShowCheckError(NoMessage);
	}
		
	return strReturn;
}

function CheckCHECK(Form, Element, NoMessage)
{
	var pElement		= document.forms[Form].elements[Element];
	var strReturn		= false;
	
	if (pElement.checked)
		strReturn = true;	
	
	if (!strReturn)
	{
		if ( (NoMessage == null) || (NoMessage == false) )
			ShowCheckError(0);
		else
			ShowCheckError(NoMessage);
	}
		
	return strReturn;
}

function CheckDEC(Form, Element, Separator, CanBeNull, NoMessage)
{
	var pElement		= document.forms[Form].elements[Element];
	var ElementValue	= ReadElementValue(pElement);

	if (!CanBeNull)
	{
		if (isNull(ElementValue))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(0);
				pElement.focus();
			}
			
			return false;
		}
	}
	else
	{
		if (isNull(ElementValue))
			return true;
	}

	if (ElementValue.indexOf(Separator) == -1)
	{
//		if (isNaN(parseInt(ElementValue)) || (String(parseInt(ElementValue)) != ElementValue))
		if ( GetINT(ElementValue) == null )
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(1);
				pElement.focus();
			}
			
			return false;
		}
		else return true;
	}
	else
	{
		var ElementValue_1 = ElementValue.substr(0, ElementValue.indexOf(Separator));
		var ElementValue_2 = ElementValue.substr(ElementValue.indexOf(Separator) + 1);

//		if ( isNaN(parseInt(ElementValue_1)) )
		if ( GetINT(ElementValue_1) == null )
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(1);
				pElement.focus();
			}
			
			return false;
		}

		if ( ElementValue_2.charAt(0) == "+" ) {
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(1);
				pElement.focus();
			}
			
			return false;
		}

//		if ( isNaN(parseInt(ElementValue_2)) )
		if ( GetUINT(ElementValue_2) == null )
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(1);
				pElement.focus();
			}
			
			return false;
		}
	}

	return true;
}

function CompareDATE( pDateA, pDateB )
{
	if ( pDateA.getFullYear() > pDateB.getFullYear() ) {
		return ( 1 );
	}
	else if ( pDateA.getFullYear() == pDateB.getFullYear() ) {
		if ( pDateA.getMonth() > pDateB.getMonth() ) {
			return ( 1 );
		}
		else if ( pDateA.getMonth() == pDateB.getMonth() ) {
			if ( pDateA.getDate() > pDateB.getDate() ) {
				return ( 1 );
			}
			else if ( pDateA.getDate() == pDateB.getDate() ) {
				return ( 0 );
			}
		}
	}
	
	return ( -1 );
}

function CompareDATETIME( pDateA, pDateB )
{
	var vResult;
	vResult = CompareDATE( pDateA, pDateB );
	
	if ( vResult != 0 ) {
		return ( vResult );
	}

	if ( pDateA.getHours() > pDateB.getHours() ) {
		return ( 1 );
	}
	else if ( pDateA.getHours() == pDateB.getHours() ) {
		if ( pDateA.getMinutes() > pDateB.getMinutes() ) {
			return ( 1 );
		}
		else if ( pDateA.getMinutes() == pDateB.getMinutes() ) {
			if ( pDateA.getSeconds() > pDateB.getSeconds() ) {
				return ( 1 );
			}
			else if ( pDateA.getSeconds() == pDateB.getSeconds() ) {
				return ( 0 );
			}
		}
	}
	
	return ( -1 );
}

function fnGetDATE( pValue, pSeparator )
{
	var vIntDay;
	var vIntMonth;
	var vIntYear;
	
	var vVarArray;
	vVarArray = String(pValue).split( pSeparator );
	
	if ( vVarArray.length != 3 ) {
		return ( null );
	}

	if ( (vVarArray[0].length != 1) && (vVarArray[0].length != 2) ) {
		return ( null );
	}

	vIntDay = ((vVarArray[0].charAt(0) == "0") && (vVarArray[0].length == 2)) ? parseInt(vVarArray[0].charAt(1)) : parseInt(vVarArray[0]);
	if (isNaN(vIntDay))
	{
		return ( null );
	}
	else
	{
		if ( (vIntDay < 1) || (vIntDay > 31) )
		{
			return ( null );
		}
	}

	if ( (vVarArray[1].length != 1) && (vVarArray[1].length != 2) ) {
		return ( null );
	}

	vIntMonth = ((vVarArray[1].charAt(0) == "0") && (vVarArray[1].length == 2)) ? parseInt(vVarArray[1].charAt(1)) : parseInt(vVarArray[1]);
	if (isNaN(vIntMonth))
	{
		return ( null );
	}
	else
	{
		if ((vIntMonth < 1) || (vIntMonth > 12))
		{
			return ( null );
		}
	}

	vIntYear = parseInt(vVarArray[2]);
	if (isNaN(vIntYear))
	{
		return ( null );
	}
	else {
		if ((vIntYear < ((new Date()).getFullYear() - 1)) || (vIntYear > (new Date()).getFullYear()))
		{
			return ( null );
		}
	}

	var vDate;
	vDate = new Date(vIntYear, vIntMonth - 1, vIntDay);
	if ( vDate == null ) {
		return ( null );		
	}

	if ( (vDate.getDate() != vIntDay) || (vDate.getMonth() != (vIntMonth - 1)) || (vDate.getFullYear() != vIntYear) ) {
		return ( null );		
	}
	
	return String(vDate.getFullYear()) + String(addZero(String(vDate.getMonth() + 1))) + String(addZero(String(vDate.getDate())));
}

function CheckDATE(Form, Element, Separator, CanBeNull, NoMessage, bCheckCurrentYear)
{
	if (typeof(bCheckCurrentYear) != "boolean")
		bCheckCurrentYear = false;

	var vElement		= document.forms[Form].elements[Element];
	var vElementValue	= ReadElementValue(vElement);

	if ( !CanBeNull )
	{
		if (isNull(vElementValue))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(0);
				vElement.focus();
			}
			
			return false;
		}
	}
	else
	{
		if (isNull(vElementValue))
			return true;
	}

	var vIntDay;
	var vIntMonth;
	var vIntYear;
	
	var vVarArray;
	vVarArray = vElementValue.split( Separator );
	
	if ( vVarArray.length != 3 ) {
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nData non valida.");
			vElement.focus();
		}
		
		return false;
	}

	if ( (vVarArray[0].length != 1) && (vVarArray[0].length != 2) ) {
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nGiorno non valido.");
			vElement.focus();
		}
		
		return false;
	}

	vIntDay = ((vVarArray[0].charAt(0) == "0") && (vVarArray[0].length == 2)) ? parseInt(vVarArray[0].charAt(1)) : parseInt(vVarArray[0]);
	
	if (isNaN(vIntDay))
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nGiorno non valido.");
			vElement.focus();
		}
		
		return false;
	}
	else
	{
		if ( (vIntDay < 1) || (vIntDay > 31) )
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				alert("Attenzione!\nGiorno non valido.");
				vElement.focus();
			}
			
			return false;
		}
	}

	if ( (vVarArray[1].length != 1) && (vVarArray[1].length != 2) ) {
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nMese non valido.");
			vElement.focus();
		}
		
		return false;
	}

	vIntMonth = ((vVarArray[1].charAt(0) == "0") && (vVarArray[1].length == 2)) ? parseInt(vVarArray[1].charAt(1)) : parseInt(vVarArray[1]);
	if (isNaN(vIntMonth))
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nMese non valido.");
			vElement.focus();
		}
		
		return false;
	}
	else
	{
		if ((vIntMonth < 1) || (vIntMonth > 12))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				alert("Attenzione!\nMese non valido.");
				vElement.focus();
			}
			
			return false;
		}
	}

	vIntYear = parseInt(vVarArray[2]);
	
	if (isNaN(vIntYear) || (String(vIntYear).length != 4))
	{
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nAnno non valido.");
			vElement.focus();
		}
		
		return false;
	}
	
	var vDate;
	
	vDate = new Date(vIntYear, vIntMonth - 1, vIntDay);
	if ( vDate == null ) {
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nData non valida.");
			vElement.focus();
		}
		
		return false;		
	}

	if ( (vDate.getDate() != vIntDay) || (vDate.getMonth() != (vIntMonth - 1)) || (vDate.getFullYear() != vIntYear) ) {
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nData non valida.");
			vElement.focus();
		}
		
		return false;		
	}

	if (bCheckCurrentYear)
	{
		if ((vIntYear < ((new Date()).getFullYear() - 1)) || (vIntYear > (new Date()).getFullYear()))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				alert("Attenzione!\nAnno non valido.");
				vElement.focus();
			}
			
			return false;
		}

		// controlla che la data non sia maggiore della data corrente

		var vToday = new Date();

		if ( vDate.getFullYear() == vToday.getFullYear() ) {
			if ( vDate.getMonth() > vToday.getMonth() ) {
				if ( (NoMessage == null) || (NoMessage == false) ) {
					alert("Attenzione!\nData maggiore di quella odierna.");
					vElement.focus();
				}
				
				return false;		
			}
			else if ( vDate.getMonth() == vToday.getMonth() ) {
				if ( vDate.getDate() > vToday.getDate() ) {
					if ( (NoMessage == null) || (NoMessage == false) ) {
						alert("Attenzione!\nData maggiore di quella odierna.");
						vElement.focus();
					}
					
					return false;		
				}
			}
		}
	}

	return true;
}

function CheckDateTime ( Form, Element, DateSeparator, TimeSeparator, CanBeNull )
{
	var vElement		= document.forms[Form].elements[Element];
	var vElementValue	= ReadElementValue(vElement);

	if ( !CanBeNull )
	{
		if (isNull(vElementValue))
		{
			ShowCheckError(0);
			vElement.focus();
			return false;
		}
	}
	else
	{
		if (isNull(vElementValue))
			return true;
	}

	DateSeparator	= isNull ( DateSeparator,	"/" );
	TimeSeparator	= isNull ( TimeSeparator,	":" );
	CanBeNull		= isNull ( CanBeNull,		false );
	
	var vIntDay;
	var vIntMonth;
	var vIntYear;
	var vIntHour;
	var vIntMinute;
	
	var arrDateTime = vElementValue.split(" ");
	if ( arrDateTime.length != 2 )
	{
		alert("Attenzione!\nData non valida.");
		vElement.focus();
		return false;
	}
	
	var vVarArray;
	vVarArray = arrDateTime[0].split( DateSeparator );
	
	if ( vVarArray.length != 3 )
	{
		alert("Attenzione!\nData non valida.");
		vElement.focus();
		return false;
	}

	if ( (vVarArray[0].length != 1) && (vVarArray[0].length != 2) )
	{
		alert("Attenzione!\nGiorno non valido.");
		vElement.focus();
		return false;
	}

	vIntDay = ((vVarArray[0].charAt(0) == "0") && (vVarArray[0].length == 2)) ? parseInt(vVarArray[0].charAt(1)) : parseInt(vVarArray[0]);
	
	if (isNaN(vIntDay))
	{
		alert("Attenzione!\nGiorno non valido.");
		vElement.focus();
		return false;
	}
	else
	{
		if ( (vIntDay < 1) || (vIntDay > 31) )
		{
			alert("Attenzione!\nGiorno non valido.");
			vElement.focus();
			return false;
		}
	}

	if ( (vVarArray[1].length != 1) && (vVarArray[1].length != 2) )
	{
		alert("Attenzione!\nMese non valido.");
		vElement.focus();
		return false;
	}

	vIntMonth = ((vVarArray[1].charAt(0) == "0") && (vVarArray[1].length == 2)) ? parseInt(vVarArray[1].charAt(1)) : parseInt(vVarArray[1]);
	if (isNaN(vIntMonth))
	{
		alert("Attenzione!\nMese non valido.");
		vElement.focus();
		return false;
	}
	else
	{
		if ((vIntMonth < 1) || (vIntMonth > 12))
		{
			alert("Attenzione!\nMese non valido.");
			vElement.focus();
			return false;
		}
	}

	vIntYear = parseInt(vVarArray[2]);
	
	if (isNaN(vIntYear) || (String(vIntYear).length != 4))
	{
		alert("Attenzione!\nAnno non valido.");
		vElement.focus();
		return false;
	}
	
	var vDate;
	
	vDate = new Date(vIntYear, vIntMonth - 1, vIntDay);
	
	if ( vDate == null )
	{
		alert("Attenzione!\nData non valida.");
		vElement.focus();
		return false;		
	}

	if ( (vDate.getDate() != vIntDay) || (vDate.getMonth() != (vIntMonth - 1)) || (vDate.getFullYear() != vIntYear) )
	{
		alert("Attenzione!\nData non valida.");
		vElement.focus();
		return false;		
	}
	
	var arrTime = arrDateTime[1].split( TimeSeparator );
	
	if ( arrTime.length != 2 )
	{
		alert("Attenzione!\nOrario non valido.");
		vElement.focus();
		return false;
	}
	
	//--------------- controllo ora ----------------------------
	
	if ( (arrTime[0].length != 1) && (arrTime[0].length != 2) )
	{
		alert("Attenzione!\nOra non valida.");
		vElement.focus();
		return false;
	}

	vIntHour = ((arrTime[0].charAt(0) == "0") && (arrTime[0].length == 2)) ? parseInt(arrTime[0].charAt(1)) : parseInt(arrTime[0]);
	
	if (isNaN(vIntHour))
	{
		alert("Attenzione!\nOra non valida.");
		vElement.focus();
		return false;
	}
	else
	{
		if ( (vIntHour < 0) || (vIntHour > 23) )
		{
			alert("Attenzione!\nOra non valida.");
			vElement.focus();
			return false;
		}
	}
	
	//--------------- controllo minuti ----------------------------
	
	if ( (arrTime[1].length != 1) && (arrTime[1].length != 2) )
	{
		alert("Attenzione!\nMinuti non validi.");
		vElement.focus();
		return false;
	}

	vIntMinute = ((arrTime[1].charAt(0) == "0") && (arrTime[1].length == 2)) ? parseInt(arrTime[1].charAt(1)) : parseInt(arrTime[1]);
	
	if (isNaN(vIntMinute))
	{
		alert("Attenzione!\nMinuti non validi.");
		vElement.focus();
		return false;
	}
	else
	{
		if ( (vIntMinute < 0) || (vIntMinute > 59) )
		{
			alert("Attenzione!\nMinuti non validi.");
			vElement.focus();
			return false;
		}
	}
	
	return true;
}

function CheckTime ( Form, Element, TimeSeparator, CanBeNull )
{
	var vElement		= document.forms[Form].elements[Element];
	var vElementValue	= ReadElementValue(vElement);

	if ( !CanBeNull )
	{
		if (isNull(vElementValue))
		{
			ShowCheckError(0);
			vElement.focus();
			return false;
		}
	}
	else
	{
		if (isNull(vElementValue))
			return true;
	}
	
	TimeSeparator	= isNull ( TimeSeparator,	":" );
	CanBeNull		= isNull ( CanBeNull,		false );
	
	var vIntHour;
	var vIntMinute;
	
	
	
	var arrTime = vElementValue.split( TimeSeparator );
	
	if ( arrTime.length != 2 )
	{
		alert("Attenzione!\nOrario non valido.");
		vElement.focus();
		return false;
	}
	
	//--------------- controllo ora ----------------------------
	
	if ( (arrTime[0].length != 1) && (arrTime[0].length != 2) )
	{
		alert("Attenzione!\nOra non valida.");
		vElement.focus();
		return false;
	}

	vIntHour = ((arrTime[0].charAt(0) == "0") && (arrTime[0].length == 2)) ? parseInt(arrTime[0].charAt(1)) : parseInt(arrTime[0]);
	
	if (isNaN(vIntHour))
	{
		alert("Attenzione!\nOra non valida.");
		vElement.focus();
		return false;
	}
	else
	{
		if ( (vIntHour < 0) || (vIntHour > 23) )
		{
			alert("Attenzione!\nOra non valida.");
			vElement.focus();
			return false;
		}
	}
	
	//--------------- controllo minuti ----------------------------
	
	if ( (arrTime[1].length != 1) && (arrTime[1].length != 2) )
	{
		alert("Attenzione!\nMinuti non validi.");
		vElement.focus();
		return false;
	}

	vIntMinute = ((arrTime[1].charAt(0) == "0") && (arrTime[1].length == 2)) ? parseInt(arrTime[1].charAt(1)) : parseInt(arrTime[1]);
	
	if (isNaN(vIntMinute))
	{
		alert("Attenzione!\nMinuti non validi.");
		vElement.focus();
		return false;
	}
	else
	{
		if ( (vIntMinute < 0) || (vIntMinute > 59) )
		{
			alert("Attenzione!\nMinuti non validi.");
			vElement.focus();
			return false;
		}
	}
	
	return true;
}

function GetTIME( pValue, pSeparator, pDate )
{
	var vIntHour;
	var vIntMinute;
	var vIntSecond;
	vIntSecond = 0;
	
	var vVarArray;
	vVarArray = pValue.split( pSeparator );
	
	if ( (vVarArray.length != 2) && (vVarArray.length != 3) ) {
		return ( null );
	}

	if ( (vVarArray[0].length != 1) && (vVarArray[0].length != 2) ) {
		return ( null );
	}

	vIntHour = ((vVarArray[0].charAt(0) == "0") && (vVarArray[0].length == 2)) ? parseInt(vVarArray[0].charAt(1)) : parseInt(vVarArray[0]);
	if (isNaN(vIntHour))
	{
		return ( null );
	}
	else
	{
		if ( (vIntHour < 0) || (vIntHour > 23) )
		{
			return ( null );
		}
	}

	if ( (vVarArray[1].length != 1) && (vVarArray[1].length != 2) ) {
		return ( null );
	}

	vIntMinute = ((vVarArray[1].charAt(0) == "0") && (vVarArray[1].length == 2)) ? parseInt(vVarArray[1].charAt(1)) : parseInt(vVarArray[1]);
	if (isNaN(vIntMinute))
	{
		return ( null );
	}
	else
	{
		if ((vIntMinute < 0) || (vIntMinute > 60))
		{
			return ( null );
		}
	}

	if ( vVarArray.length == 3 ) {
		if ( (vVarArray[2].length != 1) && (vVarArray[2].length != 2) ) {
			return ( null );
		}

		vIntSecond = ((vVarArray[2].charAt(0) == "0") && (vVarArray[2].length == 2)) ? parseInt(vVarArray[2].charAt(1)) : parseInt(vVarArray[2]);
		if (isNaN(vIntSecond))
		{
			return ( null );
		}
		else
		{
			if ((vIntSecond < 0) || (vIntSecond > 60))
			{
				return ( null );
			}
		}
	}
	
	var vDate;
	vDate = pDate;
	
	if ( vDate == null ) {
		vDate = new Date();
	}

	vDate.setHours( vIntHour, vIntMinute, vIntSecond );
		
	return ( vDate );
}



function CheckEMAIL(Form, Element, CanBeNull, NoMessage)
{
	var vElement		= document.forms[Form].elements[Element];
	var vElementValue	= ReadElementValue(vElement);

	if ( !CanBeNull )
	{
		if (isNull(vElementValue))
		{
			if ( (NoMessage == null) || (NoMessage == false) ) {
				ShowCheckError(0);
				vElement.focus();
			}
			
			return false;
		}
	}
	else
	{
		if (isNull(vElementValue))
			return true;
	}

	var vArrayAt = vElementValue.split( "@" );

	if ( vArrayAt.length != 2 ) {
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nE-mail non valida.");
			vElement.focus();
		}
				
		return false;
	}	

	var vArrayDotPre = vArrayAt[0].split( "." );
	var vArrayDotPost = vArrayAt[1].split( "." );

	if ( vArrayDotPost.length < 2 ) {
		if ( (NoMessage == null) || (NoMessage == false) ) {
			alert("Attenzione!\nE-mail non valida.");
			vElement.focus();
		}
					
		return false;
	}

	var ii;
	var jj;
	
	for ( jj = 0; jj < vArrayDotPre.length; jj++ ) {
		if ( vArrayDotPre[jj].length < 1 ) {
			if ( (NoMessage == null) || (NoMessage == false) ) {
				alert("Attenzione!\nE-mail non valida.");
				vElement.focus();
			}
					
			return false;
		}
		
		for ( ii = 0; ii < vArrayDotPre[jj].length; ii++ ) {
			if ( ( (vArrayDotPre[jj].charCodeAt(ii) > 0) && (vArrayDotPre[jj].charCodeAt(ii) < 45) ) || ( (vArrayDotPre[jj].charCodeAt(ii) > 57) && (vArrayDotPre[jj].charCodeAt(ii) < 65) ) || ( (vArrayDotPre[jj].charCodeAt(ii) > 91) && (vArrayDotPre[jj].charCodeAt(ii) < 95) ) || (vArrayDotPre[jj].charCodeAt(ii) == 96) || (vArrayDotPre[jj].charCodeAt(ii) > 122) ) {
				if ( (NoMessage == null) || (NoMessage == false) ) {
					alert("Attenzione!\nE-mail non valida.");
					vElement.focus();
				}
						
				return false;
			}
		}		
	}

	for ( jj = 0; jj < vArrayDotPost.length; jj++ ) {
		if ( vArrayDotPost[jj].length < 1 ) {
			if ( (NoMessage == null) || (NoMessage == false) ) {
				alert("Attenzione!\nE-mail non valida.");
				vElement.focus();
			}
					
			return false;
		}
		
		for ( ii = 0; ii < vArrayDotPost[jj].length; ii++ ) {
			if ( ( ( vArrayDotPost[jj].charCodeAt(ii) > 0 ) && ( vArrayDotPost[jj].charCodeAt(ii) < 45 ) ) || ( ( vArrayDotPost[jj].charCodeAt(ii) > 57 ) && ( vArrayDotPost[jj].charCodeAt(ii) < 65 ) ) || ( ( vArrayDotPost[jj].charCodeAt(ii) > 91 ) && ( vArrayDotPost[jj].charCodeAt(ii) < 97 ) ) || ( vArrayDotPost[jj].charCodeAt(ii) > 122 ) ) {
				if ( (NoMessage == null) || (NoMessage == false) ) {
					alert("Attenzione!\nE-mail non valida.");
					vElement.focus();
				}
						
				return false;
			}
		}		
	}

	return true;
}