function Trim(string) 

{
/*
Funzione Trim: serve a togliere gli spazi all'inizio e
 alla fine di una stringa

Parametri:
string: stringa da controllare.

Ritorna:
Stringa a cui sono stati tolti gli spazi all'inizio
e alla fine della stessa.
*/

	var re=/(^\s*)|(\s*$)/g;
	return String(string).replace(re,"");
}

function SetFocus(obj) {
obj.select();
obj.focus();
return true;
}
function CheckInt(StringToTest, Obbligatorio) {
/*
Funzione CheckInt: controlla se il numero contiene solo caratteri
numerici.

Parametri:
StringToTest: stringa da controllare
Obbligatorio: true nel caso il campo sia obbligatorio; false nel caso
	 contrario
 
Ritorna:
true ----> quando Obbligatorio è true, nel caso che la stringa contenga
 solo caratteri numerici.
 quando Obbligatorio è false, nel caso che la stringa contenga
 solo caratteri numerici o non contenga nessun carattere.
false quando nessun caso precedente è verificato.
*/

	var carattere="";
	
	if (StringToTest=="")
		return (! Obbligatorio);	
	else {
		for (i=0;i<StringToTest.length;i++) {
			carattere=StringToTest.charAt(i);
			if (carattere<"0" || carattere>"9") {
				return false;			
			}		
		}
		return true;
	}
}

function CheckPositiveNumber(txt, campo) {
/*
Funzione CheckPositiveNumber: testa se un campo testo è un numero intero
maggiore di 0.

Parametri:
txt ----> campo da testare
campo --> nome del campo (per i messaggi di errore)

Ritorna:
true se è un numero intero positivo; false nei casi contrari
*/
	if (Trim(txt.value)=="") {
		alert(campo+" è un campo obbligatorio.");
		SetFocus(txt);
		return false;
	}
	
	if (CheckInt(txt.value,true)==false) {
		alert(campo+" deve contenere solo caratteri numerici.");
		SetFocus(txt);
		return false;
	}
	
	if (eval(txt.value)==0) {
		alert(campo+" deve essere composto da almeno una persona!");
		SetFocus(txt);
		return false;
	}
	
	return true;
}

function CheckText(txt, campo) 

{
/*
Funzione CheckText: testa se un campo testo contiene almeno un
 carattere diverso da spazio.

Parametri:
txt ----> campo da testare
campo -->

 nome del campo (per i messaggi di errore)

Ritorna:
true se è un numero intero positivo; false nei casi contrari
*/
	if (Trim(txt.value)=="") {
		alert(campo+" è un campo obbligatorio.");
		SetFocus(txt);
		return false;
	}
	for (i=0;i<txt.value.length;i++) {
		if ((txt.value.charAt(i)=='\\')||(txt.value.charAt(i)=='"')){
			alert(campo+" contiene un carattere non valido \""+txt.value.charAt(i)+"\".");
			SetFocus(txt);
			return false;
		} 
		if (txt.value.charAt(i)=='\''){
			var re;
		  re = /[\']/i;
			txt.value = txt.value.replace(re, "´");
		}
	}
	return true;
}

function CheckDecimalNumber(txt, campo, CifreIntere, CifreDecimali) {
/*
Funzione CheckDecimalNumber: testa se un campo testo è un numero decimale
maggiore di 0.

Parametri:
txt -----------> campo da testare
campo ---------> nome del campo (per i messaggi di errore)
CifreIntere ---> Numero di Cifre Intere massime (-1 nel caso non
				 c'è necessità di controllarle).
CifreDecimali -> Numero di Cifre Decimali massime (-1 nel caso non
				 c'è necessità di controllarle).

Ritorna:
true se è un numero decimale; false nei casi contrari
*/

	var intCifreIntere=0;
	var intCifreDecimali=0;
	var blnParteIntera=true;
	var intI=0;
	var strCarattere="";
	var dblValore=0;
	var strTesto="";
	var tmpIntere="";
	var tmpDecimali="";
	var sepDecimale=',';
//	var String subStrings [];

	if (CifreDecimali==0) sepDecimale='';
	for (i=0;i<CifreIntere;i++) tmpIntere=tmpIntere+"N";
	for (i=0;i<CifreDecimali;i++) tmpDecimali=tmpDecimali+"N";
	//Controllo se l'utente ha inserito qualcosa nel campo
	if (CheckText(txt,campo)==false)
		return false;
	
	//Controllo se il campo contiene dati numerici
/*
	for (i=0;i<txt.value;i++)
		if ((txt.charAt(i)<"0")||(txt.charAt(i)>"9")||(txt.charAt(i)!=",")) {
			alert(campo+" contiene dati non numerici.");
			SetFocus(txt);
			return false;
		}
*/	
/* Cilla
	if (isNaN(txt.value)==true) {
		alert(campo+" contiene dati non numerici.");
		SetFocus(txt);
		return false;
	}
	dblValore=parseFloat(txt.value);
	//Controllo se il valore del dato è 0.
	if (dblValore==0) {
		alert(campo+" deve essere un numero positivo.");
		SetFocus(txt);
		return false;
	}
	
	strTesto=dblValore.toString();
	subString = PermissionUtils.parseStringIntoArray(txt,",");
	if (subString.length>2) {
		alert(campo+" contiene un numero non valido.\nIl formato corretto è "+tmpIntere+","+tmpDecimali+" !");
		SetFocus(txt);
		return false;
	}

	for (i=0;i<subString.length;i++) tmpStr=tmpStr+subString[i];
*/


/* verifica parte intera */	
	for (i=0;i<CifreIntere && i<txt.value.length &&  txt.value.charAt(i)!=",";i++) {
		if (txt.value.charAt(i)<"0" || txt.value.charAt(i)>"9"){
			alert(campo+" contiene un numero non valido.\nIl formato corretto è "+tmpIntere+sepDecimale+tmpDecimali+" !");
			SetFocus(txt);
			return false;
		}
	}
	if (i<txt.value.length)
		if (txt.value.charAt(i)!=sepDecimale){
			alert(campo+" contiene un numero non valido.\nIl formato corretto è "+tmpIntere+sepDecimale+tmpDecimali+" !");
			SetFocus(txt);
			return false;
		}
	i++;
/* verifica parte decimale */	
	for (j=i;j<txt.value.length && (j-i)<CifreDecimali;j++) {
		if (txt.value.charAt(j)<"0" || txt.value.charAt(j)>"9"){
			alert(campo+" contiene un numero non valido.\nIl formato corretto è "+tmpIntere+sepDecimale+tmpDecimali+" !");
			SetFocus(txt);
			return false;
		}
	}
	if (j<txt.value.length) {
		alert(campo+" contiene un numero non valido.\nIl formato corretto è "+tmpIntere+sepDecimale+tmpDecimali+" !");
		SetFocus(txt);
		return false;
	}
	
	
//Adesso calcolo il numero di cifre intere e quello di cifre
	//decimali
/*
	for (intI=0;intI<strTesto.length;intI++) {
		strCarattere=strTesto.charAt(intI);
		if (strCarattere>="0" && strCarattere<="9")
			if (blnParteIntera==true)
				intCifreIntere++;
			else
				intCifreDecimali++;
		else
			blnParteIntera=false;
	}
	
	if ((CifreIntere>-1) && (intCifreIntere>CifreIntere)) {
		alert(campo+" ha un eccessivo numero di cifre intere.\nIl numero massimo di cifre intere è "+CifreIntere);
		SetFocus(txt);
		return false;
	}
	
	if ((CifreDecimali>-1) && (intCifreDecimali>CifreDecimali)) {
		alert(campo+" ha un eccessivo numero di cifre Decimali.\nIl numero massimo di cifre Decimali è "+CifreDecimali);
		SetFocus(txt);
		return false;
	}
*/ 
	
	return true;

}