function setupForm() {
  document.getElementById('price_main_uk').onclick=calc_price;
  document.getElementById('price_main_overseas').onclick=calc_price;
  document.getElementById('price_reduced_uk').onclick=calc_price;
  document.getElementById('price_reduced_overseas').onclick=calc_price;
  document.getElementById('payment_method_cc').onclick=change_payment;
  document.getElementById('payment_method_invoice').onclick=change_payment;
  document.forms['booking_form'].onsubmit = validate;
  calc_price();
  change_payment();
}

function checkFields(frm,fields) {
  err_msg = '';
  for(var fname in fields) {
    var el = frm[fname];
    if(fname == 'cc_number') {
      var code = el.value;
      code = code.replace(/[^0123456789]/,'',code);
      if(code.length <16) {
        err_msg += " - A valid credit card number\n";
      }
      continue;
    }
    if(el.type == 'text' && el.value == '') {
      err_msg += " - "+fields[fname]+"\n";
    }
    if(el.type == 'checkbox' && (!el.checked)) {
      err_msg += " - "+fields[fname]+"\n";
    }
    if(el.className == 'select') {
      if(el.options[el.selectedIndex].value == '') {
        err_msg += ' - '+fields[fname]+"\n";
      }
    }
  }
  return err_msg;
}


function validate() {
  var frm = document.forms['booking_form'];
  var err_msg = '';
  var fields = {
    'title':'Your title',
    'firstname':'Organisation address',
    'surname':'Organisation postcode',
    'organisation':'Organisation telephone',
    'position':'Position',
    'address':'Address',
    'postcode':'Postcode',
    'country':'Country',
    'email':'Email address',
    'tel':'Telephone number'
  };
  err_msg += checkFields(frm,fields);
  if(document.getElementById('payment_method_cc').checked) {
    var fields = {
      'cc_name':'Name as it appears on your credit card',
      'cc_number':'Credit card number',
      'cc_type':'Credit/Debit card type',
      'cc_secnum':'Credit card security code',
      'end_month':'Credit card expiry month',
      'end_year': 'Credit card expriy year'
    };
    err_msg += checkFields(frm,fields);
  }
  if(err_msg != '') {
    alert("Please complete the following fields:\n"+err_msg);
    return false;
  }
  return true;
}

function calc_price() {
  var fields = ['price_reduced_uk','price_reduced_overseas','price_main_overseas','price_main_uk'];
  for(var i=0;i<fields.length;i++) {
    var el = document.getElementById(fields[i]);
    if(el.checked) {
      var ppp = document.getElementById(el.value).value;
    }
  }
  document.getElementById('total').value = ppp;
}
function change_payment() {
  if(document.getElementById('payment_method_cc').checked) {
    document.getElementById('credit_card_details').className = '';
  } else { document.getElementById('credit_card_details').className = 'hidden'; }
}
