function MaggioreZero(num, msg)
{
	if (!(num > 0))
	{
		alert("Inserire " + msg + " > 0");
		return false;
	}
	else
		return true;
}


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function InteroMaggioreZero(num, msg)
{
	 //alert("a");
   Filtro = /[^0-9]/;
   if (Filtro.test(num))
   {
   		alert("Inserire un valore di " + msg + " intero e maggiore di 0");
      return false;	
		}
	else
	if (!(num > 0))
	{
		//alert("b");
		alert("Inserire un valore di " + msg + " intero e maggiore di 0");
		return false;
	}
   else
      {
      //alert("c");
      return true;
      }
}





// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function ConvertiMaiuscolo(Str)
{
	return str.toUpperCase();
}




// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function ISValidPIVA_CF_00(PIVA_CFStr)
{
	//alert(PIVA_CFStr);
	if (partitaIVA(PIVA_CFStr)==false)
	{
		if (codiceFISCALE(PIVA_CFStr)==false)
		{
			//alert("Partita IVA o Codice Fiscale inserito non validi");
			return false;
		}
		else
		{
			return true;
		}
	}
	else
		return true;
}


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function ISValidPIVA(PIVA_CFStr, msg)
{
	if (PIVA_CFStr=="")
	{
		return true
	}
	else
	{
		if (partitaIVA(PIVA_CFStr)==false)
		{
			alert("Partita IVA non corretta " + msg)
			return false;
		}
		else
		{
			return true;
		}
	}
}





// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function ISValidPIVA_CF(PIVA_CFStr, msg)
{
	if (PIVA_CFStr=="")
	{
		return true
	}
	else
	{
		if (ISValidPIVA_CF_00(PIVA_CFStr)==false)
		{
			alert("Partita IVA o Codice Fiscale non corretto " + msg)
			return false;
		}
		else
		{
			return true;
		}
	}
}

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function codiceFISCALE(cfins)
   {
   var cf = cfins.toUpperCase();
   var cfReg = /^[A-Z]{6}\d{2}[A-Z]\d{2}[A-Z]\d{3}[A-Z]$/;
   if (!cfReg.test(cf))
      return false;
   var set1 = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   var set2 = "ABCDEFGHIJABCDEFGHIJKLMNOPQRSTUVWXYZ";
   var setpari = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
   var setdisp = "BAKPLCQDREVOSFTGUHMINJWZYX";
   var 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 false;
   return true;
   }
   
   
// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function IsValidCF(CFStr)
   {
   var CFok=codiceFISCALE(CFStr)
   if (CFok==false)
      {
      //alert("Codice Fiscale errato");
      return false;
      }
   else
      return true;
   }



function partitaIVA(sz_Codice)
   {
   var n_Val,n_Som=0,n_Som1=0,n_Som2=0,lcv;
   if (sz_Codice.length!=11 || isNaN(parseFloat(sz_Codice)) || parseFloat(sz_Codice)<parseFloat(0))
      return false;
      
   n_Val = parseInt(sz_Codice.charAt(0));   
   n_Som1+=n_Val;
   n_Val = parseInt(sz_Codice.charAt(2));   
   n_Som1+=n_Val;
   n_Val = parseInt(sz_Codice.charAt(4));   
   n_Som1+=n_Val;
   n_Val = parseInt(sz_Codice.charAt(6));   
   n_Som1+=n_Val;
   n_Val = parseInt(sz_Codice.charAt(8));   
   n_Som1+=n_Val;
   
   n_Val = 2*parseInt(sz_Codice.charAt(1));
   n_Som2+=n_Val;
   if (n_Val>9)
   n_Som2 = n_Som2 -9;
   n_Val = 2*parseInt(sz_Codice.charAt(3));
   n_Som2+=n_Val;
   if (n_Val>9)
   n_Som2 = n_Som2 -9;
   n_Val = 2*parseInt(sz_Codice.charAt(5));
   n_Som2+=n_Val;
   if (n_Val>9)
   n_Som2 = n_Som2 -9;
   n_Val = 2*parseInt(sz_Codice.charAt(7));
   n_Som2+=n_Val;
   if (n_Val>9)
   n_Som2 = n_Som2 -9;
   n_Val = 2*parseInt(sz_Codice.charAt(9));
   n_Som2+=n_Val;
   if (n_Val>9)
   n_Som2 = n_Som2 -9;
   
   n_Som = n_Som1 + n_Som2;
   
   if ((n_Som % 10) == 0)
   	{
   		if ((n_Som % 10) == parseInt(sz_Codice.charAt(10)))
   			return true;   
  	 		{
  	 			return false;
  	 		}
   	}
   	{
   		if ((10 - (n_Som % 10)) == parseInt(sz_Codice.charAt(10)))
   			return true;   
  	 		{
  	 			return false;
  	 		}
		}	
   		
   }




// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/*
function partitaIVA_old(sz_Codice)
// il codice non è corretto sw la cifra di confronto è 0 (zero)
   {
   //alert(sz_Codice);
   
   var n_Val,n_Som1=0,n_Som2=0,lcv;
   //alert(parseFloat(sz_Codice))
   //alert(parseFloat(parseFloat(sz_Codice)<parseFloat(0)));
   //alert((sz_Codice.length!=11 || isNaN(parseFloat(sz_Codice)) || parseFloat(sz_Codice)<parseFloat(0))));
   
   if (sz_Codice.length!=11 || isNaN(parseFloat(sz_Codice)) || parseFloat(sz_Codice)<parseFloat(0))
      return false;
   alert("Ciao");
   for (lcv=0;lcv<9;lcv+=2)
   {
      n_Val=parseInt(sz_Codice.charAt(lcv));
      n_Som1+=n_Val;
      n_Val=parseInt(sz_Codice.charAt(lcv+1));
      n_Som1+=Math.floor(n_Val/5) + (n_Val<<1) % 10;
   }
   n_Som2 = 10 - (n_Som1 % 10);
   n_Val=parseInt(sz_Codice.charAt(10));
   if (n_Som2==n_Val)
      return true;
   return false;
   }
*/

// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function IsValidPIVA(PIVAStr)
   {
   var PIvaOk=partitaIVA(PIVAStr)
   if (PIvaOk==false)
      {
      alert("Partita IVA errata");
      return false;
      }
   else
      return true;
   }


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function IsValidEMail_00(EMailStr)
   {
   	
   Filtro = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-]{2,})+\.)+([a-zA-Z0-9]{2,})+$/;
   if (Filtro.test(EMailStr))
      return true;
   else
      {
      alert("Verificare l'indirizzo E-Mail " + EMailStr);
      return false;
      }
   }



// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function IsValidEMail(EMailStr)
{
	if (EMailStr=="")
	{
		return true
	}
	else
	{
		if (IsValidEMail_00(EMailStr)==false)
		{
			return false;
		}
		else
		{
			return true;
		}
	}
}


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function IsValidTime(timeStr) {
// Checks if time is in HH:MM:SS AM/PM format.
// The seconds and AM/PM are optional.

var timePat = /^(\d{1,2}):(\d{2})(:(\d{2}))?(\s?(AM|am|PM|pm))?$/;
//var timePat = /^(\d{1,2}).(\d{2})(.(\d{2}))?(\s?(AM|am|PM|pm))?$/;

var matchArray = timeStr.match(timePat);

if (timeStr=="")
	{return true;}
else
{

if (matchArray == null) {
alert("L'ora non è in un formato valido.");
return false;
}
hour = matchArray[1];
minute = matchArray[2];
second = matchArray[4];
ampm = matchArray[6];

if (second=="") { second = null; }
if (ampm=="") { ampm = null }

if (hour < 0  || hour > 23) {
	alert("Le ore devono essere comprese fra 0 e 23");
return false;
}

if  (hour > 12 && ampm != null) {
alert("Non aggiungere l'indicazione AM o PM");
return false;
}
if (minute<0 || minute > 59) {
alert ("I minuti devono esser compresi fra 0 e 59.");
return false;
}
if (second != null && (second < 0 || second > 59)) {
alert ("I secondi devono essere copmresi fra 0 e 59.");
return false;
}
//return false;
return true
}

}


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function check_date(field){
var checkstr = "0123456789";
var DateField = field;
var Datevalue = "";
var DateTemp = "";
var seperator = "/";
var day;
var month;
var year;
var leap = 0;
var err = 0;
var i;
   err = 0;
   DateValue = DateField.value;
   /* Delete all chars except 0..9 */
   for (i = 0; i < DateValue.length; i++) {
	  if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
	     DateTemp = DateTemp + DateValue.substr(i,1);
	  }
   }
   DateValue = DateTemp;
   /* Always change date to 8 digits - string*/
   /* if year is entered as 2-digit / always assume 20xx */
   if (DateValue.length == 6) {
      DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); }
   if (DateValue.length != 8) {
      err = 19;}
   /* year is wrong if year = 0000 */
   year = DateValue.substr(4,4);
   if (year == 0) {
      err = 20;
   }
   /* Validation of month*/
   month = DateValue.substr(2,2);
   if ((month < 1) || (month > 12)) {
      err = 21;
   }
   /* Validation of day*/
   day = DateValue.substr(0,2);
   if (day < 1) {
     err = 22;
   }
   /* Validation leap-year / february / day */
   if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
      leap = 1;
   }
   if ((month == 2) && (leap == 1) && (day > 29)) {
      err = 23;
   }
   if ((month == 2) && (leap != 1) && (day > 28)) {
      err = 24;
   }
   /* Validation of other months */
   if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
      err = 25;
   }
   if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
      err = 26;
   }
   /* if 00 ist entered, no error, deleting the entry */
   if ((day == 0) && (month == 0) && (year == 00)) {
      err = 0; day = ""; month = ""; year = ""; seperator = "";
   }
   /* if no error, write the completed date to Input-Field (e.g. 13.12.2001) */
   if (err == 0) {
      DateField.value = day + seperator + month + seperator + year;
      return true // Mio
   }
   /* Error-message if err != 0 */
   else {
      alert("La data non è corretta!");
      DateField.select();
	  DateField.focus();
	  return false // Mio
   }
}


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
function isblank(s)
{	
	for(var i = 0; i < s.length; i++) {
		var c = s.charAt(i);
		if ((c != ' ') && (c != '\n') && (c != '\t')) return false;
	}
	return true;
}



function verify(f)
{
	var msg;
	var empty_fields = "";
	var errors = "";
	
	for(var i= 0; i < f.length; i++) {
		var e = f.elements[i];
		if (((e.type == "text") || (e.type == "textarea")) && !e.optional) {
		if ((e.value == null) || (e.value == "") || isblank(e.value)) {
			empty_fields += "\n         " + e.name;
			continue;
		}
		
		if (e.numeric || (e.min != null) || (e.max != null)) {
			var v = parseFloat(e.value);
			if (isNaN(v) ||
				((e.min != null) && (v < e.min)) ||
				((e.max != null) && (v > e.max))) {
				errors += "- Il campo " + e.name + " deve essere un numero";
				if (e.min != null)
					errors += " maggiore di " + e.min;
				if (e.max != null && e.min != null)
					errors += " e minore di " + e.max;
				else if (e.max != null)
					errors += " minore di " + e.max;
				errors += ".\n";
			}
		}
	}
}

if (!empty_fields && !errors) return true;

msg   = "_________________________________________________________\n\n"
msg += "Il modulo non è stato inviato a causa dei seguenti errori.\n";
msg += "Correggere gli errori ed inviarlo nuovamente.\n";
msg +=  "_________________________________________________________\n\n"

if (empty_fields) {
	msg += " - I seguenti campi richiesti risultano vuoti:"
		+ empty_fields + "\n";
	if (errors) msg += "\n";
	}
	msg += errors;
	alert(msg);
	return false;
}


// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/*
function SeparatoreDecimale(NumeroIn)
{
var NumeroOut = NumeroIn;
var strNumero;
var NumeroTemp = "";
var checkstr = "0123456789.,";
var checkSeparatore = ".,";
var blnTest = true;
var i;
var contaSeparatori = 0;
var strSeparatoreDefault = ",";


strNumero= NumeroOut.value + "";
//Il numero è stato convertito in testo

//alert(strNumero);


for (i = 0; i < strNumero.length; i++) 
	{
//	alert(i);
	if (checkstr.indexOf(strNumero.substr(i,1)) >= 0)
		{
		if (checkSeparatore.indexOf(strNumero.substr(i,1)) >= 0) {
//		if (strNumero.substr(i,1) == ",") {

			NumeroTemp = NumeroTemp + strSeparatoreDefault;
			contaSeparatori = contaSeparatori + 1;		
		}
		else {
			NumeroTemp = NumeroTemp + strNumero.substr(i,1);
		}
		//blnTest = true;
		//alert(blnTest + " if " + i );
		
		}
	else
		{
		blnTest = false;
		//alert(blnTest + " else " + i);
		}
   }
  
if (contaSeparatori > 1)  {  
   blnTest = false;
}
 

strNumero = NumeroTemp;
//alert(blnTest + " fine");

if (blnTest) {	
	NumeroOut.value = strNumero;	
	return true;
	}
else {
	alert("Errore nel formato numerico, usare " + strSeparatoreDefault + " come separatore decimale");
	return false;
	}
}
*/

// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
/*
function ConfrontoDate(DataInizio, DataFine)
{
//alert("!");
//alert(DataInizio);

strDataBassa = DataInizio.value;
//alert(strDataBassa);
strDataBassaGiorno = strDataBassa.slice(0,2);
//alert(DataBassaGiorno );
strDataBassaMese = strDataBassa.slice(3,5) -1; // -1 è necessario perché gennaio è il mese 0
//alert(DataBassaMese );
strDataBassaAnno = strDataBassa.slice(6);
//alert(DataBassaAnno );

strDataAlta = DataFine.value;
//alert(strDataBassa);
strDataAltaGiorno = strDataAlta.slice(0,2);
//alert(strDataBassaGiorno );
strDataAltaMese = strDataAlta.slice(3,5) -1; // -1 è necessario perché gennaio è il mese 0
//alert(DataBassaMese );
strDataAltaAnno = strDataAlta.slice(6);
//alert(DataBassaAnno );


DataBassa = new Date(strDataBassaAnno, strDataBassaMese, strDataBassaGiorno);
DataAlta = new Date(strDataAltaAnno, strDataAltaMese, strDataAltaGiorno);

Delta = DataAlta.getTime() - DataBassa.getTime();

//alert(Delta);

if (Delta >= 0)
	{
	//alert("Evviva");
	return true;
	}
else
	{
	alert("Attenzione la Data di Fine è anteriore a quella di Inizio");
	return false;
	}
}
*/
// FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF


// IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII
/*
function DateCorrette(MiaDataInizio, MiaDataFine)

{
Oggi = new Date();
//alert(Oggi);

DataInizioInserita = MiaDataInizio.value
//alert(DataInserita);
MiaDataInizioGiorno = DataInizioInserita.slice(0,2);
//alert(MiaDataInizioGiorno);
MiaDataInizioMese = DataInizioInserita.slice(3,5) -1; // -1 è necessario perché gennaio è il mese 0
//alert(MiaDataInizioMese);
MiaDataInizioAnno = DataInizioInserita.slice(6,10);
//alert(MiaDataInizioAnno);
MiaDataInizioOra = DataInizioInserita.slice(11,13);
//alert(MiaDataInizioOra)
MiaDataInizioMinuto = DataInizioInserita.slice(14,16);
//alert(MiaDataInizioMinuto)

DataInizio = new Date(MiaDataInizioAnno, MiaDataInizioMese, MiaDataInizioGiorno, MiaDataInizioOra, MiaDataInizioMinuto);
//alert(DataInizio);

DataFineInserita = MiaDataFine.value
//alert(DataInserita);
MiaDataFineGiorno = DataFineInserita.slice(0,2);
//alert(MiaDataFineGiorno);
MiaDataFineMese = DataFineInserita.slice(3,5) -1; // -1 è necessario perché gennaio è il mese 0
//alert(MiaDataFineMese);
MiaDataFineAnno = DataFineInserita.slice(6,10);
//alert(MiaDataFineAnno);
MiaDataFineOra = DataFineInserita.slice(11,13);
//alert(MiaDataFineOra)
MiaDataFineMinuto = DataFineInserita.slice(14,16);
//alert(MiaDataFineMinuto)

DataFine = new Date(MiaDataFineAnno, MiaDataFineMese, MiaDataFineGiorno, MiaDataFineOra, MiaDataFineMinuto);

Delta = DataInizio.getTime() - Oggi.getTime();

//alert(Delta);

Step = -86400000;
//alert(Step);

if (Delta < Step)
	{
		alert("Attenzione la Data di prelievo è anteriore a quella odierna");
		return false;
	}
else
// verifichiamo la data di restituzione
	{
		if ((DataFine.getTime() - DataInizio.getTime()) > 0)
		{
			return true;
		}
		else
		{
			alert("Attenzione la Data ed Ora di restituzione non sono posteriori a quelle di prelievo");
			return false;
		}
	}
}
*/
// FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF






