////////////////////////////////////////////////
// JavaScript Edit Date                       //
// Author: rick                               //
// Date:   11/14/00                           //
//                                            //
// this function accepts a string of          //
//  month, day, year in any length format.    //
//  Retrictions are year cannot be < 1900     //
//  or > 2078.                                //
//  (1/1/1 or 01/1/2000 etc.)                 //
//  function returns true if date is valid,   //
//           false is date is invalid.        //
//                                            //
//  To call the function do:                  //
//     if (!(parseDate(szDate)))              //
//        alert("Invalid Date")               //
////////////////////////////////////////////////
function parseDate(Date)
{
 var szSw=0;
 var month="";
 var day="";
 var year="";
 var daysnmonth;
 var y = 0;
  //
  // put string date in month, day, year buckets.
  //
  for (i = 0; i < Date.length; i++)
  { 
   // Is /?
   var c = Date.charAt(i);
   if (c == "/")
   {
      szSw += 1;
      y = 0;
    } else
    {
      if (szSw == 0) month += c;
      if (szSw == 1) day += c;
      if (szSw == 2) year += c;
      y += 1;
    }
  } 
  //
  // make sure numeric.
  //
  if (isNaN(year)) return false;
  if (isNaN(month)) return false;
  if (isNaN(day)) return false;
  //
  // integer year, month, day
  //
  var iadd = 0;
  if (year.length < 3) {
      iadd = 1;
  }
  var intYear = parseInt(year);
  if (iadd == 1)
     {
      intYear = intYear + 2000
     }
  if (intYear < 1900) return false;
  if (intYear > 2078) return false;
  var intMonth = parseInt(month);
  var intDay = parseInt(day);
  if (intYear < 0) return false;
  if (isNaN(intYear)) return false;
  if ((intMonth < 0) || (intMonth > 12)) return false;
  if (intDay < 0) return false;
  //
  // leap year?
  //
  if (((intYear % 4)==0) && ((intYear % 100)!=0) || ((intYear % 400)==0))
     var leapsw=true;
  else
    var leapsw=false;
  //
  // days in month?
  //
  if (intMonth==1 || intMonth==3 || intMonth==5 || intMonth==7 || intMonth==8 ||intMonth==10 || intMonth==12) daysnmonth=31;
  else if (intMonth==4 || intMonth==6 || intMonth==9 || intMonth==11) daysnmonth=30;
  else if (intMonth==2)
       {
        if (leapsw==true) daysnmonth=29;
        else daysnmonth=28;
       }
 if (intDay > daysnmonth) return false; 
 //
 // date is a good one.
 //
 return true;                         
}

