//**************************
// Validità Data
//**************************
function TestData (Ctrl)
 {
  if (Ctrl.value == '') return (true)  

  var err=0;
  var psj=0;
  a=Ctrl.value

  // Lunghezza deve essere 10 bytes	
  if (a.length != 10) err=1

  // Giorno
  d = a.substring(0, 2)//day
  if (isNaN(d)) err=1;

  // prima '/'
  c = a.substring(2, 3)// '/'

  // Mese
  b = a.substring(3, 5)// month
  if (isNaN(b)) err=1;

  // seconda '/'
  e = a.substring(5, 6)// '/'

  // Anno di 4 cifre
  f = a.substring(6, 10)// year
  if (isNaN(f)) err=1;

  //Mesi da 1 a 12
  if (b<1 || b>12) err = 1

  // Posizione della 1 barra
  if (c != '/') err = 1

  // Giorni in generale da 1 a 31
  if (d<1 || d>31) err = 1

  // Posizione della 2 barra
  if (e != '/') err = 1
	
  // Range dell'anno
  if (f<1800 || f>2100) err = 1
	
  // Mesi con 30 giorni
  if (b==4 || b==6 || b==9 || b==11)
   {
    if (d > 30) err=1
   }

  // Febbraio (Bisestile)
  if (b==2)
   {
    // feb
    var g=parseInt(f/4)
    if (isNaN(g)) 
     {
      err=1
     }

    // Maggior di 29 NO
    if (d>29) err=1

    // Bisestile
    if (d==29 && ((f/4)!=parseInt(f/4))) err=1
   }
  if (err==1)
   {
    window.status ="Inserisci la data nella forma gg/mm/aaaa";
    alert ("Inserisci la data nella forma gg/mm/aaaa");
    window.status ="";
    Ctrl.focus();
    return (false);
   }
  else
   return (true);   
 }

//**************************
// Validità Ora
//**************************
function TestOra (Ctrl)
 {
  var err=0;
  a=Ctrl.value

  // Lunghezza deve essere 5 bytes	
  if (a.length != 5) err=1

  // Ora
  b = a.substring(0, 2)  
  if (isNaN(b)) err=1;


  //  'Separatore :'
  c = a.substring(2, 3)

  // Minuti
  d = a.substring(3, 5)  
  if (isNaN(d)) err=1;

  //Ora da 0 a 23
  if (b<0 || b>23) err = 1

  //Minuti da 0 a 59
  if (d<0 || d>59) err = 1

  if (err==1)
   {
    alert ("Inserisci l' orario nella forma hh:mm");
    Ctrl.focus();
    return (false);
   }
  else
   return (true);   
 }


//**************************
// Validità E-mail
//**************************
function TestEmail (Ctrl,Op)
 {
  // Op=1 controllo l'esistenza e la validita
  // Op=2 controllo se esiste la validita
  if ((Op==2) && (Ctrl.value == '')) return(true);
   
  if (Ctrl.value == "")
   {alert ("Inserire l'e-mail!");
    Ctrl.focus();
    return (false);
   }
    
  //deve esserci una sola @
  pos=Ctrl.value.indexOf('@', 0)
  if (pos == 0)
   {alert ("Inserire correttamente l'e-mail!");
    Ctrl.focus();
    return (false);
   }

  if (pos == -1) 
   {alert ("Inserire correttamente l'e-mail!");
    Ctrl.focus();
    return (false);
   }
  else
   {if (Ctrl.value.indexOf('@', pos+1) != -1)
    {alert ("Inserire correttamente l'e-mail!");
     Ctrl.focus();
     return (false);
    }
   }

  //devono esserci almeno 4 caratteri dopo @
  if (Ctrl.value.substring(pos+1,Ctrl.value.length).length < 4)
   {alert ("Inserire correttamente l'e-mail!");
    Ctrl.focus();
    return (false);
   }

  //deve esserci almeno un . dopo @
  if (Ctrl.value.indexOf('.', pos+1) == -1)      
   {alert ("Inserire correttamente l'e-mail!");
    Ctrl.focus();
    return (false);
   }

  //devono esserci almeno 2 caratteri dopo .
  pos=Ctrl.value.indexOf('.', pos+1);
  if (Ctrl.value.substring(pos+1,Ctrl.value.length).length < 2)
   {alert ("Inserire correttamente l'e-mail!");
    Ctrl.focus();
    return (false);
   }

  //caratteri ammessi
  stremail=Ctrl.value.toUpperCase()
  for (var i = 0; i < stremail.length; i++)
   {if (".-_0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(stremail.charAt(i)) == -1) 
    {alert ("Inserire correttamente l'e-mail!");
     Ctrl.focus();
     return (false);
    }
   }
  //Tutto OK
  return (true);   
 }

//**************************
// Validità E-mail
//**************************
function TestEmail1 (Ctrl,strMsg)
 {
  //deve esserci una sola @
  pos=Ctrl.value.indexOf('@', 0)
  if (pos == 0)
   {alert (strMsg);
    Ctrl.focus();
    return (false);
   }

  if (pos == -1) 
   {alert (strMsg);
    Ctrl.focus();
    return (false);
   }
  else
   {if (Ctrl.value.indexOf('@', pos+1) != -1)
    {alert (strMsg);
     Ctrl.focus();
     return (false);
    }
   }

  //devono esserci almeno 4 caratteri dopo @
  if (Ctrl.value.substring(pos+1,Ctrl.value.length).length < 4)
   {alert (strMsg);
    Ctrl.focus();
    return (false);
   }

  //deve esserci almeno un . dopo @
  if (Ctrl.value.indexOf('.', pos+1) == -1)      
   {alert (strMsg);
    Ctrl.focus();
    return (false);
   }

  //devono esserci almeno 2 caratteri dopo .
  pos=Ctrl.value.indexOf('.', pos+1);
  if (Ctrl.value.substring(pos+1,Ctrl.value.length).length < 2)
   {alert (strMsg);
    Ctrl.focus();
    return (false);
   }

  //caratteri ammessi
  stremail=Ctrl.value.toUpperCase()
  for (var i = 0; i < stremail.length; i++)
   {if (".-_0123456789@ABCDEFGHIJKLMNOPQRSTUVWXYZ".indexOf(stremail.charAt(i)) == -1) 
    {alert (strMsg);
     Ctrl.focus();
     return (false);
    }
   }
  //Tutto OK
  return (true);   
 }

//**********************
// Validità Campo Empty
//**********************
function TestEmpty (Ctrl,msg)
 {if (Ctrl.value == "")
   {alert (msg);
    Ctrl.focus();
    return (false);
   }
  else
   return (true);   
 }

//**********************
// Validità Campo Numerico
//**********************
function TestNumerico (Ctrl,msg)
 {
  if (Ctrl.value == "") Ctrl.value=0;

  for (var j=0; j < Ctrl.value.length; j++)
    {
     if ("0123456789".indexOf(Ctrl.value.charAt(j)) == -1)
     {
      alert(msg);
      Ctrl.focus();
      return(false);
     }
    }
  return (true);   
 }

//**********************
// Validità Euro
//**********************
function TestEuro (Ctrl)
 {// Prezzo (con decimali)
  
  if ((Ctrl.value == "") || (Ctrl.value == ",")) Ctrl.value="0";
  for (var i = 0; i < Ctrl.value.length; i++)
  {
    if ("0123456789,".indexOf(Ctrl.value.charAt(i)) == -1)
    {
    alert('Indicare un importo valido');
    Ctrl.focus();
    return(false);
    }
  }

  //se c'è deve esserci una sola virgola
  pos=Ctrl.value.indexOf(',', 0)
  if (pos != -1)
   {
    if (Ctrl.value.indexOf(',', pos+1) != -1)
     {alert ("Indicare un importo valido");
      Ctrl.focus();
      return (false);
     }

    //se c'è la virgola due decimali al massimo
    if (Ctrl.value.substring(pos+1,Ctrl.value.length).length > 2)
     {alert ("Indicare un importo valido");
      Ctrl.focus();
      return (false);
     }
   }  

  /*
  //l'importo deve essere > 0
  var importo=Ctrl.value.replace(",",".");
  if (importo <= 0)
   {alert ("Indicare un importo maggiore di 0");
    Ctrl.focus();
    return (false);
   }
  */

 //Tutto OK
  return (true);   
 }

//**********************
// Formatta numero output
//**********************
function FormattaNumero(num,dec)
 // num =numero da formattare (con punto o virgola)
 // dec =numero decimali da visualizzare
 {
  var x=0;
  var pos;
  var strzeri='0000000000000000';
  var NumFormattato=""

  x=num.toString().replace(",",".")
  if (isNaN(x)) return (NumFormattato)

  x=Math.round(x * (Math.pow(10,dec))) / (Math.pow(10,dec))
  pos=x.toString().indexOf('.', 0)
  if (pos==-1)
   {
    NumFormattato=x.toString()+ ',' + strzeri.substring(0,dec)
   }
  else
   {
    NumFormattato=x.toString().replace(".",",") + strzeri.substring(0,Math.abs(dec-(x.toString().length - (pos+1))))
   }
  return (NumFormattato)
 }

//*************************
// Validità Numero Telefono
//*************************
function TestNumeroTelefono(Ctrl,msg)
 {
  var mVal=Ctrl.value;

  if (mVal == "") return(true);
  
  //Eliminando eventualmente il 1 byte (+) il resto della stringa deve essere numerico
  if (mVal.substring(0, 1) == "+") mVal=mVal.substring(1, mVal.length);
  for (var j=0; j < mVal.length; j++)
    {
     if ("0123456789".indexOf(mVal.charAt(j)) == -1)
     {
      alert(msg);
      Ctrl.focus();
      return(false);
     }
    }
  return(true)
 }

