// Giugno 2002 - Raf
// Ultimo aggiornamento: 20/01/2002

/*
ELENCO Funzioni:

	isCorrectNumber(str)	//Controllo se il valore passato è un numero intero.
	Percento(str,metti)		//Mette il percento alla fine di un numero
	SoloNumeri()			//Accetta solo numeri
*/


function isCorrectNumber(str)	//Controllo se il valore passato è un numero intero.
{
	var NumeroVirgole = 0;
	
	if (str!="")
	{
		for(var i = 0; i < str.length; i++)
		{
			var c = str.charCodeAt(i);
	
			//Only number, ","
			if ((c < 48 || c > 57) && c != 44) 
				return false;
	
			if (c == 44)
			{
				if (++NumeroVirgole > 1)
					return false; 
			}	
		}  
		return true;
	}
	else
		return false;
}


//Mette il percento alla fine di un numero
//USO: onchange="this.value=Percento(this.value,1)"
function Percento(str,metti)
{
	if (metti==1)
	{
		if (isCorrectNumber(str))
		{		
			if (String(str).indexOf("%") == -1)
				return str + " %";
			else
				return str;
		}
		else
			return str;
	}
	else		
	{
		if (String(str).indexOf("%") == -1)
			return str;
		else
		{
			if (str.charCodeAt(str.length-1)==37)
				if(str.charCodeAt(str.length-2)==32)
					return str.substring(0,str.length-2);
				else
					return str.substring(0,str.length-1);
			else
				return str.substring(0,String(str).indexOf("%")) + str.substring(String(str).indexOf("%")+1,str.length);
		}
	}
}


//Accetta solo numeri
//USO: onkeypress="SoloNumeri()"
function SoloNumeri()
{
	if (event.keyCode >= 48 && event.keyCode <= 57) 
		event.returnValue = true;
	else
		event.returnValue = false; 
}


//Accetta solo numeri, punti e virgole
//USO: onkeypress="bloccaCar(this.value)"
function bloccaCar(e) {
	var keyChar = e.which;
	if ((keyChar >= 48 && keyChar <= 57) || (keyChar == 46)) 
		return true;
	else if (keyChar == 44)
		return true;
	else
		return false; }


//USO: onkeypress="TuttoMaiuscolo();"
function TuttoMaiuscolo()
{ 
	if ((event.keyCode>=97)&&(event.keyCode<=122)) event.keyCode -= 32; 
} 


//USO: onkeypress="PrimaMaiuscola(this.value);"
function PrimaMaiuscola(str) 
{ 
	if (str.length==0)
	{
		if ((event.keyCode>=97)&&(event.keyCode<=122)) event.keyCode -= 32; 
	}
	else
	{
		if(str.charCodeAt(str.length-1)==32)
			{ if ((event.keyCode>=97)&&(event.keyCode<=122)) event.keyCode -= 32; }
		else
			{ if ((event.keyCode>=65)&&(event.keyCode<=90)) event.keyCode += 32; }
	}
} 


function Sostituisci(stringa,origine,destinazione)
{
/*
ESEMPI D'USO: 
onkeypress="this.value=Sostituisci(this.value,'.',',');"
onchange="this.value=Sostituisci(this.value,'.',',');"
<script>
document.ff.importo.value=Sostituisci(document.ff.importo.value,".",",");
</script>
*/
   	var str=""+stringa; strOut="";
	if (str.indexOf(origine) > 0)
	{		
		for (i=0; i<=str.length; i++)
		{
			if (i == str.indexOf(origine)+1)
				strOut = strOut + destinazione;
			else 
				strOut = strOut + str.substring(i-1,i);
		}
		return strOut;
	}
	else			
		return str;
}	

//USO: onkeypress="KeyPressOra(this.value)"
function KeyPressOra(Par)
	{
    	//Sostituisce il punto con i due punti
    	if (event.keyCode == 46 )
      		event.keyCode = 58

	if (event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 58)
		if (event.keyCode == 58)
			{
			// non più di un ":"
			if ((String(Par).indexOf(":") == -1))
				event.returnValue = true;
			else
				event.returnValue = false;
			}
		else
			{		
			event.returnValue = true;
			}
	else
		{
		event.returnValue = false;
		}
	}

//USO: onkeypress="KeyPressData(this.value)"
function KeyPressData(str)
{
	if (event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 47 )
	{
		// numerico o slash
		event.returnValue = true;
	}
	else
	{
		// alfanumerico
		event.returnValue = false;
	}
}

//USO: onkeypress="KeyPressData2(this)"
function KeyPressData2(str)
{
	var validi; validi = "0123456789";
	
	switch (str.value.length)
 	{ 
		case 0 : validi = "0123"; break;
		case 1 : 
			switch (str.value.charCodeAt(0)-48)
			{
				case 0: validi = "123456789";	break;
				case 1: validi = "0123456789";	break;
				case 2: validi = "0123456789";	break;
				case 3: validi = "01"; 		break;
			}
			break;
		case 2 : validi = "01"; break;
		case 3 : validi = "01"; break;
		case 4 : 
			switch (str.value.charCodeAt(3)-48)
			{
				case 0: validi = "123456789"; break;
				case 1: validi = "012"; break;
			}
			break;
		case 5 : validi = "12"; break;
		case 6 : validi = "12"; break;
	} 

	if (validi.indexOf(event.keyCode-48) != -1)
	{
		// valido	
		event.returnValue = true;
	}
	else
	{
		// non valido
		event.returnValue = false;
	}

	//Aggiungi i separatori (slash)
	if (str.value.length==2 || str.value.length==5)  {str.value=str.value+"/";}
}

//USO: onkeypress="KeyPressNonNumerico(this.value)"
function KeyPressNonNumerico(Par)
	{
	if (event.keyCode >= 48 && event.keyCode <= 57)
		{
		// numerico		
		event.returnValue = true;
		}
	else
		{
		// alfanumerico
		event.returnValue = false;
		}
	}


//USO: onkeypress="KeyPressImporto(this.value,true)"  [true se si accettano i decimali]
function KeyPressImporto(Par, bval)
	{
    	//Sostituisce il punto con la virgola
    	if (event.keyCode == 46 )
      		event.keyCode = 44

	if (event.keyCode >= 48 && event.keyCode <= 57)
		{
		// numerico		
		event.returnValue = true;
		}
	else if (event.keyCode == 44)
		{
		// virgola: se non c'è la faccio mettere
		if ((String(Par).indexOf(",") == -1) && (bval==true))
			event.returnValue = true;
		else
			event.returnValue = false;
		}
	else if (event.keyCode == 45)
		{
		// non più di un meno
		if ((String(Par).indexOf("-") == -1) && (bval==true))
			event.returnValue = true;
		else
			event.returnValue = false;
		}
	else
		{
		// alfanumerico
		event.returnValue = false;
		}
	}

// Campi di importo in inglese (punto come separatore decimale anziché la virgola)
// USO:  onkeypress="valutaIng(this.value)"
function valutaIng(s)
{
    
    //Sostituisce la virgola con il punto
    if (event.keyCode == 44 )
      event.keyCode = 46
    
    //Solo numeri e punto
    if (event.keyCode < 48 || event.keyCode > 57)
      event.returnValue = false;

    //Non più di un punto "." 
    if ((event.keyCode == 46) && (s.indexOf(".") != -1) ) {
      event.returnValue = false;
      return
    }

    //Non più di un meno "-" 
    if ((event.keyCode == 45) && (s.indexOf("-") != -1) ) {
      event.returnValue = false;
      return
    }

}

// Campi di testo (impedisce l'inserimento di apici e virgolette sostituendoli col carattere `)
// USO:  onkeypress="replaceApici(this.value)"
function replaceApici(s)
{
    if (event.keyCode == 34 || event.keyCode == 39)
	{
		event.keyCode = 96
		return
	}

}


// USO:  onkeypress="valutaIng(this.value)"
function valutaIng(s)
{
    
    //Sostituisce la virgola con il punto
    if (event.keyCode == 44 )
      event.keyCode = 46
    
    //Solo numeri e punto
    if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 46) 
      event.returnValue = false;

    //Non più di un punto "." 
    if ((event.keyCode == 46) && (s.indexOf(".") != -1) ) {
      event.returnValue = false;
      return
    }

}


function mettipunti(t1)
	{
	t3="";
	t4="";
	tt=1;
// gestisci il caso in cui ci sia la virgola
	vpos = t1.indexOf(",") 
        j=1;
        if (vpos != -1)
	{
		j=String(t1).length-1;
                t2="";
		while (j>=vpos)
		{
                  t2="";
                  t2= t2.concat(t1.charAt(j));
                  t4=t2.concat(t4);
		  j--;
	   	}
	}
        else
	{
 	      vpos=String(t1).length;
   	}

         
	for(i=vpos-1;i>=0;i--)
	   {
	   t2= "";
	   if ( ((tt) % 3)==0 && i != 0 )
	   	t2=".";
			
	   tt++;
	   t2= t2.concat(t1.charAt(i));
	   t3=t2.concat(t3);
	   }
        t3=t3.concat(t4);
	return t3;

	}/* function mettipunti(t1)
	{
	var t3 = '';
	var tt = 1;
	var t2 = '';
	for(i=String(t1).length-1;i>=0;i--)
	   {
	   t2= '';
	   if ( ((tt) % 3)==0 && i != 0 )
	   	t2=".";
			
	   tt++;
	   t2= t2.concat(String(t1).substring(i,i+1));
	   t3=t2.concat(t3);
	   }
	return t3;

	}

*/
function levapunti(t1)
	{
	var t3='';
	var t2='';
	for(i = 0;i < String(t1).length;i++)
	{
		t2 = ''
		t2 = String(t1).substring(i,i+1);
	   	if ( t2 != '.' )
		{
	   		t3 = t3.concat(t2);
		}
	}
	return t3;
	}

function controllavirgole(t,isEuro)
{
	var j = 0;
	var t3='';
	var t2='';
	var t1=t.value
	var ndec=0;
	for(i = 0;i < String(t1).length;i++)
	{
 		t2=''
		t2 = String(t1).substring(i,i+1);
	   	if ( t2 != ',' )
		{
	   		if ((j==0) || (j==i-1) || (j==i-2))
	   		{ 
	   			t3 = t3.concat(t2);
	   		}
	   		else
	   		{
	   		    alert("Attenzione: sono stati inseriti più di due decimali. L'importo verrà troncato");
	   			i=String(t1).length;
	   		}
		}
		else
		{
			if (j==0)
			{
		   		t3 = t3.concat(t2);
			}
	   		j=i;
		}
	}
	if (isEuro==true)
	{
		 ndec=String(t3).length;
		 if ((j==0)&&(ndec!=0))
		{
		  // t3=t3.concat(",00")
		  alert("Inserire l'importo con due decimali")
		  return 0
		}
		else 
		{
			if	(j==ndec-1)
			{
			   t3=t3.concat("00")
			}
			if	(j==ndec-2)
			{
				t3=t3.concat("0")
			}
		}
	}

	return t3;
}

function controllavirgole4(t1)
{
	var j = 0;
	var t3='';
	var t2='';
	var ndec=0;
	for(i = 0;i < String(t1).length;i++)
	{
 		t2=''
		t2 = String(t1).substring(i,i+1);
	   	if ( t2 != ',' )
		{
	   		if ((j==0) || (j==i-1) || (j==i-2) || (j==i-3) || (j==i-4))
	   		{ 
	   			t3 = t3.concat(t2);
	   		}
	   		else
	   		{
	   		    alert("Attenzione: sono stati inseriti più di QUATTRO decimali. L'importo verrà troncato");
	   			i=String(t1).length;
	   		}
		}
		else
		{
			if (j==0)
			{
		   		t3 = t3.concat(t2);
			}
	   		j=i;
		}
	}
	ndec=String(t3).length;
	if ((j==0)&&(ndec!=0))
	{
	   t3=t3.concat(",0000")
	}
	else 
	{
		if	(j==ndec-1)
		{
		   t3=t3.concat("0000")
		}
		if	(j==ndec-2)
		{
			t3=t3.concat("000")
		}
		if	(j==ndec-3)
		{
			t3=t3.concat("00")
		}
		if	(j==ndec-4)
		{
			t3=t3.concat("0")
		}
	}
	return t3;
}

function ControllaImporto(Par, isEuro)
{
	var tt = '';
	var ToF = '';
	//ToF=controllavirgole(Par.value, isEuro);
	ToF=controllavirgole(Par, isEuro);
	if (ToF==0) {
		return 0
	}
	else
	{
	tt = levapunti(ToF);
	Par.value = mettipunti(tt);
	return 1
	}

	
}

function ControllaImporto4(Par)
{
	var tt = '';
	var ToF = '';
	ToF=controllavirgole4(Par.value);
	Par.value = levapunti(ToF);
}

function ControllaImporto3(Par, isEuro)
{
	var tt = '';
	var ToF = '';
	ToF=controllavirgole3(Par.value, isEuro);
	tt = levapunti(ToF);
	Par.value = mettipunti(tt);

}

function controllavirgole3(t1,isEuro)
{
	var j = 0;
	var t3='';
	var t2='';
	var ndec=0;
	for(i = 0;i < String(t1).length;i++)
	{
 		t2=''
		t2 = String(t1).substring(i,i+1);
	   	if ( t2 != ',' )
		{
	   		if ((j==0) || (j==i-1) || (j==i-2) || (j==i-3))
	   		{ 
	   			t3 = t3.concat(t2);
	   		}
	   		else
	   		{
	   		    alert("Attenzione: sono stati inseriti più di TRE decimali. L'importo verrà troncato");
	   			i=String(t1).length;
	   		}
		}
		else
		{
			if (j==0)
			{
		   		t3 = t3.concat(t2);
			}
	   		j=i;
		}
	}
	if (isEuro==true)
	{
		ndec=String(t3).length;
		if ((j==0)&&(ndec!=0))
		{
		   t3=t3.concat(",000")
		}
		else 
		{
			if	(j==ndec-1)
			{
			   t3=t3.concat("000")
			}
			if	(j==ndec-2)
			{
				t3=t3.concat("00")
			}
			if	(j==ndec-3)
			{
				t3=t3.concat("0")
			}
		}
	}
	return t3;
}

	function AlertControllaPI(valore)
	{ 
		if (ControllaPIVA(valore)!="")
			{alert(ControllaPIVA(valore))}
	}
	
	function AlertControllaCF(valore)
	{ 
		if (ControllaCF(valore)!="")
			{alert(ControllaCF(valore))}
	}
	
	function ControllaPIVA(pi)
	{
		if( pi == '' )  return '';
		if( pi.length != 11 )
			return "La lunghezza della partita IVA non è\n" +
				"corretta: la partita IVA dovrebbe essere lunga\n" +
				"esattamente 11 caratteri.\n";
		validi = "0123456789";
		
		for( i = 0; i < 11; i++ ){
			if( validi.indexOf( pi.charAt(i) ) == -1 )
				return "La partita IVA contiene un carattere non valido `" +
					pi.charAt(i) + "'.\nI caratteri validi sono le cifre.\n";
		}
		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) )
			return "La partita IVA non è valida:\n";
		return '';
	}

	function ControllaCF(cf)
	{
		var validi, i, s, set1, set2, setpari, setdisp;
		if( cf == '' )  return '';
		cf = cf.toUpperCase();
		if( cf.length != 16 )
			return "La lunghezza del codice fiscale non è\n"
			+"corretta: il codice fiscale dovrebbe essere lungo\n"
			+"esattamente 16 caratteri.\n";
		validi = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
		for( i = 0; i < 16; i++ ){
			if( validi.indexOf( cf.charAt(i) ) == -1 )
				return "Il codice fiscale contiene un carattere non valido `" +
					cf.charAt(i) +
					"'.\nI caratteri validi sono le lettere e le cifre.\n";
		}
		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) )
			return "Il codice fiscale non è corretto:\n"+
				"il codice di controllo non corrisponde.\n";
		return "";
	}

function dateFormat(data, formato) 
{ 
	// Usi:
	//dateFormat(Date(), 'dddd, dd mmmm yyyy ore t'); --> Venerdì, 18 Ottobre 2002 ore 17:54:40  
	//dateFormat('12/25/2002', 'dd mmm yyyy (ddd)'); --> 25 Dic 2002 (Mer)  
	//dateFormat(Date(), 'yyyymmdd'); --> 20021018  
	//dateFormat(Date(), 'mm/dd/yy'); --> 10/18/02  
	//dateFormat(Date(), 'mm/dd/yyy'); --> 10/18/???  
	//dateFormat(Date(), 'hh:nn'); --> 17:55 
	//dateFormat(Date(), 'hh:nn:ss'); --> 17:55:00
	
	var giorni = new Array("Domenica","Lunedì","Martedì","Mercoledì","Giovedì","Venerdì","Sabato");
	var mesi = new Array("Gennaio","Febbraio","marzo","Aprile","Maggio","Giugno","Luglio","Agosto","Settembre","Ottobre","Novembre","Dicembre");

// preparo la data...  verificare di passarla corretta!
	var adesso = new Date(data); 
	var anno = adesso.getFullYear();
	var mese = adesso.getMonth()+1;
	var giorno = adesso.getDate();
	var settim = adesso.getDay()
	var ore = adesso.getHours()
	var minuti = adesso.getMinutes()
	var secondi = adesso.getSeconds()

// preparo la stringa di risposta
	var rVal = '';

	if (formato.length==0) { 
// assenza del secondo parametro
		return String(adesso); 
	} else {

	// inizio loop
		while (formato.length>0) {

	// verifico se c'e' qualche separatore e lo aggiungo
			while (formato.length>0 && String("ymdphnst").indexOf(formato.charAt(0).toLowerCase())<0) {
				rVal += formato.charAt(0);
				formato = formato.substr(1);
			}


	// Separo il gruppo
			if (formato.length>0) {
				ff = formato.charAt(0);
				formato = formato.substr(1);
				while (formato.length>0 && formato.charAt(0).toLowerCase()==ff.charAt(0).toLowerCase()) {
					ff += formato.charAt(0);
					formato = formato.substr(1);
				}

	// espando il formato nella stringa corrispondente
				ff = ff.toLowerCase();	 // operazione preliminare... tutto in minuscolo
				switch (ff) 	{ 
					case "yy" : 
						rVal += String(anno).substr(2); 
						break; 
					case "yyyy" : 
						rVal += String(anno); 
						break; 
					case "m" : 
						rVal += String(mese); 
						break; 
					case "mm" : 
						rVal += lz(mese,2);
						break; 
					case "mmm" : 
						rVal += mesi[mese-1].substr(0,3);
						break; 
					case "mmmm" : 
						rVal += mesi[mese-1];
						break; 
					case "d" : 
						rVal += String(giorno); 
						break; 
					case "dd" : 
						rVal += lz(giorno,2); 
						break; 
					case "ddd" : 
						rVal += giorni[settim].substr(0,3);
						break; 
					case "dddd" : 
						rVal += giorni[settim];
						break; 
					case "p" : 
						var inizio = new Date(anno, 0, 0); 
						rVal += Math.floor((adesso - inizio) / 86400000);
						break; 
					case "ppp" : 
						var inizio = new Date(anno, 0, 0); 
						rVal += lz(Math.floor((adesso - inizio) / 86400000),3);
						break; 
					case "h" : 
						rVal += String(ore); 
						break; 
					case "hh" : 
						rVal += lz(ore,2); 
						break; 
					case "n" : 
						rVal += String(minuti); 
						break; 
					case "nn" : 
						rVal += lz(minuti,2); 
						break; 
					case "s" : 
						rVal += String(secondi); 
						break; 
					case "ss" : 
						rVal += lz(secondi,2); 
						break; 
					case "t" : 
						rVal += lz(ore,2)+":"+lz(minuti,2)+":"+lz(secondi,2); 
						break; 
					default :  // il numero dei caratteri del formato non e' permesso
						rVal += ff.replace(/./gi,"?");
				} 

			}

		} // fine loop principale

		return rVal;
	}
} 
    
function isPercentuale(valore)
{
	if (eval(valore)>100 || valore=="")
		return false;
	else
		return true;
}
	
function CheckAll(Modulo,Check)
{
	for (var k=0;k<Modulo.elements.length;k++)
	{
		var a = Modulo.elements[k];
		if (a.name != Check)
			a.checked=Check.checked;
	}	
}

//Formatta cifre in italiano
// es. 12905.20 --> 12.905,20
function formatDecimale(fl, dec)
{
    str=""+fl;
    i = str.indexOf(".");
    if (i<0)
    {
        i=str.length;
		str=str+",00000000000";
    }
    else
    {
		if(i==0)
		{
			i=1;
            str="0"+str;
        }
        else
        {
			str=str+"00000000000";
        }
    }
	if (i>0)
	{
		str1=str.substring(0,i);
				
		var j=0; y=0; str3="";
				
		for (z=0; z<=i-1; z++)
		{
			j++;
			if (j==4)
			{
				str3 =  str.substring(i-z-1,i-z) + "." + str3;
				j=0;
			}
			else
				str3 = str.substring(i-z-1,i-z) + str3;
		}
				
				
		str2="," + str.substring(i+1,i+dec);
		return str3 + str2;
	}
	else			
        return str.substring(0,i+dec);
}

  <!-- Begin Verify

  function trimm(s) {
    var out = "";
    
    while('' + s.charAt(0) == ' ') 
      s = s.substring(1, s.length);   
    
    while('' + s.charAt(s.length - 1) == ' ')
      s = s.substring(0, s.length - 1);    
      
    out = s;
    return  out;
    
  }
  
  
  
  function replaceChar(s,c1,c2) {
    var out = "";
    
    for (i = 0; i < s.length; i++) {
      if (s.charAt(i) != c1) 
        out += s.charAt(i);
      else 
        out += c2;
    }
   
    return out;
  }

  
  function isCorrectNumber(e){
    
    //Replace non funziona con Netscape 
    var NumeroVirgole = 0;

    var s = replaceChar(e.value,".",",");
    if (s.length != 0) 
      if (s.charCodeAt(s.length-1) == 44)
        s += '0'; 
    
    
    //Only for Netscape users, IE uses KeyPress  
    for(var i = 0; i < s.length; i++){
      var c = s.charCodeAt(i);
        
      
      //Only number, ","
      if ((c < 48 || c > 57) && c!=44 && c!=45) {
        alert("Il campo ''" + e.label + "'' non è un numero valido." ) 
        return false;
      }  
     
      //if integers only then...
      if (e.integerField)
        if (c == 44) {
          alert("Il campo ''" + e.label + "'' deve essere un numero intero." ) 
          return false;
        }  
      

      //No more than one ","
      if (c == 44) {
        if (++NumeroVirgole > 1) {  
          alert("Il campo ''" + e.label + "'' presenta più di una virgola." ) 
          return false; 
        }
      }
      
    }  
    
      
    var v = parseFloat(replaceChar(s,",","."))
    
    if ((e.min != null) && (v < e.min)) {
      alert("Il campo ''" + e.label + "'' deve essere maggiore o uguale a " + e.min + "." ) 
      return false 
    }  
      
    if ((e.max != null) && (v > e.max)) {
      alert("Il campo ''" + e.label + "'' deve essere minore o uguale a " + e.max + "." ) 
      return false 
    }  
    
    e.value = s
    
      
    return true;
  }
  
  
  function Verify(f){
    
    for(var i = 0; i < f.length; i++){
      var e = f.elements[i];
      
      if (e.label == null)
        e.label = e.name  
        
      e.value = trimm(e.value);
      
      //Text and textarea controls
      if (((e.type == "text") || (e.type == "textarea") || (e.type == "password"))) {
      
        //Field required
        if (e.required) { 
          if (e.value == "") {
               
            alert("Il campo ''" + e.label + "'' è richiesto." ) 
            e.focus();
            return false;
          }
        }
        
        
        //Numbers (verified only if e.value.length != 0 --- important evaluation order)
        if ((e.floatField || e.integerField) && e.value.length  && !isCorrectNumber(e) ) {
          e.focus();
          e.select();
          return false;
        }


        //Dates (verified only if e.value.length != 0 --- important evaluation order)
        if (e.dateField && e.value.length && !isCorrectDate(e) ) {
          
          e.focus();
          e.select();
          return false;
        }
        
        //Times (verified only if e.value.length != 0 --- important evaluation order)
        if (e.timeField && e.value.length && !isCorrectTime(e) ) {
          
          e.focus();
          e.select();
          return false;
        }
      }
     
      //Listbox select-one control
      if ((e.type == "select-one") && e.required) {
        
        if (e.selectedIndex == 0){
          alert("Il campo ''" + e.label + "'' è richiesto" ) 
          e.focus();
          return false;
        }    
      }

   }
    return true;
  }


  
  //Only on IE
  function floatValues(s){
    //Fired by onKeyPress Event
    
    //Replace "." with ","
    if (event.keyCode == 46 )
      event.keyCode = 44
    
    //Only integer numbers, ","
    if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 44) 
      event.returnValue = false;

    //No more than one "," 
    if ((event.keyCode == 44) && (s.indexOf(",") != -1) ) {
      event.returnValue = false;
      return
    }

  }


  //Only on IE
  function integerValues(s){
    //Fired by onKeyPress Event
    
    //future use for s
    
    //Only integer numbers
    if (event.keyCode < 48 || event.keyCode > 57)
      event.returnValue = false;


  }

  //Only on IE
  function dateValues(s){
    //Fired by onKeyPress Event


    //Only integer numbers, "-" and "/" 
    if ((event.keyCode < 48 || event.keyCode > 57) && event.keyCode != 45 && event.keyCode != 47) 
      event.returnValue = false;

  }



function isCorrectTime(e) {
    // Checks for the following valid time formats:
    // HH:MM  HH.MM
    // Also separates time into hours and minutes variables

    var s = e.value;        
    
    var TimePat = /^(\d{1,2})(\:|\.)(\d{1,2})$/;
    
    var matchArray = s.match(TimePat); // is the format ok?
    
    if (matchArray == null) {
      alert("L'orario nel campo ''" + e.label + "'' non è valido!  \n\n (Il formato è: HH:MM oppure HH.MM)");
      return false;
    }

    minutes = matchArray[3]; // parse time into variables
    hours = matchArray[1];
    
     
    if (minutes < 0 || minutes > 59) {
      alert("I minuti dell'orario specificato nel campo ''" + e.label + "'' non sono validi!");
      return false;
    }
  
    if (hours < 0 || hours > 23) {
      // check hours range
      alert("Le ore dell'orario specificato nel campo ''" + e.label + "'' non sono valide!");
      return false;
    }
      
     
    return true;  // time is valid
  }
  


 function isCorrectDate(e) {
    // Checks for the following valid date formats:
    // MM/DD/YY   MM/DD/YYYY   MM-DD-YY   MM-DD-YYYY
    // Also separates date into month, day, and year variables

	var s="";

    s = e.value;
	    
	//alert(e);
   
    // var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{2}|\d{4})$/;

    // To require a 4 digit year entry, use this line instead:
    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})\2(\d{4})$/;

	var matchArray = s.match(datePat); // is the format ok?
    
    if (matchArray == null) {
      //alert("La data nel campo ''" + e.label + "'' non è valida!  \n\n (Il formato è: gg/mm/aaaa)");
      return false;
    }
         
    month = matchArray[3]; // parse date into variables
    day = matchArray[1];
    year = matchArray[4];
     
    if (day < 1 || day > 31) {
      //alert("Il giorno della data specificata nel campo ''" + e.label + "'' non è valido!");
      return false;
    }
  
    if (month < 1 || month > 12) {
      // check month range
     // alert("Il mese della data specificata nel campo ''" + e.label + "'' non è valido!");
      return false;
    }
  
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
      //alert("Il mese della data specificata nel campo ''" + e.label + "'' non ha 31 giorni!");
      return false;
    }
  
    if (month == 2) { 
      // check for february 29th
      var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
  
       if (day>29 || (day==29 && !isleap)) {
         //alert("Il mese di Febbraio della data specificata nel campo ''" + e.label + "'' non ha " + day + " giorni!");
         return false;
       }
    }
     
    return true;  // date is valid
  }
 
  // End -->



function CtrlDateSearch()
{
	var DateIncorrette=false;
				
	for (var i = 0; i < document.ricerca.elements.length; i++) 
	{
		if(document.ricerca.elements[i].type == 'text' && String(document.ricerca.elements[i].name).indexOf("Data") != -1)
			if (!isCorrectDate(document.ricerca.elements[i])) document.ricerca.elements[i].value="";
	}			
}
