// Date format validator
function check_date(field){
  var checkstr = "0123456789";
  var DateField = field;
  var Datevalue = "";
  var DateTemp = "";
  var seperator = "/";
  var day;
  var month;
  var year;
  var leap = 0;
  var err = 0;
  var i;
  err = 0;
  
  DateValue = DateField.value;

  // Check for short format   
  if ((DateValue.substr(1,1) == "/") || (DateValue.substr(1,1) == "-") || (DateValue.substr(1,1) == ".")) {
    DateValue = '0' + DateValue;
  }   
  if ((DateValue.substr(4,1) == "/") || (DateValue.substr(4,1) == "-" || (DateValue.substr(1,1) == "."))) {
    DateValue = DateValue.substr(0,3) + '0' + DateValue.substr(3, DateValue.length-3);
  }  
    
  // Delete all chars except 0..9
  for (i = 0; i < DateValue.length; i++) {
    if (checkstr.indexOf(DateValue.substr(i,1)) >= 0) {
      DateTemp = DateTemp + DateValue.substr(i,1);
    }
  }
  
  DateValue = DateTemp;
  // Always change date to 8 digits - string
  // if year is entered as 2-digit / always assume 20xx
  if (DateValue.length == 6) {
    DateValue = DateValue.substr(0,4) + '20' + DateValue.substr(4,2); 
  }
  
  if (DateValue.length != 8) {
    err = 19;
  }
  
  // year is wrong if year = 0000
  year = DateValue.substr(4,4);
  if (year == 0) {
    err = 20;
  }
 
  // year is wrong if year = 2003 or lesser.
  validYear = DateValue.substr(4,4);
  if (validYear < 2004) {
    err = 27;
  } 
 
  // Validation of month
  month = DateValue.substr(2,2);
  if ((month < 1) || (month > 12)) {
    err = 21;
  }
  
  // Validation of day
  day = DateValue.substr(0,2);
  if (day < 1) {
    err = 22;
  }
  
  // Validation leap-year / february / day
  if ((year % 4 == 0) || (year % 100 == 0) || (year % 400 == 0)) {
    leap = 1;
  }
  if ((month == 2) && (leap == 1) && (day > 29)) {
    err = 23;
  }
  if ((month == 2) && (leap != 1) && (day > 28)) {
    err = 24;
  }
  
  // Validation of other months
  if ((day > 31) && ((month == "01") || (month == "03") || (month == "05") || (month == "07") || (month == "08") || (month == "10") || (month == "12"))) {
    err = 25;
  }
  if ((day > 30) && ((month == "04") || (month == "06") || (month == "09") || (month == "11"))) {
    err = 26;
    alert("El mes que solicita no tiene mas de 30 días");
  }
  
  // if 00 ist entered, no error, deleting the entry
  if ((day == 0) && (month == 0) && (year == 00)) {
    err = 0; day = ""; month = ""; year = ""; seperator = "";
  }
  
  // if no error, write the completed date to Input-Field (e.g. 13/12/2001)
  if (err == 0) {
    DateField.value = day + seperator + month + seperator + year;     
  }  
   
  // Error-message if err != 0
  else {
    alert("Formato de fecha incorrecto");
    DateField.select();
    DateField.focus();
  }
  
  //else {
  //  if (err = 26) {
  //    alert("El mes que solicita no tiene mas de 30 días");
  //  } else if (err = 27) {
  //    alert("27-Sólo se pueden consultar documentos a partir del año 2004...");
  //  } else {
  //    alert("Fecha incorrecta");     
  //  }      
  //  DateField.select();
  //  DateField.focus();
 // }
}
