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+" contiene caratteri non numerici.");
		SetFocus(txt);
		return false;
	}
	
	if (eval(txt.value)==0) {
		alert(campo+" deve essere un numero positivo.");
		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;

}
	
function TransformDate(Data) {
/*
Funzione TransformDate: data una stringa in formato gg/mm/aaaa ritorna
una variabile di tipo data.
N.B.: La data dovrà già essere stata controllata tramite la funzione
controllodata in FUNZIONI.JS.

Parametri:
Data ----> Data da convertire
Ritorna:
Data Convertita
*/

var strdat = String(Data);
var lung=strdat.length;
var conta=0;
var lettera;
var app=strdat.indexOf('/');
var giorno=strdat.substring(0,app);
var mese=strdat.substring(app+1,strdat.indexOf('/',app+1));
app=strdat.indexOf('/',app+1);
var anno=strdat.substr(app+1);
var datData=(eval(anno)*10000)+(eval(mese)*100)+eval(giorno);
return datData
}


/* 
	LOOKUP COMUNI 
	Attiva una dialog con la lista dei Comuni per la provincia specificata nel parametro CampoPR.
	Avvalora i campi CampoCit e CampoCitClear rispettivamente con il codice e la descrizione del Comune
	selezionato nella lista.
*/
function ShowDialogComuni(CampoPR,CampoCit,CampoCitClear) {
	if (CampoPR.value!='') {
		var Codice=window.showModalDialog('../common/LookupComuni.asp?provincia='+CampoPR.value,'','dialogWidth=50;dialogHeight=27');
		if (Codice!=null) {
			CampoCit.value=Codice.substr(0,Codice.indexOf('|',0));
			CampoCitClear.disabled = false;
			CampoCitClear.value=Codice.substr(Codice.indexOf('|',0)+1);
			CampoCitClear.disabled = true;
			if (Codice == '') {
				CampoPR.selectedIndex = 0;
			}					
		}
	}
}
/* 
	seleziona in un campo combo il valore specificato se esistente 
	*** completare: non è gestito il caso in cui il valore fornito non appartiene alla lista del combo
*/
function setComboValue(CampoCombo,Valore) {
	for (var ii = 1; ii < CampoCombo.length; ii++) {
		if (CampoCombo.options(ii).value == Valore) {
			CampoCombo.selectedIndex = ii;
			return;
		}
	}
	CampoCombo.selectedIndex = 0;
}
