// Funzione per la data e l'ora
 function lz(numero, cifre) {
  n = String(numero);
  while (n.length<cifre) { 
   n="0"+n 
  }
  return n;
 }
 function dateFormat(data, formato) { 
 // (c) br1 - 2002 
 
  var giorni = new Array("Domenica","Luned&iacute;","Marted&iacute;","Mercoled&iacute;","Gioved&iacute;","Venerd&iacute;","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;
  }
 }
