function checkform ( form ) {
  // see http://www.thesitewizard.com/archive/validation.shtml
  // for an explanation of this script and how to use it on your
  // own website
  var isError = false;
  var isDates = true;
  var listErrors = '';
  // ** START **
  if (form.r1.checked || form.r2.checked) {
      if (form.des.value == "") {
        errorElement('des');
        isError = true;
        listErrors += 'Destination Required<br>';
      }
      if (form.dep.value == "" && form.r1.checked) {
        errorElement('dep');
        isError = true;
        listErrors += 'Departure City Required<br>';
      }
      if (!isDate(form.dd.value)) {
        errorElement('dd');
        isError = true;
        isDates = false;
        listErrors += 'Departing Date Required<br>';
      }
      if (!isDate(form.rd.value)) {
        errorElement('rd');
        isError = true;
        isDates = false;
        listErrors += 'Returning Date Required<br>';
      }
      if (isDates == true) {
        var date1 = new Date(form.rd.value)
        var date2 = new Date(form.dd.value)
        if (date1 <= date2) {
          isError = true;
          listErrors += 'Invalid Dates Specified<br>';
        }
      }
  }
  else if (form.r3.checked) {
      if (form.cru.value == "") {
        errorElement('cru');
        isError = true;
        listErrors += 'Cruise Destination Required<br>';
      }
      if (form.week.value == "") {
        errorElement('week');
        isError = true;
        listErrors += 'Departure Week Required<br>';
      }
  }
  // ** END **
  if (isError == true) {
    errorList('showerror',listErrors);
    return false ;
  }
  else {
    run_search();
    return true;
  }
}

function isDate(dateStr) {

    var datePat = /^(\d{1,2})(\/|-)(\d{1,2})(\/|-)(\d{4})$/;
    var matchArray = dateStr.match(datePat); // is the format ok?

    if (matchArray == null) {
        return false;
    }

    month = matchArray[1]; // p@rse date into variables
    day = matchArray[3];
    year = matchArray[5];

    if (month < 1 || month > 12) { // check month range
        return false;
    }
    if (day < 1 || day > 31) {
        return false;
    }
    if ((month==4 || month==6 || month==9 || month==11) && day==31) {
        return false;
    }
    if (month == 2) { // check for february 29th
        var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
        if (day > 29 || (day==29 && !isleap)) {
            return false;
        }
    }
    return true; // date is valid
}

function errorList (elementId,str) {
    var element;
    if (document.all)
    element = document.all[elementId];
    else if (document.getElementById)
    element = document.getElementById(elementId);
    if (element && element.style)
    element.innerHTML = str + '<br>';
}

function errorElement (elementId) {
    var element;
    if (document.all)
    element = document.all[elementId];
    else if (document.getElementById)
    element = document.getElementById(elementId);
    if (element && element.style)
    element.style.backgroundColor = '#EA4647';
}

function showHF() {
    showElement('des1');
    showElement('des2');
    hideElement('cru1');
    hideElement('cru2');
    showElement('dep1');
    showElement('dep2');
    hideElement('wee1');
    hideElement('wee2');
    showElement('tim1');
    showElement('tim2');
    showElement('tim3');
    showElement('tim4');     
    document.matrix.t[0].checked = true;
}

function showH() {
    showElement('des1');
    showElement('des2');
    hideElement('cru1');
    hideElement('cru2');
    hideElement('dep1');
    hideElement('dep2');
    hideElement('wee1');
    hideElement('wee2');
    showElement('tim1');
    showElement('tim2');
    showElement('tim3');
    showElement('tim4');        
    document.matrix.t[1].checked = true;
}

function showC() {
    hideElement('des1');
    hideElement('des2');
    showElement('cru1');
    showElement('cru2');
    hideElement('dep1');
    hideElement('dep2');
    showElement('wee1');
    showElement('wee2');
    hideElement('tim1');
    hideElement('tim2');
    hideElement('tim3');
    hideElement('tim4');        
    document.matrix.t[2].checked = true;
}