function formatDate(ADate)
{
  var vDateString=new String(ADate);
  var vDatePattern=/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2}|\d{4})$/;
  var vMatchArray=vDateString.match(vDatePattern); // is the format ok?
  if (vMatchArray==null)
  {
    alert("Date is not in a valid format.")
    return false;
  }

  var vMonth=vMatchArray[1]; // parse date into variables
  var vDay=vMatchArray[3];
  var vYear=vMatchArray[5];
  
  if(vMonth.length<2)
    vMonth=leadingZero(vMonth);
    
  if(vDay.length<2)
    vDay=leadingZero(vDay);
  
  if (vYear<30)
  {
    vYear+=2000;
  }
  else if(vYear<100)
  {
    vYear+=1900;
  }
  
  return vMonth+"/"+vDay+"/"+vYear;
}

function leadingZero(value)
{
  return (value<0||value>9?"":"0")+value;
}

function openWindow(AURL)
{
  var vWindow=window.open(AURL,'ImpactReports','location=no,resizable=yes,toolbar=no,scrollbars=yes,status=yes,directories=no,menubar=no,width=800,height=520');
  //return false;
  return true;
}

function validateDate(ADate)
{
  var vDateString=new String(ADate);
  var vDatePattern=/^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{2}|\d{4})$/;
  var vMatchArray=vDateString.match(vDatePattern); // is the format ok?
  if (vMatchArray==null)
  {
    alert("Date "+ADate+" is not in a valid format.")
    return false;
  }

  var vMonth=vMatchArray[1]; // parse date into variables
  var vDay=vMatchArray[3];
  var vYear=vMatchArray[5];

  if(vMonth<1||vMonth>12)
  {
    // check month range
    alert("Month must be between 1 and 12.");
    return false;
  }
  if(vDay<1||vDay>31)
  {
    alert("Day must be between 1 and 31.");
    return false;
  }
  if((vMonth==4||vMonth==6||vMonth==9||vMonth==11)&&vDay==31)
  {
    alert("Month "+vMonth+" doesn't have 31 days!")
    return false
  }
  if(vMonth==2)
  {
    // check for february 29th
    var vIsLeapYear=((vYear%4==0)&&(vYear%100!=0||vYear%400==0));
    if(vDay>29||(vDay==29&&!vIsLeapYear))
    {
      alert("February "+vYear+" doesn't have "+vDay+" days!");
      return false;
    }
  }
  return true;  // date is valid
}

function validateDateRange(ADateStart,ADateEnd)
{
  var vResult=false;

  if(validateDate(ADateStart))
  {
    if(validateDate(ADateEnd))
    {
      var vDateStart=new Date();
      vDateStart.setTime(Date.parse(ADateStart));

      var vDateEnd=new Date();
      vDateEnd.setTime(Date.parse(ADateEnd));

      vResult=vDateStart.valueOf()<=vDateEnd.valueOf();
    }
  }

  return vResult;
}
