// countdown timer script
$CD.Main = function() {

	var timer, CD, format, show = {}, next = -1;

	// initialise countdown
	function Init() {

		CD = document.getElementById($CD.DivID);
		format = ($CD.Format ? $CD.Format : "D H:M:S");
		
		if (CD && $CD.Events.length > 0) {
			CD = CD.firstChild;
			CalculateTimes();
			if (next >= 0) StartTimer();
		}

	}
	
	// calculate event times
	function CalculateTimes() {
			
		var E = $CD.Events, now = new Date();

		for (var i = 0, dl = E.length; i < dl; i++) {
			E[i] = new Date(E[i] * 1000);
			if (next < 0 && E[i] > now) next = i;
		}
	}
	
	
	// start timer
	function StartTimer() {
		var interval = 0, intcheck = { S: 1, M: 60, H: 3600, D: 86400 };
	
		for (var i in intcheck) {
			show[i] = (format.indexOf(i) >= 0);
			if (show[i] && interval == 0) interval = intcheck[i] * 1000;
		}
	
		ShowTimer();
		if (interval > 0) timer = setInterval(ShowTimer, interval);
	}
	
	
	// show timer
	function ShowTimer() {
		
		var now = new Date(), event = $CD.Events[next], f = format
		var d = 0, h = 0, m = 0, s = 0;
		
		if (now < event) {
			var time = (event - now) / 1000;
			
			if (show.D) {
				d = Math.floor(time / 86400);
				time -= (d * 86400);
			}
			
			if (show.H) {
				h = Math.floor(time / 3600);
				time -= h * 3600;
			}
			
			if (show.M) {
				m = Math.floor(time / 60);
				time -= m * 60;
			}	
			
			s = Math.floor(time);
		}
		else {
			next++;
			if (next >= $CD.Events.length) clearInterval(timer);
		}
		
		f = f.replace(/D/g, d).replace(/H/g, TwoDigits(h)).replace(/M/g, TwoDigits(m)).replace(/S/g, TwoDigits(s));
		
		CD.nodeValue = f;
		
	}
	
	
	// pad string
	function TwoDigits(num) {
		return (String(num).length > 1 ? num : ("0" + num).substr(-2, 2));
	}


	return {
		Init: Init
	};

}();


// start counter
setTimeout($CD.Main.Init, $CD.StartDelay);
