//flag errore in pagina
var flgErrPag=false;
var cmpErr='';


function controllaLung(nomeForm, nomeCampo, lungMax)
{
	eval("str = document.forms['"+nomeForm+"']."+nomeCampo+".value;");
	if ( str.length > (lungMax-1) )
	{
		eval("document.forms['"+nomeForm+"']."+nomeCampo+".value = '"+str.substring(0,(lungMax-1))+"';");
		alert ("Massimo "+lungMax+" caratteri !!");
	}
}

function URLEncode(stringa)
{
	// The Javascript escape and unescape functions do not correspond
	// with what browsers actually do...
	var SAFECHARS = "0123456789" +					// Numeric
					"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +	// Alphabetic
					"abcdefghijklmnopqrstuvwxyz" +
					"-_.!~*'()";					// RFC2396 Mark characters
	var HEX = "0123456789ABCDEF";

	var plaintext = stringa;
	var encoded = "";
	for (var i = 0; i < plaintext.length; i++ ) {
		var ch = plaintext.charAt(i);
	    if (ch == " ") {
		    encoded += "+";				// x-www-urlencoded, rather than %20
		} else if (SAFECHARS.indexOf(ch) != -1) {
		    encoded += ch;
		} else {
		    var charCode = ch.charCodeAt(0);
			if (charCode > 255) {
			    alert( "Unicode Character '" 
                        + ch 
                        + "' cannot be encoded using standard URL encoding.\n" +
				          "(URL encoding only supports 8-bit characters.)\n" +
						  "A space (+) will be substituted." );
				encoded += "+";
			} else {
				encoded += "%";
				encoded += HEX.charAt((charCode >> 4) & 0xF);
				encoded += HEX.charAt(charCode & 0xF);
			}
		}
	} // for

//	document.URLForm.F2.value = encoded;
	return encoded;
};


function URLDecode(stringa)
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   var encoded = stringa;
   var plaintext = "";
   var i = 0;
   while (i < (encoded.length)) {
       var ch = encoded.charAt(i);
	   if (ch == "+") {
	       plaintext += " ";
		   i++;
	   } else if (ch == "%" && encoded.charAt(i+1) != "%") {
	       plaintext += unescape( encoded.substr(i,3) );
		   i += 3;
		} else {
		   plaintext += ch;
		   i++;
		}
	} // while
	if (i < encoded.length) {
	    plaintext += encoded.substr(i,encoded.length-i);
	}
   return unescape(plaintext);
}

function vlength(campo)
{
	if (flgErrPag && (cmpErr!=campo))
	{
		return;
	}
	var str_len=eval(campo+'.value.length');
	var max_len=eval(campo+'.maxLength');
	if (str_len>max_len)
	{
		var str_text=eval(campo+'.value');
		campo.value=str_text.substring(0,max_len);
		
		cmpErr=campo;
		flgErrPag=true;
		alert ('Numero massimo di caratteri ' + max_len + ' raggiunto!');
		eval(campo+'.focus();');
	}
	else
	{
		flgErrPag=false;
		cmpErr='';
		return '';
	}
}

function vemail(campo)
{
	if (flgErrPag && (cmpErr!=campo))
	{
		return;
	}
	var valore=eval(campo+'.value');
	if(valore == "")
	{
		flgErrPag=false;
		cmpErr='';
		return '';
	}
	var_email = trim(valore);
	if (var_email.length != valore.length)
	{
		cmpErr=campo;
		flgErrPag=true;
		alert('Lo spazio non è un carattere valido');
		eval(campo+'.focus();');
	}
	else
	{
		//verifico validità indirizzo
		pos = var_email.indexOf("@");
		if (pos > 0)
		{
			if(var_email.substr(pos+1).indexOf(".") < 0)
			{
				cmpErr=campo;
				flgErrPag=true;
				alert ('Indirizzo E-mail non corretto!!');
				eval(campo+'.focus();');
			}
			else
			{
				flgErrPag=false;
				cmpErr='';
			}
		}
		else
		{
			cmpErr=campo;
			flgErrPag=true;		
			alert ('Indirizzo E-mail non corretto!!');
			eval(campo+'.focus();');
		}
	}
}

function vCellIta(campo)
{
	//esce subito se c'è già un'errore in pagina
	if (flgErrPag && (cmpErr!=campo))
		return;	
	
	var valore = eval(campo+'.value');
	var pattern = "([1-9]{1})([1-9]{1})([0-9]{1})([-]{1})([0-9]{5,7})";  //Creo il pattern di ricerca
	
	if (valore.search(pattern) == -1 && valore != '') 
	{
		flgErrPag=true;
		cmpErr=campo;
		eval(campo+".select()");
		alert("Recapito telefonico in formato non corretto!");
	} 
	else 
	{
    	cmpErr='';
		flgErrPag=false;
  	}
}

function vTelIta(campo)
{
	//esce subito se c'è già un'errore in pagina
	if (flgErrPag && (cmpErr!=campo))
		return;	
	
	var valore = eval(campo+'.value');
	var pattern = "([0]{1})([0-9]{1,5})([-]{1})([0-9]{5,7})";  //Creo il pattern di ricerca
	
	if (valore.search(pattern) == -1 && valore != '') 
	{
		flgErrPag=true;
		cmpErr=campo;
		eval(campo+".select()");
		alert("Recapito telefonico in formato non corretto!");
	} 
	else 
	{
    	cmpErr='';
		flgErrPag=false;
  	}
}

function trim(stringa)
{
	//tolgo tutti gli spazi
	var re;
	re = new RegExp(" ","g");  //Crea l'oggetto dell'espressione di ricerca.
	return stringa.replace(re, "");
}

function rap(stringa)
{
	return stringa.replace(/'/g,"´"); 
}

function Zoom(nomeImg,inout) 
{

eval('larg = document.'+nomeImg+'.width');
if (inout=='+')
	// nuova dimensione = 5/4 precedente = precedente + 1/4 precedente
	eval('document.'+nomeImg+'.width = larg '+inout+' (larg * 0.25)');
else
	// nuova dimensione = 4/5 precedente = precedente - 1/5 precedente
	eval('document.'+nomeImg+'.width = larg '+inout+' (larg * 0.2)');
}	
function vintr(campo,range)
	{
	
	//esce subito se c'è già un'errore in pagina
	if (flgErrPag && (cmpErr!=campo))
		return;	
	var valore=eval(campo+'.value');
	if (valore.search('[^0-9]')!=-1 && valore != "")
		{
		cmpErr=campo;
		flgErrPag=true;
		eval(campo+".select()");
		alert("Valore non valido !");
		}
	else
		{
		var lb=0,ub=0;
		lb=parseInt(range.substr(0,range.indexOf(":")));
		ub=parseInt(range.substr(range.indexOf(":")+1));
		if ((parseInt(valore) < lb) || (parseInt(valore) > ub))
			{
			cmpErr=campo;
			flgErrPag=true;
			eval(campo+".select()");
			alert("Valore non valido !");
			}
		else
			{
			eval(campo+".value='"+valore+"'");		
			cmpErr='';
			flgErrPag=false;
			}	
		}	
	}

function vdata(s)
	{
	//esce subito se c'è un altro errore in pagina
	if (flgErrPag && (cmpErr!=s))
		{
		return;
		}
	var ss=eval(s+".value");
	var dataobj=data(ss);
	if (!dataobj.b)
		{
		flgErrPag=true;
		cmpErr=s;
		eval(s+".select()");
		alert("Data non valida!");
		return dataobj;
		}
	else
		{
		cmpErr='';
		flgErrPag=false;
		eval(s+".value='"+dataobj.dita+"'");
		return dataobj;	
		}
	}		

/*****************************************
	Controllo della Partita I.V.A.
	Linguaggio: JavaScript
******************************************/

function vpiva(campo)
{
	var s;
	if (flgErrPag && (cmpErr!=campo))
	{
		return;
	}
	
	pi = eval(campo+".value");
	
	if( pi == '' )
	{
		flgErrPag=false;
		cmpErr='';
		return '';
	}
	if( pi.length != 11 )
	{
		cmpErr=campo;
		flgErrPag=true;
		alert("La lunghezza della partita IVA non è\n" +
			"corretta: la partita IVA dovrebbe essere lunga\n" +
			"esattamente 11 caratteri.\n");
		eval(campo+".select()");
		return;
	}
	validi = "0123456789";
	for( i = 0; i < 11; i++ ){
		if( validi.indexOf( pi.charAt(i) ) == -1 )
		{
			cmpErr=campo;
			flgErrPag=true;
			alert("La partita IVA contiene un carattere non valido `" +
				pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n");
			eval(campo+".select()");
			return;
		}
	}
	s = 0;
	for( i = 0; i <= 9; i += 2 )
		s += pi.charCodeAt(i) - '0'.charCodeAt(0);
	for( i = 1; i <= 9; i += 2 ){
		c = 2*( pi.charCodeAt(i) - '0'.charCodeAt(0) );
		if( c > 9 )  c = c - 9;
		s += c;
	}
	if( ( 10 - s%10 )%10 != pi.charCodeAt(10) - '0'.charCodeAt(0) )
	{	
		cmpErr=campo;
		flgErrPag=true;
		alert("La partita IVA non è valida:\n" +
			"il codice di controllo non corrisponde.\n");
		eval(campo+".select()");
		return;
	}
	cmpErr='';
	flgErrPag=false;
	return 'ok';
}


/**************************************
	Controllo del Codice Fiscale
	Linguaggio: JavaScript
***************************************/

function vcf(campo)
{
	
	if (flgErrPag && (cmpErr!=campo))
	{
		return;
	}
	
	var validi, i, s, set1, set2, setpari, setdisp;
	cf = eval(campo+".value");
	if( cf == '' )  
	{
		flgErrPag=false;
		cmpErr='';
		return '';
	}
	cf = cf.toUpperCase();
	if( cf.length == 11 )
	{
		var a = vpiva(campo);
		return a;
	}
	else
	{
		if( cf.length != 16 )
		{
			cmpErr=campo;
			flgErrPag=true;
			alert("La lunghezza del codice fiscale non è\n"
			+"corretta: il codice fiscale dovrebbe essere lungo\n"
			+"esattamente 16 caratteri.\n");
			eval(campo+".select()");
			return;
		}
		validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		for( i = 0; i < 16; i++ ){
			if( validi.indexOf( cf.charAt(i) ) == -1 )
			{
				cmpErr=campo;
				flgErrPag=true;
				alert("Il codice fiscale contiene un carattere non valido `" +
					cf.charAt(i) +
					"'.\nI caratteri validi sono le lettere e le cifre.\n");
				eval(campo+".select()");
				return;
			}
		}
		set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
		setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
		setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
		s = 0;
		for( i = 1; i <= 13; i += 2 )
			s += setpari.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
		for( i = 0; i <= 14; i += 2 )
			s += setdisp.indexOf( set2.charAt( set1.indexOf( cf.charAt(i) )));
		if( s%26 != cf.charCodeAt(15)-'A'.charCodeAt(0) )
		{
			cmpErr=campo;
			flgErrPag=true;
			alert("Il codice fiscale non è corretto:\n"+
				"il codice di controllo non corrisponde.\n");
			eval(campo+".select()");
			return;
		}
		cmpErr='';
		flgErrPag=false;
		return 'ok';
	}
}

ndec=4;

function objToN()
	{
	objToN.b;  	
	objToN.n;	
	objToN.sn;	
	}
	
function to_number_old(snum, nd)
/*
accetta numeri in formato 100'000,29 o altri senza segno di migliaia
restituisce un oggetto 	.b = booleano, true se e' numero
						.n = float, numero convertito
						.sn=stringa, stringa in formato nd decimali e migliaia con '
*/
	{
	if (snum=="")
		{
		//esce subito senza errori se snum=""
		objToN.b=true;
		objToN.n="";
		objToN.sn="";
		return objToN;
		}
	//tolgo ('.,) e controllo se e' numero
	snum=snum.toString();
	ssnum=snum.replace(/'|,|\+|\./g,"");	
	//controlla sep decimali ripetuto
	if (snum.indexOf(",")!=snum.lastIndexOf(",")) ssnum="";
	//controlla se negativo
	var segno=1;
	if (snum.indexOf("-")==0) 
		{
		segno=-1;
		ssnum=ssnum.substr(1);
		}
	//cerca altri caratteri alfanumerici
	if (ssnum.match("[^0-9]")!=null) ssnum="";

	
	num=parseInt(ssnum);
	if (isNaN(num))
		{
		//stringa o valore nullo
		objToN.b=false;
		objToN.sn=ssnum;
		objToN.n=null;
		}
	else
		{
		ssnum=snum.replace(/'|\.|\+/g,"");
		ssnum=ssnum.replace(/,/g,".");
		var ssegno="";
		if (snum.indexOf("-")==0) 
			{
			ssnum=ssnum.substr(1);
			ssegno="-";
			}
		num=Math.round(parseFloat(ssnum)*Math.pow(10,nd));
		num=num/Math.pow(10,nd);
		objToN.n=num*segno;
				
		//in input: . separatore dei decimali
		ssnum=num.toString();
		var n=ssnum.indexOf(".");
		if (n!=-1)
			{
			//decimale
			var sndec=ssnum.substr(n+1);
			sndec=sndec+"0000000000000000000000".substr(0,nd-sndec.length);
			//intero
			var snint=ssnum.substr(0,n);
			}
		else
			{
			//zeri come decimali
			var sndec="0000000000000000000000".substr(0,nd);
			//tutto intero senza punti di migliaia
			var snint=ssnum;
			}	
			
		objToN.b=true;
		
		//segni di migliaia
		var str=snint;
		snint="";
		while (str.length>3)
			{
			snint="."+str.substr(str.length-3)+snint;
			str=str.substr(0,str.length-3);
			}	
		snint=str+snint;
		//aggiunge la virgola
		if (nd!=0)
			{
			sndec=","+sndec;
			}
		objToN.sn=ssegno+snint+sndec;
		}
	
	return objToN;	
	}

function vto_number(s, ndec)
{
	//esce subito se c'è un altro errore in pag
	if (flgErrPag && (cmpErr!=s))
		return;
	var ss=eval(s+".value");
	var nobj=to_number(ss,ndec);
	if (!nobj.b)
		{
		flgErrPag=true;
		cmpErr=s;
		eval(s+".select()");
		alert("Numero non valido!");
		return nobj;
		}
	else
		{
		cmpErr='';
		flgErrPag=false;
		eval(s+".value='"+nobj.sn+"'");
		return nobj;	
		}
}		
function vgen(campo,lista)
	{
	//esce subito se c'è già un'errore in pagina
	if (flgErrPag && (cmpErr!=campo))
		return;
	var valore=eval(campo+'.value.toUpperCase()');
	var flg=false;
	var sep="";
	var str="";
	var i=0;
	var i1=lista.indexOf(';',i);
	while (i1!=-1)
		{
		str+=sep + "'"+lista.substr(i,i1-i)+"'";
		i=i1+1;
		sep=",";
		i1=lista.indexOf(';',i);
		}
	eval("var aVal = new Array ("+str+")")
	for (i=0;i<=aVal.length-1;i++)
		{
		if (valore==aVal[i])
			flg=true;
		}
	if (!flg)
		{
		cmpErr=campo;
		flgErrPag=true;
		eval(campo+".select()");
		alert("Valore non valido !");
		}
	else
		{
		eval(campo+".value='"+valore+"'");		
		cmpErr='';
		flgErrPag=false;
		}
	}
	
	
function vnull(campo)
	{
	//esce subito se c'è già un'errore in pagina
	if (flgErrPag && (cmpErr!=campo))
		return;	
	var valore=eval(campo+'.value');
	if (valore=='')
		{
		cmpErr=campo;
		flgErrPag=true;
		eval(campo+".select()");
		alert("Campo obbligatorio !");
		}
	else
		{
		eval(campo+".value='"+valore+"'");		
		cmpErr='';
		flgErrPag=false;
		}	
	}

function vnum(campo)
	{
	vto_number(campo,0);
	}	

function vval(campo)
	{
	vto_number(campo,2);
	}	
	
function vval_3(campo)
	{
	vto_number(campo,3);
	}	

function vint(campo)
	{
	//esce subito se c'è già un'errore in pagina
	if (flgErrPag && (cmpErr!=campo))
		return;	
	var valore=eval(campo+'.value');
	if (valore.search('[^0-9]')!=-1 && valore != "")
		{
		cmpErr=campo;
		flgErrPag=true;
		eval(campo+".select()");
		alert("Valore non valido !");
		}
	else
		{
		eval(campo+".value='"+valore+"'");		
		cmpErr='';
		flgErrPag=false;
		}	
	}
		
function isDDL(nomeCampo)
{
	var valProp;
	
	eval("valProp = ''+"+nomeCampo+".selectedIndex;");
	if(valProp != "undefined")
	{
		return true;
	}
	else
	{
		return false;
	}
}


function obbligatori()
{
	if (fObb)
	{
		var isEditor;
		var oEditor;
		for (i=0;i<=aCampi.length-1;i++)
		{
			isEditor=false;
			if (aCampi[i].search("mem_")!=-1)
			{
				try
				{
					oEditor = FCKeditorAPI.GetInstance(aCampi[i]);
				}
				catch(e)
				{
					isEditor=false;
				}
				
				if (oEditor != null)
				{
					isEditor=true;
				}
				
				if (isEditor)
				{
					vcampo=oEditor.GetXHTML(false);
				}
			}
			
			if (!isEditor)
			{
				eval("vcampo=document.forms[0]."+aCampi[i]+".value");
			}
			
			if (vcampo=="")
			{
				if(isDDL("document.forms[0]."+aCampi[i]))
				{
					var disabled = '';
					eval("disabled=document.forms[0]."+aCampi[i]+".disabled");
					if(disabled == '')
					{
						eval("document.forms[0]."+aCampi[i]+".focus()");
					}
				}
				else
				{
					if (!isEditor)
					{
						eval("document.forms[0]."+aCampi[i]+".select()");
					}
				}
				alert("Campo '"+aNomiC[i]+"' richiesto!");
				return false;
			}
		}
	}
	return true;
}


function su(imgName,path)
	{
	fileName = imgName.substring(0,(imgName.length-2));
	//alert(fileName);
	eval(imgName + "_0= new Image()"); 
	eval(imgName + "_0.src ='"+path+"img/"+fileName+"_0.gif'"); 
	img1 = eval(imgName + "_0.src ");
	//alert (img1);
	document [imgName].src = img1;
	}



function giu(imgName,path)
	{
	fileName = imgName.substring(0,(imgName.length-2));
	//alert(fileName);
	eval(imgName + "_1= new Image()"); 
	eval(imgName + "_1.src ='"+path+"img/"+fileName+"_1.gif'");
	img2 = eval(imgName + "_1.src ");
	//alert (img2+':'+imgName);
	document [imgName].src = img2;
	}

function invia_ctrl_upload()
{		
	if (obbligatori())
	{
		theFeats = "height=120,width=500,location=no,menubar=no,resizable=no,scrollbars=no,status=no,toolbar=no";
		theUniqueID = (new Date()).getTime() % 1000000000;
		window.open("/std/_sistema/progressbar.asp?ID=" + theUniqueID, theUniqueID, theFeats);
		document.forms[0].action = document.forms[0].action+"&ID=" + theUniqueID;
		document.forms[0].submit();
		return false;
	}
}
function invia_ctrl()
	{
	if (obbligatori())
		document.forms[0].submit();
		return false;
	}
function invia()
	{
	document.forms[0].submit();
	return false;
	}

function resetta()
	{
	document.forms[0].reset();
	return false;
	}

// controlla la partita iva restituisce booleano
function cnt_piva(part_iva)
	{
	var somma_pari; 
	var somma_disp; 
	var i;
	var comodo;    
	var cifra;    
	var tmp;
	var tmp3;
	var tmp5;

	var somma_pari = 0;
	var somma_disp = 0;
	var cnt_piva = true;
	tmp4=isNaN(part_iva);
	
	if ((part_iva==null) || (part_iva == "") || tmp4==null 
		|| (part_iva == "0000000000")
		|| (part_iva == "00000000000"))
		{
		cnt_piva = false;
		}
	
	for(i=2;i<=10;i=i+2)
		{
		tmp3=part_iva.substr( i-1, 1);
	    cifra=parseFloat(tmp3);
	    comodo = cifra * 2;
	    if (comodo > 8) 
			{
			comodo = comodo - 9;
			}
		    somma_pari = somma_pari + comodo;
		}
	
	for (i=1;i<=9;i=i+2)
		{
	    cifra = parseFloat(part_iva.substr(i-1, 1));
	    somma_disp = somma_disp + cifra;
		}
	
	comodo = somma_pari + somma_disp;
	tmp=comodo.toString(10);
	comodo = 10 - parseFloat(tmp.substr(tmp.length-1, 1));
	tmp=part_iva.toString(10);
	tmp5=comodo.toString(10);
	if (tmp5.substr(tmp5.length-1, 1) != tmp.substr(tmp.length-1, 1))
		{
		cnt_piva = false;
		}
	return cnt_piva;
}

function link(pagina)
{
var att="&";
if (pagina.search(/\?/)==-1)
	att="?";
//alert(pagina+att+"nn="+(Math.random().toString()).substr(2));
parent.frames['corpo'].location.href=pagina+att+"nn="+(Math.random().toString()).substr(2);
}

function objData()
	{
	objData.b; 
	objData.ding;
	objData.dita;
	}	
	
function data(s) 	
/*
accetta una stringa e la converte in data
restituisce un oggetto 	.b  	booleano: true data valida, false data non valida
						.ding  	stringa: data in formato inglese #mm/gg/aaaa#
						.dita   stringa: data in formato italiano gg/mm/aaaa
se data	vuota 			.ding	stringa: ""
						.dita	stringa: ""					
*/
	{
	var ngiorni = new Array(31,29,31,30,31,30,31,31,30,31,30,31)
	var b=true;
	//aggiunto il replace perchè le stringhe
	//con il punto o la virgola venivano accettate
	//in quanto numeri validi.
	//by Stefano Peron
	s=s.replace(/\./g,"");
	s=s.replace(/,/g,"");
	if (s=="")
		{
		objData.b=b;
		objData.ding="";
		objData.dita="";		
		return objData;		
		}
	if (s.indexOf("/")==-1)	
		{
		var giorno=s.substr(0,2);
		var mese=s.substr(2,2);
		var anno=s.substr(4);
		}
	else
		{
		var n=s.indexOf("/");
		var giorno=s.substr(0,n);
		s=s.substr(n+1);
		n=s.indexOf("/");
		var mese=s.substr(0,n);
		var anno=s.substr(n+1);
		}
	
	//modificato per evitare che numeri a una o tre cifre
	//vengano accettati. Precedentemente solo le minori
	//di due o maggiori di quattro venivano rifiutate.
	//by Stefano Peron
	if (anno.length !=2 && anno.length !=4)
		b=false;
	else	
		{
		var anno_n=parseFloat(anno);
		if (isNaN(anno_n))
			b=false;
		else
			{
			if (70 <= anno_n && anno_n <= 99)
				anno=1900+anno_n;
			else
				{
				if (anno.length==2)
				  anno=2000+anno_n;
				}  
			anno_n=parseFloat(anno);
			}
		}
		
		
	var mese_n=parseFloat(mese);
	if (isNaN(mese_n))
		b=false;
	else
		{
		if (mese_n < 1 || mese_n > 12)
			b=false;
		else	
			{
			if (mese_n<10)
				mese_n="0"+mese_n;
			var giorno_n=parseFloat(giorno);
			if (isNaN(giorno_n))
				b=false;
			else
				{
				var anno_n=parseFloat(anno)
				var max_gg = max_mese(mese_n,anno_n);
				if (giorno_n < 1 || giorno_n > max_gg)
					b=false;
				if (giorno_n < 10)
					giorno_n="0"+giorno_n;	
				}	
			}
		}
	
	objData.b=b;
	objData.ding=mese_n+"/"+giorno_n+"/"+anno_n;
	objData.dita=giorno_n+"/"+mese_n+"/"+anno_n;		
	return objData;
	}
	

function max_mese(mese_n,anno_n)
	{
	if  (mese_n==1 || mese_n==3 || mese_n==5 || mese_n==7 || mese_n==8 || mese_n==10 || mese_n==12)
		{
		return (31);
		}//then
	if  (mese_n==4 || mese_n==6 || mese_n==9 || mese_n==11) 
		{ 
		return (30);
		}//then
	if  (mese_n==2) 
		{
		if  ((anno_n%100) == 0)
			if  ((anno_n%100) == 0)
				{
				return (29);
				}//then2
			else
				{
				return (28);
				}//else2
		else
			if  ((anno_n%4) == 0)
				{
				return (29);
				}//then3
			else	 
				{
				return (28);
				}//else3
		}//then1
	else
		return (null);
	}//max_mese	


ndec=4;

function objToN()
	{
	objToN.b;  	
	objToN.n;	
	objToN.sn;	
	}
	
function to_number(snum, nd)
/*
accetta numeri in formato 100'000,29 o altri senza segno di migliaia
restituisce un oggetto 	.b = booleano, true se e' numero
						.n = float, numero convertito
						.sn=stringa, stringa in formato nd decimali e migliaia con '
*/
	{
	if (snum=="")
		{
		//esce subito senza errori se snum=""
		objToN.b=true;
		objToN.n="";
		objToN.sn="";
		return objToN;
		}
	//tolgo ('.,) e controllo se e' numero
	snum=snum.toString();
	ssnum=snum.replace(/'|,|\+|\./g,"");	
	//controlla sep decimali ripetuto
	if (snum.indexOf(",")!=snum.lastIndexOf(",")) ssnum="";
	//controlla se negativo
	var segno=1;
	if (snum.indexOf("-")==0) 
		{
		segno=-1;
		ssnum=ssnum.substr(1);
		}
	//cerca altri caratteri alfanumerici
	if (ssnum.match("[^0-9]")!=null) ssnum="";

	
	num=parseInt(ssnum);
	if (isNaN(num))
		{
		//stringa o valore nullo
		objToN.b=false;
		objToN.sn=ssnum;
		objToN.n=null;
		}
	else
		{
		ssnum=snum.replace(/'|\.|\+/g,"");
		ssnum=ssnum.replace(/,/g,".");
		var ssegno="";
		if (snum.indexOf("-")==0) 
			{
			ssnum=ssnum.substr(1);
			ssegno="-";
			}
		num=Math.round(parseFloat(ssnum)*Math.pow(10,nd));
		num=num/Math.pow(10,nd);
		objToN.n=num*segno;
				
		//in input: . separatore dei decimali
		ssnum=num.toString();
		var n=ssnum.indexOf(".");
		if (n!=-1)
			{
			//decimale
			var sndec=ssnum.substr(n+1);
			sndec=sndec+"0000000000000000000000".substr(0,nd-sndec.length);
			//intero
			var snint=ssnum.substr(0,n);
			}
		else
			{
			//zeri come decimali
			var sndec="0000000000000000000000".substr(0,nd);
			//tutto intero senza punti di migliaia
			var snint=ssnum;
			}	
			
		objToN.b=true;
		
		//segni di migliaia
		var str=snint;
		snint="";
		while (str.length>3)
			{
			snint="."+str.substr(str.length-3)+snint;
			str=str.substr(0,str.length-3);
			}	
		snint=str+snint;
		//aggiunge la virgola
		if (nd!=0)
			{
			sndec=","+sndec;
			}
		objToN.sn=ssegno+snint+sndec;
		}
	
	return objToN;	
	}

var n=1;
function vto_number(s, ndec)
{
	//esce subito se c'è già un'errore in pagina
	if (flgErrPag && (cmpErr!=s))
		return;	

	var ss=eval(s+".value");
	var nobj=to_number(ss,ndec);
	if (!nobj.b)
		{
		cmpErr=s;
		flgErrPag=true;
		eval(s+".select()");
		alert("Wrong value: number required!");
		return nobj;
		}
	else
		{
        cmpErr='';
        flgErrPag=false;
		eval(s+".value='"+nobj.sn+"'");
		return nobj;	
		}
}		


function cdbl(s)
	{
	s=s.toString();
	s=s.replace(/\./g,"");
	s=s.replace(/,/g,".");
	return parseFloat(s);
	}


function cdbl_s(n,ndec)
	{
	s=n.toString();
	s=s.replace(/\./g,",");
	return to_number(s,ndec).sn;
	}
	
/* -----------------------------------------------------------------------------------
------- Trim(), LTrim(), RTrim() -----------------------------------------------------
------- 
------- Metodi per l'oggetto String, restituiscono la stringa cui sono applicati
------- senza spazi iniziali e/o finali:
------- 
------- str_a = stringa.Trim();
-------       str_a contiene il valore di stringa senza spazi iniziali ne' finali
------- 
------- str_a = stringa.LTrim();
-------       str_a contiene il valore di stringa senza spazi iniziali
------- 
------- str_a = stringa.RTrim();
-------       str_a contiene il valore di stringa senza spazi finali
------- 
------- N.B.
------- [\s] nelle RegExp contiene sia gli spazi che i ritorni a capo, avanzamento riga
------- tabulatore, tabulatore verticale. Tutti questi caratteri, se presenti, verranno
------- eliminati.
-------                                                                            --- */
function Trim() {
   return this.replace(/\s+$|^\s+/g,"");
   }

function LTrim() {
   return this.replace(/^\s+/,"");
   }

function RTrim() {
   return this.replace(/\s+$/,"");
   }
	
String.prototype.Trim=Trim;	
String.prototype.RTrim=RTrim;	
String.prototype.LTrim=LTrim;	
/* ----------------------------------------------------------------------------------- */	


function focusx()
	{
	if (document.forms[0] != undefined)
		{
		if (document.forms[0].elements[0].type!='hidden')
			document.forms[0].elements[0].focus();
		}

	
	}
