// Funktion berechnet die Differenz zwischen zwei Zeitstempeln 
function differenz (d1, d2) { 
  // Ist der Timestamp d1 < d2, dann müssen die beiden Werte 
  // getauscht werden, da sonst negative Werte berechnet werden. 
  if (d1 < d2) { 
    var d = d1; 
    d1 = d2; 
    d2 = d; 
  } 
  // Vergangene Zeit in ihre Komponenten umrechnen. 
  // Vergangene Tage berechnen,... 
  var t = Math.floor ((d1 - d2) / (24 * 60 * 60 * 1000)); 
  if(t < 10) {t = '0' + t;}
  // verstrichene Stunden berechnen,... 
  var s = Math.floor (((d1 - d2) - (t * 24 * 60 * 60 * 1000)) / (60 * 60 * 1000)); 
  if(s < 10) {s = '0' + s;}
  // Minuten, die zwischenzeitlich vergangen sind... 
  var m = Math.floor (((d1 - d2) - (t * 24 * 60 * 60 * 1000) - (s * 60 * 60 * 1000)) / (60 * 1000)); 
  if(m < 10) {m = '0' + m;}
  // und die Sekunden. 
  var sec = Math.floor (((d1 - d2) - (t * 24 * 60 * 60 * 1000) - (s * 60 * 60 * 1000) - (m * 60 * 1000)) / 1000); 
  if(sec < 10) {sec = '0' + sec;}
  // Berechnete Differenz als Rückgabe per Objekt liefern. 
  return { 't': t, 's': s, 'm': m, 'sec': sec }; 
} 

// Funktion, welche den Countdown-Timer zyklisch im Ausgabeelement ausgibt. 
function update_countdown (termin) { 
  // Datumsobjekt mit aktuellem Datum und ktueller Zeit erzeugen. 
  // Von diesem Timestamp ausgehend wird die Differenz zum Termin 
  // berechnet. 
  var now = new Date (); 
  // Varaiable zur Speicherung der auszugebenen Zeichenkette 
  // für den Countdown. 
  var ausgabe; 
  // Variable zur Speicherung der Differenz zwischen Termin und 
  // aktuellem Zeitpunkt. 
  var diff; 
  if (now.getTime () > termin) { 
    // Termin war schon 
    // Berechnung der Differenz zwischen dem Termin und 
    // dem aktuellen Zeitpunkt. 
    diff = differenz (now.getTime (), termin); 
    // Zeitliche Differenz an das Ausgabestring hängen. 
	if (diff.t < 100) { 
		ausgabe = '<div class=backgrnd_countdown_t2><span id=countdown_t class=font_countdown>' + diff.t + '</span></div><div class=doppelpunkt>:</div>';
	} else {
		ausgabe = '<div class=backgrnd_countdown_t3><span id=countdown_t class=font_countdown>' + diff.t + '</span></div><div class=doppelpunkt>:</div>';
	}
		ausgabe += '<div class=backgrnd_countdown_s><span id=countdown_s class=font_countdown>' + diff.s + '</span></div><div class=doppelpunkt>:</div>';
		ausgabe += '<div class=backgrnd_countdown_m><span id=countdown_m class=font_countdown>' + diff.m + '</span></div><div class=doppelpunkt>:</div>';
	ausgabe += '<div class=backgrnd_countdown_sec><span id=countdown_sec class=font_countdown>' + diff.sec + '</span>';
	ausgabe += '<cfinclude template=\'include/footer.cfm\'>';
  } 
  else { 
    // Termin in Zukunft 
    // Wie lange dauert es noch, bis zum Termin? 
    diff = differenz (termin, now.getTime ()); 
    // Ermittelte Werte an Ausgabe anhängen. 
	if (diff.t < 100) { 
		ausgabe = '<div class=backgrnd_countdown_t2><span id=countdown_t class=font_countdown>' + diff.t + '</span></div><div class=doppelpunkt>:</div>';
	} else {
		ausgabe = '<div class=backgrnd_countdown_t3><span id=countdown_t class=font_countdown>' + diff.t + '</span></div><div class=doppelpunkt>:</div>';
	}
		ausgabe += '<div class=backgrnd_countdown_s><span id=countdown_s class=font_countdown>' + diff.s + '</span></div><div class=doppelpunkt>:</div>';
		ausgabe += '<div class=backgrnd_countdown_m><span id=countdown_m class=font_countdown>' + diff.m + '</span></div><div class=doppelpunkt>:</div>';
	ausgabe += '<div class=backgrnd_countdown_sec><span id=countdown_sec class=font_countdown>' + diff.sec + '</span>';
	ausgabe += '<cfinclude template=\'include/footer.cfm\'>';
  } 
  // Ausgabe der zusammengesetzten Zeichenkette 
	document.getElementById('countdown').innerHTML = ausgabe; 

}  

// Initialisierung des Countdown-Timers 
// Als Parameter werden die ID des Anzeigeelements, ein Termin als Date-Objekt 
// uns eine optionale Beschreibung des Termins übergeben. 
function countdown_timer (termin) { 
    if (termin instanceof Date) { 
      update_countdown (termin.getTime ()); 
      // Countdown Timer einmal pro Sekunde akutalisieren 
	  window.setInterval ('update_countdown (' + termin.getTime () + ')', 1000); 
	} 
} 

