function validateLoginForm(f) { if (f.username.value == '' || f.password.value == '') { alert("Please enter your username and password."); if (f.username.value == '') { f.username.focus(); } else { f.password.focus(); } return false; } f.submit(); return false; } function submitLogin(f) { if (f.username.value == '' || f.password.value == '') { alert("Please enter your username and password to login."); } else { f.formAction.value = 'doLogin'; f.action = '/login.php'; f.submit(); } } function updatePasswordField(e) { if (e.name == 'passwordDummy') { e.style.display = 'none'; e.form.password.style.display = ''; e.form.password.value = ''; e.form.password.focus(); } else if (e.name == 'password' && e.value == '') { e.style.display = 'none'; e.form.passwordDummy.style.display = ''; } else { return false; } } function validateChangePassword(f) { if (f.currentPassword.value == '' || f.newPassword.value == '' || f.newPassword2.value == '') { alert("Please complete all fields."); return false; } if (f.newPassword.value != f.newPassword2.value) { alert("New password & confirmation value do not match. Please check."); return false; } else if (f.newPassword.value.length < 5) { alert("Your password must be at least 5 characters long."); return false; } f.submit(); return true; } function numeralsOnly(evt) { evt = (evt) ? evt : event; var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode : ((evt.which) ? evt.which : 0)); if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; } function addLoadEvent(func) { var oldOnLoad = window.onload; if (typeof window.onload != 'function') { window.onload = func; } else { window.onload = function() { oldOnLoad(); func(); } } } function addUnloadEvent(func) { var oldOnLoad = window.onunload; if (typeof window.onunload != 'function') { window.onunload = func; } else { window.onunload = function() { oldOnLoad(); func(); } } } function addBeforeUnloadEvent(func) { var oldOnLoad = window.onbeforeunload; if (typeof window.onbeforeunload != 'function') { window.onbeforeunload = func; } else { window.onbeforeunload = function() { oldOnLoad(); func(); } } } function updateProductPricing(f) { var r = f.productTypeSelect; for (var i = 0; i < r.length; i++) { if (r[i].checked) { document.getElementById('salePriceHolder').innerHTML = r[i].getAttribute('salePrice'); document.getElementById('retailPriceHolder').innerHTML = r[i].getAttribute('retailPrice'); } } } function editShoppingBasket() { $('checkoutForm').formAction.value = 'editBasket'; $('checkoutForm').submit(); return false; } function removeBasketItem(id) { if (confirm('Are you sure you want to remove this item from your shopping basket?')) { $('itemQuantity_' + id).value = 0; updateShoppingBasket(); } } function proceedToCheckout() { $('shoppingBasketForm').formAction.value = 'checkout'; $('shoppingBasketForm').submit(); return false; } function validateCheckoutForm(f) { if ($('checkoutForm').deliverToBilling.checked) { var requiredFields = new Array("billEmail", "billFirstName", "billLastName", "billAddr1", "billAddr3", "billPostCode", "billTelephone", "CardNumber", "CardType", "CardHolder", "CV2", "ExpiryDateMonth", "ExpiryDateYear"); } else { var requiredFields = new Array("billEmail", "billFirstName", "billLastName", "billAddr1", "billAddr3", "billPostCode", "billTelephone", "shipEmail", "shipFirstName", "shipLastName", "shipAddr1", "shipAddr3", "shipPostCode", "shipTelephone", "CardNumber", "CardType", "CardHolder", "CV2", "ExpiryDateMonth", "ExpiryDateYear"); } var form = $('checkoutForm'); var billCountry = form['billCountry']; var shipCountry = form['shipCountry']; var deliverBill = form['deliveryToBilling']; if ($(billCountry).getValue() == 'US') { requiredFields[requiredFields.length] = 'billAddr4'; } if ($(shipCountry).getValue() == 'US') { if ($(deliverBill).checked) { } else { requiredFields[requiredFields.length] = 'shipAddr4'; } } var v = new wizbitFormValidator(f); v.errorClass = 'borderError'; v.standardClass = 'border'; v.validate(requiredFields); if (!v.formIsValid) { alert("Please complete the asterisked fields."); return false; } if (!f.tcAccept.checked) { alert("Please tick the box to confirm you have read and accepted our terms and conditions."); return false; } f.formAction.value = 'processPayment'; f.submitButton.disabled = true; f.submit(); } function updateCheckoutAddress4(quiet) { var shipCountry = $('shipCountry').getValue(); var billCountry = $('billCountry').getValue(); if (billCountry == 'US') { $('billAddr4').style.width = '30px'; $('billAddr4').maxLength = 2; if ($('billAddr4').getValue().length > 2) { $('billAddr4').value = ''; alert("Please ensure you enter your 2 character state abbreviation in the 'County/State' field."); } } else { $('billAddr4').style.width = '200px'; $('billAddr4').maxLength = 50; } if (shipCountry == 'US' || (billCountry == 'US' && $('deliveryToBilling').checked)) { $('shipAddr4').style.width = '30px'; $('shipAddr4').maxLength = 2; if ($('shipAddr4').getValue().length > 2) { $('shipAddr4').value = ''; alert("Please ensure you enter your 2 character state abbreviation in the 'County/State' field."); } } else { $('shipAddr4').style.width = '200px'; $('shipAddr4').maxLength = 50; } } function updateCheckoutCountry() { $('checkoutForm').formAction.value = 'updateCheckout'; $('checkoutForm').submit(); } function setUKDeliveryAddress() { $('shoppingBasketForm').formAction.value = 'setUKDelivery'; $('shoppingBasketForm').submit(); return false; } function setDeliveryOption(s) { var url = '/checkout?formAction=setDeliveryOption&id='; url += s.options[s.selectedIndex].value; document.location.href = url; } function saveRefreshCheckout(f) { f.formAction.value = 'saveData'; f.submit(); } function setGiftWrapSelection(sel) { switch ($(sel).getValue()) { case 'N': new Effect.SlideUp('giftWrapOptionsTable', { afterFinish: function() { var y = scroller.getDimensions().y; scroller.reset(); scrollbar.reset(); scroller.scrollTo(0, y); scrollbar.scrollTo(y); } }); break; case 'Y': var i = 1; while ($('giftWrapItem_' + i)) { $('giftWrapItem_' + i).checked = true; i++; } updateGiftWrapItems(); new Effect.SlideDown('giftWrapOptionsTable', { afterFinish: function() { var y = scroller.getDimensions().y; scroller.reset(); scrollbar.reset(); scroller.scrollTo(0, y); scrollbar.scrollTo(y); } }); break; } } function updateGiftWrapItems() { var itemCost = $('giftWrapItemCost').getValue(); var selectedItems = 0; var i = 1; while ($('giftWrapItem_' + i)) { if ($('giftWrapItem_' + i).checked) { selectedItems++; } i++; } giftWrapCost = parseFloat(itemCost * selectedItems); $('giftwrapTotalCost').innerHTML = giftWrapCost.toFixed(2, 10); $('basketGiftWrapFee').innerHTML = giftWrapCost.toFixed(2, 10); var finalTotal = parseFloat($('basketTotalExGiftWrap').getValue()); finalTotal += giftWrapCost; $('finalOrderTotal').innerHTML = finalTotal.toFixed(2, 10); $('basketOrderTotal').innerHTML = finalTotal.toFixed(2, 10); if (selectedItems == 0) { $('basketGiftWrapRow').style.display = 'none'; $('addGiftWrapSelect').selectedIndex = 0; setGiftWrapSelection($('addGiftWrapSelect')); } else { $('basketGiftWrapRow').style.display = ''; } } function setDeliverToBilling() { var f = $('checkoutForm'); if (f.deliverToBilling.checked) { new Effect.SlideUp('deliveryDetailsTable', { afterFinish: function() { var y = scroller.getDimensions().y; scroller.reset(); scrollbar.reset(); scroller.scrollTo(0, y); scrollbar.scrollTo(y); } }); } else { new Effect.SlideDown('deliveryDetailsTable', { afterFinish: function() { var y = scroller.getDimensions().y; scroller.reset(); scrollbar.reset(); scroller.scrollTo(0, y); scrollbar.scrollTo(y); } }); } if ($('billCountry').getValue() != $('shipCountry').getValue()) { updateCheckoutCountry(); } } function validateRegistrationForm(f) { var errorState = 0; var requiredFields = new Array("userEmail", "userFirstName", "userLastName", "password1", "password2"); var v = new wizbitFormValidator(f); v.errorClass = 'borderError'; v.standardClass = 'border'; v.validate(requiredFields); if (!v.formIsValid) { alert("Please correct the highlighted fields."); return false; } if (f.password1.value != f.password2.value) { alert("Your password entries do not match!"); return false; } else if (f.password1.value.length < 4) { alert("Please ensure your password is at least 4 characters long."); return false; } f.formAction.value = 'processRegistration'; f.submit(); } function validateUserData(f) { var errorState = 0; var requiredFields = new Array("userEmail", "userFirstName", "userLastName", "userAddr1", "userAddr3", "userPostCode"); var v = new wizbitFormValidator(f); v.errorClass = 'borderError'; v.standardClass = 'border'; v.validate(requiredFields); if (!v.formIsValid) { alert("Please complete the highlighted fields."); return false; } f.formAction.value = 'updateUserData'; f.submit(); } function validateChangePassword(f) { if (f.currentPassword.value == '' || f.newPassword.value == '' || f.newPassword2.value == '') { alert("Please complete all fields."); return false; } if (f.newPassword.value != f.newPassword2.value) { alert("New password & confirmation value do not match. Please check."); return false; } else if (f.newPassword.value.length < 5) { alert("Your password must be at least 5 characters long."); return false; } f.submit(); return true; } function addProductToCart(f) { if (!f.productTypeSelect) { alert("This product is currently unavailable."); return false; } var found = false; if (f.productTypeSelect.length) { for (var i = 0; i < f.productTypeSelect.length; i++) { if (f.productTypeSelect[i].checked) { found = true; } } } else { if (f.productTypeSelect.checked) found = true; } if (!found) { alert("Please select a product option to continue."); return false; } if (f.itemQuantity.value == '' || f.itemQuantity.value < 1 || isNaN(f.itemQuantity.value)) { alert("Please enter a numerical quantity between 1 and 50."); return false; } else if (f.itemQuantity.value > 50) { alert("Please contact us to order more than 50 items."); return false; } f.formAction.value = 'addToCart'; f.submit(); } function deleteBasketItem(id) { if (!document.getElementById('basketQty_' + id) || !document.getElementById('shoppingBasketForm')) { alert("Sorry, an error occurred.\n\nPlease try refreshing the page."); return false; } document.getElementById('basketQty_' + id).value = 0; var f = document.getElementById('shoppingBasketForm'); f.formAction.value = 'updateBasket'; f.submit(); } function updateShoppingBasket() { var f = $('shoppingBasketForm'); if (!f) { alert("Sorry, an error occurred.\n\nPlease try refreshing the page."); return false; } f.formAction.value = 'updateBasket'; f.submit(); return false; } function clearOrder() { var f = $('shoppingBasketForm'); if (!f) { alert("Sorry, an error occurred.\n\nPlease try refreshing the page."); return false; } if (confirm('Are you sure you want to remove this order from your shopping basket?')) { f.formAction.value = 'emptyBasket'; f.submit(); } return false; } function switchProductImage(imageID, type, width, height) { var im = document.getElementById('mainProductImage'); if (!im) return false; if (!type) var type = 'productImageID'; if (!height) var height = 280; if (!width) var width = 210; var src = '/getImage?' + type + '=' + imageID + '&width=' + width + '&height=' + height; im.setAttribute('src', src); im.setAttribute('imageID', imageID); im.onclick = function(){viewLargeImage(type, imageID);}; } function viewLargeImage(type, imageID) { var opt = 'status=no,scrollbars=no,resizable=yes,width=640,height=680,left=0,top=0'; if (typeof imgWin != 'undefined') { imgWin.close(); } imgWin = window.open('', 'imgWin', opt); imgWin.document.write('