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


    // 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+" J,  ":jahreStr=jahre+" J,  ";
      (monate!=1) ? monateStr=monate+" M,  ":monateStr=monate+" M,  ";
      (tage!=1) ? tageStr=tage+" T,  ":tageStr=tage+" T,  ";
      (stunden!=1) ? stundenStr=stunden+" Std,  ":stundenStr=stunden+" Std,  ";
      (minuten!=1) ? minutenStr=minuten+" Min, ":minutenStr=minuten+" Min, ";
      if(sekunden<10) sekundenStr="0"+sekunden;
      (sekunden!=1) ? sekundenStr=sekunden+" Sek":sekundenStr=sekunden+" Sek";

      var 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 var formatedCountDownStr="";

    var formatedTimeString=ReplaceStr("[COUNTDOWN]",formatedCountDownStr,this.text);

    if (document.getElementById(this.name+"_DIV")) document.getElementById(this.name+"_DIV").innerHTML="<span style='font-size:10px; color:#0000FF;'>"+formatedTimeString+"</span>";
  }

  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;
    }
  }

}
