Обратный таймер. Наверное можно сделать проще, но у меня получилось так
//в этой строке время выставляется в часах(0), минутах(0), секундах(30) и миллисекундах(0)
var x = (0 * 3600000) + (0 * 60000) + (30 * 1000) + 0;
<html>
<head>
<meta charset="utf-8">
<style type="text/css">
body { background-color:#ffcc33; margin:0px; }
div { color:#0033cc; font:bold 12pt Tahoma; margin:15px; }
</style>
<script type="text/javascript">
var backTimer = (function() {
var x = (0 * 3600000) + (0 * 60000) + (30 * 1000) + 0;
var now, tm, offset = 0, i = 0;
return function() {
switch(arguments[0]) {
case true:
if(offset === 0) {
now = new Date();
offset = now.getTimezoneOffset() * 60000;
}
else {
return ;
}
break;
case false:
if(offset !== 0) {
clearTimeout(arguments.callee);
i = x - tm.getTime() + offset;
offset = 0;
}
}
if(offset !== 0) {
tm = new Date((new Date()).getTime() - now.getTime() + i);
if(tm.getTime() < x) {
tm.setTime(x - tm.getTime() + offset);
document.getElementsByTagName('div')[0].innerHTML = tm.toLocaleTimeString();
setTimeout(arguments.callee, 500);
}
else {
clearTimeout(arguments.callee);
tm.setTime(0 + offset);
document.getElementsByTagName('div')[0].innerHTML = tm.toLocaleTimeString();
offset = 0;
i = 0;
}
}
}
})();
</script>
</head>
<body>
<input type="button" onclick="backTimer(true)" value="Start">
<input type="button" onclick="backTimer(false);" value="Pause">
<div>Div HTML</div>
</body>
</html>