var Countdown = {
	intervals: {
		main: null,
		slide_days: null,
		slide_hours: null,
		slide_minutes: null,
		slide_seconds: null
	},
	id: 'countdown_',
	lineHeight: 0,
	days: 0,
	hours: 0,
	minutes: 0,
	seconds: 0,
	/* Starten des Countdowns: */
	run: function(id, lineHeight, days, hours, minutes, seconds) {
		/* wenn id uebergeben wurde setzen: */
		if(id.length>0) {
			this.id = id;
		}
		/* zeilenhoehe setzen: (wird fuer das sliden benoetigt) */
		this.lineHeight = lineHeight;

		/* werte speichern: */
		this.days = days;
		this.hours = hours;
		this.minutes = minutes;
		this.seconds = seconds;

		/* alle felder initialisieren: */
		this.update("days", this.days);
		this.update("hours", this.hours);
		this.update("minutes", this.minutes);
		/*this.update("seconds", this.seconds);*/

		/* Intervall der jedesekune um eins weiter zaehlt starten: */
		this.intervals.main = window.setInterval("Countdown_"+this.id+".clock()", 1000);
	},
	/* kurzschreibweise fuer document.getElementById */
	$: function(id) {
		return document.getElementById(id);
	},
	/* funktion zum aktualisieren eines feldes: */
	update: function(id, value) {
		/* neuen Wert als _string_ zusammen setzen: */
		value = value+"";
		if(value.length < 2) {
			value = "0"+value;
		}
		if(value.length < 3 && id == 'days') {
			value = "0"+value;
		}
		/* alten wert uebernehmen... */
		this.$(this.id+'_'+id+'_value').innerHTML = this.$(this.id+'_'+id+'_newvalue').innerHTML;
		/* ..und positionieren: */
		this.$(this.id+'_'+id+'_value').style.marginTop = '0px';
		/* neuen wert setzen: */
		this.$(this.id+'_'+id+'_newvalue').innerHTML = value;
		/* sliden starten: */
		this.startSlide(id);
	},
	/* funktion zum starten des slidevorgangs: */
	startSlide: function(id) {
		clearTimeout(this.intervals['slide_'+id]);
		this.intervals['slide_'+id] = window.setInterval("Countdown_"+this.id+".doSlide(\""+id+"\")",50);
	},
	/* funktion fuer einen slideschritt: */
	doSlide: function(id) {
		var div = this.$(this.id+'_'+id+'_value');
		if(div.style.marginTop.length > 2) {
			var mt = div.style.marginTop.substring(0,div.style.marginTop.length-2)-2;
			if(mt >= -this.lineHeight) {
				div.style.marginTop = mt+'px';
			} else {
				clearTimeout(this.intervals['slide_'+id]);
				this.intervals['slide_'+id] = null;
			}
		} else {
			div.style.marginTop = '0px';
		}
	},
	/* funktion die einmal pro sekunde die werte aktualisiert: */
	clock: function() {
		if(this.seconds == 0 && this.minutes == 0 && this.hours == 0 && this.days == 0) {
			clearTimeout(this.intervals['main']);
		} else {
			--this.seconds;
			if(this.seconds<0) {
				--this.minutes;
				this.seconds = 59;
				if(this.minutes<0) {
					--this.hours;
					this.minutes = 59;
					if(this.hours<0) {
						--this.days;
						this.hours = 23;
						if(this.days<0) {
							this.days = 0;
						}
						this.update("days", this.days);
					}
					this.update("hours", this.hours);
				}
				this.update("minutes", this.minutes);
			}
			/*this.update("seconds", this.seconds);*/
		}
	}
}
