//-- www.jjam.de - Countup mit JavaScript - Version 14.02.2003 --

//var jahr=2001, monat=1, tag=1, stunde=0, minute=0, sekunde=0; // Start-Datum in MEZ im HTML-Dokument angeben

	function countup() {
		var startDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
		zielDatum=new Date(); // Aktuelles Datum

		// Countup erst berechnen und anzeigen, wenn Start-Datum überschritten wird
		if(startDatum<zielDatum)  {

			var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

			/* Allgemeines Vorgehen:
			 * Zunächst werden die vollen Jahre gezählt
			 * und anschließend der Start- und Ziel-Monat auf den jeweiligen 1. gesetzt.
			 * Nun werden erst die vollen Monate vom 1. zum 1. des Start- bzw. Ziel-Monats berechnet
			 * und danach die tatsächlichen Monatstage wieder mit einbezogen.
			 * Dieses Vorgehen vermeidet Probleme mit den verschiedenen Monatslängen.
			 * Die restliche Differenz zwischen Start- und Ziel-Zeit wird mit Tagen aufgefüllt und
			 * was dann noch übrig bleibt, in Stunden, Minuten und Sekunden ausgedrückt.*/

			// Jahre
			if(startDatum<zielDatum) {
				while(startDatum<zielDatum) {
					if(startDatum.setFullYear(startDatum.getFullYear()+1)<=zielDatum) jahre++;
				}
				startDatum.setFullYear(startDatum.getFullYear()-1);
			}

			// Restliche Tage zum Monatsende ermitteln
			var restTage=0;
			var m=startDatum.getMonth();
			if(m==1-1|| m==3-1||m==5-1||m==7-1||m==8-1||m==10-1||m==12-1) restTage=31-startDatum.getDate();
			else if(m==4-1|| m==6-1||m==9-1||m==11-1) restTage=30-startDatum.getDate();
			else if(m==2-1) {
				if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0 || startDatum.getFullYear()%400==0)) restTage=29-startDatum.getDate(); // Schaltjahr
				else restTage=28-startDatum.getDate();
			}

			// Start- und Ziel-Tag merken und auf 1 setzen
			var startTag=startDatum.getDate();
			var zielTag=zielDatum.getDate();
			startDatum.setDate(1);
			zielDatum.setDate(1);

			// Monate
			if(startDatum<zielDatum) {
				while(startDatum<zielDatum) {
					if(startDatum.setMonth(startDatum.getMonth()+1)<=zielDatum) monate++;
				}
				startDatum.setMonth(startDatum.getMonth()-1);
			}

			// Tatsächlichen Start- und Ziel-Tag berücksichtigen
			if(startDatum.getMonth()==zielDatum.getMonth()) {
				if(startTag<=zielTag) startDatum.setDate(startTag);
				else {
					monate--;
					tage=restTage+1;
				}
			}
			else {
				startDatum.setMonth(startDatum.getMonth()+1);
				if(startTag>=zielTag) tage=restTage+1;
				else {
					monate++;
					startDatum.setDate(startTag);
				}
			}
			zielDatum.setDate(zielTag);

			// Tage
			restTage=Math.floor((zielDatum-startDatum)/(24*60*60*1000));
			startDatum.setTime(startDatum.getTime()+restTage*24*60*60*1000);
			tage+=restTage;

			// Stunden
			stunden=Math.floor((zielDatum-startDatum)/(60*60*1000));
			startDatum.setTime(startDatum.getTime()+stunden*60*60*1000);

			// Minuten
			minuten=Math.floor((zielDatum-startDatum)/(60*1000));
			startDatum.setTime(startDatum.getTime()+minuten*60*1000);

			// Sekunden
			sekunden=Math.floor((zielDatum-startDatum)/1000);

			// Anzeige formatieren
			(jahre!=1)?jahre=jahre+" Jahre, ":jahre=jahre+" Jahr, ";
			(monate!=1)?monate=monate+" Monate, ":monate=monate+" Monat, ";
			(tage!=1)?tage=tage+" Tage, ":tage=tage+" Tag, ";
			(stunden!=1)?stunden=stunden+" Stunden, ":stunden=stunden+" Stunde, ";
			(minuten!=1)?minuten=minuten+" Minuten und ":minuten=minuten+" Minute und ";
			if(sekunden<10) sekunden="0"+sekunden;
			(sekunden!=1)?sekunden=sekunden+" Sekunden":sekunden=sekunden+" Sekunde";

			document.countupform.countupinput.value=jahre+monate+tage+stunden+minuten+sekunden;

		}
		// Anderenfalls alles auf Null setzen
		else document.countupform.countupinput.value="0 Jahre, 0 Monate, 0 Tage, 0 Stunden, 0 Minuten und 00 Sekunden";

		setTimeout('countup()',200);
	}

