 startList = function() {
 	if (document.all && document.getElementById) {
 		navRoot = document.getElementById("mainNav");
 		for (i=0; i < navRoot.childNodes.length; i++) {
 			node = navRoot.childNodes[i];
 			if (node.nodeName=="LI") {
 				node.onmouseover=function() {
 					this.className+=" over";
 				}
 				node.onmouseout=function() {
 					this.className=this.className.replace(" over", "");
 				}
 			}
 		}
 	}
}

function toggleAddressRequired(field) {
   var cname = "label";
   if (field.checked) {
   	cname = "labelrequired";
   }
   document.getElementById('streetLabel').className=cname;
   document.getElementById('cityLabel').className=cname;
   document.getElementById('stateLabel').className=cname;
   document.getElementById('zipLabel').className=cname;
}

function toggleFaxRequired(field) {
   var cname = "label";
   if (field.checked) {
   	cname = "labelrequired";
   }
   document.getElementById('faxLabel').className=cname;
}

function is_valid_textfield(frm, frmFieldName, msg, errFlagArray) {
  value = frm.elements[frmFieldName].value;
  if (value == '' && !errFlagArray[frmFieldName]) {
    errFlagArray[frmFieldName] = true;
    return '\n - ' + msg;
  }
  return '';
}

function is_valid_email(frm, frmFieldName, msg, errFlagArray) {
  value = frm.elements[frmFieldName].value;
  var regex = /^((\"[^\"\f\n\r\t\v\b]+\")|([\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+(\.[\w\!\#\$\%\&'\*\+\-\~\/\^\`\|\{\}]+)*))@((\[(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))\])|(((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9]))\.((25[0-5])|(2[0-4][0-9])|([0-1]?[0-9]?[0-9])))|((([A-Za-z0-9\-])+\.)+[A-Za-z\-]+))$/;
  if (value != '' && !regex.test(value) && !errFlagArray[frmFieldName]) {
    errFlagArray[frmFieldName] = true;
    return '\n - ' + msg;
  }
  return '';
}

function is_valid_select(frm, frmFieldName, isMultiple, msg, errFlagArray) {
  if (isMultiple) {
    value = new Array();
    var valueIdx = 0;
    var frmKey = frmFieldName + '[]';
    for (var i = 0; i < frm.elements[frmKey].options.length; i++) {
      if (frm.elements[frmKey].options[i].selected) {
        value[valueIdx++] = frm.elements[frmKey].options[i].value;
      }
    }
  
    if (value == '' && !errFlagArray[frmFieldName]) {
      errFlagArray[frmFieldName] = true;
      return '\n - ' + msg;
    }
  }
  else {
    value = frm.elements[frmFieldName].selectedIndex == -1? '': frm.elements[frmFieldName].options[frm.elements[frmFieldName].selectedIndex].value;
    if (value == '' && !errFlagArray[frmFieldName]) {
      errFlagArray[frmFieldName] = true;
      return '\n - ' + msg;
    }
  }
  return '';
}

function is_valid_radio(frm, frmFieldName, msg, errFlagArray) {
  value = '';
  var els = 'length' in frm.elements[frmFieldName]? frm.elements[frmFieldName]: [ frm.elements[frmFieldName] ];
  for (var i = 0; i < els.length; i++) {
    if (els[i].checked) {
      value = els[i].value;
    }
  }
  if (value == '' && !errFlagArray[frmFieldName]) {
    errFlagArray[frmFieldName] = true;
    return '\n - ' + msg;
  }
  return '';
}

function is_valid_group(frm, frmFieldName, nItems, msg, errFlagArray) {
  var _qfGroups = {};
  for (var j=1; j<=nItems;j++) {
  	var key = frmFieldName + '[' + j + ']';
  	_qfGroups[key] = true;
  }
  value = new Array();
  var valueIdx = 0;
  for (var i = 0; i < frm.elements.length; i++) {
    var _element = frm.elements[i];
    if (_element.name in _qfGroups) {
      switch (_element.type) {
        case 'checkbox':
        case 'radio':
          if (_element.checked) {
            value[valueIdx++] = _element.value;
          }
          break;
        case 'select-one':
          if (-1 != _element.selectedIndex) {
            value[valueIdx++] = _element.options[_element.selectedIndex].value;
          }
          break;
        case 'select-multiple':
          var tmpVal = new Array();
          var tmpIdx = 0;
          for (var j = 0; j < _element.options.length; j++) {
            if (_element.options[j].selected) {
              tmpVal[tmpIdx++] = _element.options[j].value;
            }
          }
          if (tmpIdx > 0) {
            value[valueIdx++] = tmpVal;
          }
          break;
        default:
          value[valueIdx++] = _element.value;
      }
    }
  }

  if (value == '' && !errFlagArray[frmFieldName]) {
    errFlagArray[frmFieldName] = true;
    return '\n - ' + msg;
  }
  return '';
}

function validate_subscribeform(frmid) {
  var value = '';
  var errFlag = new Array();
  _qfMsg = '';
  var frm = document.getElementById(frmid);

  _qfMsg = _qfMsg + is_valid_textfield(frm, 'email', 'Please enter your email address.', errFlag);
  _qfMsg = _qfMsg + is_valid_email(frm, 'email', 'Please enter a valid email address.', errFlag);  

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  frm.submit();
  return true;
}

function validate_reservationform(frmid) {
  var value = '';
  var errFlag = new Array();
  _qfMsg = '';
  var frm = document.getElementById(frmid);
  
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'first_name', 'Please enter your first name.', errFlag);
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'last_name', 'Please enter your last name.', errFlag);
  if (document.getElementById('bcmm').checked) {
  	// validate address since mail is checked for preferred contact method
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'street1', 'Please enter your street address.', errFlag);
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'city', 'Please enter your city.', errFlag);
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'state', 'Please enter your state.', errFlag);
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'zip', 'Please enter your zip code.', errFlag);
  }
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'email', 'Please enter your email.', errFlag);
  _qfMsg = _qfMsg + is_valid_email(frm, 'email', 'Please enter a valid email.', errFlag);  
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'phone', 'Please enter your phone.', errFlag);
  _qfMsg = _qfMsg + is_valid_group(frm, 'best_contact_method', 3, 'Please select the best way to reach you.', errFlag);
  // _qfMsg = _qfMsg + is_valid_textfield(frm, 'arrival_date', 'Please enter your preferred arrival date.', errFlag);
  // _qfMsg = _qfMsg + is_valid_textfield(frm, 'departure_date', 'Please enter your preferred departure date.', errFlag);
  _qfMsg = _qfMsg + is_valid_group(frm, 'which_villa', 5, 'Please select a Seaside Villa.', errFlag);

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  frm.submit();
  return true;
}

function validate_eventform(frmid) {
  var value = '';
  var errFlag = new Array();
  _qfMsg = '';
  var frm = document.getElementById(frmid);

  _qfMsg = _qfMsg + is_valid_textfield(frm, 'rfp_date', 'Please enter the date the proposal must be received.', errFlag);
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'first_name', 'Please enter your first name.', errFlag);
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'last_name', 'Please enter your last name.', errFlag);
  if (document.getElementById('bcmm').checked) {
  	// validate address since mail is checked for preferred contact method
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'street1', 'Please enter your street address.', errFlag);
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'city', 'Please enter your city.', errFlag);
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'state', 'Please enter your state.', errFlag);
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'zip', 'Please enter your zip code.', errFlag);
  }  
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'email', 'Please enter your email.', errFlag);
  _qfMsg = _qfMsg + is_valid_email(frm, 'email', 'Please enter a valid email.', errFlag);  
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'phone', 'Please enter your phone.', errFlag);
  if (document.getElementById('bcmf').checked) {
  	// validate fax since fax is checked for preferred contact method
  	_qfMsg = _qfMsg + is_valid_textfield(frm, 'fax', 'Please enter your fax number.', errFlag);
  }  
  _qfMsg = _qfMsg + is_valid_group(frm, 'best_contact_method', 4, 'Please select how we should respond to you.', errFlag);

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  frm.submit();
  return true;
}

function validate_postcardform(frmid) {
  var value = '';
  var errFlag = new Array();
  _qfMsg = '';
  var frm = document.getElementById(frmid);

  _qfMsg = _qfMsg + is_valid_radio(frm, 'postcard', 'Please select a photo.', errFlag);
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'sender_name', 'Please enter your name.', errFlag);
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'sender_email', 'Please enter your email address.', errFlag);
  _qfMsg = _qfMsg + is_valid_email(frm, 'sender_email', 'Please enter a valid email address.', errFlag);
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'recipient_name', 'Please enter a recipient name.', errFlag);
  _qfMsg = _qfMsg + is_valid_textfield(frm, 'recipient_email', 'Please enter the recipient email address.', errFlag);
  _qfMsg = _qfMsg + is_valid_email(frm, 'recipient_email', 'Please enter a valid recipient email address.', errFlag);

  if (_qfMsg != '') {
    _qfMsg = 'Invalid information entered.' + _qfMsg;
    _qfMsg = _qfMsg + '\nPlease correct these fields.';
    alert(_qfMsg);
    return false;
  }
  frm.submit();
  return true;
}