// JavaScript Document

		var appleConfig = {
			htmlDigits: [
				'<img src="counter/images/digit_0.png">',
				'<img src="counter/images/digit_1.png">',
				'<img src="counter/images/digit_2.png">',
				'<img src="counter/images/digit_3.png">',
				'<img src="counter/images/digit_4.png">',
				'<img src="counter/images/digit_5.png">',
				'<img src="counter/images/digit_6.png">',
				'<img src="counter/images/digit_7.png">',
				'<img src="counter/images/digit_8.png">',
				'<img src="counter/images/digit_9.png">'
			],
			htmlContainer: {
				all: '<div style="float: left; display: inline"></div>'
			}
		};
		
		function Counter(container, targetTime, config, callback) {
			var counter = {
				appendDigit: function(container, digitContainerHTML) {
					if (digitContainerHTML == null)
						digitContainerHTML = config.htmlContainer.all;
					var digitContainer = document.createElement('div');
					digitContainer.innerHTML = digitContainerHTML;
					digitContainer = digitContainer.firstChild;
					container.appendChild(digitContainer);
					return digitContainer;
				},
				initializeDomElements: function(container) {
					var all = container.childNodes;
					for (var i = 0; i < all.length; i++) {
						var node = all[i];
						if (node.nodeType == 1) {
							switch (node.className) {
								case 'days': 
									this.domDaysMSD = this.appendDigit(node, this.config.htmlContainer.daysMSD);
									this.domDaysLSD = this.appendDigit(node, this.config.htmlContainer.daysLSD);
									break;
								case 'hours':
									this.domHoursMSD = this.appendDigit(node, this.config.htmlContainer.hoursMSD);
									this.domHoursLSD = this.appendDigit(node, this.config.htmlContainer.hoursLSD);
									break;
								case 'minutes':
									this.domMinutesMSD = this.appendDigit(node, this.config.htmlContainer.minutesMSD);
									this.domMinutesLSD = this.appendDigit(node, this.config.htmlContainer.minutesLSD);
									break;
								case 'seconds':
									this.domSecondsMSD = this.appendDigit(node, this.config.htmlContainer.secondsMSD);
									this.domSecondsLSD = this.appendDigit(node, this.config.htmlContainer.secondsLSD);
									break;
							}
							if (node.hasChildNodes())
								this.initializeDomElements(node);
						}
					}
				},
				initialize: function() {
					this.initializeDomElements(this.container);
				},
				updateCounter: function() {
					var seconds = Math.round((this.targetTime.getTime() - (new Date()).getTime()) / 1000);
					this.secondsLeft = seconds;
					if (seconds <= 0) {
						this.running = false;
						seconds = 0;
					}
					var days = Math.floor(seconds / 86400);
					seconds -= days * 86400;
					var hours = Math.floor(seconds / 3600);
					seconds -= hours * 3600;
					var minutes = Math.floor(seconds / 60);
					seconds -= minutes * 60;
					var secondsLSD = seconds % 10;
					if (secondsLSD != this.secondsLSD) {
						this.domSecondsLSD.innerHTML = this.config.htmlDigits[secondsLSD];
						this.secondsLSD = secondsLSD;
					}
					secondsMSD = Math.floor((seconds - secondsLSD) / 10);
					if (secondsMSD != this.secondsMSD) {
						this.domSecondsMSD.innerHTML = this.config.htmlDigits[secondsMSD];
						this.secondsMSD = secondsMSD;
					}
					var minutesLSD = minutes % 10;
					if (minutesLSD != this.minutesLSD) {
						this.domMinutesLSD.innerHTML = this.config.htmlDigits[minutesLSD];
						this.minutesLSD = minutesLSD;
					}
					var minutesMSD = Math.floor((minutes - minutesLSD) / 10);
					if (minutesMSD != this.minutesMSD) {
						this.domMinutesMSD.innerHTML = this.config.htmlDigits[minutesMSD];
						this.minutesMSD = minutesMSD;
					}
					var hoursLSD = hours % 10;
					if (hoursLSD != this.hoursLSD) {
						this.domHoursLSD.innerHTML = this.config.htmlDigits[hoursLSD];
						this.hoursLSD = hoursLSD;
					}
					var hoursMSD = Math.floor((hours - hoursLSD) / 10);
					if (hoursMSD != this.hoursMSD) {
						this.domHoursMSD.innerHTML = this.config.htmlDigits[hoursMSD];
						this.hoursMSD = hoursMSD;
					}
					var daysLSD = days % 10;
					if (daysLSD != this.daysLSD) {
						this.domDaysLSD.innerHTML = this.config.htmlDigits[daysLSD];
						this.daysLSD = daysLSD;
					}
					var daysMSD = Math.floor((days - daysLSD) / 10);
					if (daysMSD != this.daysMSD) {
						this.domDaysMSD.innerHTML = this.config.htmlDigits[daysMSD];
						this.daysMSD = daysMSD;
					}
					if (this.callback)
						this.callback(this);
				},
				start: function() {
					this.running = true;
				},
				updateDispatcher: function() {
					var n = Counter.prototype.counters.length;
					for (var i = 0; i < n; i++)
						if (Counter.prototype.counters[i].running)
							Counter.prototype.counters[i].updateCounter();
				},
				initializeClass: function() {
					if (Counter.prototype.counters == null) {
						Counter.prototype.counters = [];
						Counter.prototype.updateDispatcher = function() {
							var n = Counter.prototype.counters.length;
							for (var i = 0; i < n; i++)
								if (Counter.prototype.counters[i].running)
									Counter.prototype.counters[i].updateCounter();
						}
						window.setInterval("Counter.prototype.updateDispatcher()", 1000);
					}
				}
			};
			counter.initializeClass();
			counter.running = false;
			counter.container = document.getElementById(container);
			counter.targetTime = new Date(targetTime);
			counter.config = config;
			counter.callback = callback;
			counter.initialize();
			counter.index = Counter.prototype.counters.length;
			Counter.prototype.counters.push(counter);
			return counter;
		};

		
		function initCounters() {
		    new Counter("counter3", "2008/5/9 12:00", appleConfig).start();
		};
	
	
	
	
	
	
	