function CartForm() { this.step = 1; this.payType = ""; this.overview = document.getElementById('overview'); this.checkoutCart = document.getElementById('checkoutCart'); this.SubmitOrder = document.getElementById('SubmitOrder'); this.errorMessage = document.getElementByClassName('p', 'errormessage'); this.personalDetails = document.getElementById('personalDetails'); this.paymenttype = document.getElementById('paymenttype'); this.information = document.getElementById('information'); this.formCreditCard = document.getElementById('formCreditCard'); this.formSchoolInvoice = document.getElementById('formSchoolInvoice'); this.checkoutConfirmation = document.getElementById('checkoutConfirmation'); if (typeof CartForm._initialized == "undefined") { CartForm.prototype.hideAll = function () { this.overview.style.display = "none"; this.checkoutCart.style.display = "none"; this.errorMessage.style.display = "none"; this.personalDetails.style.display = "none"; this.paymenttype.style.display = "none"; this.information.style.display = "none"; this.formCreditCard.style.display = "none"; this.formSchoolInvoice.style.display = "none"; this.checkoutConfirmation.style.display = "none"; if ((this.step == 2) && (this.payType == "3")) { var oExtras = document.getInnerElementByClassName(this.formSchoolInvoice, 'div', 'formExtras'); oExtras.style.display = "block"; oExtras = document.getInnerElementByClassName(this.formCreditCard, 'div', 'formExtras'); oExtras.style.display = "none"; } }; CartForm.prototype.goTo2 = function () { if (!oCart.loaded) return false; if (this.payType == "2" && oCart.hasInspectedItem()) { alert("Inspection copies may only be requested by schools."); return false; } if (this.payType == "3" && oCart.hasInspectedItem()) { alert("Inspect on Approval items cannot be ordered using credit card for payment. Please select payment by invoice or remove these items."); return false; } var validate = this.validateStep1(); if (!validate) return false; this.hideAll(); this.step++; this.overview.innerHTML = ""; if (this.payType == "2") { var oText = '

Personal Credit Card details

'; oText += 'Please enter your payment details.
'; if ((typeof checkTC != "undefined") && (checkTC == true)) { oText += 'Your total charge will be $' + oCart.getEClubTotal() + ''; } else { oText += 'Your total purchase is $' + (Number(oCart.getTotal()) - oCart.handlingCharge).toFixed(2) + '

'; oText += 'A handling charge of $' + oCart.handlingCharge + ' applies to personal orders.
'; oText += 'Your total charge will be $' + (Number(oCart.getTotal())).toFixed(2) + ''; } oText += '

'; this.overview.innerHTML = oText; this.overview.style.display = "block"; this.formCreditCard.style.display = "block"; } else { var oText = '

School/University invoice details

'; oText += 'Please enter your payment details.
'; if ((typeof checkTC != "undefined") && (checkTC == true)) { oText += 'Your total purchase is $' + oCart.getEClubTotal() + '

'; } else { oText += 'Your total purchase is $' + oCart.getTotal() + '

'; } oText += '

'; this.overview.innerHTML = oText; this.overview.style.display = "block"; this.formSchoolInvoice.style.display = "block"; } oCart.updateShoppingSummary(); }; CartForm.prototype.next = function () { var payTypeList = document.forms['SubmitOrder'].CustomField_4; for (var i = 0; i < payTypeList.length; i++) { if (payTypeList[i].checked) this.payType = payTypeList[i].value; } if (this.payType == '') { alert('Please select a payment method.'); return false; } if ((this.payType == '2' || this.payType == '3') && this.step == 1) this.step = 2; //adjust step for credit card payment if (this.step == 1) { this.goTo2(); } else if (this.step == 2) { var bValidate = false; /*if((this.payType == "2" || this.payType=="3") && isOutOfStockOnly()) { alert('Items not available cannot be purchased by credit card. Select payment by invoice.'); return false; }*/ if (this.payType == "2") { if (oCart.hasInspectedItem()) { alert("Inspection copies may only be requested by schools."); this.step = 1; return false; } bValidate = this.validateStep1(); //bValidate = true; } else if (this.payType == "4") { bValidate = this.validateInvoice(); } else { //bValidate = this.validateInvoice(); bValidate = this.validateStep1(); } if (bValidate) { /*if ((this.payType=="2" || this.payType=="3") && isMixedOrder()) { // remove not available itmes for(var i=0; i < oCart.items.length; i++) { if (!oCart.items[i].available) oCart.deleteFromCart(oCart.items[i].isbn); } } */ this.hideAll(); var tmpAddressType = getAddressType(); if (tmpAddressType == "1") { document.forms['SubmitOrder'].Organisation.value = ""; } this.step++; var oText = "

Checkout Purchase confirmation

"; if (typeof oCart != "undefined") { oText += oCart.getCheckoutConfirmationTable(); if (this.payType == '2') { oText += '

A handling fee of $10.00 applies for private customers.

'; } oText += this.getDeliverySummary(); oText += '

'; oText += '

'; this.checkoutConfirmation.innerHTML = oText; this.checkoutConfirmation.style.display = "block"; var summaryCartTotal = document.getElementById('total'); if (summaryCartTotal) summaryCartTotal.innerHTML = 'Current total: $' + oCart.getTotal(); } } } else { this.submit(); } }; CartForm.prototype.previous = function () { this.hideAll(); if ((this.payType == '2' || this.payType == '3') && this.step == 3) { this.step = 1; } else { this.step--; } if (this.step == "1") { this.overview.innerHTML = ""; var oText = '

Overview

'; oText += 'If you are a Teacher e-Club member and not logged in, login now to receive your discount.
'; oText += 'Non members, register now.
'; oText += 'Inspection copies can be made by schools only.'; oText += '

'; this.overview.innerHTML = oText; oCart.updateShoppingSummary(); this.overview.style.display = "block"; this.checkoutCart.style.display = "block"; this.paymenttype.style.display = "block"; this.personalDetails.style.display = "block"; this.information.style.display = "block"; } else { var oText = '

School/University invoice details

'; oText += 'Please enter your payment details.
'; if ((typeof checkTC != "undefined") && (checkTC == true)) { oText += 'Your total purchase is $' + oCart.getEClubTotal() + '

'; } else { oText += 'Your total purchase is $' + oCart.getTotal() + '

'; } oText += '

'; this.overview.innerHTML = oText; this.overview.style.display = "block"; this.formSchoolInvoice.style.display = "block"; oCart.updateShoppingSummary(); } }; CartForm.prototype.validateStep1 = function () { var reNumbersOnly = /^[0-9]+$/; var reEmail = /\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*/; var fFirstname = document.forms['SubmitOrder'].Firstname.value; var fLastname = document.forms['SubmitOrder'].Lastname.value; var fOrganisation = document.forms['SubmitOrder'].Organisation.value; var fPostalAddress = document.forms['SubmitOrder'].PostalAddress.value; var fPostalCity = document.forms['SubmitOrder'].PostalCity.value; var fAddressType = getAddressType(); var regExpPOBox = /(\b)(po|p o|pb|p.o|box|bag|locked|private|locked bag|ms|rmd|private bag)(\b)/; if (fPostalAddress && regExpPOBox.test(fPostalAddress.toLowerCase())) { alert('Sorry, we do not deliver to post office/private boxes.'); return false; } if (document.forms['SubmitOrder'].PostalState.selectedIndex != 0) { var fPostalState = document.forms['SubmitOrder'].PostalState.getElementsByTagName('option')[document.forms['SubmitOrder'].PostalState.selectedIndex].value; } else { var fPostalState = ""; } var fPostalCode = document.forms['SubmitOrder'].PostalCode.value; var oOrder = document.forms['SubmitOrder'].overseasOrder; for (var i = 0; i < oOrder.length; i++) { if (oOrder[i].checked) var fOverseasOrder = oOrder[i].value; } var fPhoneNumber = document.forms['SubmitOrder'].PhoneNumber.value; var fEmailAddress = document.forms['SubmitOrder'].EmailAddress.value; var oText = "Please fill in or verify the following field(s):\n"; if (fFirstname == "" || fFirstname == " ") oText += "-Firstname\n"; if (fLastname == "" || fLastname == " ") oText += "-Lastname\n"; if (this.payType == "4" || this.payType == "3" || fAddressType == '2') { if (fOrganisation == "" || fOrganisation == " ") oText += "-School/University name\n"; } if (fAddressType == "") oText += "-Address Type (private or school/institution)\n"; if (fPostalAddress == "" || fPostalAddress == " ") oText += "-Street address\n"; if (fPostalCity == "" || fPostalCity == " ") oText += "-Suburb\n"; if ((fPostalState == "" || fPostalState == " ") && fOverseasOrder == "0") oText += "-State\n"; if (!reNumbersOnly.test(fPostalCode) || fPostalCode.length < 4 || fPostalCode.length > 10 || (fOverseasOrder == "0" && fPostalCode.length > 4)) oText += "-Postal code (numbers only)\n"; if (!reNumbersOnly.test(fPhoneNumber) || fPhoneNumber.length < 8) oText += "-Phone number (numbers only)\n"; if (!reEmail.test(fEmailAddress) || fEmailAddress == "" || fEmailAddress == " ") oText += "-Email address\n"; if (oText != "Please fill in or verify the following field(s):\n") { alert(oText); return false; } return true; }; CartForm.prototype.validateCreditCard = function () { var fCardName = document.forms['SubmitOrder'].CardName.value; var fCardNumber = document.forms['SubmitOrder'].CardNumber.value; var fCardMonth = document.forms['SubmitOrder'].CardMonth.value; var fCardYear = document.forms['SubmitOrder'].CardYear.value; var oText = "Please fill in the following field(s):\n"; if (fCardName == "" || fCardName == " ") oText += "-Card holder name\n"; if (fCardNumber == "" || fCardNumber == " ") oText += "-Card number\n"; if (fCardMonth == "MM" || fCardMonth == "" || fCardYear == "YY" || fCardYear == "") oText += "-Card expiry date\n"; if (oText != "Please fill in the following field(s):\n") { alert(oText); return false; } var reCardNumber = /\d{16}/; if (!reCardNumber.test(fCardNumber)) { alert("Please enter a valid credit card number."); return false; } var reYear = /\d{2}/; var reMonth = /0[1-9]|1[0-2]/; if ((!reMonth.test(fCardMonth)) || (!reYear.test(fCardYear))) { alert("Please enter a valid expiry date."); return false; } return true; }; CartForm.prototype.validateInvoice = function () { var fOrderNumber = document.forms['SubmitOrder'].Inv_Order_Number.value; var fAccountCode = document.forms['SubmitOrder'].Inv_Order_AccountCode.value; var oText = "Please fill in the following field(s):\n"; if (fOrderNumber == "" || fOrderNumber == " ") oText += "-Customer order number\n"; if (oText != "Please fill in the following field(s):\n") { alert(oText); return false; } return true; }; CartForm.prototype.getDeliverySummary = function () { var oText = '

Your delivery details:

'; oText += document.forms['SubmitOrder'].Firstname.value + " " + document.forms['SubmitOrder'].Lastname.value + "
"; if (document.forms['SubmitOrder'].Organisation.value != "") { oText += document.forms['SubmitOrder'].Organisation.value + "
"; } oText += document.forms['SubmitOrder'].PostalAddress.value + "
"; oText += document.forms['SubmitOrder'].PostalCity.value + " " + document.forms['SubmitOrder'].PostalState.value + " " + document.forms['SubmitOrder'].PostalCode.value; oText += "

"; return oText; }; CartForm.prototype.getPaymentSummary = function () { var oText = '

Your payment information:

'; if (this.payType == "2" || this.payType == "3") { var nCard = "xxxx xxxx xxxx " + document.forms['SubmitOrder'].CardNumber.value.substring(12); oText += "Your "; if (this.payType == "3") oText += " school "; oText += document.forms['SubmitOrder'].CardType.value + " fcredit card ending in "; oText += nCard + " will be charged.

"; } if (this.payType == "3" || this.payType == "4") { oText += "Customer Order Number: " + document.forms['SubmitOrder'].Inv_Order_Number.value + ".

"; oText += "Account Code: " + document.forms['SubmitOrder'].Inv_Order_AccountCode.value + ".

"; oText += "On verification by our Customer Service department the transaction will be processed.

"; } return oText; }; } CartForm._initialized = true; } function getAddressType() { var fAddressType = ''; var fAddressTypeRadio = document.forms['SubmitOrder'].AddressType; for (var i = 0; i < fAddressTypeRadio.length; i++) { if (fAddressTypeRadio[i].checked) fAddressType = fAddressTypeRadio[i].value; } return fAddressType; }