function assertNotEmpty(elem, name) {
  if (!elem.value || elem.value == '') {
    alert('Please enter a value for "' + name + '".');
    return false;
  }

  return true;
}

function assertFormIsFilled(form) {
  // Make sure all fields are filled (except last element, which is the submit button)
  for (var i = 0; i < form.elements.length - 1; i++) {
    //         form  <input>      <p>        <label>    text
    var name = form.elements[i].parentNode.firstChild.innerHTML;
    name = name.substr(0, name.length - 1);

    if (!assertNotEmpty(form.elements[i], name)) {
      form.elements[i].focus();
      return false;
    }
  }

  return true;
}

function isValidEmail(email) {
  var emailRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;

  if (!emailRegExp.test(email)) {
    alert('Please enter a valid email address.');
    return false;
  }

  return true;
}

function isValidZipCode(zipCode) {
  var zipCodeRegExp = /^\d{5}$/;

  if (!zipCodeRegExp.test(zipCode)) {
    alert('Please enter a valid zip code.');
    return false;
  }

  return true;
}

function validateOrderForm(id) {
  var form = document.getElementById(id);
  if (!form) return true;

  if (!assertFormIsFilled(form)) {
    return false;
  }

  if (!isValidEmail(form.email.value)) {
    form.email.focus();
    return false;
  }

  if (!isValidZipCode(form.zip_code.value)) {
    form.zip_code.focus();
    return false;
  }

  if (form.unlocked_qty.value    == '0'
      && form.passport_qty.value == '0'
      && form.suchday_qty.value  == '0') {
    alert('You must order at least 1 CD.');
    form.unlocked_qty.focus();
    return false;
  }

  return true;
}

function validateEmailForm(id) {
  var form = document.getElementById(id);
  if (!form) return true;

  return isValidEmail(form.email.value);
}
