function ctrlBrowser()
{
	var f = document.form1
	   
	if (document.all) //Internet Explorer
	{				
		f.descrip.value = f.descrip.value
	}	
	else if (document.layers) //Netscape 4
	{				
		f.descrip.value = noHtml(f.descrip.value)
	}	
	else if (document.getElementById) //Netscape 6, o un browser di nuova generazione
	{	
		f.descrip.value = noHtml(f.descrip.value)
	}
}
function ctrlBrowser2()
{
	var f = document.form1
	   
	if (document.all) //Internet Explorer
	{				
		f.homePage.value = f.homePage.value
		f.whoWeAre.value = f.whoWeAre.value
	}	
	else if (document.layers) //Netscape 4
	{				
		f.homePage.value = noHtml(f.homePage.value)
		f.whoWeAre.value = noHtml(f.whoWeAre.value)
	}	
	else if (document.getElementById) //Netscape 6, o un browser di nuova generazione
	{	
		f.homePage.value = noHtml(f.homePage.value)
		f.whoWeAre.value = noHtml(f.whoWeAre.value)
	}
}
function cleanHTMLValue(val)
{
	var buff = val
	
	if (buff == "") {
		buff = ""
	}
	else {
		buff = buff.replace('<', '&lt;');
		buff = buff.replace('>', '&gt;');
		buff = buff.replace('&', '&amp;');
	}
    return buff;
}
function noHtml(txt)
{
    a = txt.indexOf('<');
    b = txt.indexOf('>');
    len = txt.length;
    c = txt.substring(0, a);
    if(b == -1) {
       b = a;
    }
    d = txt.substring((b + 1), len);
    txt = c + d;
    cont = txt.indexOf('<');
    if (cont != -1) {
      txt = noHtml(txt);
    }
    return txt;
}
function url(PageName, Target)
{
	window.document.location.href = PageName;
}

function popUp(PageName)
{
	if (document.all) //Internet Explorer
	{				
		var PageName;	
		svalue = window.showModalDialog("iFrame.asp", PageName, "dialogHeight: 240px; dialogWidth: 380px; dialogTop: px; dialogLeft: px; edge: raised; center: Yes; help: NO; resizable: NO; status: NO; scroll: No;");
	}	
	else if (document.layers) //Netscape 4
	{				
		var PageName;
		svalue = window.open(PageName,'ISMS IUG Italy','width=375px, height=215px, left=320, top=250, toolbar=no, location=no, status=no, menubar=no, scrollbars=no, resizable=no, modal=yes');
	}	
	else if (document.getElementById) //Netscape 6, o un browser di nuova generazione
	{	
		var PageName;
		svalue = window.open(PageName,'ISMS IUG Italy','width=375px, height=215px, left=320, top=250, toolbar=no, location=no, status=no, menubar=no, scrollbars=no, resizable=no, modal=yes');	
	}
}

//Aggiunge il punto come separatore delle migliaia e la virgola per i decimali//
function FormattaNumeroJS(Importo, nDigits)
{
	//ATTENZIONE:
	//Verificare sempre che il numero da formattare non contenga il ".",
	//nè come separatore delle migliaia, nè come separatore dei decimali
	
	//Se c'è una virgola e non ci sono punti sostituisco la
	//virgola con il punto.
	var Imp = Importo.toString();
	var segno = "";
	
	//Quasi inutile...
	if ( (Imp.search('.') != -1) && (Imp.search(',') != -1) )
		Imp = Imp.replace(".", "");
	
	if (Imp.substring(1, 1) == "-")
	{
		segno = "-";
		Imp = Imp.replace("-", "");
	}
	
	if (Imp != "")
	{
		Imp = Imp.replace(",", ".");
		
		var Cifrone = RoundJS(Imp, nDigits);
		var ParteIntera = parseInt(Cifrone).toString(10);
		var ParteDecimale = RoundJS(parseFloat(parseFloat(Cifrone) - parseFloat(ParteIntera)).toString(), nDigits);
		var Risultato = '';
		
		if (ParteIntera.length>3)
		{
			var len = ParteIntera.length;
			
			for (i=0; i<len; i++)
			{
				Risultato += ParteIntera.charAt(i);
				if ( ( ( (len - i - 1) % 3) == 0 ) && ( (i + 1) != len ) )
					Risultato += '.';
			}
		}
		else
			Risultato = ParteIntera;
	}
	else
	{
		Risultato = "0";
		ParteDecimale = "0";
	}
	
	if (nDigits>0)
	{
		ParteDecimale = ParteDecimale.toString();
		if (parseFloat(ParteDecimale) > 0)
			ParteDecimale = ParteDecimale.substring(2, 100);
		
		while (parseInt(ParteDecimale.length) < parseInt(nDigits))
			ParteDecimale += "0";
		
		Risultato += "," + ParteDecimale;
	}
	
	return segno + Risultato;
}


//Funzione di arrotondamento//
function RoundJS(Cifrone, decimali)
{
	if (isNaN(Cifrone) || isNaN(decimali))
	{
		alert("Not a valid number!");
		return 0;
	}
	
	var ParteIntera = parseInt(Cifrone);
	var Base = 1;
	
	for (i=0; i<parseInt(decimali); i++)
		Base *= 10;
	
	var Step = Math.round( ( parseFloat(Cifrone) - parseFloat(ParteIntera) ) * Base ) / Base;
	
	return parseFloat(ParteIntera + Step);
}


function ChechSingleChars(Stringa)
{
	var i;
	var ultimocarattere;
	
	var camp;
	
	//Effettuo una serie di controlli carattere per carattere
	if (Stringa == "[object]")
		camp = Stringa.value;
	else
		camp = Stringa;
	
	//Accetta solo numeri, spazi ed i caratteri punto e virgola
	for (i=0; i<camp.length; i++)
	{
		if ( ((camp.charAt(i) < '0') || (camp.charAt(i) > '9')) && (camp.charAt(i) != '.') && (camp.charAt(i) != ',') && (camp.charAt(i) != ' ') && (camp.charCodeAt(i) != 160))
			return false;
		
		if ( camp.charAt(i) != ' ')
			ultimocarattere = camp.charAt(i);
	}
	
	//Se l'ultimo carattere non è una cifra va in errore
	if (ultimocarattere == '.' || ultimocarattere == ',')
		return false;
	
	return true;
}


/*-------------------- CONTROLLA GLI INPUT NUMERICI----------------
------- Questa funzione controlla che i valori numerici inseriti
------- siano: numerici, interi (non decimali), positivi
-----------------------------------------------------------------*/
function Controlla_Numero(Campo)
{
	var camp;
	
	//Effettuo una serie di controlli carattere per carattere
	if (Campo == "[object]")
		camp = Campo.value;
	else
		camp = Campo;
	
	camp = TrimJS(camp);
	
	if (!ChechSingleChars(camp))
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("This is a numeric field!!")
		else
			msgboxJS("", "This is a numeric field!!", _OKONLY, _CRITICAL);
		
		Campo.select();
		Campo.focus();
		return false;
	}
	
	if (camp.replace(',', '.') != "")
	{
		// Verificato che il campo inserito è un numero e non un alfanumerico
		if (VerificaNumerico(camp))
		// Verificato che il campo inserito è un numero positivo
			return NumericoPositivo(camp);
		else
			return false;
	}
	else
		return true;
}

function Controlla_Intero(Campo)
{
	var camp;
	
	//Effettuo una serie di controlli carattere per carattere
	if (Campo == "[object]")
		camp = Campo.value;
	else
		camp = Campo;
	
	camp = TrimJS(camp);
	
	//Effettuo una serie di controlli carattere per carattere
	if (!ChechSingleChars(camp))
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("This is a numeric field!!")
		else
			MsgBoxJS("", "This is a numeric field!!", _OKONLY, _CRITICAL);
		
		Campo.select();
		Campo.focus();
		return false;
	}
	
	if (camp.replace(',', '.') != "")
	{
		// Verificato che il campo inserito è un numero e non un alfanumerico
		if (VerificaNumerico(camp))
			// Verificato che il campo inserito è un numero positivo
			if (NumericoPositivo(camp))
				// Verificato che il campo inserito non è un numero decimale
				return VerificaIntero(camp);
			else
				return false;
		else
			return false;
	}
	else
		return true;
}

/*-------------------- CONTROLLA GLI INPUT NUMERICI----------------
------- Questa funzione controlla che i valori numerici inseriti
------- siano: numeri non negativi
-----------------------------------------------------------------*/
function NumericoPositivo(Campo)
{
	var camp;
	
	if (Campo == "[object]")
		camp = Campo.value;
	else
		camp = Campo;
	
	camp = TrimJS(camp);
	
	//Effettuo una serie di controlli carattere per carattere
	if (!ChechSingleChars(camp))
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("This is a numeric field!!")
		else
			MsgBoxJS("", "This is a numeric field!!", _OKONLY, _CRITICAL);
		
		Campo.select();
		Campo.focus();
		return false;
	}
	
	if (camp.replace(',', '.') != "")
	{
		if (isNaN(camp.charAt(0)))
		{
			var arr;
			arr = location.pathname.split("/");
			
			//Se è un popup uso un semplice alert
			if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
				alert("This is a numeric field!!")
			else
				MsgBoxJS("", "This is a positive numeric field!!", _OKONLY, _CRITICAL);
			
			Campo.select();
			Campo.focus();
			return false;
		}
		return true;
	}
}


/*-------------------- CONTROLLA GLI INPUT NUMERICI----------------
------- Questa funzione controlla che i valori numerici inseriti
------- siano: valori numerici
-----------------------------------------------------------------*/
function VerificaNumerico(Campo)
{
	var camp;
	
	if (Campo == "[object]")
		camp = Campo.value;
	else
		camp = Campo;
	
	camp = TrimJS(camp);
	
	//Effettuo una serie di controlli carattere per carattere
	if (!ChechSingleChars(camp))
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("This is a numeric field!!")
		else
			MsgBoxJS("", "This is a numeric field!!", _OKONLY, _CRITICAL);
		
		Campo.select();
		Campo.focus();
		return false;
	}
	
	if (isNaN(camp.replace(',', '.')))
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("This is a numeric field!!")
		else
			MsgBoxJS("", "This is a numeric field!!", _OKONLY, _CRITICAL);
		
		Campo.select();
		Campo.focus();
		return false;
	}
	return true;
}

/*-------------------- CONTROLLA GLI INPUT NUMERICI----------------
------- Questa funzione controlla che i valori numerici inseriti
------- siano: numeri non decimali
-----------------------------------------------------------------*/
function VerificaIntero(Campo)
{
	var camp;
	
	if (Campo == "[object]")
		camp = Campo.value;
	else
		camp = Campo;
	
	camp = TrimJS(camp);
	
	//Effettuo una serie di controlli carattere per carattere
	if (!ChechSingleChars(camp))
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("This is a numeric field!!")
		else
			MsgBoxJS("", "This is a numeric field!!", _OKONLY, _CRITICAL);
		
		Campo.select();
		Campo.focus();
		return false;
	}
	
	if (parseFloat(parseInt(camp.replace(',', '.'))) != parseFloat(camp.replace(',', '.')))
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("This is a numeric field!!")
		else
			MsgBoxJS("", "This is a numeric field!!", _OKONLY, _CRITICAL);
		
		Campo.select();
		Campo.focus();
		return false;
	}
	
	return true;
}


function TrimJS(Stringa)
{
	var tmp = Stringa;
	
	if (tmp == "")
		return tmp;
	
	//A sinistra
	while(tmp.charAt(0) == " ")
		tmp = tmp.slice(1);
	
	//A destra
	while(tmp.charAt(tmp.length - 1) == " ")
		tmp = tmp.slice(0, tmp.length - 1);
	
	return tmp;
}

function VerificaDataJS(Form, Campo)
{
	var f = Form;
	var Data = Campo.value;
	var dati = new Array(3);
	var Buona = true;
	var tmp0, tmp, tmp2;
	
	//Sostituisco eventuali - con /
	Data = Data.replace("-", "/");
	Data = Data.replace("-", "/");
	
	//Sostituisco eventuali \ con /
	Data = Data.replace("\\", "/");
	
	//Effettuo il trim della stringa
	Data = TrimJS(Data);
	
	//Sostituisco eventuali spazi con /
	Data = Data.replace(" ", "/");
	
	//Se la stringa è vuota non fa nulla
	if (Data == "")
		return;
	
	//Splitto in base al carattere /
	dati = Data.split("/");
	
	//Se non ci sono tre pezzi il controllo fallisce
	if (dati.length != 3)
		Buona = false;
	else	
	{
		//Controllo le lunghezze minime e massime delle stringhe
		//Giorno 1 o 2 caratteri
		if (dati[0].length <= 0 || dati[0].length > 2)
			Buona = false;
		//Mese 1 o 2 caratteri
		if (dati[1].length <= 0 || dati[1].length > 2)
			Buona = false;
		//Anno 1, 2 o 4 caratteri
		if (dati[2].length <= 0 || dati[2].length > 4 || dati[2].length == 3)
			Buona = false;
	}
	
	//Se finora è tutto OK
	if (Buona == true)
	{
		//Rimuovo eventuali zeri iniziali
		if (dati[0].charAt(0) == "0")
			dati[0] = dati[0].charAt(1);
		
		if (dati[1].charAt(0) == "0")
			dati[1] = dati[1].charAt(1);
	}
		
	//Se finora è tutto OK
	if (Buona == true)
	{
		//Anno
		//Se non è un valore numerico
		if ( isNaN(dati[2]) ) 
			Buona = false;	//Fallisce
		else
		{
			//Lo converto in numero
			tmp0 = parseInt(dati[2]);
			
			//Se è negativo o maggiore di 2300
			if ( (tmp0<1) || (tmp0>2300) )
				Buona = false;	//Fallisce
			else
			{
				//Se è compreso tra 1 e 99
				if ( (tmp0<100) )
					//Se è compreso tra 1 e 85 gli viene anteposto il 2000
					if (tmp0<85)
					{
						if (dati[2].length == 2)
							dati[2] = '20' + dati[2];
						else
							if (dati[2].length == 1)
								dati[2] = '200' + dati[2];
							else
								if (dati[2].length == 3)
									dati[2] = '2' + dati[2];
					}	
					//Se è compreso tra 86 e 99 gli viene anteposto il 1900
					else
					{
						if (dati[2].length == 2)
							dati[2] = '19' + dati[2];
						else
							if (dati[2].length == 1)
								dati[2] = '199' + dati[2];
							else
								if (dati[2].length == 3)
									dati[2] = '1' + dati[2];
					}
				else
					//Se è compreso tra 100 e 999 
					if ( (tmp<1000) )
						Buona = false;	//Fallisce
			}
		}
	}
	
	//Se finora è tutto OK
	if (Buona == true)
	{
		//Mese
		//Se non è un valore numerico
		if ( isNaN(dati[1]) ) 
			Buona = false;	//Fallisce
		else
		{
			//Lo converto in numero
			tmp = parseInt(dati[1]);
			
			//Se è negativo o maggiore di 12
			if ( (tmp<1) || (tmp>12) )
				Buona = false;	//Fallisce
			else
				//Se è ad una cifra antepomgo lo 0
				if ( (tmp<10) && (dati[1].length == 1) )
					dati[1] = '0' + dati[1];
		}
	}
	
	//Se finora è tutto OK
	if (Buona == true)
	{
		//Giorno
		//Se non è un valore numerico
		if ( isNaN(dati[0]) )
			Buona = false;	//Fallisce
		else
		{
			//Lo converto in numero
			tmp2 = parseInt(dati[0]);
			
			//Se è negativo o maggiore di 31
			if ( (tmp2<1) || (tmp2>31) )
				Buona = false;	//Fallisce
			else
			{
				//Se è maggiore di 28, quindi se è 29, 30 o 31
				if (tmp2>28)
				{
					//Se siamo in un mese da 30 
					if ( (tmp == 4) || (tmp == 6) || (tmp == 9) || (tmp == 11) )
					{
						//Ed il giorno è 31
						if (tmp2 > 30)
							Buona = false;	//Fallisce
					}
					else
						//Se invece siamo a febbraio
						if (tmp == 2)
						{
							//Se il giorno è 30 o 31
							if (tmp2 > 29)
								Buona = false;	//Fallisce
							else
								//Se il giorno è 29
								//Se l'anno non è bisestile
								if ( (tmp0%4 != 0) || (tmp0%4 != 0) )
									Buona = false;	//Fallisce
						}
				}
				
			}
			
			//Se è ad una cifra antepomgo lo 0
			if ( (tmp2<10) && (dati[0].length == 1) )
				dati[0] = '0' + dati[0];
		}
	}
	
	if (Buona == false)
	{
		var arr;
		arr = location.pathname.split("/");
		
		//Se è un popup uso un semplice alert
		if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
			alert("Incorrect date format.")
		else
			msgboxJS("", "Incorrect date format.", _OKONLY, _CRITICAL); 
		
		Campo.select();
		Campo.focus();
	}
	else
		Campo.value = dati[0] + "/" + dati[1] + "/" + dati[2];
}

function VerificaAnno(Campo)
{
	if (Campo.value != "")
	{
		var a = Campo.value;
		
		if (isNaN(a)) 
		{
			var arr;
			arr = location.pathname.split("/");
			
			//Se è un popup uso un semplice alert
			if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
				alert("Incorrect year.")
			else
				msgboxJS("", "Incorrect year.", _OKONLY, _CRITICAL); 
			
			Campo.select();
			Campo.focus();
			return;
		}
		else
			if ( (a<1) || (a>2200) )
			{
				var arr;
				arr = location.pathname.split("/");
				
				//Se è un popup uso un semplice alert
				if (arr[arr.length-1].substr(0, 4).toUpperCase() == "POP_")
					alert("Incorrect year.")
				else
					msgboxJS("", "Incorrect year.", _OKONLY, _CRITICAL); 
				
				Campo.select();
				Campo.focus();
				return;
			}
			else
			{
				if ( (a<100) )
					if (a<85)
					{
						if (Campo.value.length == 2)
							Campo.value = '20' + a;
						else
							if (Campo.value.length == 1)
								Campo.value = '200' + a;
							else
								if (Campo.value.length == 3)
									Campo.value = '2' + a;
					}	
					else
					{
						if (Campo.value.length == 2)
							Campo.value = '19' + a;
						else
							if (Campo.value.length == 1)
								Campo.value = '199' + a;
							else
								if (Campo.value.length == 3)
									Campo.value = '1' + a;
					}	
			}
	}
}


//Ritorna:	-1 se la prima data è successiva alla seconda
//			 0 se le due date sono uguali
//			 1 se la seconda data è successiva alla prima
//			-2 in caso di errore su una delle date
function ComparaDateJS(Data1, Data2)
{
	var dati1 = new Array(3);
	var dati2 = new Array(3);
	var tmp0, tmp, tmp2;
	var tmp0a, tmpa, tmp2a;
	
	//Sostituisco eventuali - con /
	Data1 = Data1.replace("-", "/");
	Data1 = Data1.replace("-", "/");
	Data2 = Data2.replace("-", "/");
	Data2 = Data2.replace("-", "/");
	
	//Sostituisco eventuali \ con /
	Data1 = Data1.replace("\\", "/");
	Data2 = Data2.replace("\\", "/");
	
	//Effettuo il trim della stringa
	Data1 = TrimJS(Data1);
	Data2 = TrimJS(Data2);
	
	//Sostituisco eventuali spazi con /
	Data1 = Data1.replace(" ", "/");
	Data2 = Data2.replace(" ", "/");
	
	//Se la stringa è vuota non fa nulla
	if (Data1 == "" || Data2 == "")
		return -2;
	
	//Splitto in base al carattere /
	dati1 = Data1.split("/");
	dati2 = Data2.split("/");
	
	//Se non ci sono tre pezzi il controllo fallisce
	if (dati1.length != 3 || dati2.length != 3)
		return -2;
	else
	{
		//Se l'anno della prima è minore della seconda ritorno 1
		if (dati1[2] < dati2[2])
			return 1;
		
		//Se l'anno della prima è maggiore della seconda ritorno -1
		if (dati1[2] > dati2[2])
			return -1;
		
		//Se sono qui gli anni sono uguali
		
		//Se il mese della prima è minore della seconda ritorno 1
		if (dati1[1] < dati2[1])
			return 1;
		
		//Se il mese della prima è maggiore della seconda ritorno -1
		if (dati1[1] > dati2[1])
			return -1;
		
		//Se sono qui anche i mesi sono uguali
		
		//Se il mese della prima è minore della seconda ritorno 1
		if (dati1[0] < dati2[0])
			return 1;
		
		//Se il mese della prima è maggiore della seconda ritorno -1
		if (dati1[0] > dati2[0])
			return -1;
		
		//Allora sono uguali
		return 0;
	}
}


function SettaCampi(scelta)
{
	if (scelta == '0')
	{
		for(i=0; i<document.all.length; i++)
		{
			if (document.all(i).tagName == "INPUT")
			{
				if (document.all(i).type == "checkbox" || document.all(i).type == "radio")
				{
					document.all(i).disabled = true;
					}
				else
					document.all(i).readOnly = true;
			}
			else 
				if (document.all(i).tagName == "TEXTAREA")
					document.all(i).readOnly = true;
				else
					if (document.all(i).tagName == "SELECT")
						document.all(i).disabled = true;
		}
	}
}