(Countdown = Class.create()).prototype = {
	initialize: function(target, config) {
		var m;

		this.target = $(target);

		Object.extend(this.config = {
			remain: 0, period: 1, onFinish: null
		}, config);

		if (this.config.remain || (m = target.innerHTML.match(/(\d+):(\d+)/)))
		{
			this.turnOn(
				this.config.remain || (Number(m[1] * 60) + Number(m[2]))
			);
		}
	},

	turnOn: function(param) {
		(this.update.bind(this, param -= this.config.period)).delay(this.config.period);
	},

	update: function(param) {
		var m;

		if (m = (new Date(param * 1000)).toTimeString().match(/:(\d{2}):(\d{2})/))
		{
			this.target.update(Number(m[1]) + ':' + m[2]);
		}

		if (param)
		{
			this.turnOn(param);
		}
		else if (this.config.onFinish)
		{
			this.config.onFinish();
		}
	}
}
