var jahr=2006, monat=7, tag=1, stunde=11, minute=0, sekunde=0; // Ziel-Datum in MEZ
var zielDatum=new Date(jahr,monat-1,tag,stunde,minute,sekunde);

// var jahrFrom=2006, monatFrom=3, tagFrom=16, stundeFrom=1, minuteFrom=21, sekundeFrom=0;
// var startDatum=new Date(jahrFrom,monatFrom-1,tagFrom,stundeFrom,minuteFrom,sekundeFrom);

function countdown() {
	startDatum=new Date(); // Aktuelles Datum
	// startDatum=new Date(countDownTime);


	// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
	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 tmp=0;
		var tmpStr="";
		var restTageSum=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();
		}
		restTageSum+=restTage;
		// Summe der restlichen Tage
		for(var i = m+1; i < zielDatum.getMonth(); i++){
			tmp=0;
			if(i==1-1||i==3-1||i==5-1||i==7-1||i==8-1||i==10-1||i==12-1) tmp=31;
			else if(i==4-1||i==6-1||i==9-1||i==11-1) tmp=30;
			else if(i==2-1) {
				if(startDatum.getFullYear()%4==0 && (startDatum.getFullYear()%100!=0 || startDatum.getFullYear()%400==0)) tmp=29; // Schaltjahr
				else tmp=28;
			}
			
			restTageSum+=tmp;
			tmpStr+=' , '+tmp;
			
		}
		// 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,  ";
		(restTageSum!=1)?tage=restTageSum+" Tage,  ":tage=restTageSum+" 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.countdownform.countdowninput.value=/*jahre+monate+*/tage+stunden+minuten+sekunden;
		document.getElementById("countdownarea").innerHTML=tage+stunden+minuten+sekunden;
		setTimeout('countdown()',200);
	}
	// Anderenfalls alles auf Null setzen
	// else document.countdownform.countdowninput.value="0 Jahre,  0 Monate,  0 Tage,  0 Stunden,  0 Minuten  und  00 Sekunden";
	else 
	document.getElementById("countdownarea").innerHTML="---";
}