var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec");
function formatDate(field)
{
  var dateStr = field.value;
  var fixedDateStr = replaceAll(dateStr, "-", " ");
  var date = new Date(fixedDateStr);

  if (isNaN(date) || date == "Invalid Date")
  {
    fixedDateStr = replaceAll(dateStr, "-", "/");
    date = new Date(fixedDateStr);
  }

  var newDateStr;
  if (dateStr == "")
  {
    newDateStr = "";
  }
  else if(isNaN(date) || date == "Invalid Date")
  {
    alert("Invalid date - Format is mm/dd/yy");
    newDateStr = "mm/dd/yy";
  }
  else
  {
    newDateStr = formatDateObject( date );
  }
  field.value = newDateStr;
}

function formatDateObject( date )
{
  return pad(date.getMonth() + 1) + "/" + pad(date.getDate()) + "/" + pad(date.getFullYear() % 100);
}

function formatMonthYear(field)
{
  var dateString = field.value;
  match = (new RegExp("^(\\d+)/(\\d+)(/(\\d+))?$")).exec(dateString);
  var date = "Invalid Date";

  if ( match != null )
  {
    var month = match[1] - 1;
    var day;
    var year;
    if ((match[4] == null) || (match[4].length == 0))
    {
      day   = 1;
      year  = match[2]-0;
    }
    else
    {
      day = match[2]-0;
      year = match[4]-0;
    }

    if ( year < 1900 ) year += ( year > 70 ? 1900 : 2000 );

    date = new Date(year,month,day,0,0,0,0);

    if ((month > (date.getMonth() + 1)) || (day > date.getDate()))
      date = "Invalid Date";
  }

  if(isNaN(date) || date == "Invalid Date")
  {
    alert("Invalid date - Format is mm/yy");
    field.value = "";
  }
  else
  {
    field.value = pad(date.getMonth() + 1) + "/" + pad(date.getFullYear());
  }
}


function pad(num)
{
  if (num < 10) return "0" + num;
  return num;
}

function replaceAll(s, t, u)
{
   /*
   **  Replace a token in a string
   **    s  string to be processed
   **    t  token to be found and removed
   **    u  token to be inserted
   **  returns new String
   */
   i = s.indexOf(t);
   r = "";
   if (i == -1) return s;
   r += s.substring(0,i) + u;
   if ( i + t.length < s.length)
     r += replaceAll(s.substring(i + t.length, s.length), t, u);
   return r;
}

function parseDate(dateString)
{
  var outDate = null;
  match = (new RegExp("^\\D*(\\d+)\\D+(\\d+)\\D+(\\d+)\\D*$")).exec(dateString);
  if ( match != null ) {
    var month = match[1] - 1;
    var day   = match[2];
    var year  = match[3]-0;
    if ( year < 1900 ) year += ( year > 70 ? 1900 : 2000 );
    outDate = new Date(year,month,day,0,0,0,0);
  }
  return outDate;
}

