Вот вроде работает.
<!DOCTYPE HTML>
<html lang="ru">
<head>
<meta charset="UTF-8"/>
<title>Таймер</title>
<style>
#test {
color: red;
font-size: 30px;
}
</style>
</head>
<body>
<div id="test"></div>
<script>
function SetDaysTimer(dd, mm, yy, timerElement, message, timerUpdateTime) {
function getDaysLeft() {
var daysLeft = (new Date(yy, mm - 1, dd) - new Date()) / 86400000;
if (daysLeft > parseInt(daysLeft)) daysLeft = parseInt(daysLeft) + 1;
return daysLeft;
}
function formatDays(daysLeft) {
var doubleEnding = ('0' + daysLeft).slice(-2);
var singleEnding = ('0' + daysLeft).slice(-1);
if ((doubleEnding > 10 && doubleEnding < 20) || singleEnding > 4 || singleEnding == 0) {
return 'дней';
} else if (singleEnding == 1) return 'день';
return 'дня';
}
function showMessage(daysLeft) {
if (daysLeft < 0) {
timerElement.innerHTML = message;
clearInterval(timer);
return;
}
timerElement.innerHTML = daysLeft + ' ' + formatDays(daysLeft);
}
var timer = setInterval(function () {
showMessage(getDaysLeft())
}, (timerUpdateTime || 1) * 60000);
showMessage(getDaysLeft());
}
/* Использование
new SetDaysTimer(
dd, - число события
mm, - месяц события
yy, - год события
timerElement, - элемент куда выводить сообщение
message, - текст сообщения
timerUpdateTime - время обновления сообщения в минутах, по умолчанию 1 минута
);
Пример
*/
new SetDaysTimer(
21,
12,
2012,
document.getElementById('test'),
'Конец света наступил',
5
);
</script>
</body>
</html>