function countDown (refDate)
{
   // la data attuale
   var now = new Date();
   
   // il risultato
   var result = new Array (0, // anni [0]
      0, // mesi [1]
      0, // giorni [2]
      0, // ore [3]
      0, // minuti [4]
      0 // secondi [5]
   );

   // numero di giorni nei vari mesi
   var daysInMonths = new Array (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31);

   // calcola i secondi
   var s2 = now.getSeconds ();
   var s1 = refDate.getSeconds ();
   if (s1 >= s2) result[0] = s1 - s2;
   else { result[0] = 60 + s1 - s2; result[1] = -1; }

   // calcola i minuti
   var m2 = now.getMinutes ();
   var m1 = refDate.getMinutes ();
   if (m1 >= m2) result[1] += m1 - m2;
   else { result[1] += 60 + m1 - m2; result[2] = -1; }

   // calcola le ore
   var h2 = now.getHours ();
   var h1 = refDate.getHours ();
   if (h1 >= h2) result[2] += h1 - h2;
   else { result[2] += 24 + h1 - h2; result[3] = -1; }

   // calcola i giorni
   var d2 = now.getDate ();
   var d1 = refDate.getDate ();
   if (d1 >= d2) result[3] += d1 - d2;
   else 
   { 
      result[3] += daysInMonths[(12 + now.getMonth()) % 12] + (now.getMonth() == 1 && now.getFullYear () % 4 == 0 ? 1 : 0) + d1 - d2;
      result[4] = -1;
   }

   // calcola i mesi
   var mt2 = now.getMonth ();
   var mt1 = refDate.getMonth ();
   if (mt1 >= mt2) result[4] += mt1 - mt2;
   else { result[4] += 12 + mt1 - mt2; result[5] = -1 }

   // calcola gli anni
   var y2 = now.getFullYear ();
   var y1 = refDate.getFullYear ();
   result[5] += y1 - y2;

   return result;
}

function formatta ()
{
   var result = countDown (new Date (2008, 5, 10));
   document.getElementById ("countdown").innerHTML = result[3] + ' giorni ' + result[2] + ' ore ' + result[1] + ' minuti ' + result[0] + ' secondi al via!';

}