function validate_form()
{
  if (document.mform.departing.value!="")
  {
    if (!CheckValidDate(document.mform.departing,'Begindatum reis'))
    {
      return false;
    }
  }
  else
  {
    alert("Gelieve de begindatum van de reis in te vullen");
    return false;
  }

  if ((document.mform.duration.value=="") && (document.mform.returning.value==""))
  {
    alert("Gelieve de reisduur of de datum van thuiskomst aan te geven");
    return false;
  }

  if (document.mform.returning.value!="")
  {
    if (!CheckValidDate(document.mform.returning,'de datum thuiskomst'))
    {
      return false;
    }

    if (!CheckDateDiff(document.mform.departing.value, document.mform.returning.value))
    {
      alert("De datum van thuiskomst kan niet voor de begindatum van de reis liggen");
      return false;
    }
  }
  
  return true;
}

function CheckValidDate(formElement,FormLabel)
{
  /* set up */
  defaultValue = "dd/mm/ccyy";

    /* clicked somewhere else so validate our field */
    if (formElement.value!="")
    {
      /* check the date format */
      if (formElement.value.length!=defaultValue.length)
      {
        alert("Gelieve "+FormLabel+" correct in te voeren (dd/mm/jjjj)");
        formElement.focus();
        return false;
      }

      slash1 = formElement.value.substring(2, 3);
      slash2 = formElement.value.substring(5, 6);

      if ( (slash1!="/") || (slash2!="/") )
      {
        alert("Gelieve "+FormLabel+" correct in te voeren (dd/mm/jjjj)");
        formElement.focus();
        return false;
      }

      dDay = formElement.value.substring(0, 2);
      dMonth = formElement.value.substring(3, 5);
      dYear = formElement.value.substring(6, 10);

      if ( (!isNumber(dDay)) || (dDay.length!=2) )
      {
        alert("Gelieve "+FormLabel+" correct in te voeren (dd/mm/jjjj)");
        formElement.focus();
        return false;
      }
      if ( (!isNumber(dMonth)) || (dMonth.length!=2) )
      {
        alert("Gelieve "+FormLabel+" correct in te voeren (dd/mm/jjjj)");
        formElement.focus();
        return false;
      }
      if ( (!isNumber(dYear)) || (dYear.length!=4) )
      {
        alert("Gelieve "+FormLabel+" correct in te voeren (dd/mm/jjjj)");
        formElement.focus();
        return false;
      }

      /* validate the date */
      if (!validateDate(dDay,dMonth,dYear))
      {
        alert(FormLabel+" is incorrect");
        formElement.focus();
        return false;
      }

      /* compare with todays date */
      nowDate = new Date();

      nowDay   = nowDate.getDate();
      nowMonth = nowDate.getMonth()+1;
      nowYear  = nowDate.getYear();

      if (dYear<nowYear)
      {
        alert("De datum van thuiskomst kan niet voor de begindatum van de reis liggen");
        formElement.focus();
        return false;
      }
      if ( (dMonth<nowMonth) && (dYear<=nowYear) )
      {
        alert("De datum van thuiskomst kan niet voor de begindatum van de reis liggen");
        formElement.focus();
        return false;
      }
      if ( (dDay<nowDay) && (dMonth<=nowMonth) && (dYear<=nowYear) )
      {
        alert("De datum van thuiskomst kan niet voor de begindatum van de reis liggen");
        formElement.focus();
        return false;
      }

      return true;
    }
    else
    {
      return false;
    }
}

function CheckDateDiff(sDate,eDate)
{
  sDay = sDate.substring(0, 2);
  sMonth = sDate.substring(3, 5);
  sYear = sDate.substring(6, 10);

  eDay = eDate.substring(0, 2);
  eMonth = eDate.substring(3, 5);
  eYear = eDate.substring(6, 10);

  if (eYear<sYear)
  {
    return false;
  }
  if ( (eMonth<sMonth) && (eYear<=sYear) )
  {
    return false;
  }
  if ( (eDay<sDay) && (eMonth<=sMonth) && (eYear<=sYear) )
  {
    return false;
  }
      
  return true;
}