var Duration = function(milliseconds, abbreviated)
{
  milliseconds;
  abbreviated;
	units = {
		day: 'day',
		days: 'days',
		d: 'd',
		hour: 'hour',
		hours: 'hours',
		minute: 'minute',
		minutes: 'minutes',
		second: 'second',
		seconds: 'seconds'
	};
	this.toString = function()
	{
		var days = Math.floor(milliseconds / 86400000);
		var remainder = milliseconds - days * 86400000;
		var hours = Math.floor(remainder / 3600000);
		remainder -= hours * 3600000;
		var minutes = Math.floor(remainder / 60000);
		remainder -= minutes * 60000;
		var seconds = Math.floor(remainder / 1000);
		remainder -= seconds * 1000;
		var buffer = [];
		if (days > 0)
		{
			buffer.push(days);
			if (abbreviated)
				buffer.push(units.d);
			else
			{
				buffer.push(' ');
				buffer.push(days > 1 ? units.days : units.day);
			}
		}
		if (abbreviated)
		{
			if (buffer.length > 0)
				buffer.push(', ');
			if (hours < 10)
				buffer.push('0');
			buffer.push(hours);
			buffer.push(':');
			if (minutes < 10)
				buffer.push('0');
			buffer.push(minutes);
                        if (seconds < 10)
                                buffer.push('0');
                        buffer.push(seconds);
		}
		else
		{
			var out = function(value, singularUnit, pluralUnit)
			{
				if (value > 0)
				{
					if (buffer.length > 0)
						buffer.push(', ');
					buffer.push(value);
					buffer.push(' ');
					if (value > 1)
						buffer.push(pluralUnit);
					else
						buffer.push(singularUnit);
				}
			}
			out(hours, units.hour, units.hours);
			out(minutes, units.minute, units.minutes);
                        out(seconds, units.second, units.seconds);
		}
		return buffer.join('');
	};
}
Duration.countdown = function(element, date)
{
	element = document.getElementById(element);
	var refresh = function()
	{
		var milliseconds = date - new Date();
		var duration = new Duration(Math.abs(milliseconds));
		element.innerHTML = duration.toString();
		window.setTimeout(refresh, 1000);
	}
	refresh();
}

