Не надёжно это дюже.)
Но если вы доверяете времени на машине клиента то так:
<body>
<script>
(function setCounter(callback) {
function output( ms ){
function num(n, one, two, five) {
if ((n = Math.abs(n) % 100) > 4 && n < 21 || (n %= 10) > 4 || n === 0 ) return five;
if (n > 1) return two;
return one;
}
var h = Math.floor( ms / (60*60*1000)),
m = Math.floor((ms -= h*60*60*1000) / (60*1000) ),
s = Math.floor((ms -= m*60*1000) / 1000 );
var string = 'Остал' + num(h,'ся','ось','ось');
if(h) string += ' ' + h + ' час' + num(h,'','а','ов');
if(m) string += ' ' + m + ' минут' + num(m, 'а','ы','');
if(s) string += ' ' + s + ' секунд' + num(s, 'а', 'ы', '');
string += '.';
return string
}
var endCounter = /(?:^|; )endCounter=([^;]*)/.exec(document.cookie);
if(endCounter) {
endCounter = new Date(+endCounter[1]);
} else {
endCounter = new Date();
endCounter.setTime(endCounter.getTime() + 24*60*60*1000);
document.cookie = "endCounter=" + +endCounter + ';path=/;expires=' + endCounter.toUTCString();
}
(function counter(){
var left = endCounter - new Date();
if(left<=0) return setCounter();
callback( output( endCounter - new Date() ) );
setTimeout(counter, 1000)
}())
}( function( str ){document.body.innerHTML = str} ))
</script>
</body>
//слава богу вовремя остановился.))