var parts = new Array( new Array('days', 60 * 60 * 24), new Array('hours', 60 * 60), new Array('minutes', 60), new Array('seconds', 1)); function Counter(obj, t) { return function() { t = parseInt(t); out = new Array(); diff = (new Date(t * 1000) - new Date()) / 1000; var reduce = 0; var seconds ; var name ; for (var i = 0 ; i < parts.length ; i++) { seconds = parts[i][1] ; name = parts[i][0]; count = (diff - reduce) / seconds; reduce += parseInt(count) * seconds; if (parseInt(count)) { out.push(parseInt(count) + ' ' + name); } } /* var seconds = (diff / 1000); var minutes = parseInt(seconds / 60); var hours = parseInt(minutes / 60); var days = parseInt(hours / 24); out = new Array(); if (days) { out.push(days + ' days'); hours -= days / 24; } if (hours) { out.push(hours + ' hours'); minutes -= hours / 60 } if (minutes) { out.push(minutes + ' minutes'); } out.push(seconds + ' seconds'); */ obj.innerHTML = out.join(' '); } } $('.time-left').each(function() { window.setInterval(Counter(this, this.className.split(' ')[1]), 1000); });