Lo butto giù da capo e forse un po' con i piedi, spero che ti basti:
Codice:
/** parametro refDate: la data e ora (come oggetto Date) in cui il count down arriva a zero */
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;
}
Questa era la parte più difficile, non ti resta altro che realizzare una funzione che, prendendo i dati da result, li formatti all'interno di un paragrafo. Poi richiamerai questa funzione con il codice
Codice HTML:
<BODY onLoad="setInterval ('formatta()', 1000)">
da inserire in cima a tutte le pagine in cui vuoi visualizzare il contatore.
Stammi bene...
EDIT: ho testato lo script e l'ho corretto, sembra funzionare. Prova a verificarlo qui: http://dementialsite.altervista.org/...down-lungo.htm