//Check for valid date.
//Valid dates are formatted DD/MM/YYYY.
//
//Version: 1.0
//Author: Christoffer Jerrebo
//History: 
//Version 1.0
//- First release
function checkDate(date) {
  var sDate = new String(date);
  if (sDate.length == 0) {
    //Empty string
    return true;
  }

  var aDateArray = sDate.split('/');

  //Check two '/'
  if (aDateArray.length != 3) {
    return false;
  }

  //Check day
  if (aDateArray[0].length != 1 && aDateArray[0].length != 2) {
    return false;
  }
  var iDay = parseInt(aDateArray[0], 10);
  if (isNaN(iDay) || iDay <= 0 || iDay > 31) {
    return false;
  }
  //Check month
  if (aDateArray[1].length != 1 && aDateArray[1].length != 2) {
    return false;
  }
  var iMonth = parseInt(aDateArray[1], 10);
  if (isNaN(iMonth)) {
    return false;
  }

  iMonth -= 1; //0 - Jan, 1 - Feb, ..., 11 - Dec
  if (iMonth < 0 || iMonth > 11) {
    return false;
  }
  //Check year
  if (aDateArray[2].length != 4) {
    return false;
  }
  var iYear = parseInt(aDateArray[2], 10);
  if (isNaN(iYear) || iYear < 1900 || iYear > 9999) {
    return false;
  }

  //Check if date is correct
  var datDate = new Date(iYear, iMonth, iDay);
  if (isNaN(datDate)) {
    return false;
  }
  //Check if day is correct, 31th of February is a bad format
  if ( (iDay != datDate.getDate()) || 
       (iMonth != datDate.getMonth()) || 
       (iYear != datDate.getFullYear()) ) {
    return false;
  }
  return true;
}
