// Purchase.js
// Shopping Cart functions
// 30.06.2003

  // declare custom error messages
  var prdStdError    = 'You must select one of the conference packages to continue.  ';
  var prdAccomError  = 'This Accommodation option requires the main Accommodation package.  ';

  // declare std error messages
  var custTitleError      = 'Please enter your title  ';
  var custSurnameError    = 'Please enter your surname  ';
  var custForenameError   = 'Please enter your first name  ';
  var custEmailError      = 'Please enter your email address  ';
  var custOrgNameError    = 'Please enter the name of your organisation  ';
  var custAddress1Error   = 'Please enter the first line of your address  ';
  var custAddress2Error   = 'Please enter the second line of your address  ';
  var custCityError       = 'Please enter the name of your city  ';
  var custCountyError     = 'Please enter your county or province  ';
  var custPostCodeError   = 'Please enter your postcode  ';
  var custCountryError    = 'Please select your country  ';
  var custTelNoError      = 'Please enter your telephone number  ';
  var custFaxNoError      = 'Please enter your fax number  ';
  var custEmailValidError = 'Please enter a valid email address  ';

  // declare products
  var prdStd_Adv      = 400.00;
  var prdStdStudent_Adv     = 300.00;
  var prdStd        = 440.00;
  var prdStdStudent     = 330.00;
  var prdOneDay       = 185.00;
  var prdExtra1       = 65.00;
  var prdExtra2       = 75.00;
  var prdExtra3       = 10.00;
  var prdAccomMain      = 195.00;
  var prdAccomBefore      = 65.00;
  var prdAccomAfter     = 65.00;

  var transferMsg = 'This demo doeas not take real payments. \n\n' +
                    'You will now be transferred to the home page. ';

//--------------------------------------------------------

function rdSelect(Obj){ //custom handle checkbox select for 1st 5 items
  var b = Obj.checked;
  var fm = Obj.form;

  //uncheck this group of checkboxes
  fm.prdStd.checked=false;
  fm.prdStd_Adv.checked=false;
  fm.prdStdStudent.checked=false;
  fm.prdStdStudent_Adv.checked=false;
  fm.prdOneDay.checked=false;

  //check original
  Obj.checked = b;

  //recalc
  PurchaseTotal(Obj.form);
}

//--------------------------------------------------------

function PurchaseValidate(fm){ //validation and err msg
  var PurchaseOK = false;
  var PurchaseError = '';

// biz rules --------------------------------------

// prdAccom Extras dependent on prdAccomMain
  if ( (fm.prdAccomBefore.checked) || (fm.prdAccomAfter.checked) )
  if (!fm.prdAccomMain.checked)
    PurchaseError = prdAccomError;

// one of the 1st 5 is compulsory
  if (!fm.prdStd.checked)
  if (!fm.prdStdStudent.checked)
  if (!fm.prdStd_Adv.checked)
  if (!fm.prdStdStudent_Adv.checked)
  if (!fm.prdOneDay.checked)
    PurchaseError = prdStdError;

// biz rules end ----------------------------------

// return true or false
  if (PurchaseError == '')
    PurchaseOK = true
  else{
    alert(PurchaseError);
  }
  return PurchaseOK;
}

//--------------------------------------------------------

function PurchaseValidateCust(fm){ //validate and msg
// validate cust function
  var CustOK = false;
  var CustError = '';
  var elem = null;

// Cust rules --------------------------------------

// compulsory
  if (elem==null) if (fm.Title.value=='') elem = fm.Title;
  if (elem==null) if (fm.Forename.value=='') elem = fm.Forename;
  if (elem==null) if (fm.Surname.value=='') elem = fm.Surname;
  if (elem==null) if (fm.Email.value=='') elem = fm.Email;
  if (elem==null) if (fm.OrgName.value=='') elem = fm.OrgName;
  if (elem==null) if (fm.Address1.value=='') elem = fm.Address1;
  if (elem==null) if (fm.City.value=='') elem = fm.City;
  if (elem==null) if (fm.PostCode.value=='') elem = fm.PostCode;
  if (elem==null) if (fm.Country.value=='') elem = fm.Country;
  if (elem==null) if (fm.TelNo.value=='') elem = fm.TelNo;

/*disabled
  if (elem==null) if (fm.Address2.value=='') elem = fm.Address2;
  if (elem==null) if (fm.County.value=='') elem = fm.County;
  if (elem==null) if (fm.FaxNo.value=='') elem = fm.FaxNo;
*/

// messages
if (elem!=null) {
  if (elem.name=='Title') CustError = custTitleError;
  if (elem.name=='Surname') CustError = custSurnameError;
  if (elem.name=='Forename') CustError = custForenameError;
  if (elem.name=='Email') CustError = custEmailError;
  if (elem.name=='OrgName') CustError = custOrgNameError;
  if (elem.name=='Address1') CustError = custAddress1Error;
  if (elem.name=='Address2') CustError = custAddress2Error;
  if (elem.name=='City') CustError = custCityError;
  if (elem.name=='County') CustError = custCountyError;
  if (elem.name=='Country') CustError = custCountryError;
  if (elem.name=='TelNo') CustError = custTelNoError;
  if (elem.name=='FaxNo') CustError = custFaxNoError;
  if (elem.name=='PostCode') CustError = custPostCodeError;
}

//email
  if (CustError=='')
    if (!(isEmail(fm.Email.value))) {
      CustError = custEmailValidError;

      //select the control
      fm.Email.focus();
      fm.Email.select();
    }

// Cust rules end ----------------------------------

// return true or false
  if (CustError=='') {
    CustOK = true;
    }
  else {

    //prompt
    alert(CustError);
    if (elem!=null) {

      //select the control
      elem.focus();
      if (elem.name!='Country') elem.select();
      }
    }

  return CustOK;
}

//--------------------------------------------------------

function Purchase(fmObj){ //calculate, validate and msg/submit
  var OK = false;

  //recalc
  PurchaseTotal(fmObj);

  //cust
  OK = PurchaseValidateCust(fmObj);

  //order
  if (OK) OK = PurchaseValidate(fmObj);

  if (OK) {
    //disable buttons
    fmObj.Purchase1.disabled = true;
    fmObj.Clear1.disabled = true;
    document.body.style.cursor = 'wait';

    alert(transferMsg);
    }

  //will submit
  return OK;
}

//--------------------------------------------------------

function PurchaseClear(fm){ //clr form
  var i, elem, u, v, t;
  //uncheck all
  for (i=0;i<(fm.elements.length-1);i++){
    elem = fm.elements[i];
    u = elem.name;
    if ((u.indexOf('prd')==0) || (u.indexOf('opt')==0))
    if (elem.type=='checkbox')
      elem.checked=false;
  }

  //recalc
  PurchaseTotal(fm);
//alert('PurchaseClear');
}

//--------------------------------------------------------

function PurchaseTotal(fm){ //calculate
  var i, elem, u, v, t;
  a = 0.00;
  t = 0.00;
  for (i=0;i<(fm.elements.length-1);i++){
    elem = fm.elements[i];
    u = elem.name;
    if (u.indexOf('prd')==0)
    if (elem.type=='checkbox')
    if (elem.checked)
      {
        v = eval(u);
        a = parseInt(v);
        t = t + a;
        //alert(a);
      }
  }
  if(IsIE()){
    //For IE
    OrderTotalDisplay.innerHTML = t;
  }
  else{
    //For N6
    document.forms['frmPurchase1'].OrderTotalDisplay.innerHTML = t;
  }
  fm.OrderTotal.value = t;
}

//--------------------------------------------------------

function EnableButtons(){ //enable buttons on load

  var fm = document.frmPurchase1;
  PurchaseClear(fm);
  //alert('test');
  fm.Purchase1.disabled = false;
  fm.Clear1.disabled = false;
}

//--------------------------------------------------------

function FormSubmit(obj){
//browser compatibility
  if (obj) {
  if (navigator.appName.indexOf('Microsoft')==-1)
    eval('window.frames.document.'+obj+'.submit()')
  else
    eval('window.document.'+obj+'.submit()')
  }
}

//--------------------------------------------------------

function isEmail(argvalue) {
// does not allow no entry
  var BadCharList= '\"\\/><}{][#=+)(*&^%$£!,:;|¬ ';

  if (argvalue.indexOf(' ') != -1)
    return false;
  else if (argvalue.indexOf('@') == -1)
    return false;
  else if (argvalue.indexOf('@') == 0)
    return false;
  else if (argvalue.indexOf('@') == (argvalue.length-1))
    return false;
  else if (argvalue.indexOf('.') == -1)
    return false;

  var x= BadCharList;
  var y= x.length;
  for (z=0;z<y;z++)
    if (argvalue.indexOf(x.charAt(z)) != -1)
      return false;

  arrayString = argvalue.split('@');
  if (arrayString[0] == null){
    // old browser no split
  }
  else {
    if (arrayString[1].indexOf('.') == -1)
      return false;
    else if (arrayString[1].indexOf('.') == 0)
      return false;
    else if (arrayString[1].charAt(arrayString[1].length-1) == '.') {
      return false;
    }
  }
  return true;
}

function IsIE(){
  if(navigator.userAgent.indexOf("MSIE") != -1){
    //Browser is Internet Explorer.
    //alert('ie');
    return true;
  }
  else{
    //alert('not ie');
    return false;
  }
}

//--------------------------------------------------------
//end
>