  var date_Months = ["Januar", "Februar", "März", "April", "Mai", "Juni","Juli", "August", "September", "Oktober", "November", "Dezember"];


  function date_CalculateJulianDay(aday,amonth,ayear)
  {
    var day = parseInt(aday);
    var month = parseInt(amonth);
    var year = parseInt(ayear);
    a = Math.floor((14 - month) / 12);
    y = year + 4800 - a;
    m = month + (12 * a) -3;
    j = day + Math.floor(((153 * m) + 2) / 5) + (365 * y) + Math.floor(y / 4) - Math.floor(y / 100) + Math.floor(y / 400) - 32045;

    return j;
  }


  function date_WeekOfYear(day,month,year)
  {
    j = date_CalculateJulianDay(day,month,year);
    a = (j + 31741 - (j % 7));
    a = a % 146097;
    a = a % 36524;
    a = a % 1461;
    l = Math.floor(a / 1460);
    b = ((a - l) % 365) + l;
    w = Math.floor(b / 7) + 1;

    return w;
  }


  function date_LeftPadStr(str,len,pad)
  {
    var result = ''+str;
    while (result.length<len)
    {
      result = pad + result;
    }
    return result;
  }


  function date_OnlyDate(date)
  {
    var ndate = new Date;
    ndate.setMilliseconds(0);
    ndate.setSeconds(0);
    ndate.setMinutes(0);
    ndate.setHours(0);
    return ndate;
  }


  function date_Str2Date(datestr)
  {
    var date = new Date();
    var parts = datestr.split(".");
    date = date_OnlyDate(date);
    if (parts.length==1)
    {
      var day = parseInt(parts[0]);
      if ((day>0) && (day<31)) date.setDate(day);
    }
    if (parts.length==2)
    {
      var day = parseInt(parts[0]);
      if ((day>0) && (day<32)) date.setDate(day);

      var month = parseInt(parts[1]);
      if ((month>0) && (month<13)) date.setMonth(month-1);
    }
    if (parts.length==3)
    {
      var day = parseInt(parts[0]);
      if ((day>0) && (day<32)) date.setDate(day);

      var month = parseInt(parts[1]);
      if ((month>0) && (month<13)) date.setMonth(month-1);
      
      var year = parseInt(parts[2]);
      if ((year>0) && (year<100)) date.setYear(year);
      if ((year>100) && (year<9999)) date.setFullYear(year);
    }
    return date;
  }


  function date_Date2Str(date,format)
  {
    if (!format) format="DD.MM.YYYY";
    var result = format;
    result = result.replace(/DD/,date_LeftPadStr(date.getDate(),2,'0'));
    result = result.replace(/MM/,date_LeftPadStr(date.getMonth()+1,2,'0'));
    result = result.replace(/YYYY/,date.getFullYear());
    return result;
  }