Essentially the same code snippet with just a little bit cleaner and more efficient code
1. setTimeout()
is replaced with setInterval()
function
2. The interval is correctly set to 333 msec to produce 3 updates per second as specified
<html>
<head>
<script src="http://ajax.aspnetcdn.com/ajax/jquery/jquery-1.5.1.js" type="text/javascript"></script>
</head>
<body>
<div id="counter"></div>
<script type="text/javascript">
var currentyear = new Date().getFullYear();
var startDateTicks = new Date(currentyear, 0, 1).getTime();
var $burnedMoneyElement = $("#counter");
var governmentBudget = 13265000000;
var moneyMultiplier = (((governmentBudget / 365) / 24) / 60) / 60;
$(document).ready(function(){
setInterval("updateBurnedMoneyTicker()", 333);
});
function updateBurnedMoneyTicker() {
var curDateTicks = new Date().getTime();
var totalVal = 0;
totalVal = (curDateTicks - startDateTicks);
totalVal = totalVal / 1000;
totalVal = totalVal * moneyMultiplier;
$burnedMoneyElement.html(formatCurrency(totalVal));
}
function formatCurrency(num) {
num = num.toString().replace(/\$|\,/g, '');
if (isNaN(num))
num = "0";
sign = (num == (num = Math.abs(num)));
num = Math.floor(num * 100 + 0.50000000001);
cents = num % 100;
num = Math.floor(num / 100).toString();
if (cents < 10)
cents = "0" + cents;
for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
num = num.substring(0, num.length - (4 * i + 3)) + ',' +
num.substring(num.length - (4 * i + 3));
return (((sign) ? '' : '-') + '$' + num + '.' + cents);
}
</script>
</body></html>