


// ############################################################################
// ### y2k:
// ############################################################################
function y2k(number) {
    rtn = number;
    if (rtn>=0 && rtn<50)
        rtn += 2000;
    else
    if (rtn>=50 && rtn<100)
        rtn += 1900;
    return (rtn < 1000) ? rtn + 1900 : rtn;
}

// ############################################################################
// ### isDate:
// ###
// ### checks if date passed is valid
// ### will accept dates in following format:
// ### isDate(dd,mm,ccyy), or
// ### isDate(dd,mm) - which defaults to the current year, or
// ### isDate(dd) - which defaults to the current month and year.
// ### Note, if passed the month must be between 1 and 12, and the
// ### year in ccyy format.
// ############################################################################
function isDate (day,month,year) {
     var today = new Date();
     year = ((!year) ? y2k(today.getYear()):year);
     month = ((!month) ? today.getMonth():month-1);
     if (!day) return false
     var test = new Date(year,month,day);
     if ( (y2k(test.getYear())==year || y2k(test.getYear())==year+1900 || y2k(test.getYear())==year+2000) &&
          (month == test.getMonth()) &&
          (day == test.getDate()) )
     {
         return true;
     } else
     {
         return false;
     }
}

// ############################################################################
// ### parseDateInt:
// ############################################################################
function parseDateInt(s) {
  while (s.length > 0 && s.indexOf("0") == 0)
    s = s.substring(1);
  if (s.length == 0)
    return 0;
  else
    return parseInt(s);
}

// ############################################################################
// ### validDate:
// ############################################################################
function validDate(s) {
  return (getDate(s) != null)
}

// ############################################################################
// ### getDateToString:
// ############################################################################
function getDateToString(d) {
  var day = d.getDate();
  var month = d.getMonth()+1;
  var year = y2k(d.getYear());
  return ( (day < 10) ? "0" + day : day ) +
    "." + ( (month < 10) ? "0" + month : month ) +
    "." + year;
}

// ############################################################################
// ### getDate:
// ############################################################################
function getDate(s) {
  var now = new Date();
  var day = now.getDate();
  var month = now.getMonth()+1;
  var year = now.getYear();
  var daySep = s.indexOf(".",0);
  if (daySep >= 0) {
    var monthSep = s.indexOf( "." , daySep + 1 );
    if (monthSep >= 0) {
        day   = parseDateInt(s.substring( 0 , daySep ));
        month = parseDateInt(s.substring( daySep + 1 , monthSep ));
        year  = parseDateInt(s.substring( monthSep + 1 ));
    } else {
        day = parseDateInt(s.substring( 0 , daySep ));
        month = parseDateInt(s.substring( daySep + 1 ));
    }
  } else
     day = parseDateInt(s);

  if (isNaN(day) || isNaN(month) || isNaN(year))
      return null
  else {
      if (!isDate(day,month,year))
         return null;
      else {
         month = month-1;
         year = y2k(year);
         return new Date(year,month,day);
      }
  }
}

// ############################################################################
// ### dateInputChange:
// ############################################################################
function dateInputChange(inp) {
  if (inp.value.length > 0) {
    if (!validDate(inp.value)) {
      alert("'" + inp.value + "' ist kein gültiges Datum!");
      inp.focus();
      return false;
    }
    else {
      inp.value = getDateToString(getDate(inp.value));
      return true;
    }
  }
  return true;
}

// ############################################################################
// ### daysElapsed:
// ############################################################################
function daysElapsed(date1,date2) {
      var difference =
          Date.UTC(y2k(date1.getYear()),date1.getMonth(),date1.getDate(),0,0,0)
        - Date.UTC(y2k(date2.getYear()),date2.getMonth(),date2.getDate(),0,0,0);
      return difference/1000/60/60/24;
  }