function checkFormPage1(form) {
  var count  = form.count.value;
  
  if(multiSelectValidation(form.dates) == false) {
    alert('You must select at least one date.');
    return false;
  }

  if(!form.regtype[0].checked && !form.regtype[1].checked && !form.regtype[2].checked) {
    alert('Please select a reservation type.');
    return false;
  }
  
  if(form.regtype[1].checked) {
    if(!isNumeric(count) || count == 0) {
      alert('Please specify how many are in the group.');
      form.count.focus();
      return false;
    }
  }
  return true;
}

function checkFormPage2(form, count) {
  var requiredFields = new Array('first_name','last_name','address_1','city','state','zip','phone');
  var participantFields = new Array('first_name','last_name','age','gender','emergency_contact', 'emergency_phone');
  for(i=0; i<participantFields.length; i++) {
    if(checkPartField(participantFields[i], count) == false) return false;
  }
  for(i=0; i<requiredFields.length; i++) {
    if(emptyValidation(form[requiredFields[i]]) == false) return false;
  }
  if(emailValidation(form.email, 'Email') == false) return false;
  if(form.email.value != form.email_confirm.value) {
    alert('The email and email confirmation fields do not match.');
    form.email_confirm.focus(); form.email_confirm.select();
    return false;
  }
  return true;
}

function checkFormPage3(form) {
  var requiredFields = new Array('b_name', 'b_address_1', 'b_city', 'b_state', 'b_zip', 'card_number', 'expiration_month', 'expiration_year');
  for(i=0; i<requiredFields.length; i++) {
    if(emptyValidation(form[requiredFields[i]]) == false) return false;
  }
  form.submit.disabled = true;
  return true;
}

function changeType(type) {
  if(type == 'individual') {
    Element.hide('group_count');
  } else if(type == 'group') {
    Element.show('group_count');
  }
}

function changeHiking(el, option) {
  var id = el.name.split('_')[0]+'_'+el.name.split('_')[1];
  var cadre = id+'_cadre';
  var regular = id+'_regular';
  var camping = id+'_camping';
  if(option == 'cadre' && el.checked) {
    $(camping).disabled = true;
    $(camping).checked = false;
    $(regular).checked = false;
  } else if(option == 'regular') {
    $(camping).disabled = false;  
    $(cadre).checked = false;  
  }
  if($(cadre).checked == false && $(regular).checked == false ) {
    $(camping).disabled = true;    
    $(camping).checked = false;
  }
}

function toggleDescendant(el) {
  var id = el.name.split('_')[0];
  if(el.checked == true)
    Element.show(id+'_member_name');
  else
    Element.hide(id+'_member_name');
}

function toggleConfirm(el) {
  var status = el.checked;
  $('page_2_submit').disabled = status ? false : true;
}

function goBack() {
  history.go(-1);
}

//----FORM-VALIDATION FUNCTIONS-----//
function emptyValidation(field,name,size) {
  if (!size) { size = 0; }
  if (!name) { name = field.name; }
  if (field.value.length <= size) { 
    if (field.value.length == 0) { var msg = 'The "'+name+'" field cannot be empty.'; }
    else { var msg = 'The "'+name+'" field cannot must be at least '+ size +' characters.'; }
    alert(msg);
    field.focus(); 
    return false; 
  }
}

function passwordValidation(password,confirm,size) {
  if (password.value != confirm.value) { var msg = 'The passwords did not match.'; }
  else if (password.value == "") { var msg = 'The password cannot be blank.'; }
  else if (password.value.length < size) { var msg = 'The password must be at least ' + size + ' characters.'; }
  if (msg) {
    alert(msg); 
    password.focus();
    return false;
  }
}

function emailValidation(field,name) {
  if (!name) { name = field.name; }
  var apos=field.value.indexOf("@"); 
  var dotpos=field.value.lastIndexOf("."); 
  var lastpos=field.value.length-1; 
  if (apos<1 || dotpos-apos<2 || lastpos-dotpos>3 || lastpos-dotpos<2) { 
    alert('The "'+name+'" field must be a valid email address.'); 
    field.focus(); 
    return false; 
  }
}

function multiValidation(field, name) {
  for (var i=0; i < field.length; i++) { 
    if (field[i].checked) { 
      return true;
      break;
    }
  } 
  alert('The "'+name+ '" field is required.'); 
  return false; 
}

function multiSelectValidation(field, name) {
  for (var i=0; i < field.length; i++) { 
    if (field[i].value) { 
      return true;
      break;
    }
  } 
  //alert('The "'+name+ '" field is required.'); 
  return false;   
}

function checkPartField(name, count) {
  var field = null;
  for(var j = 1; j <= count; j++) {
    if($F(j+'_'+name) == '') {
      alert('Please fill out the "'+name+'" fields for all participants.');
      return false;
    }
  }
  return true;
}


// This turns all the titles into tooltips
Event.observe(window,"load",function() {
 $$("*").findAll(function(node){
   return node.getAttribute('title');
 }).each(function(node){
   new Tooltip(node,node.title);
   node.removeAttribute("title");
 });
});

/*
This script is copyright (c) 2006 Elliot Swan under the
Creative Commons Attribution-ShareAlike 2.5 license:
http://creativecommons.org/licenses/by-sa/2.5/

More information on this script can be found at:
http://www.elliotswan.com/2006/04/12/move-and-copy/
*/

function isNumeric(strString)
  //  check for valid numeric strings  
  {
  var strValidChars = "0123456789.-";
  var strChar;
  var blnResult = true;

  if (strString.length == 0) return false;

  //  test strString consists of valid characters listed above
  for (i = 0; i < strString.length && blnResult == true; i++)
    {
    strChar = strString.charAt(i);
    if (strValidChars.indexOf(strChar) == -1) {
      blnResult = false;
    }
  }
  return blnResult;
}

