var BrwWin;
function browseFile(SubDir,aForm,aText)
{
	var PageUrl='../cgi-bin/File/browse.cgi' + '?l=ita';
	PageUrl+='&subdir=' + escape(SubDir);
	PageUrl+='&iform=' + escape(aForm.name);
	PageUrl+='&ifield=' + escape(aText.name);
	PageUrl+='&old_file=' + escape(aText.value);

	if (BrwWin && !BrwWin.closed){
		BrwWin.location=PageUrl;
	} else {
		BrwWin=window.open(PageUrl,"img","width=500,height=250,scrollbars");
	}
	BrwWin.focus();

	return false;
}

function checkFields(aForm)
{
	var i;

	for (i=0; i<aForm.length; i++)
	{
		if (aForm.elements[i].onchange)
		{
			if(!aForm.elements[i].onchange())
				{return false;}
		}
	}

	return true;
}

var DecSep=',';
var ThSep='.';

function getNumber(S)
{
	var Sign;
	var SepPos;
	var SInt="";
	var SDec="";
	var DecLen;
	var DecWeight;
	var i;
	
	if (S.length == 0)
	{
		return '';
	}

	if (S.substr(0,1) == '-')
	{
		Sign=-1;
		S=S.substr(1);
	}
	else
		{Sign=1}

	if ((SepPos=S.indexOf(DecSep)) >= 0)
	{
		SInt=S.substr(0,SepPos);
		SDec=S.substr(SepPos+1);
		if (SInt == "")
			{SInt="0"}
	}
	else
	{
		SInt=S;
		SDec="";
	}

	while ((SepPos=SInt.indexOf(ThSep)) >= 0)
		{SInt=SInt.substr(0,SepPos)+SInt.substr(SepPos+1);}

	DecLen=SDec.length;
	DecWeight=1;
	for (i=1;i<=DecLen;i++)
		{DecWeight*=10;}

 	if (DecLen > 0)
 		{return(Sign*(parseFloat(SInt)+parseFloat(SDec/DecWeight)));}
 	else
 		{return(Sign*parseFloat(SInt));}
}

function putNumber(N, DecLen)
{
	var Sign="";
	var DecWeight;
	var SInt="";
	var SDec="";
	var i;

	if (N < 0)
	{
		Sign="-";
		N=-N;
	}
	else
		{Sign=""}
	DecWeight=1;
	for (i=1;i<=DecLen;i++)
		{DecWeight*=10}

	N+=0.5/DecWeight;
	var SInt=new String(Math.floor(N));
	var SDec=new String(Math.floor((N-Math.floor(N))*DecWeight));

	if (SInt.indexOf("E") >= 0 ||
		SDec.indexOf("E") >= 0)
		{return("!#")}

	for(i=SInt.length-3; i>0; i-=3)
		{SInt=SInt.substr(0,i)+ThSep+SInt.substr(i);}

	while (SDec.length < DecLen)
		{SDec='0'+SDec}

	if (SDec.length > 0 && DecLen > 0)
		{return(Sign+SInt+DecSep+SDec)}
	else
		{return(Sign+SInt)}
}

var LenMsg="Sono state inserite troppe cifre";
var BadCharMsg="E' stato inserito un carattere non valido: ";
var MinMsg="Il valore minimo ammesso e' ";
var MaxMsg="Il valore massimo ammesso e' ";
function checkNumber(NField, TotLen, DecLen, Min, Max)
{
	var SNum;
	var Num;
	var MaxLen;
	var SepPos;
	var i;

	if (!DecLen)
		{DecLen=0;}

	SNum=NField.value;
	MaxLen=TotLen - DecLen;
	// Eliminazione segno
	if ((SepPos=SNum.indexOf("-")) >= 0)
		{SNum=SNum.substr(0,SepPos)+SNum.substr(SepPos+1);}
	// Eliminazione separatore decimale  
	if ((SepPos=SNum.indexOf(DecSep)) >= 0)
	{
		if (DecLen == 0)
		// Il separatore decimale non e' ammesso			
		{
			alert(BadCharMsg + "'" + DecSep + "'");
			NField.focus();
			return false;
		}

		SNum=SNum.substr(0,SepPos)+SNum.substr(SepPos+1);
	}
	// Eliminazione separatori delle migliaia
	while ((SepPos=SNum.indexOf(ThSep)) >= 0)
		{SNum=SNum.substr(0,SepPos)+SNum.substr(SepPos+1);}

	// Controllo formato
	if (SNum.length > MaxLen)
	{
		alert(LenMsg);
		NField.focus();
		return false;
	}

	// Controllo presenza caratteri non numerici
	for (i=0; i<SNum.length; i++)
	{
		if (SNum.charCodeAt(i) < "0".charCodeAt(0) || SNum.charCodeAt(i) > "9".charCodeAt(0))
		{
			alert(BadCharMsg + "'" + SNum.charAt(i) + "'");
			NField.focus();
			return false;
		}
	}

	Num=getNumber(NField.value);

	if (Num)
	{
		if (Min && Num < Min)
		{
			alert(MinMsg + Min);
			NField.focus();
			return false;
		}
		if (Max && Num > Max)
		{
			alert(MaxMsg + Max);
			NField.focus();
			return false;
		}
	
		NField.value=putNumber(Num, DecLen);
	}

	return true;
}

var StrLenMsg="Numero di caratteri non valido. Valori ammessi: ";
function checkString(SField, MinLen, MaxLen)
// Controllo campo alfanumerico.
// MinLen: lunghezza minima
// MaxLen: lunghezza massima
{
	// Controllo lunghezza
	if (SField.value.length < MinLen || SField.value.length > MaxLen)
	{
		alert(StrLenMsg + MinLen + ".." + MaxLen);
		SField.focus();
		return false;
	}

	return true;
}

var NoDTMsg="Inserire la Data e l'Ora separate da spazio";
var NoDateMsg="Inserire la Data";
var NoTimeMsg="Inserire l'Ora";
var DateFormatMsg="Indicare 'GG/MM' o 'GG/MM/AAAA'";
var DayMsg="Il GIORNO deve essere compreso tra 1 e 31";
var MonthMsg="Il MESE deve essere compreso tra 1 e 12";
var TimeFormatMsg="Indicare 'HH:MM'";
var HourMsg="Le ORE devono essere comprese tra 0 e 23";
var MinuteMsg="I MINUTI deveno essere compresi tra 0 e 59";
function checkDT(DTField, CheckType)
// Controllo campo data e ora.
// CheckType: tipo di controllo (i valori possono essere concatenati)
//	'D' controllo data e campo obbligatorio
//	'd' controllo data
//	'T' controllo ora e campo obbligatorio
//	't' controllo ora
{
	var SepPos;
	var EndDay,EndMonth;
	var Day,Month,Year;
	var CurrentYear;
	var Today=new Date();

	var EndHour,EndMinute;
	var Hour,Minute;
  
	var DateField="";
	var TimeField="";
	var DTArray=new Array("","");

	if ((SepPos=DTField.value.indexOf(' ')) >= 0)
	{
		DTArray[0]=DTField.value.substr(0,SepPos);
		DTArray[1]=DTField.value.substr(SepPos+1);
	}
	else
		{DTArray[0]=DTField.value;}

	switch (CheckType)
	{
		case 'DT':
			if (DTArray.length < 2)
			{
				alert(NoDTMsg);
				DTField.focus();
				return false;
			}
		case 'dt':
			DateField=DTArray[0];
			TimeField=DTArray[1];
			break;
		case 'D':
		case 'Dt':
			if (DTArray[0] == "")
			{
				alert(NoDateMsg);
				DTField.focus();
				return false;
			}
		case 'd':
			DateField=DTArray[0];
			TimeField=DTArray[1];
			break;
		case 'dT':
			if (DTArray[0] == "")
			{
				alert(NoTimeMsg);
				DTField.focus();
				return false;
			}
			if (DTArray[1] == "")
				{TimeField=DTArray[0];}
			else
			{
				DateField=DTArray[0];
				TimeField=DTArray[1];
			}
			break;
		case 'T':
			if (DTArray[0] == "")
			{
				alert(NoTimeMsg);
				DTField.focus();
				return false;
			}
		case 't':
			TimeField=DTArray[0];
			break;
	}

	if (DateField != "")
	// Controllo della data
	{
		// Individuazione dei separatori
		EndDay=DateField.indexOf("/");
		EndMonth=DateField.indexOf("/",EndDay+1);
		if (EndMonth < 0 && DateField.length > EndDay)
			{EndMonth=DateField.length;	}
	
		// Controllo del formato
		if (EndDay < 0 || EndMonth < 0)
	 {
			alert(DateFormatMsg);
			DTField.focus();
			return false;
		}
	
		// Definizione del giorno
		Day=DateField.substring(0,EndDay);
	
		// Controllo validita' del giorno
		if (Day < 1 || Day > 31)
	 {
			alert(DayMsg);
			DTField.focus();
			return false;
		}
		else
		{
			if (Day.length < 2)
				{Day='0'+Day;}
		}
	
		// Definizione del mese
		Month=DateField.substring(EndDay+1,EndMonth);
	
		// Controllo validita' del mese
		if (Month < 1 || Month > 12)
		{
			alert(MonthMsg);
			DTField.focus();
			return false;
		}
		else
		{
			if (Month.length < 2)
				{Month='0'+Month;}
		 }
	
		// Definizione dell'anno
		Year=DateField.substring(EndMonth+1,DateField.length);
	
		// Controllo della lunghezza dell'anno
		if (Year.length <= 2)
		{
			// Trasformazione dell'anno in formato a 4 cifre
			if (Today.getFullYear())
				{CurrentYear=""+Today.getFullYear()}
			else
				{CurrentYear=""+eval("1900 + "+Today.getFullYear())}
	
			Year=CurrentYear.substring(0,4-Year.length)+Year;
		}
	}

	if (TimeField != "")
	// Controllo dell'ora
	{
		// Individuazione dei separatori
		EndHour=TimeField.indexOf(":");
		EndMinute=TimeField.length;
	
		// Controllo del formato
		if (EndHour < 0 || EndMinute < 0)
	 {
			alert(TimeFormatMsg);
			DTField.focus();
			return false;
		}
	
		// Definizione dell'ora
		Hour=TimeField.substring(0,EndHour);
	
		// Controllo validita' del giorno
		if (Hour < 0 || Hour > 23)
	 {
			alert(HourMsg);
			DTField.focus();
			return false;
		}
		else
		{
			if (Hour.length < 2)
				{Hour='0'+Hour;}
		}
	
		// Definizione dei minuti
		Minute=TimeField.substring(EndHour+1,EndMinute);
	
		// Controllo validita' del mese
		if (Minute < 0 || Minute > 59)
		{
			alert(MinuteMsg);
			DTField.focus();
			return false;
		}
		else
		{
			if (Minute.length < 2)
				{Minute='0'+Minute;}
		 }
	}

	if (DateField != "")
	{
		DTField.value=Day+"/"+Month+"/"+Year;
		if (TimeField != "")
			{DTField.value+=" "+Hour+":"+Minute;}
	}
	else
	{
		if (TimeField != "")
			{DTField.value=Hour+":"+Minute;}
	}

	return true;
}

/*
function checkRadio()
{
	for (var i=0;i<req_RadioFields.length;i++)
	{
		aField=eval('document.'+aForm.name+'.'+req_RadioFields[i]);
		if (aField)
		{
			isChecked=0;
			for (var j=0;j<aField.length;j++)
			{
				if (aField[j].checked)
				{
					isChecked=1;
					break;
				}
			}
			if (isChecked == 0)
			{
				alert(msg_RadioFields[i]+' !');
				aField.focus();
				return false;
			}
		}
	}
}
*/

function openWin(URL,Name,Features)
{
	var openWin=window.open(URL,Name,Features);
	openWin.focus();
}

