
function checkDate(ckDate) {
  // Assumes that date will be passed in the form dd.mm.yy with 
  if (ckDate.value.length != 0 && (
      ckDate.value.length != 8 ||
     (ckDate.value.substr(0,1) <  "0" || ckDate.value.substr(0,1) >  "3") ||
     (ckDate.value.substr(1,1) <  "0" || ckDate.value.substr(1,1) >  "9") ||
     (ckDate.value.substr(2,1) != ".") ||
     (ckDate.value.substr(3,1) <  "0" || ckDate.value.substr(3,1) >  "1") ||
     (ckDate.value.substr(4,1) <  "0" || ckDate.value.substr(4,1) >  "9") ||
     (ckDate.value.substr(5,1) != ".") ||
     (ckDate.value.substr(6,1) <  "0" || ckDate.value.substr(6,1) >  "9") ||
     (ckDate.value.substr(7,1) <  "0" || ckDate.value.substr(7,1) >  "9")
     )) {
       alert ("The date " + ckDate.value + " must be in the format dd.mm.yy\ne.g. 13.03.01 for 13th March, 2001");
       ckDate.value = "";
       ckDate.focus();
       return false;
  }

  var ckDay  = eval(ckDate.value.substr(0,2));
  var ckMon  = eval(ckDate.value.substr(3,2));
  var ckYear = eval(ckDate.value.substr(6,2));

  if ((ckDay > 31) || 
      (ckMon > 12) || 
      (ckDay == 31 && (ckMon == 4 || ckMon == 6 || ckMon == 9 || ckMon == 11)) ||
      (ckMon == 2  && ckDay> 29) ||
      (ckMon == 2  && ckDay == 29 && ckYear % 4 != 0)) {
        alert ("The date " + ckDate.value + " that you entered does not exist");
        ckDate.value = "";
        ckDate.focus();
        return false;
  }
}

