{"version":3,"sources":["ecom-checkout.js","jQuery.validity.js"],"names":["setCheckoutScript","root","$","data","fbPixelEnabled","click","e","preventDefault","modal","prop","hide","show","userLoggedIn","SetBillingAddressManual","getAddress","api_key","input_class","button_class","dropdown_class","output_fields","line_1","line_2","post_town","county","postcode","onLookupSuccess","onLookupError","onAddressSelected","elem","index","SetBillingAddressAuto","change","val","GetDeliveryOptions","SetDeliveryAddressManual","SetDeliveryAddressAuto","document","on","deliveryOptionId","this","slideUp","slideDown","validateInput","text","fbq_ProcessPayment","submit","fadeIn","blur","fadeOut","ValidNotes","giftWrappingOption","delAddr1","delAddr2","delTown","delCounty","delPostcode","userId","console","log","post","alert","result","id","value","addressId","status","AddressId","Address1","Address2","County","Country","Postcode","Town","err","SetUseBilling","InitPaymentMethods","SaveAddress","AddVoucherDone","location","reload","msg","find","parseFloat","amount","toFixed","validity","setup","outputMode","start","require","email_check","email2","test","addClass","addr1","town1","county1","post1","addr2","town2","county2","post2","end","valid","length","email","requireTerms","html","countryCode","useBilling","postcodeBtn","postcodeNoBtn","giftWrappingOptionId","deliveryOptionsExist","CheckMinimumOrder","get","response","$makePaymentArea","reachedMinimumOrder","CheckItemsCount","hasItems","undefined","validate","$obj","regimen","message","$reduction","reduction","filter","settings","elementSupport","elements","each","push","raiseError","format","field","infer","addToReport","isValidating","report","errors","obj","out","raise","raiseAggregateError","raiseAggregate","numericSum","accumulator","n","isNaN","str","p","hasOwnProperty","replace","RegExp","capitalize","$f","ret","defaultFieldName","arr","split","i","join","trim","sz","substring","toUpperCase","__private","defaults","scrollTo","modalErrorsClickable","argToString","getDate","getMonth","getFullYear","debugPrivates","extend","patterns","integer","date","usd","url","number","zip","phone","guid","time12","time24","nonHtml","messages","match","lessThan","lessThanOrEqualTo","greaterThan","greaterThanOrEqualTo","range","tooLong","tooShort","alphabet","minCharClass","maxCharClass","equal","distinct","sum","sumMax","sumMin","radioChecked","generic","defer","results","name","v","o","outputs","apply","Array","prototype","slice","call","arguments","charClasses","alphabetical","numeric","alphanumeric","symbol","options","clear","fn","arg","tagName","toLowerCase","f","isFunction","bind","res","rule","global","lastIndex","min","max","getTime","d","Date","Big","maxLength","minLength","alpha","chars","idx","indexOf","charAt","charClass","arg0","arg1","transform","map","first","subMap","i1","i2","is","radioNotChecked","checkboxChecked","assert","expression","fail","jQuery","tooltip","tooltipClass","remove","pos","offset","left","width","top","focus","css","appendTo","getIdentifier","attr","label","cssClass","hash","labelSelector","select","insertAfter","errorClass","container","off","errorStyle","parseInt","erroneous","wrapper","buffer","summary","removeClass","write","Platform","Deferred","execute","event"],"mappings":"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","file":"ecom-checkout.min.js","sourcesContent":["Platform.Deferred.execute(setCheckoutScript);\r\n\r\nvar giftWrappingOption = -1;\r\nvar root;\r\n\r\nfunction setCheckoutScript() {\r\n root = $('body').data('root');\r\n\r\n var fbPixelEnabled = $('#checkout-form').data(\"fb-pixel\");\r\n\r\n $('#checkout-info').click(function (e) {\r\n e.preventDefault();\r\n $('#checkout-modal').modal(\"show\");\r\n });\r\n\r\n // hide delivery address\r\n if ($('#use-billing-cbx').prop('checked')) {\r\n $('#delivery-wrapper').hide();\r\n $(\"#save-address-wrapper\").hide();\r\n $(\".pick-existing-address\").hide();\r\n }\r\n else {\r\n $('#delivery-wrapper').show();\r\n $(\"#save-address-wrapper\").show();\r\n $(\".pick-existing-address\").show();\r\n }\r\n\r\n //$(document).on('click', '#checkout-cart a.cart-remove', function () {\r\n // var cartItemId = $(this).closest('tr').data('id');\r\n // $.post(root + 'Cart/RemoveItem', { id: cartItemId }, ItemUpdated, 'json');\r\n // return false;\r\n //});\r\n\r\n //$(document).on('change', '#checkout-cart select.cart-qty', function () {\r\n // var cartItemId = $(this).closest('tr').data('id');\r\n // var quantity = $(this).val();\r\n // $.post(root + 'Cart/UpdateItemQuantity', {\r\n // id: cartItemId,\r\n // quantity: quantity\r\n // }, ItemUpdated, 'json');\r\n //});\r\n\r\n //$(document).on(\"click\", \"#discount-btn\", function (e) {\r\n // AddDiscountCode();\r\n // return false;\r\n //});\r\n\r\n //$(document).on('click', '.pf-checkout-cart-table .pf-qty-btn-minus', function (e) {\r\n // e.preventDefault();\r\n // var cartItemId = $(this).closest('tr').data('id');\r\n // var wrapper = $(this).closest('.pf-qty-wrapper');\r\n // var qtyTbx = wrapper.find('.pf-qty-select');\r\n // var qty = Number(qtyTbx.val());\r\n // if (qty > 1) {\r\n // qty--;\r\n // qtyTbx.val(qty);\r\n // //UpdateTopCartQty(cartItemId, qty);\r\n // UpdateItemCartQty(cartItemId, qty);\r\n // }\r\n //});\r\n\r\n //$(document).on('click', '.pf-checkout-cart-table .pf-qty-btn-plus', function (e) {\r\n // e.preventDefault();\r\n // var cartItemId = $(this).closest('tr').data('id');\r\n // var wrapper = $(this).closest('.pf-qty-wrapper');\r\n // var qtyTbx = wrapper.find('.pf-qty-select');\r\n // var qty = Number(qtyTbx.val());\r\n // qty++;\r\n // qtyTbx.val(qty);\r\n // //UpdateTopCartQty(cartItemId, qty);\r\n // UpdateItemCartQty(cartItemId, qty);\r\n //});\r\n\r\n //// Add handlers for top cart events, as when top cart changed need to refresh checkout cart\r\n //$(document).on('itemRemoved.topCart.platform', function (e, data) {\r\n // if (data.result === 'ok')\r\n // location.reload();\r\n //});\r\n //$(document).on('itemUpdated.topCart.platform', function (e, data) {\r\n // if (data.result.substring(0, 2) === 'ok')\r\n // location.reload();\r\n //});\r\n\r\n var userLoggedIn = $('#checkout-form').data(\"logged-in\");\r\n if (userLoggedIn == 'True') {\r\n SetBillingAddressManual();\r\n }\r\n\r\n $('#postcode_lookup').getAddress({\r\n api_key: '-twn5bV0e0KPK5YlULSMLA5097',\r\n input_class: 'w-input input m-input postcode-lookup-input billPostcode',\r\n button_class: 'site-button postcode-lookup-btn pf-btn pf-btn-md pf-btn-primary',\r\n dropdown_class: 'w-input input m-input postcode-lookup-dropdown',\r\n //input: '#postcode-lookup-input',\r\n //button: '#postcode-lookup-btn',\r\n //dropdown_container: '#postcode-lookup-dropdown',\r\n output_fields: {\r\n line_1: '#billAddr1',\r\n line_2: '#billAddr2',\r\n //line_3: '#line3',\r\n post_town: '#billTown',\r\n county: '#billCounty',\r\n postcode: '#billPostcode'\r\n },\r\n onLookupSuccess: function (data) { },\r\n onLookupError: function () {/* Your custom code */ },\r\n onAddressSelected: function (elem, index) {\r\n //var addressTxt = $('#billAddr1').val() + \"\\n\" + $('#billAddr2').val();\r\n //$('#billing-auto-address-tbx').val(addressTxt);\r\n //$('#address-manually-btn').hide();\r\n //$('#address-wrapper').slideDown();\r\n }\r\n });\r\n\r\n $('#delivery-postcode_lookup').getAddress({\r\n api_key: '-twn5bV0e0KPK5YlULSMLA5097',\r\n input_class: 'w-input input m-input postcode-lookup-input delPostcode',\r\n button_class: 'w-button site-button postcode-lookup-btn',\r\n dropdown_class: 'w-input input m-input postcode-lookup-dropdown',\r\n //input: '#postcode-lookup-input',\r\n //button: '#postcode-lookup-btn',\r\n //dropdown_container: '#postcode-lookup-dropdown',\r\n output_fields: {\r\n line_1: '#delAddr1',\r\n line_2: '#delAddr2',\r\n //line_3: '#line3',\r\n post_town: '#delTown',\r\n county: '#delCounty',\r\n postcode: '#delPostcode'\r\n },\r\n onLookupSuccess: function (data) { },\r\n onLookupError: function () {/* Your custom code */ },\r\n onAddressSelected: function (elem, index) {\r\n //var addressTxt = $('#billAddr1').val() + \"\\n\" + $('#billAddr2').val();\r\n //$('#billing-auto-address-tbx').val(addressTxt);\r\n //$('#address-manually-btn').hide();\r\n //$('#address-wrapper').slideDown();\r\n }\r\n });\r\n\r\n $('#billing-address-manual-btn').click(function () {\r\n SetBillingAddressManual();\r\n });\r\n\r\n $('#billing-address-auto-btn').click(function () {\r\n SetBillingAddressAuto();\r\n });\r\n\r\n $('#billCountry').change(function (e) {\r\n e.preventDefault();\r\n if ($('#billCountry').val() != \"GB\") { // can only use lookup for UK addresses at the moment\r\n SetBillingAddressManual();\r\n }\r\n else {\r\n SetBillingAddressAuto();\r\n }\r\n GetDeliveryOptions();\r\n return false;\r\n });\r\n\r\n $('#delCountry').change(function (e) {\r\n e.preventDefault();\r\n if ($('#delCountry').val() != \"GB\") { // can only use lookup for UK addresses at the moment\r\n SetDeliveryAddressManual();\r\n }\r\n else {\r\n SetDeliveryAddressAuto();\r\n }\r\n GetDeliveryOptions();\r\n return false;\r\n });\r\n\r\n $('#delivery-address-manual-btn').click(function () {\r\n SetDeliveryAddressManual();\r\n });\r\n\r\n $('#delivery-address-auto-btn').click(function () {\r\n SetDeliveryAddressAuto();\r\n });\r\n\r\n $('.billPostcode').change(function () {\r\n GetDeliveryOptions();\r\n });\r\n $('.delPostcode').change(function () {\r\n GetDeliveryOptions();\r\n });\r\n\r\n $(document).on(\"click\", \".deliveryOptionRbn\", function (e) {\r\n var deliveryOptionId = $('input[name=deliveryOption]:radio:checked').val();\r\n GetDeliveryOptions(deliveryOptionId);\r\n return false;\r\n });\r\n\r\n\r\n $('#use-billing-cbx').click(function () {\r\n if ($(this).prop('checked')) {\r\n $('#delivery-wrapper').slideUp();\r\n $(\"#save-address-wrapper\").hide();\r\n $(\".pick-existing-address\").hide();\r\n }\r\n else {\r\n $('#delivery-wrapper').slideDown();\r\n $(\"#save-address-wrapper\").show();\r\n $(\".pick-existing-address\").show();\r\n }\r\n var useBilling = $('#use-billing-cbx').prop('checked');\r\n var billCountry = $('#billCountry').val();\r\n var delCountry = $('#delCountry').val();\r\n //$.post(\"@Url.Action(\"ChangeDelivery\", \"Cart\")\", {useBilling: useBilling, billCountry: billCountry, delCountry: delCountry}, CountryChanged, \"json\");\r\n GetDeliveryOptions();\r\n });\r\n\r\n $(\"#makePaymentBtn\").click(function () {\r\n if (validateInput()) {\r\n $(\"#makePaymentBtn\").text(\"Processing Order..\");\r\n //$(\"#makePaymentBtn\").css(\"color\", \"#000\");\r\n // check stock\r\n if (fbPixelEnabled == \"True\") {\r\n fbq_ProcessPayment();\r\n }\r\n $('#checkout-form').submit();\r\n }\r\n else {\r\n $('#validate-errors').fadeIn();\r\n }\r\n return false;\r\n });\r\n\r\n $('#discount-input-tbx').blur(function () {\r\n $('#voucher-not-found').fadeOut();\r\n });\r\n\r\n $('#sagepayBtn').click(function () {\r\n $('#makePaymentBtn .pf-place-order-btn-text').text('Make Payment');\r\n $('#customer-details').slideDown();\r\n $('#delivery-note').show();\r\n $('#billing').slideDown();\r\n $('#useBillingBtn').show();\r\n $('#use-billing-cbx').prop('checked', true);\r\n $('#delivery-wrapper').hide();\r\n $('#delivery .checkout-step').text(\"4) \");\r\n GetDeliveryOptions();\r\n });\r\n $('#paypalBtn').click(function () {\r\n $('#makePaymentBtn .pf-place-order-btn-text').text('Make Payment');\r\n //$('#customer-details').slideUp();\r\n //$('#delivery-note').hide();\r\n $('#use-billing-cbx').prop('checked', false);\r\n $('#useBillingBtn').hide();\r\n $('#billing').slideUp();\r\n $('#delivery-wrapper').show();\r\n $('#delivery .checkout-step').text(\"3) \");\r\n GetDeliveryOptions();\r\n });\r\n $('#payOnAccountBtn').click(function () {\r\n $('#makePaymentBtn .pf-place-order-btn-text').text('Place Order');\r\n $('#customer-details').slideDown();\r\n $('#delivery-note').show();\r\n $('#billing').slideDown();\r\n $('#useBillingBtn').show();\r\n $('#use-billing-cbx').prop('checked', true);\r\n $('#delivery-wrapper').hide();\r\n $('#delivery .checkout-step').text(\"4) \");\r\n GetDeliveryOptions();\r\n });\r\n\r\n //var sagepay = $('#checkout-form').data('sagepay');\r\n //var paypal = $('#checkout-form').data('paypal');\r\n //if(sagepay == \"True\" && paypal == \"True\")\r\n //{\r\n // $('#paypalBtn').trigger(\"click\");\r\n //}\r\n $('#terms-cbx').click(function () {\r\n if ($('#terms-cbx').prop('checked')) {\r\n ValidNotes(\"\", false);\r\n }\r\n });\r\n\r\n //$(document).on(\"click\", \".editMessageBtn\", function (e) {\r\n // var id = $(this).closest('tr').attr('id');\r\n // id = id.replace(\"prod-\", \"\");\r\n // var txt = $(this).prev('.personalMessageTxt').val();\r\n // $(this).hide();\r\n // $.post(\"@Url.Action(\"UpdatePersonalMessage\", \"Cart\")\", { pID: id, pMessageText: txt }, PersonalMessageUpdated, \"json\");\r\n // return false;\r\n //});\r\n\r\n $('.gift-option-radio').change(function () {\r\n giftWrappingOption = $(this).val();\r\n GetDeliveryOptions();\r\n });\r\n $(\"#save-address\").on(\"click\", function ()\r\n { \r\n var delAddr1 = $(\"#delAddr1\").val();\r\n var delAddr2 = $(\"#delAddr2\").val();\r\n var delTown = $(\"#delTown\").val();\r\n var delCounty = $(\"#delCounty\").val();\r\n var delPostcode = $(\"#delPostcode\").val();\r\n var userId = $(\"#save-address-wrapper\").data(\"user-id\");\r\n var delCountry = $(\"#delCountry\").val();\r\n var addressId = $(\"#save-address-wrapper\").data(\"address-id\");\r\n console.log(userId);\r\n $.post(root + \"UserAccount/SaveDeliveryAddress\", {\r\n userId: userId, \r\n delAddr1: delAddr1,\r\n delAddr2: delAddr2,\r\n delTown: delTown,\r\n delCounty: delCounty,\r\n delPostcode: delPostcode\r\n }, function (data) {\r\n alert(data.result);\r\n });\r\n \r\n //SaveAddress();\r\n\r\n });\r\n $('#addressPicker').on(\"change\", function ()\r\n {\r\n var id = this.value;\r\n var userId = $(\"#userId\").val();\r\n \r\n $.post(root+ \"UserAccount/GetAddress\",\r\n {\r\n addressId: id,\r\n userId: userId\r\n },\r\n function (data, status) {\r\n if (data.AddressId > 0) {\r\n $('#delAddr1').val(data.Address1);\r\n $('#delAddr2').val(data.Address2);\r\n //$('#newAddressId').val(data.AddressId);\r\n $('#delCounty').val(data.County);\r\n $('#delCountry').val(data.Country);\r\n $('#delPostcode').val(data.Postcode);\r\n $('#delTown').val(data.Town); \r\n SetDeliveryAddressManual();\r\n }\r\n else {\r\n alert('Error: ' + err);\r\n }\r\n });\r\n });\r\n $('#addressPicker2').on(\"change\", function ()\r\n {\r\n var id = this.value;\r\n var userId = $(\"#userId\").val();\r\n \r\n $.post(root+ \"UserAccount/GetAddress\",\r\n {\r\n addressId: id,\r\n userId: userId\r\n },\r\n function (data, status) {\r\n if (data.AddressId > 0) {\r\n $('#billAddr1').val(data.Address1);\r\n $('#billAddr2').val(data.Address2);\r\n //$('#newAddressId').val(data.AddressId);\r\n $('#billCounty').val(data.County);\r\n $('#billCountry').val(data.Country);\r\n $('#billPostcode').val(data.Postcode);\r\n $('#billTown').val(data.Town); \r\n SetBillingAddressManual();\r\n }\r\n else {\r\n alert('Error: ' + err);\r\n }\r\n });\r\n });\r\n // Init after events registered\r\n GetDeliveryOptions();\r\n SetUseBilling();\r\n InitPaymentMethods();\r\n}\r\nfunction SaveAddress()\r\n{\r\n \r\n}\r\nfunction SetUseBilling() {\r\n if ($('#use-billing-cbx').prop('checked')) {\r\n $('#delivery-wrapper').hide();\r\n }\r\n else {\r\n $('#delivery-wrapper').show();\r\n }\r\n}\r\n\r\n//function ItemUpdated(data) {\r\n// if (data.result == \"ok\") {\r\n// location.reload();\r\n// } else if (data.result == \"ok-stock-limited\") {\r\n// //$('#site-msg-modal-header').html(\"Information\");\r\n// //$('#site-msg-modal-msg').html(\"Sorry there are only \" + data.qty + \" of these items available in stock.\");\r\n// //$('#site-msg-modal').modal('show');\r\n// alert(\"Sorry there are only \" + data.qty + \" of these items available in stock.\");\r\n// location.reload();\r\n// } else if (data.result == \"ok-out-of-stock\") {\r\n// //$('#site-msg-modal-header').html(\"Information\");\r\n// //$('#site-msg-modal-msg').html(\"Sorry this item is no longer in stock.\");\r\n// //$('#site-msg-modal').modal('show');\r\n// alert(\"Sorry this item is no longer in stock.\");\r\n// location.reload();\r\n// }\r\n//}\r\n\r\n//function PersonalMessageUpdated(data) {\r\n// if (data.result == \"ok\") {\r\n// var id = data.id;\r\n// var tr = $('#prod-' + id);\r\n// var span = $(tr).find('.ajaxResult');\r\n// var btn = $(tr).find('.editMessageBtn');\r\n// span.text(\"Your personal message has been updated\");\r\n// $(btn).fadeIn();\r\n// $(span).fadeIn();\r\n// setTimeout(function () {\r\n// $(span).fadeOut(\"slow\", function () {\r\n// });\r\n// }, 3000);\r\n// }\r\n//}\r\n\r\nfunction AddVoucherDone(data) {\r\n if (data.result == \"ok\") {\r\n location.reload();\r\n }\r\n else if (data.result == \"fail\") {\r\n // error\r\n alert(\"Error: \" + data.err);\r\n }\r\n else if (data.msg == \"order-total-not-reached\") {\r\n $('#voucher-not-found').find('.pf-alert-msg').text(\"Discount only applies to orders over £\" + parseFloat(data.amount).toFixed(2));\r\n $('#voucher-not-found').fadeIn();\r\n }\r\n else {\r\n $('#voucher-not-found').find('.pf-alert-msg').text(\"Invalid Discount Code\");\r\n $('#voucher-not-found').fadeIn();\r\n }\r\n}\r\n\r\nfunction validateInput() {\r\n $.validity.setup({ outputMode: \"summary\" });\r\n\r\n // Start validation:\r\n $.validity.start();\r\n\r\n // PAYPAL\r\n if ($('#paypalBtn').prop(\"checked\") == true) {\r\n $(\".required-input-delivery\").require();\r\n var email_check = /\\S+@\\S+\\.\\S+/;\r\n var email2 = $('#delEmail').val();\r\n if ($(\"#use-billing-cbx\").prop(\"checked\") != true) {\r\n if (!email_check.test(email2)) {\r\n ValidNotes(\"Please check that your email address is entered correctly.\", true);\r\n $('#delEmail').addClass(\"validity-erroneous\");\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // SAGEPAY\r\n if ($(\"#sagepayBtn\").prop(\"checked\") == true || $(\"#payOnAccountBtn\").prop(\"checked\") == true) {\r\n $(\".required-input\").require();\r\n if ($(\"#use-billing-cbx\").prop(\"checked\") != true) {\r\n $(\".required-input-delivery\").require();\r\n }\r\n }\r\n if ($(\"#payOnAccountBtn\").prop(\"checked\") == true) {\r\n var addr1 = $('#billAddr1').val();\r\n var town1 = $('#billTown').val();\r\n var county1 = $('#billCounty').val();\r\n var post1 = $('#billPostcode').val();\r\n var addr2 = $('#delAddr1').val();\r\n var town2 = $('#delTown').val();\r\n var county2 = $('#delCounty').val();\r\n var post2 = $('#delPostcode').val();\r\n if (addr1 == \"\" || town1 == \"\" || county1 == \"\" || post1 == \"\") {\r\n $('#opc_input').addClass(\"validity-erroneous\");\r\n ValidNotes(\"Please complete all the highlighted fields marked above to continue.\", true);\r\n $('#billing-manual-wrapper').slideDown();\r\n return false;\r\n }\r\n if ($(\"#use-billing-cbx\").prop(\"checked\") != true) {\r\n if (addr2 == \"\" || town2 == \"\" || county2 == \"\" || post2 == \"\") {\r\n $('.delPostcode').addClass(\"validity-erroneous\");\r\n ValidNotes(\"Please complete all the highlighted fields marked above to continue.\", true);\r\n $('#delivery-manual-wrapper').slideDown();\r\n\r\n return false;\r\n }\r\n }\r\n }\r\n // All of the validator methods have been called:\r\n // End the validation session:\r\n var result = $.validity.end();\r\n\r\n if (!result.valid) {\r\n SetBillingAddressManual();\r\n SetDeliveryAddressManual();\r\n }\r\n\r\n // PAYPAL 2nd check\r\n if ($(\"#paypalBtn\").prop(\"checked\") == true) {\r\n if (result.valid) {\r\n\r\n if (($('#delCountry').val() == \"US\") && ($('#delCounty').val().length != 2)) {\r\n ValidNotes(\"Please use only 2 characters for U.S. States, i.e. for Florida put 'FL'.\", true);\r\n $('#delCounty').addClass(\"validity-erroneous\");\r\n return false;\r\n }\r\n }\r\n else {\r\n ValidNotes(\"Please complete all the highlighted fields marked above to continue.\", true);\r\n }\r\n }\r\n\r\n // SAGEPAY 2nd check\r\n if ($(\"#sagepayBtn\").prop(\"checked\") == true || $(\"#payOnAccountBtn\").prop(\"checked\") == true) {\r\n if (result.valid) {\r\n // check email\r\n var email_check = /\\S+@\\S+\\.\\S+/;\r\n var email = $('#billEmail').val();\r\n if (!email_check.test(email)) {\r\n ValidNotes(\"Please check that your email address is entered correctly.\", true);\r\n $('#billEmail').addClass(\"validity-erroneous\");\r\n return false;\r\n }\r\n var email2 = $('#delEmail').val();\r\n if ($(\"#use-billing-cbx\").prop(\"checked\") != true) {\r\n if (!email_check.test(email2)) {\r\n ValidNotes(\"Please check that your email address is entered correctly.\", true);\r\n $('#delEmail').addClass(\"validity-erroneous\");\r\n return false;\r\n }\r\n }\r\n\r\n // for US make sure only 2 characters\r\n if (($('#billCountry').val() == \"US\") && ($('#billCounty').val().length != 2)) {\r\n ValidNotes(\"Please use only 2 characters for U.S. States, i.e. for Florida put 'FL'.\", true);\r\n $('#billCounty').addClass(\"validity-erroneous\");\r\n return false;\r\n }\r\n if (($('#delCountry').val() == \"US\") && ($('#delCounty').val().length != 2)) {\r\n ValidNotes(\"Please use only 2 characters for U.S. States, i.e. for Florida put 'FL'.\", true);\r\n $('#delCounty').addClass(\"validity-erroneous\");\r\n return false;\r\n }\r\n }\r\n else {\r\n ValidNotes(\"Please complete all the highlighted fields marked above to continue.\", true);\r\n }\r\n }\r\n\r\n var requireTerms = $('#checkout-form').data(\"require-terms\");\r\n if (typeof requireTerms === \"undefined\" || requireTerms == \"True\") {\r\n if (result.valid) {\r\n if (!$('#terms-cbx').prop('checked')) {\r\n ValidNotes(\"Please confirm you agree to the website terms and conditions above.\", true);\r\n $('.pf-terms').addClass(\"validity-erroneous\");\r\n return false;\r\n }\r\n }\r\n }\r\n\r\n // Return whether it's okay to proceed with the Ajax:\r\n return result.valid;\r\n}\r\n\r\nfunction ValidNotes(text, show) {\r\n if (show) {\r\n $('#validNotes').html(text);\r\n $('#validNotes').fadeIn();\r\n }\r\n else {\r\n $('#validNotes').fadeOut();\r\n }\r\n}\r\n\r\n// loads delivery options view\r\nfunction GetDeliveryOptions(deliveryOptionId) {\r\n var useBilling = $('#use-billing-cbx').prop('checked');\r\n var countryCode;\r\n var postcode;\r\n if (useBilling == true) {\r\n countryCode = $('#billCountry').val();\r\n postcodeBtn = $('#opc_input').val();\r\n postcodeNoBtn = $('#billPostcode').val();\r\n if (postcodeBtn) {\r\n postcode = postcodeBtn;\r\n }\r\n if (postcodeNoBtn) {\r\n postcode = postcodeNoBtn;\r\n }\r\n\r\n }\r\n else {\r\n countryCode = $('#delCountry').val();\r\n postcodeBtn = $('.delPostcode').val();\r\n postcodeNoBtn = $('#delPostcode').val();\r\n if (postcodeBtn) {\r\n postcode = postcodeBtn;\r\n }\r\n if (postcodeNoBtn) {\r\n postcode = postcodeNoBtn;\r\n }\r\n }\r\n\r\n $.post(root + \"Checkout/GetDeliveryOptionsAndTotals\", {\r\n countryCode: countryCode,\r\n postcode: postcode,\r\n deliveryOptionId: deliveryOptionId,\r\n giftWrappingOptionId: giftWrappingOption\r\n }, function (data) {\r\n $('#delivery-options-frame').html(data);\r\n var deliveryOptionsExist = $('input[name=deliveryOption]').length > 0;\r\n if (deliveryOptionsExist)\r\n $('#makePaymentBtn').show();\r\n else\r\n $('#makePaymentBtn').hide();\r\n });\r\n}\r\n\r\nfunction InitPaymentMethods() {\r\n $(\"#paymentMethods input:radio:first\").prop('checked', true).click();\r\n}\r\n\r\n\r\n// address lookup \r\nfunction SetBillingAddressAuto() {\r\n $('#billing-manual-wrapper').slideUp();\r\n $('#billing-auto-wrapper').show();\r\n\r\n}\r\n\r\nfunction SetBillingAddressManual() {\r\n $('#billing-manual-wrapper').slideDown();\r\n $('#billing-auto-wrapper').hide();\r\n}\r\n\r\n// delivery\r\nfunction SetDeliveryAddressAuto() {\r\n $('#delivery-manual-wrapper').slideUp();\r\n $('#delivery-auto-wrapper').show();\r\n\r\n}\r\n\r\nfunction SetDeliveryAddressManual() {\r\n $('#delivery-manual-wrapper').slideDown();\r\n $('#delivery-auto-wrapper').hide();\r\n}\r\n\r\n//function UpdateItemCartQty(cartId, qty) {\r\n// $.post(root + \"Cart/UpdateItemQuantity\", {\r\n// id: cartId,\r\n// quantity: qty\r\n// }, function (data) {\r\n// // Display warnings if relevant\r\n// if (data.result === 'ok-stock-limited')\r\n// alert('Sorry, there are only ' + data.qty + ' of these items available in stock.');\r\n// else if (data.result === 'ok-out-of-stock')\r\n// alert('Sorry, this item is no longer in stock.');\r\n\r\n// // Fire event\r\n// //$(document).trigger('itemUpdated.mainCart.platform', data);\r\n\r\n// // Refresh page if response OK\r\n// if (data.result.substring(0, 2) === 'ok') {\r\n// location.reload();\r\n// //GetTopCart();\r\n// //SetCartQty();\r\n// }\r\n// }, 'json');\r\n//}\r\n\r\nfunction CheckMinimumOrder() {\r\n $.get(root + 'Checkout/ReachedMinimumOrder', function (response) {\r\n var $makePaymentArea = $('.pf-checkout-actions');\r\n if (response.reachedMinimumOrder)\r\n $makePaymentArea.show();\r\n else\r\n $makePaymentArea.hide();\r\n });\r\n}\r\n\r\nfunction CheckItemsCount() {\r\n $.get(root + 'Checkout/CheckItemsCount', function (response) {\r\n var $makePaymentArea = $('.pf-checkout-actions');\r\n if (response.hasItems)\r\n $makePaymentArea.show();\r\n else\r\n $makePaymentArea.hide();\r\n });\r\n}\r\n\r\n// Register handlers for cart actions\r\n$(document).on('itemUpdated.cart.platform', function (event, data) {\r\n GetDeliveryOptions();\r\n CheckMinimumOrder();\r\n CheckItemsCount();\r\n});\r\n\r\n$(document).on('itemRemoved.cart.platform', function (event, data) {\r\n GetDeliveryOptions();\r\n CheckMinimumOrder();\r\n CheckItemsCount();\r\n});\r\n\r\n$(document).on('discountUpdated.cart.platform', function (event, data) {\r\n GetDeliveryOptions();\r\n CheckMinimumOrder();\r\n CheckItemsCount();\r\n});","/*\r\n * jQuery.validity v1.2.0\r\n * http://validity.thatscaptaintoyou.com/\r\n * https://github.com/whatgoodisaroad/validity\r\n * \r\n * Dual licensed under MIT and GPL\r\n *\r\n * Date: 2011-09-16 (Friday, 16 September 2011)\r\n */\r\n(function($, undefined) {\r\n \r\n // Default settings:\r\n ////////////////////////////////////////////////////////////////\r\n \r\n var \r\n defaults = {\r\n // The default output mode is tooltip because it requires no dependencies:\r\n outputMode:\"tooltip\",\r\n \r\n // The this property is set to true, validity will scroll the browser viewport\r\n // so that the first error is visible when validation fails:\r\n scrollTo:false,\r\n\r\n // If this setting is true, modal errors will disappear when they are clicked on:\r\n modalErrorsClickable:true,\r\n\r\n // If a field name cannot be otherwise inferred, this will be used:\r\n defaultFieldName:\"This field\",\r\n \r\n // jQuery selector to filter down to validation-supported elements:\r\n elementSupport:\":text, :password, textarea, select, :radio, :checkbox\",\r\n \r\n // Function to stringify argments for use when generating error messages.\r\n // Primarily, it just generates pretty date strings:\r\n argToString:function(val) {\r\n return val.getDate ?\r\n (val.getMonth() + 1) + \"/\" + val.getDate() + \"/\" + val.getFullYear() :\r\n val;\r\n },\r\n \r\n debugPrivates:false\r\n },\r\n \r\n __private;\r\n \r\n // Static functions and properties:\r\n ////////////////////////////////////////////////////////////////\r\n \r\n $.validity = {\r\n\r\n // Clone the defaults. They can be overridden with the setup function:\r\n settings:$.extend(defaults, {}),\r\n\r\n // Built-in library of format-checking tools for use with the \r\n // match validator as well as the nonHtml validator:\r\n patterns:{\r\n integer:/^\\d+$/,\r\n \r\n // Used to use Date.parse(), which was the cause of Issue 9, \r\n // where the function would accept 09/80/2009 as parseable.\r\n // The fix is to use a RegExp that will only accept American Middle-Endian form.\r\n // See the Internationalization section in the documentation for how to\r\n // cause it to support other date formats:\r\n date:/^((0?\\d)|(1[012]))\\/([012]?\\d|30|31)\\/\\d{1,4}$/, \r\n \r\n email:/^((([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+(\\.([a-z]|\\d|[!#\\$%&'\\*\\+\\-\\/=\\?\\^_`{\\|}~]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])+)*)|((\\x22)((((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(([\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x7f]|\\x21|[\\x23-\\x5b]|[\\x5d-\\x7e]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(\\\\([\\x01-\\x09\\x0b\\x0c\\x0d-\\x7f]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]))))*(((\\x20|\\x09)*(\\x0d\\x0a))?(\\x20|\\x09)+)?(\\x22)))@((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?$/i,\r\n usd:/^\\$?((\\d{1,3}(,\\d{3})*)|\\d+)(\\.(\\d{2})?)?$/, \r\n url:/^(https?|ftp):\\/\\/(((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:)*@)?(((\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5])\\.(\\d|[1-9]\\d|1\\d\\d|2[0-4]\\d|25[0-5]))|((([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|\\d|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.)+(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])*([a-z]|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])))\\.?)(:\\d*)?)(\\/((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)+(\\/(([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)*)*)?)?(\\?((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|[\\uE000-\\uF8FF]|\\/|\\?)*)?(\\#((([a-z]|\\d|-|\\.|_|~|[\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF])|(%[\\da-f]{2})|[!\\$&'\\(\\)\\*\\+,;=]|:|@)|\\/|\\?)*)?$/i,\r\n \r\n // Number should accept floats or integers, be they positive or negative.\r\n // It should also support scientific-notation, written as a lower or capital 'E' followed by the radix.\r\n // Number assumes base 10. \r\n // Unlike the native parseFloat or parseInt functions, this should not accept trailing Latin characters.\r\n number:/^[+-]?(\\d+(\\.\\d*)?|\\.\\d+)([Ee]-?\\d+)?$/,\r\n \r\n zip:/^\\d{5}(-\\d{4})?$/,\r\n phone:/^[2-9]\\d{2}-\\d{3}-\\d{4}$/,\r\n guid:/^(\\{?([0-9a-fA-F]){8}-(([0-9a-fA-F]){4}-){3}([0-9a-fA-F]){12}\\}?)$/,\r\n time12:/^((0?\\d)|(1[12])):[0-5]\\d?\\s?[aApP]\\.?[mM]\\.?$/,\r\n \r\n time24:/^(20|21|22|23|[01]\\d|\\d)(([:][0-5]\\d){1,2})$/,\r\n\r\n nonHtml:/^[^<>]*$/\r\n },\r\n\r\n // Built-in set of default error messages (for use when a message isn't specified):\r\n messages:{\r\n\r\n require:\"#{field} is required.\",\r\n // Format validators:\r\n match:\"#{field} is in an invalid format.\",\r\n integer:\"#{field} must be a positive, whole number.\",\r\n date:\"#{field} must be formatted as a date. (mm/dd/yyyy)\",\r\n email:\"#{field} must be formatted as an email.\",\r\n usd:\"#{field} must be formatted as a US Dollar amount.\",\r\n url:\"#{field} must be formatted as a URL.\",\r\n number:\"#{field} must be formatted as a number.\",\r\n zip:\"#{field} must be formatted as a zipcode ##### or #####-####.\",\r\n phone:\"#{field} must be formatted as a phone number ###-###-####.\",\r\n guid:\"#{field} must be formatted as a guid like {3F2504E0-4F89-11D3-9A0C-0305E82C3301}.\",\r\n time24:\"#{field} must be formatted as a 24 hour time: 23:00.\",\r\n time12:\"#{field} must be formatted as a 12 hour time: 12:00 AM/PM\",\r\n\r\n // Value range messages:\r\n lessThan:\"#{field} must be less than #{max}.\",\r\n lessThanOrEqualTo:\"#{field} must be less than or equal to #{max}.\",\r\n greaterThan:\"#{field} must be greater than #{min}.\",\r\n greaterThanOrEqualTo:\"#{field} must be greater than or equal to #{min}.\",\r\n range:\"#{field} must be between #{min} and #{max}.\",\r\n\r\n // Value length messages:\r\n tooLong:\"#{field} cannot be longer than #{max} characters.\",\r\n tooShort:\"#{field} cannot be shorter than #{min} characters.\",\r\n\r\n // Composition validators:\r\n nonHtml:\"#{field} cannot contain HTML characters.\",\r\n alphabet:\"#{field} contains disallowed characters.\",\r\n\r\n minCharClass:\"#{field} cannot have more than #{min} #{charClass} characters.\",\r\n maxCharClass:\"#{field} cannot have less than #{min} #{charClass} characters.\",\r\n \r\n // Aggregate validator messages:\r\n equal:\"Values don't match.\",\r\n distinct:\"A value was repeated.\",\r\n sum:\"Values don't add to #{sum}.\",\r\n sumMax:\"The sum of the values must be less than #{max}.\",\r\n sumMin:\"The sum of the values must be greater than #{min}.\",\r\n\r\n // Radio validator messages:\r\n radioChecked:\"The selected value is not valid.\",\r\n \r\n generic:\"Invalid.\"\r\n },\r\n \r\n // Abstract output:\r\n out:{\r\n start:function() {\r\n this.defer(\"start\");\r\n },\r\n end:function(results) {\r\n this.defer(\"end\", results);\r\n },\r\n raise:function($obj, msg) {\r\n this.defer(\"raise\", $obj, msg);\r\n },\r\n raiseAggregate:function($obj, msg) {\r\n this.defer(\"raiseAggregate\", $obj, msg);\r\n },\r\n defer:function(name) {\r\n var \r\n v = $.validity,\r\n o = v.outputs[v.settings.outputMode];\r\n \r\n o[name].apply(\r\n o,\r\n Array.prototype.slice.call(arguments, 1)\r\n );\r\n }\r\n },\r\n \r\n // Character classes can be used to determine the quantity\r\n // of a given type of character in a string:\r\n charClasses:{\r\n alphabetical:/\\w/g,\r\n numeric:/\\d/g,\r\n alphanumeric:/[A-Za-z0-9]/g,\r\n symbol:/[^A-Za-z0-9]/g\r\n },\r\n\r\n // Object to contain the output modes. The three built-in output modes are installed\r\n // later on in this script.\r\n outputs:{},\r\n \r\n // By default, private members are not exposed.\r\n __private:undefined,\r\n\r\n // Override the default settings with user-specified ones.\r\n setup:function(options) {\r\n this.settings = $.extend(this.settings, options);\r\n \r\n if (this.settings.debugPrivates) {\r\n this.__private = __private;\r\n }\r\n else {\r\n this.__private = undefined;\r\n }\r\n },\r\n\r\n // Object to store information about ongoing validation.\r\n // When validation starts, this will be set to a report object.\r\n // When validators fail, they will inform this object.\r\n // When validation is completed, this object will contain the \r\n // information of whether it succeeded:\r\n report:null,\r\n\r\n // Determine whether validity is in the middle of validation:\r\n isValidating:function() {\r\n return !!this.report;\r\n },\r\n\r\n // Function to prepare validity to start validating:\r\n start:function() {\r\n // The output mode should be notified that validation is starting.\r\n // This usually means that the output mode will erase errors from the \r\n // document in whatever way the mode needs to:\r\n this.out.start();\r\n \r\n // Initialize the report object:\r\n this.report = { errors:0, valid:true };\r\n },\r\n\r\n // Function called when validation is over to examine the results and clean-up:\r\n end:function() {\r\n // Null coalescence: fix for Issue 5:\r\n var results = this.report || { errors: 0, valid: true };\r\n\r\n this.report = null;\r\n \r\n // Notify the current output mode that validation is over:\r\n this.out.end(results);\r\n \r\n return results;\r\n },\r\n\r\n // Remove validiation errors:\r\n clear:function() {\r\n this.start();\r\n this.end();\r\n }\r\n };\r\n \r\n // jQuery instance methods:\r\n ////////////////////////////////////////////////////////////////\r\n\r\n $.fn.extend({\r\n\r\n // The validity function is how validation can be bound to forms.\r\n // The user may pass in a validation function or, as a shortcut, \r\n // pass in a string of a CSS selector that grabs all the inputs to \r\n // require:\r\n validity:function(arg) {\r\n \r\n return this.each(\r\n \r\n function() {\r\n \r\n // Only operate on forms:\r\n if (this.tagName.toLowerCase() == \"form\") {\r\n var f = null;\r\n\r\n // If the user entered a string to select the inputs to require,\r\n // then make the validation logic ad hoc:\r\n if (typeof (arg) == \"string\") {\r\n f = function() {\r\n $(arg).require();\r\n };\r\n }\r\n\r\n // If the user entered a validation function then just call\r\n // that at the appropriate time:\r\n else if ($.isFunction(arg)) {\r\n f = arg;\r\n }\r\n\r\n if (arg) {\r\n $(this).bind(\r\n \"submit\",\r\n function() {\r\n $.validity.start();\r\n f();\r\n return $.validity.end().valid;\r\n }\r\n );\r\n }\r\n }\r\n }\r\n );\r\n },\r\n\r\n // Validators:\r\n ////////////////////////////////////////////////\r\n\r\n // Common validators:\r\n ////////////////////////////////\r\n \r\n // Validate whether the field has a value.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Require\r\n require:function(msg) {\r\n return validate(\r\n this,\r\n function(obj) {\r\n var val = $(obj).val();\r\n \r\n var res = val.length;\r\n \r\n return res;\r\n },\r\n msg || $.validity.messages.require\r\n );\r\n },\r\n\r\n // Validate whether the field matches a regex.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Match\r\n match:function(rule, msg) {\r\n\r\n // If a default message is to be used:\r\n if (!msg) {\r\n // First grab the generic one:\r\n msg = $.validity.messages.match;\r\n\r\n // If there's a more specific one, use that.\r\n if (typeof (rule) === \"string\" && $.validity.messages[rule]) {\r\n msg = $.validity.messages[rule];\r\n }\r\n }\r\n\r\n // If the rule is named, rather than specified:\r\n if (typeof (rule) == \"string\") {\r\n rule = $.validity.patterns[rule];\r\n }\r\n\r\n return validate(\r\n this,\r\n\r\n // Some of the named rules can be functions, such as 'date'.\r\n // If the discovered rule is a function use it as such.\r\n // Otherwise, assume it's a RegExp.\r\n $.isFunction(rule) ?\r\n\r\n function(obj) {\r\n return !obj.value.length || rule(obj.value);\r\n } :\r\n\r\n function(obj) {\r\n // Fix for regexes where the global flag is set.\r\n // Make sure to test from the start of the string.\r\n if (rule.global) {\r\n rule.lastIndex = 0;\r\n }\r\n \r\n return !obj.value.length || rule.test(obj.value);\r\n },\r\n\r\n msg\r\n );\r\n },\r\n\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Range\r\n range:function(min, max, msg) {\r\n return validate(\r\n this,\r\n\r\n min.getTime && max.getTime ?\r\n\r\n // If both arguments are dates then use them that way.\r\n function(obj) {\r\n var d = new Date(obj.value);\r\n return d >= new Date(min) && d <= new Date(max);\r\n } :\r\n\r\n min.substring && max.substring && Big ?\r\n\r\n // If both arguments are strings then parse them \r\n // using the Arbitrary-Precision library.\r\n function(obj) {\r\n var n = new Big(obj.value);\r\n return (\r\n n.greaterThanOrEqualTo(new Big(min)) && \r\n n.lessThanOrEqualTo(new Big(max))\r\n );\r\n } :\r\n\r\n // Otherwise treat them like floats.\r\n function(obj) {\r\n var f = parseFloat(obj.value);\r\n return f >= min && f <= max;\r\n },\r\n\r\n msg || format(\r\n $.validity.messages.range, {\r\n min:$.validity.settings.argToString(min),\r\n max:$.validity.settings.argToString(max)\r\n }\r\n )\r\n );\r\n },\r\n\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#GreaterThan\r\n greaterThan:function(min, msg) {\r\n return validate(\r\n this,\r\n\r\n min.getTime ?\r\n function(obj) {\r\n return new Date(obj.value) > min;\r\n } :\r\n\r\n min.substring && Big ?\r\n\r\n function(obj) {\r\n return new Big(obj.value).greaterThan(new Big(min)); \r\n } :\r\n\r\n function(obj) {\r\n return parseFloat(obj.value) > min;\r\n },\r\n\r\n msg || format(\r\n $.validity.messages.greaterThan, {\r\n min:$.validity.settings.argToString(min)\r\n }\r\n )\r\n );\r\n },\r\n\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#GreaterThan\r\n greaterThanOrEqualTo:function(min, msg) {\r\n return validate(\r\n this,\r\n\r\n min.getTime ?\r\n function(obj) {\r\n return new Date(obj.value) >= min;\r\n } :\r\n\r\n min.substring && Big ?\r\n\r\n function(obj) {\r\n return new Big(obj.value).greaterThanOrEqualTo(new Big(min));\r\n } :\r\n\r\n function(obj) {\r\n return parseFloat(obj.value) >= min;\r\n },\r\n\r\n msg || format(\r\n $.validity.messages.greaterThanOrEqualTo, {\r\n min:$.validity.settings.argToString(min)\r\n }\r\n )\r\n );\r\n },\r\n\r\n // http://code.google.com/p/validity/wiki/Validators#LessThan\r\n lessThan:function(max, msg) {\r\n return validate(\r\n this,\r\n\r\n max.getTime ?\r\n function(obj) {\r\n return new Date(obj.value) < max;\r\n } :\r\n\r\n max.substring && Big ?\r\n\r\n function(obj) {\r\n return new Big(obj.value).lessThan(new Big(max));\r\n } :\r\n\r\n function(obj) {\r\n return parseFloat(obj.value) < max;\r\n },\r\n\r\n msg || format(\r\n $.validity.messages.lessThan, {\r\n max:$.validity.settings.argToString(max)\r\n }\r\n )\r\n );\r\n },\r\n\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#LessThan\r\n lessThanOrEqualTo:function(max, msg) {\r\n return validate(\r\n this,\r\n\r\n max.getTime ?\r\n function(obj) {\r\n return new Date(obj.value) <= max;\r\n } :\r\n\r\n max.substring && Big ?\r\n\r\n function(obj) {\r\n return new Big(obj.value).lessThanOrEqualTo(new Big(max));\r\n } :\r\n\r\n function(obj) {\r\n return parseFloat(obj.value) <= max;\r\n },\r\n\r\n msg || format(\r\n $.validity.messages.lessThanOrEqualTo, {\r\n max:$.validity.settings.argToString(max)\r\n }\r\n )\r\n );\r\n },\r\n\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#LessThan\r\n maxLength:function(max, msg) {\r\n return validate(\r\n this,\r\n function(obj) {\r\n return obj.value.length <= max;\r\n },\r\n msg || format(\r\n $.validity.messages.tooLong, {\r\n max:max\r\n }\r\n )\r\n );\r\n },\r\n\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Length\r\n minLength:function(min, msg) {\r\n return validate(\r\n this,\r\n function(obj) {\r\n return obj.value.length >= min;\r\n },\r\n msg || format(\r\n $.validity.messages.tooShort, {\r\n min:min\r\n }\r\n )\r\n );\r\n },\r\n \r\n // TODO: Document\r\n alphabet:function(alpha, msg) {\r\n var chars = [];\r\n \r\n return validate(\r\n this,\r\n function(obj) {\r\n \r\n // For each character in the string, ensure that \r\n // it's in the alphabet definition:\r\n for (var idx = 0; idx < obj.value.length; ++idx) {\r\n if (alpha.indexOf(obj.value.charAt(idx)) == -1) {\r\n chars.push(obj.value.charAt(idx));\r\n return false;\r\n }\r\n }\r\n \r\n return true;\r\n },\r\n msg || format(\r\n $.validity.messages.alphabet, {\r\n chars:chars.join(\", \")\r\n }\r\n )\r\n );\r\n },\r\n \r\n // TODO: Document\r\n minCharClass:function(charClass, min, msg) {\r\n if (typeof(charClass) == \"string\") {\r\n charClass = charClass.toLowerCase();\r\n \r\n if ($.validity.charClasses[charClass]) {\r\n charClass = $.validity.charClasses[charClass];\r\n }\r\n }\r\n \r\n return validate(\r\n this,\r\n function(obj) {\r\n return (obj.value.match(charClass) || []).length >= min;\r\n },\r\n msg || format(\r\n $.validity.messages.minCharClass, {\r\n min:min,\r\n charClass:charClass\r\n }\r\n )\r\n );\r\n },\r\n \r\n // TODO: Document\r\n maxCharClass:function(charClass, max, msg) {\r\n if (typeof(charClass) == \"string\") {\r\n charClass = charClass.toLowerCase();\r\n \r\n if ($.validity.charClasses[charClass]) {\r\n charClass = $.validity.charClasses[charClass];\r\n }\r\n }\r\n \r\n return validate(\r\n this,\r\n function(obj) {\r\n return (obj.value.match(charClass) || []).length <= max;\r\n },\r\n msg || format(\r\n $.validity.messages.maxCharClass, {\r\n max:max,\r\n charClass:charClass\r\n }\r\n )\r\n );\r\n },\r\n \r\n // Validate that the input does not contain potentially dangerous strings.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#NonHtml\r\n nonHtml:function(msg) {\r\n return validate(\r\n this,\r\n\r\n function(obj) {\r\n return $.validity.patterns.nonHtml.test(obj.value);\r\n },\r\n\r\n msg || $.validity.messages.nonHtml\r\n );\r\n },\r\n \r\n // Aggregate validators:\r\n ////////////////////////////////\r\n \r\n // Validate that all matched elements bear the same values.\r\n // Accepts a function to transform the values for testing.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Equal\r\n equal:function(arg0, arg1) {\r\n var \r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n $reduction = (this.reduction || this).filter($.validity.settings.elementSupport),\r\n\r\n transform = function(val) {\r\n return val;\r\n },\r\n\r\n msg = $.validity.messages.equal;\r\n\r\n if ($reduction.length) {\r\n\r\n // Figure out what arguments were specified.\r\n if ($.isFunction(arg0)) {\r\n transform = arg0;\r\n\r\n if (typeof (arg1) == \"string\") {\r\n msg = arg1;\r\n }\r\n }\r\n\r\n else if (typeof (arg0) == \"string\") {\r\n msg = arg0;\r\n }\r\n\r\n var \r\n map = $.map(\r\n $reduction,\r\n function(obj) {\r\n return transform(obj.value);\r\n }\r\n ),\r\n\r\n // Get the first value.\r\n first = map[0],\r\n valid = true;\r\n\r\n // If any value is not equal to the first value,\r\n // then they aren't all equal, and it's not valid.\r\n for (var i in map) {\r\n if (map[i] != first) {\r\n valid = false;\r\n }\r\n }\r\n\r\n if (!valid) {\r\n raiseAggregateError($reduction, msg);\r\n\r\n // The set reduces to zero valid elements.\r\n this.reduction = $([]);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n // Validate that all matched elements bear distinct values.\r\n // Accepts an optional function to transform the values for testing.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Distinct\r\n distinct:function(arg0, arg1) {\r\n var \r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n $reduction = (this.reduction || this).filter($.validity.settings.elementSupport),\r\n\r\n transform = function(val) {\r\n return val;\r\n },\r\n\r\n msg = $.validity.messages.distinct,\r\n\r\n // An empty array to store already-examined values\r\n subMap = [],\r\n\r\n valid = true;\r\n\r\n if ($reduction.length) {\r\n\r\n // Figure out what arguments were specified.\r\n if ($.isFunction(arg0)) {\r\n transform = arg0;\r\n\r\n if (typeof (arg1) == \"string\") {\r\n msg = arg1;\r\n }\r\n }\r\n\r\n else if (typeof (arg0) == \"string\") {\r\n msg = arg0;\r\n }\r\n\r\n // Map all the matched values into an array. \r\n var map = $.map(\r\n $reduction,\r\n function(obj) {\r\n return transform(obj.value);\r\n }\r\n );\r\n\r\n // For each transformed value:\r\n for (var i1 = 0; i1 < map.length; ++i1) {\r\n // Unless it's an empty string:\r\n if (map[i1].length) {\r\n // For each value we've already looked at:\r\n for (var i2 = 0; i2 < subMap.length; ++i2) {\r\n // If we've already seen the transformed value:\r\n if (subMap[i2] == map[i1]) {\r\n valid = false;\r\n }\r\n }\r\n\r\n // We looked at the value.\r\n subMap.push(map[i1]);\r\n }\r\n }\r\n\r\n if (!valid) {\r\n raiseAggregateError($reduction, msg);\r\n\r\n // The set reduces to zero valid elements.\r\n this.reduction = $([]);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n\r\n // Validate that the numeric sum of all values is equal to a given value.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Sum\r\n sum:function(sum, msg) {\r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n var $reduction = (this.reduction || this).filter($.validity.settings.elementSupport);\r\n\r\n if ($reduction.length && sum != numericSum($reduction)) {\r\n raiseAggregateError(\r\n $reduction,\r\n msg || format(\r\n $.validity.messages.sum,\r\n { sum:sum }\r\n )\r\n );\r\n\r\n // The set reduces to zero valid elements.\r\n this.reduction = $([]);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n // Validates an inclusive upper-bound on the numeric sum of the values of all matched elements.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Sum\r\n sumMax:function(max, msg) {\r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n var $reduction = (this.reduction || this).filter($.validity.settings.elementSupport);\r\n\r\n if ($reduction.length && max < numericSum($reduction)) {\r\n raiseAggregateError(\r\n $reduction,\r\n msg || format(\r\n $.validity.messages.sumMax,\r\n { max:max }\r\n )\r\n );\r\n\r\n // The set reduces to zero valid elements.\r\n this.reduction = $([]);\r\n }\r\n\r\n return this;\r\n },\r\n\r\n // Validates an inclusive lower-bound on the numeric sum of the values of all matched elements.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Sum\r\n sumMin:function(min, msg) {\r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n var $reduction = (this.reduction || this).filter($.validity.settings.elementSupport);\r\n\r\n if ($reduction.length && min < numericSum($reduction)) {\r\n raiseAggregateError(\r\n $reduction,\r\n msg || format(\r\n $.validity.messages.sumMin,\r\n { min:min }\r\n )\r\n );\r\n\r\n // The set reduces to zero valid elements.\r\n this.reduction = $([]);\r\n }\r\n\r\n return this;\r\n },\r\n \r\n // Radio group validators:\r\n ////////////////////////////////\r\n \r\n // TODO: Document\r\n radioChecked:function(val, msg) {\r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n var $reduction = (this.reduction || this).filter($.validity.settings.elementSupport);\r\n \r\n if ($reduction.is(\":radio\") && $reduction.find(\":checked\").val() != val) {\r\n raiseAggregateError(\r\n $reduction,\r\n msg || $.validity.messages.radioChecked\r\n );\r\n }\r\n },\r\n \r\n // TODO: Document\r\n radioNotChecked:function(val, msg) {\r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n var $reduction = (this.reduction || this).filter($.validity.settings.elementSupport);\r\n \r\n if ($reduction.is(\":radio\") && $reduction.filter(\":checked\").val() == val) {\r\n raiseAggregateError(\r\n $reduction,\r\n msg || $.validity.messages.radioChecked\r\n );\r\n }\r\n },\r\n \r\n // Checkbox validators:\r\n ////////////////////////////////\r\n \r\n // TODO: Document\r\n checkboxChecked:function(msg) {\r\n // If a reduced set is attached, use it.\r\n // Also, remove unsupported elements.\r\n var $reduction = (this.reduction || this).filter($.validity.settings.elementSupport);\r\n \r\n if ($reduction.is(\":checkbox\") && !$reduction.is(\":checked\")) {\r\n raiseAggregateError(\r\n $reduction,\r\n msg || $.validity.messages.radioChecked\r\n );\r\n }\r\n },\r\n \r\n // Specialized validators:\r\n ////////////////////////////////\r\n\r\n // If expression is a function, it will be called on each matched element.\r\n // Otherwise, it is treated as a boolean, and the determines the validity \r\n // of elements in an aggregate fashion.\r\n // http://validity.thatscaptaintoyou.com/Demos/index.htm#Assert\r\n assert:function(expression, msg) {\r\n // If a reduced set is attached, use it.\r\n // Do not reduce to supported elements.\r\n var $reduction = this.reduction || this;\r\n\r\n if ($reduction.length) {\r\n\r\n // In the case that 'expression' is a function, \r\n // use it as a regimen on each matched element individually:\r\n if ($.isFunction(expression)) {\r\n return validate(\r\n this,\r\n expression,\r\n msg || $.validity.messages.generic\r\n );\r\n }\r\n\r\n // Otherwise map it to a boolean and consider this as an aggregate validation:\r\n else if (!expression) {\r\n\r\n raiseAggregateError(\r\n $reduction,\r\n msg || $.validity.messages.generic\r\n );\r\n\r\n // The set reduces to zero valid elements.\r\n this.reduction = $([]);\r\n }\r\n }\r\n\r\n return this;\r\n },\r\n \r\n fail:function(msg) {\r\n return this.assert(false, msg);\r\n }\r\n });\r\n\r\n // Private utilities:\r\n ////////////////////////////////////////////////////////////////\r\n\r\n // Do non-aggregate validation.\r\n // Subject each element in $obj to the regimen.\r\n // Raise the specified error on failures.\r\n // This function is the heart of validity:\r\n function validate($obj, regimen, message) {\r\n var \r\n // If a reduced set is attached, use it\r\n // Also, remove any unsupported elements.\r\n $reduction = ($obj.reduction || $obj).filter($.validity.settings.elementSupport),\r\n\r\n // Array to store only elements that pass the regimen.\r\n elements = [];\r\n\r\n // For each in the reduction.\r\n $reduction.each(\r\n function() {\r\n // If the element passes the regimen, include it in the reduction.\r\n if (regimen(this)) {\r\n elements.push(this);\r\n }\r\n\r\n // Else give the element an error message.\r\n else {\r\n raiseError(\r\n this,\r\n format(message, {\r\n field:infer(this)\r\n })\r\n );\r\n }\r\n }\r\n );\r\n\r\n // Attach a (potentially) reduced set of only elements that passed.\r\n $obj.reduction = $(elements);\r\n\r\n // Return the full set with attached reduction.\r\n return $obj;\r\n }\r\n\r\n // Inform the report object that there was a failure.\r\n function addToReport() {\r\n if ($.validity.isValidating()) {\r\n $.validity.report.errors++;\r\n $.validity.report.valid = false;\r\n }\r\n }\r\n\r\n // Inform the report of a failure and display an error according to the \r\n // idiom of the current ouutput mode.\r\n function raiseError(obj, msg) {\r\n addToReport();\r\n\r\n $.validity.out.raise($(obj), msg);\r\n }\r\n\r\n // Inform the report of a failure and display an aggregate error according to the \r\n // idiom of the current output mode.\r\n function raiseAggregateError($obj, msg) {\r\n addToReport();\r\n\r\n $.validity.out.raiseAggregate($obj, msg);\r\n }\r\n\r\n // Yield the sum of the values of all fields matched in obj that can be parsed.\r\n function numericSum(obj) {\r\n var accumulator = 0;\r\n obj.each(\r\n function() {\r\n var n = parseFloat(this.value);\r\n\r\n accumulator += isNaN(n) ? 0 : n;\r\n }\r\n );\r\n return accumulator;\r\n }\r\n\r\n // Using the associative array supplied as the 'obj' argument,\r\n // replace tokens of the format #{} in the 'str' argument with\r\n // that key's value.\r\n function format(str, obj) {\r\n for (var p in obj) {\r\n if (obj.hasOwnProperty(p)) {\r\n str = str.replace(\r\n new RegExp(\"#\\\\{\" + p + \"\\\\}\", \"g\"), \r\n obj[p]\r\n );\r\n }\r\n }\r\n return capitalize(str);\r\n }\r\n\r\n // Infer the field name of the passed DOM element.\r\n // If a title is specified, its value is returned.\r\n // Otherwise, attempt to parse a field name out of the id attribute.\r\n // If that doesn't work, return the default field name in the configuration.\r\n function infer(field) {\r\n var \r\n $f = $(field),\r\n id = $f.prop(\"id\"),\r\n ret = $.validity.settings.defaultFieldName;\r\n\r\n // Check for title.\r\n if ($f.prop(\"title\").length) {\r\n ret = $f.prop(\"title\");\r\n }\r\n\r\n // Check for UpperCamelCase.\r\n else if (/^([A-Z0-9][a-z]*)+$/.test(id)) {\r\n ret = id.replace(/([A-Z0-9])[a-z]*/g, \" $&\");\r\n }\r\n\r\n // Check for lowercase_separated_by_underscores\r\n else if (/^[a-z0-9]+(_[a-z0-9]+)*$/.test(id)) {\r\n var arr = id.split(\"_\");\r\n\r\n for (var i = 0; i < arr.length; ++i) {\r\n arr[i] = capitalize(arr[i]);\r\n }\r\n\r\n ret = arr.join(\" \");\r\n }\r\n\r\n return $.trim(ret);\r\n }\r\n\r\n // Capitolize the first character of the string argument.\r\n function capitalize(sz) {\r\n return sz.substring ?\r\n sz.substring(0, 1).toUpperCase() + sz.substring(1, sz.length) :\r\n sz;\r\n }\r\n \r\n __private = { \r\n validate:validate,\r\n addToReport:addToReport,\r\n raiseError:raiseError,\r\n raiseAggregateError:raiseAggregateError,\r\n numericSum:numericSum,\r\n format:format,\r\n infer:infer,\r\n capitalize:capitalize\r\n };\r\n\r\n})(jQuery);// Output modes:\r\n////////////////////////////////////////////////////////////////\r\n\r\n// Each output mode gets its own closure, \r\n// distinct from the validity closure.\r\n\r\n// Install the tooltip output.\r\n(function($) {\r\n $.validity.outputs.tooltip = {\r\n tooltipClass:\"validity-tooltip\",\r\n \r\n start:function() {\r\n $(\".\" + $.validity.outputs.tooltip.tooltipClass)\r\n .remove();\r\n },\r\n \r\n end:function(results) {\r\n /*// If not valid and scrollTo is enabled, scroll the page to the first error.\r\n if (!results.valid && $.validity.settings.scrollTo) {\r\n return;\r\n document.body.scrollTop = $(\".\" + $.validity.outputs.tooltip.tooltipClass)\r\n .offset()\r\n .top;\r\n }*/\r\n },\r\n\r\n raise:function($obj, msg) {\r\n var pos = $obj.offset();\r\n pos.left += $obj.width() + 18;\r\n pos.top += 8;\r\n \r\n $(\r\n \"
\" + \r\n msg +\r\n \"
\" +\r\n \"
\" + \r\n \"
\" +\r\n \"
\"\r\n )\r\n .click(function() {\r\n $obj.focus();\r\n $(this).fadeOut();\r\n })\r\n .css(pos)\r\n .hide()\r\n .appendTo(\"body\")\r\n .fadeIn();\r\n },\r\n\r\n raiseAggregate:function($obj, msg) {\r\n // Just raise the error on the last input.\r\n if ($obj.length) {\r\n this.raise($obj.filter(\":last\"), msg);\r\n }\r\n }\r\n };\r\n})(jQuery);\r\n\r\n\r\n// Install the label output.\r\n(function($) {\r\n function getIdentifier($obj) {\r\n return $obj.attr('id').length ?\r\n $obj.attr('id') :\r\n $obj.attr('name');\r\n }\r\n\r\n $.validity.outputs.label = {\r\n cssClass:\"error\",\r\n \r\n start:function() {\r\n // Remove all the existing error labels.\r\n $(\".\" + $.validity.settings.cssClass)\r\n .remove();\r\n },\r\n \r\n end:function(results) {\r\n // If not valid and scrollTo is enabled, scroll the page to the first error.\r\n if (!results.valid && $.validity.settings.scrollTo) {\r\n location.hash = $(\".\" + $.validity.outputs.label.cssClass + \":eq(0)\").attr('for');\r\n }\r\n },\r\n\r\n raise:function($obj, msg) {\r\n var \r\n labelSelector = \".\" + $.validity.outputs.label.cssClass + \"[for='\" + getIdentifier($obj) + \"']\";\r\n\r\n // If an error label already exists for the bad input just update its text:\r\n if ($(labelSelector).length) {\r\n $(labelSelector).text(msg);\r\n }\r\n\r\n // Otherwize create a new one and stick it after the input:\r\n else {\r\n $(\"