function TTimeCountDown(name,text,endTime)
{
this.name=name;
this.text=text;
this.endTime=endTime;


this.Show = function Show()
{
var endDateTimeStamp = new Date(this.endTime * 1000);
var endDateTimeStamp = endDateTimeStamp.toGMTString();
var endDateTimeStampArray = endDateTimeStamp.split(" ");
var monat = this.GetMonthNum(endDateTimeStampArray[2]);
var tag = endDateTimeStampArray[1];
var jahr = endDateTimeStampArray[3];
var stunde = endDateTimeStampArray[4].substr(0,2);
var minute = endDateTimeStampArray[4].substr(3,2);
var sekunde = endDateTimeStampArray[4].substr(6,2);

var endDate=new Date(jahr,monat-1,tag,stunde,minute,sekunde);
startDate=new Date(); // Aktuelles Datum

var formatedCountDownStr="";

// Countdown berechnen und anzeigen, bis Ziel-Datum erreicht ist
if(startDate<=endDate)
{
var jahre=0, monate=0, tage=0, stunden=0, minuten=0, sekunden=0;

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

// Restliche Tage zum Monatsende ermitteln
var restTage=0;
var m=startDate.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-startDate.getDate();
else if (m==4-1 || m==6-1 || m==9-1 || m==11-1) restTage=30-startDate.getDate();
else if (m==2-1)
{
if (startDate.getFullYear()%4==0 && (startDate.getFullYear()%100!=0 || startDate.getFullYear()%400==0)) restTage=29-startDate.getDate(); // Schaltjahr
else restTage=28-startDate.getDate();
}

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

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

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

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

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

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

// Sekunden
sekunden=Math.floor((endDate-startDate)/1000);

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

formatedCountDownStr="";
if (jahre>0) formatedCountDownStr=jahreStr+monateStr+tageStr+stundenStr+minutenStr+sekundenStr;
else if (monate>0) formatedCountDownStr=monateStr+tageStr+stundenStr+minutenStr+sekundenStr;
else if (tage>0) formatedCountDownStr=tageStr+stundenStr+minutenStr+sekundenStr;
else if (stunden>0) formatedCountDownStr=stundenStr+minutenStr+sekundenStr;
else if (minuten>0) formatedCountDownStr=minutenStr+sekundenStr;
else if (sekunden>0) formatedCountDownStr=sekundenStr;

setTimeout(name+'.Show()',1000);
}
else
{
formatedCountDownStr="";
}

var formatedTimeString=ReplaceStr("[COUNTDOWN]",formatedCountDownStr,this.text);
if (document.getElementById(this.name+"_DIV")) document.getElementById(this.name+"_DIV").innerHTML=formatedTimeString;
else alert("TTimeCountdown::Show(): DIV '"+this.name+"_DIV' not found!");
}

this.GetMonthNum = function GetMonthNum(abbMonth)
{
var arrMon = new Array("Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec");
for(i=0; i<arrMon.length; i++)
{
if(abbMonth == arrMon[i]) return i+1;
}
}
}
