function checkDate(idateobj){
  var idate = idateobj.value;
  var year = 0;
  var month = 0;
  var day = 0;
  var months = new Array ('JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DEC');
  var days = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
  var tmonth;
  var j;
  if (idate.match(/^(\d+).(\d+).(\d\d\d\d)$/)){
        year = RegExp.$3;
        month = RegExp.$1;
        day = RegExp.$2;
  }
  else if (idate.match(/^(\d\d\d\d).(\d+).(\d+)$/)){
        year = RegExp.$1;
        month = RegExp.$2;
        day = RegExp.$3;
  }
  else if (idate.match(/^(\d+).([a-zA-Z]{3}).(\d\d)$/)){
        tmonth = RegExp.$2.toUpperCase();
        year = RegExp.$3;
        day = RegExp.$1;
        month = 0;
        for (j=0;j<12;j++){
          if (months[j]==tmonth){
            month = j+1;
          }
        }
        if (month == 0) { showBadDate(idate, 'Invalid Month'); return false; }
  }
  else if (idate.match(/^(\d\d).([a-zA-Z]{3}).(\d\d\d\d)$/)){
       tmonth = RegExp.$2.toUpperCase();
       year = RegExp.$3;
       day = RegExp.$1;
       month = 0;
       for (j=0;j<12;j++){
         if (months[j]==tmonth){
           month = j+1;
         }
       }
       if (month == 0) { showBadDate(idate,"Invalid month"); return false; }
  }
  else if (idate.match(/^(\d+).(\d+).(\d+)/)){
        month =RegExp.$1;
        day = RegExp.$2;
        year = RegExp.$3;
  } else{
    showBadDate(idate,"Date does not match normal patterns");
    return false;
  }
  if (year<51){
    year = (year * 1) +  2000;
  }

  if ((year>50) && (year < 100)){
    year = (year * 1) + 1900;
  }
  if ((year % 4) == 0){
    days[1] = 29;
  }
  if (month < 1){
    showBadDate(idate,"Invalid month");
    return false;
  }
  if (month > 12) {
    showBadDate(idate,"Invalid month");
    return false;
  }
  if (day < 1){
    showBadDate(idate,"Invalid day number");
    return false;
  }
  if (day > days[month-1]){
    showBadDate(idate,"Day > number of days in month");
    return false;
  }
  month = month.toString();
  day = day.toString();
  year = year.toString();
  month = (month.length<2) ? ('0'+month):month;
  day = (day.length<2) ? ('0'+day):day;
  idateobj.value =  year + '-' + month + '-' + day;
  idateobj.value = month + '/' + day + '/' + year;
  return true;



}


function checkTime(itimeobj){
  var itime = itimeobj.value;
  var hours;
  var mins;
//alert(itime);
  if (itime.match(/^(\d\d).(\d\d)/)){
     hours = RegExp.$1;
     mins = RegExp.$2;
  } else if (itime.match(/^(\d).(\d\d)/)){
     hours = '0' + RegExp.$1;
     mins = RegExp.$2;
  } else if (itime.match(/^(\d\d)/)){
     hours = RegExp.$1;
     mins = "00";
  } else if (itime.match(/^(\d)/)){
     hours = '0' + RegExp.$1;
     mins = "00";
  } else  {
    window.alert('Please enter a valid time');
    return false;
  }

  itimeobj.value = hours + ":" + mins;
  return true;
   
}
function showBadDate(idate, message){
   window.alert('Please enter a valid date '+idate+', '+message);
}


function checkHours(hoursobj){
  var hours = parseFloat(hoursobj.value);
  var elapsed = parseFloat(document.getElementById('elapsed').value);
  var alreadyWorked = parseFloat(document.getElementById('alreadyWorked').value);
  hours += 0;
  elapsed += 0;
  alreadyWorked += 0;
  var msg;
  if (hours == null) {
     alert('Please enter some hours');
     return false;
  }
  if (hours == 0) {
     if (confirm("No hours worked?")){
 	return true;
     } else {
        return false;
     }     
  }
  if ((hours+alreadyWorked) > elapsed)  {
     msg = "Hours cannot be greater than elapsed hours.";
     if (alreadyWorked > 0){
       msg = msg + "(You already recorded " + alreadyWorked + " hours.)";
     }
     hoursobj.value = 0;
     alert(msg);
     return false;
  }
  return true;
}

function checkCoordHours(hoursobj){
  var hours = parseFloat(hoursobj.value);
  if (hours == null) {
     alert("Please enter some hours");
     return false;
  }
     if (confirm("No hours worked?")){
 	return true;
     } else {
        return false;
     }     
  return true;
}
