{"version":3,"sources":["wwwroot/scripts/youli.creditcardpaymentform.js"],"names":["YouLi","CreditCardPaymentForm","payPalNameField","payPalNumberField","payPalExpiryField","payPalCVVField","ConnectedPaymentGateway","Common","PaymentGateway","CyberSource","ConnectedPaymentGatewayUserId","Currency","CountryCode","Name","TransactionFee","InviteeReferenceCode","IsRegisteredWithPayment","CancelPaymentCallback","undefined","ProcessStripePaymentFunction","OnPageErrorHandlerFunction","DoOverpaymentCheck","MakePaymentFunction","CybersourceCountryStates","AuthorizeCountryStates","InitialState","CyberSourceJWT","CyberSourceForm","StripeHandler","StripeKey","StripeElements","StripePaymentElement","StripePaymentIntentId","StripeRedirectURL","window","location","href","IsFutureUsageAllowed","SquareApplicationId","SquareLocationId","SquarePaymentCardObject","PayPalCardFields","PayPalButtons","ShowAutoPay","TripHasInstallmentsWithoutDueDate","HandleFormSubmit","event","preventDefault","Stripe","CompleteStripePayment","CyberSourceRequestCardNonce","Square","SquareHandlePaymentMethodSubmission","AuthorizeNet","Trip","Payments","SendPaymentDataToAuthorizeNet","InitialiseStripe","$","val","Promise","resolve","attr","document","off","on","StripeRefreshPaymentIntent","length","toggleClass","this","is","prop","tooltip","trigger","container","stripeAccount","data","tripId","inviteeId","chargeAmount","chargeLabel","fetch","method","headers","Content-Type","body","JSON","stringify","then","response","ok","Error","json","success","message","clientSecret","paymentIntentId","elements","appearance","theme","variables","fontFamily","fontSizeBase","borderRadius","colorPrimary","colorBackground","colorText","colorDanger","fonts","cssSrc","create","e","elementType","value","type","$genericSurcharge","addClass","find","text","PaymentChargeForm","GetSurchargePercent","GetFormattedCurrency","GetSurchargeAmount","Ach","HasSurcharge","totalAmount","GetStripeChargeAmount","html","GetRefundProtectAmount","removeClass","mount","catch","error","showErrorInModal","hide","hasBillingAddress","clearErrorInModal","reason","paymentMethod","errorMessage","$error","UI","ScrollToTopModal","refreshValidators","validateBootstrap","paymentId","doSetupCustomer","useBillingDetails","inviteeReferenceCode","existingPaymentIntentId","email","firstname","lastname","isFutureUsageAllowed","isRegisteredWithPayment","isSaveCard","isAutoPayEnrol","saveCardDestination","showBillingAddressOnPayment","billToFirstName","billToLastName","billToEmail","billToStreetLine1","billToStreetLine2","billToCity","billToState","billToCountry","postCode","errorHandled","newPaymentId","couponPaymentId","$form","valid","HideButtonLoading","CheckForOverpayment","redirectURL","userMessage","debugMessage","host","OpenSupportTicket","confirmPayment","confirmParams","return_url","paymentsToDelete","push","CancelInProgressPayment","errorObject","console","moment","getElementById","scrollTo","paymentIdsToDelete","Cache-Control","SquareTokenize","token","tokenize","tokenResult","status","errors","InitialiseSquare","payments","card","style","input","fontSize","attach","InitialisePayPal","close","paypal","Buttons","[object Object]","inputData","actions","amount","currencyCode","Code","transactionFee","merchantId","merchantName","saveCard","order","id","onApprove","hasClass","modal","ShowLoading","orderID","HideLoading","err","render","CardFields","font-size","font-family","line-height","padding","color",".invalid","isEligible","NameField","NumberField","ExpiryField","CVVField","addEventListener","log","submit","InitialiseCyberSource","captureContext","flex","Flex","microform","styles",":disabled","cursor","invalid","number","createField","placeholder","securityCode","load","expMonth","querySelector","expYear","options","expirationMonth","expirationYear","createToken","ClearAuthorizeNetForm","validate","resetForm","empty","couponCode","surchargeAmount","refundProtectAmount","originPage","reject","ajax","url","cache","dataType","contentType","complete","responseJSON","paymentErrorDate","UpdateStateSelections","selectedCountryStates","i","Country","Label","States","arrOptions","join","UpdateAutoPayVisibility","showAutoPay","PayPal","destroy","teardown"],"mappings":"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","file":"youli.creditcardpaymentform.min.js","sourcesContent":["var YouLi = YouLi ? YouLi : {};\r\nYouLi.CreditCardPaymentForm = YouLi.CreditCardPaymentForm ? YouLi.CreditCardPaymentForm : {};\r\n\r\n(function (YouLi) {\r\n (function (CreditCardPaymentForm) {\r\n\r\n ///\r\n /// Developer Note: the intention of this script is to provide all the code for making credit card payments, for ALL the different providers.\r\n /// As of right now, it has only had the Stripe, Square and Cybersource code migrated across to it. The next step must be to move Authorize.NET across, out of the youli.trip.payments.js file.\r\n ///\r\n\r\n YouLi.CreditCardPaymentForm.ConnectedPaymentGateway = YouLi.Common.PaymentGateway.CyberSource;\r\n YouLi.CreditCardPaymentForm.ConnectedPaymentGatewayUserId = \"\";\r\n\r\n YouLi.CreditCardPaymentForm.Currency = \"\";\r\n YouLi.CreditCardPaymentForm.CountryCode = \"\";\r\n YouLi.CreditCardPaymentForm.Name = \"\";\r\n YouLi.CreditCardPaymentForm.TransactionFee = 0;\r\n YouLi.CreditCardPaymentForm.InviteeReferenceCode = \"\";\r\n YouLi.CreditCardPaymentForm.IsRegisteredWithPayment = false;\r\n\r\n YouLi.CreditCardPaymentForm.CancelPaymentCallback = undefined;\r\n YouLi.CreditCardPaymentForm.ProcessStripePaymentFunction = undefined;\r\n YouLi.CreditCardPaymentForm.OnPageErrorHandlerFunction = undefined;\r\n YouLi.CreditCardPaymentForm.DoOverpaymentCheck = true; // Future improvement: we could add a \"prepayment\" hook instead, which may do the check for overpayment or anything else which is page-specific\r\n YouLi.CreditCardPaymentForm.MakePaymentFunction = undefined;\r\n\r\n YouLi.CreditCardPaymentForm.CybersourceCountryStates = undefined;\r\n YouLi.CreditCardPaymentForm.AuthorizeCountryStates = undefined;\r\n YouLi.CreditCardPaymentForm.InitialState = undefined;\r\n\r\n YouLi.CreditCardPaymentForm.CyberSourceJWT = undefined;\r\n YouLi.CreditCardPaymentForm.CyberSourceForm = null;\r\n\r\n YouLi.CreditCardPaymentForm.StripeHandler = undefined;\r\n YouLi.CreditCardPaymentForm.StripeKey = undefined;\r\n YouLi.CreditCardPaymentForm.StripeElements = undefined;\r\n YouLi.CreditCardPaymentForm.StripePaymentElement = undefined;\r\n YouLi.CreditCardPaymentForm.StripePaymentIntentId = undefined;\r\n YouLi.CreditCardPaymentForm.StripeRedirectURL = window.location.href;\r\n YouLi.CreditCardPaymentForm.IsFutureUsageAllowed = false;\r\n\r\n YouLi.CreditCardPaymentForm.SquareApplicationId = '';\r\n YouLi.CreditCardPaymentForm.SquareLocationId = '';\r\n YouLi.CreditCardPaymentForm.SquarePaymentCardObject = null;\r\n\r\n YouLi.CreditCardPaymentForm.PayPalCardFields = null;\r\n YouLi.CreditCardPaymentForm.PayPalButtons = null;\r\n\r\n YouLi.CreditCardPaymentForm.ShowAutoPay = false;\r\n YouLi.CreditCardPaymentForm.TripHasInstallmentsWithoutDueDate = false;\r\n\r\n // private variables\r\n let payPalNameField, payPalNumberField, payPalExpiryField, payPalCVVField;\r\n\r\n YouLi.CreditCardPaymentForm.HandleFormSubmit = function (event) {\r\n event.preventDefault();\r\n\r\n switch (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway) {\r\n case YouLi.Common.PaymentGateway.Stripe:\r\n YouLi.CreditCardPaymentForm.CompleteStripePayment();\r\n break;\r\n case YouLi.Common.PaymentGateway.CyberSource:\r\n YouLi.CreditCardPaymentForm.CyberSourceRequestCardNonce();\r\n break;\r\n case YouLi.Common.PaymentGateway.Square:\r\n //YouLi.CreditCardPaymentForm.SquarePaymentForm.requestCardNonce();\r\n YouLi.CreditCardPaymentForm.SquareHandlePaymentMethodSubmission();\r\n break;\r\n case YouLi.Common.PaymentGateway.AuthorizeNet:\r\n YouLi.Trip.Payments.SendPaymentDataToAuthorizeNet(); /// TODO: This function needs to be moved to this file, with a passed callback (like we do for Cybersource)\r\n break;\r\n }\r\n };\r\n\r\n YouLi.CreditCardPaymentForm.InitialiseStripe = function () {\r\n\r\n // no need to initialise for preview (shouldn't load up, anyway) or if the Stripe Elements has already been set up\r\n if ($(\"#PreviewMode\").val() == \"True\" || YouLi.CreditCardPaymentForm.StripeElements != undefined)\r\n return Promise.resolve();\r\n\r\n // initially disable the pay button until Stripe has loaded\r\n $(\"#p-creditcard\").attr(\"disabled\", true);\r\n\r\n $(document).off(\"change\", \"#ChargeAmount\");\r\n $(document).on(\"change\", \"#ChargeAmount\", function () {\r\n YouLi.CreditCardPaymentForm.StripeRefreshPaymentIntent(/*paymentId*/null, /*doSetupCustomer*/false, /*useBillingDetails*/false);\r\n });\r\n\r\n $(document).off(\"change\", \"#SaveCard\");\r\n $(document).on(\"change\", \"#SaveCard\", function () {\r\n\r\n if ($(\"#AutoPayEnrolOption\", \"#GenericPaymentFormDialog\").length > 0 && !YouLi.CreditCardPaymentForm.TripHasInstallmentsWithoutDueDate && YouLi.CreditCardPaymentForm.ShowAutoPay) {\r\n $(\"#AutoPayEnrolOption\", \"#GenericPaymentFormDialog\").toggleClass(\"disabled\", !$(this).is(\":checked\"));\r\n $(\"#EnrolInAutoPay\", \"#GenericPaymentFormDialog\").attr(\"disabled\", !$(this).is(\":checked\"));\r\n\r\n if (!$(this).is(\":checked\")) // clear autopay if it is no longer allowed\r\n $(\"#EnrolInAutoPay\", \"#GenericPaymentFormDialog\").prop(\"checked\", false);\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.StripeRefreshPaymentIntent(/*paymentId*/null, /*doSetupCustomer*/false, /*useBillingDetails*/false);\r\n });\r\n\r\n $(\"#SaveCard.planner-save-card\").off(\"change\");\r\n $(\"#SaveCard.planner-save-card\").on(\"change\", function () {\r\n $(\"#SaveCardPlannerDetails\").toggleClass(\"hidden\", !$(this).is(\":checked\"));\r\n });\r\n\r\n $('input[name=\"SaveCardDestination\"]').off(\"change\");\r\n $('input[name=\"SaveCardDestination\"]').on(\"change\", function () {\r\n YouLi.CreditCardPaymentForm.StripeRefreshPaymentIntent(/*paymentId*/null, /*doSetupCustomer*/false, /*useBillingDetails*/false);\r\n });\r\n\r\n $(document).on(\"change\", \"#GenericPaymentFormDialog #EnrolInAutoPay\", function () {\r\n\r\n YouLi.CreditCardPaymentForm.StripeRefreshPaymentIntent(/*paymentId*/null, /*doSetupCustomer*/false, /*useBillingDetails*/false);\r\n });\r\n\r\n // initialise tooltip for Save Card manually (if needed)\r\n $('#SaveCardPlannerDetails [data-toggle=\"tooltip\"]').tooltip({\r\n trigger: \"hover focus\",\r\n container: \"body\"\r\n });\r\n\r\n YouLi.CreditCardPaymentForm.StripeHandler = Stripe(YouLi.CreditCardPaymentForm.StripeKey, {\r\n stripeAccount: YouLi.CreditCardPaymentForm.ConnectedPaymentGatewayUserId,\r\n });\r\n\r\n let data = {\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n chargeAmount: $(\"#ChargeAmount\").val(),\r\n chargeLabel: $(\"#ChargeLabel\").val()\r\n };\r\n\r\n return fetch(\"/trip/createupdatestripepaymentintent\", {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(data),\r\n }).then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"We were unable to process your payment. Please try again, or contact your planner.\");\r\n }\r\n return response.json();\r\n }).then(data => {\r\n\r\n if (!data.success) {\r\n throw new Error(data.message);\r\n }\r\n\r\n const clientSecret = data.clientSecret;\r\n YouLi.CreditCardPaymentForm.StripePaymentIntentId = data.paymentIntentId;\r\n\r\n const appearance = {\r\n theme: 'stripe',\r\n variables: {\r\n fontFamily: 'Open Sans, Arial, Helvetica, sans-serif',\r\n fontSizeBase: '16px',\r\n borderRadius: '0px',\r\n colorPrimary: '#003049',\r\n colorBackground: '#FFFFFF',\r\n colorText: '#343F46',\r\n colorDanger: '#F15641',\r\n }\r\n };\r\n\r\n const fonts = [\r\n {\r\n cssSrc: 'https://fonts.googleapis.com/css?family=Open+Sans',\r\n }\r\n ];\r\n\r\n YouLi.CreditCardPaymentForm.StripeElements = YouLi.CreditCardPaymentForm.StripeHandler.elements({ appearance, fonts, clientSecret });\r\n\r\n YouLi.CreditCardPaymentForm.StripePaymentElement = YouLi.CreditCardPaymentForm.StripeElements.create(\"payment\");\r\n\r\n YouLi.CreditCardPaymentForm.StripePaymentElement.on('ready', function () {\r\n $(\"#p-creditcard\").attr(\"disabled\", false);\r\n });\r\n\r\n YouLi.CreditCardPaymentForm.StripePaymentElement.on('change', function (e) {\r\n if (e.elementType == \"payment\") {\r\n YouLi.CreditCardPaymentForm.IsFutureUsageAllowed = (e.value.type == \"card\" || e.value.type === \"us_bank_account\");\r\n let $genericSurcharge = $('.generic-card-surcharge-container');\r\n\r\n // toggle the \"Save card\" option (and clear it if it as checked and no longer should be)\r\n $(\"#SaveCardOption\").toggleClass(\"hidden\", !YouLi.CreditCardPaymentForm.IsFutureUsageAllowed);\r\n if (!YouLi.CreditCardPaymentForm.IsFutureUsageAllowed)\r\n $(\"#SaveCard\").prop(\"checked\", false);\r\n\r\n if ($(\"#AutoPayEnrolOption\", \"#GenericPaymentFormDialog\").length > 0 && !YouLi.CreditCardPaymentForm.TripHasInstallmentsWithoutDueDate && YouLi.CreditCardPaymentForm.ShowAutoPay) {\r\n $(\"#AutoPayEnrolOption\", \"#GenericPaymentFormDialog\").toggleClass(\"hidden\", !YouLi.CreditCardPaymentForm.IsFutureUsageAllowed);\r\n\r\n if (!YouLi.CreditCardPaymentForm.IsFutureUsageAllowed) // clear autopay if it is no longer allowed\r\n $(\"#EnrolInAutoPay\", \"#GenericPaymentFormDialog\").prop(\"checked\", false);\r\n }\r\n\r\n $genericSurcharge.addClass('hidden');\r\n\r\n $genericSurcharge.find('.generic-card-surcharge')\r\n .text(YouLi.PaymentChargeForm.GetSurchargePercent(e.value.type));\r\n\r\n $genericSurcharge.find('.generic-card-surcharge-amount')\r\n .text(YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.GetSurchargeAmount(e.value.type)));\r\n\r\n if (YouLi.PaymentChargeForm.Ach.HasSurcharge === true) {\r\n const totalAmount = YouLi.PaymentChargeForm.GetStripeChargeAmount(e.value.type);\r\n\r\n $('#GenericPaymentFormDialog')\r\n .find('.cost-line-item-amount-payment-total')\r\n .html(YouLi.PaymentChargeForm.GetFormattedCurrency(totalAmount));\r\n $(\"#ChargeAmount\").val(totalAmount);\r\n $(\"input[Name=SurchargeAmount]\").val(YouLi.PaymentChargeForm.GetSurchargeAmount(e.value.type))\r\n $(\"input[Name=RefundProtectAmount]\").val(YouLi.PaymentChargeForm.GetRefundProtectAmount(e.value.type));\r\n\r\n $genericSurcharge.removeClass('hidden');\r\n YouLi.CreditCardPaymentForm.StripeRefreshPaymentIntent(/*paymentId*/null, /*doSetupCustomer*/false, /*useBillingDetails*/false)\r\n }\r\n }\r\n });\r\n\r\n\r\n\r\n YouLi.CreditCardPaymentForm.StripePaymentElement.mount(\"#payment-element\");\r\n\r\n }).catch((error) => {\r\n showErrorInModal(error);\r\n $(\"#BillingAddressSection\").hide();\r\n $(\"#BillingInformationLabel\").hide();\r\n $(\"#p-creditcard\").hide();\r\n });\r\n };\r\n\r\n var hasBillingAddress = function () {\r\n return $(\"#BillToFieldsIncluded\") && $(\"#BillToFieldsIncluded\").val() == \"true\";\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.StripeRefreshPaymentIntent = function (paymentId, doSetupCustomer = false, useBillingDetails = false) {\r\n if (!YouLi.CreditCardPaymentForm.StripePaymentIntentId)\r\n return; // no PI created yet, anyway\r\n\r\n let data = {\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n inviteeReferenceCode: YouLi.CreditCardPaymentForm.InviteeReferenceCode,\r\n chargeAmount: $(\"#ChargeAmount\").val(),\r\n chargeLabel: $(\"#ChargeLabel\").val(),\r\n existingPaymentIntentId: YouLi.CreditCardPaymentForm.StripePaymentIntentId,\r\n paymentId: paymentId,\r\n doSetupCustomer: doSetupCustomer,\r\n email: $(\"#p-billto-email\").val(),\r\n firstname: $(\"#p-billto-first-name\").val(),\r\n lastname: $(\"#p-billto-last-name\").val(),\r\n isFutureUsageAllowed: YouLi.CreditCardPaymentForm.IsFutureUsageAllowed,\r\n isRegisteredWithPayment: YouLi.CreditCardPaymentForm.IsRegisteredWithPayment,\r\n isSaveCard: $(\"#SaveCard\").is(\":checked\"),\r\n isAutoPayEnrol: $(\"#EnrolInAutoPay\", \"#GenericPaymentFormDialog\").is(\":checked\"),\r\n saveCardDestination: $(\"input[name='SaveCardDestination']\").length > 0 ? $(\"input[name='SaveCardDestination']:checked\").val() : \"account\"\r\n };\r\n\r\n if (hasBillingAddress() && useBillingDetails) {\r\n data.showBillingAddressOnPayment = hasBillingAddress();\r\n data.billToFirstName = $(\"#p-billto-first-name\").val();\r\n data.billToLastName = $(\"#p-billto-last-name\").val();\r\n data.billToEmail = $(\"#p-billto-email\").val();\r\n data.billToStreetLine1 = $(\"#p-billto-street-line1\").val();\r\n data.billToStreetLine2 = $(\"#p-billto-street-line2\").val();\r\n data.billToCity = $(\"#p-billto-city\").val();\r\n data.billToState = $(\"#p-billto-state\").val();\r\n data.billToCountry = $(\"#p-billto-country\").val();\r\n data.postCode = $(\"#p-postal-code\").val();\r\n }\r\n\r\n return fetch(\"/trip/createupdatestripepaymentintent\", {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(data),\r\n }).then(response => {\r\n if (!response.ok) {\r\n throw new Error(\"Error processing payment. Please try again or contact your planner for assistance\");\r\n }\r\n return response.json();\r\n }).then(data => {\r\n if(!data.success) {\r\n throw new Error(data.message);\r\n }\r\n }).catch((error) => {\r\n\r\n // B. Thulke: I had added this during original dev, but don't see why we would want to do this. We want them to try again.\r\n // if we have an issue with updating the intent, destroy the credit card form\r\n //YouLi.CreditCardPaymentForm.StripePaymentElement.destroy();\r\n showErrorInModal(error);\r\n\r\n throw {\r\n message: \"Error updating payment intent\",\r\n errorHandled: true\r\n };\r\n });\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.CompleteStripePayment = function () {\r\n\r\n // Validate the form before anything else\r\n let $form = $('#GenericPaymentForm');\r\n $form.validateBootstrap();\r\n if (!$form.valid()) {\r\n document.getElementById(\"GenericPaymentForm\").scrollTo(0, 0);\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n return;\r\n }\r\n\r\n if (YouLi.CreditCardPaymentForm.StripeElements == undefined) {\r\n showErrorInModal(\"Payment form has not been loaded, please wait\");\r\n\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n return;\r\n }\r\n\r\n let newPaymentId, couponPaymentId;\r\n\r\n // 1. Check for overpayments\r\n\r\n YouLi.CreditCardPaymentForm.CheckForOverpayment()\r\n .then(() => {\r\n\r\n // 2. call the function to process the payment (which should itself create the payment but with an inprogress status)\r\n\r\n return YouLi.CreditCardPaymentForm.ProcessStripePaymentFunction(YouLi.CreditCardPaymentForm.StripePaymentIntentId, \"stripe\");\r\n }).then((data) => {\r\n\r\n newPaymentId = data.newPaymentId;\r\n couponPaymentId = data.couponPaymentId;\r\n\r\n if (data.redirectURL) {\r\n YouLi.CreditCardPaymentForm.StripeRedirectURL = data.redirectURL;\r\n }\r\n\r\n // 3. Refresh Payment Intent to include the data we need on return\r\n\r\n // First, ensure it's actually got a paymentId\r\n if (!newPaymentId) {\r\n var userMessage = \"An error occurred with the payment charge - invalid payment Id\";\r\n var debugMessage = \"Credit Card failure: passed a \" + (newPaymentId == null ? \"null\" : \"empty string\") + \" for paymentId on trip \"\r\n + $(\"#TripId\").val() + \" for invitee \" + $(\"#InviteeId\").val() + \" is failing. Domain: \" + window.location.host\r\n var subject = \"Exception occurring - internalPaymentId is being set to an invalid value in Stripe Payment Intent\";\r\n\r\n YouLi.Common.OpenSupportTicket(userMessage, debugMessage, subject);\r\n\r\n throw new Error(userMessage);\r\n }\r\n\r\n return YouLi.CreditCardPaymentForm.StripeRefreshPaymentIntent(newPaymentId, true, true);\r\n }).then((response) => {\r\n\r\n\r\n // 4. Call the Stripe confirmPayment function to process there\r\n const elements = YouLi.CreditCardPaymentForm.StripeElements;\r\n\r\n YouLi.CreditCardPaymentForm.StripeHandler.confirmPayment({\r\n elements,\r\n confirmParams: {\r\n return_url: YouLi.CreditCardPaymentForm.StripeRedirectURL,\r\n },\r\n }).then((response) => {\r\n\r\n // 4. handle any immediate errors that come up\r\n // This point will only be reached if there is an immediate error when\r\n // confirming the payment. Otherwise, they will be redirected to\r\n // `return_url` (after any intermediate steps are completed)\r\n if (response.error.type === \"card_error\" || response.error.type === \"validation_error\") {\r\n showErrorInModal(\"Error processing payment: \" + response.error.message);\r\n } else {\r\n showErrorInModal(\"An unexpected error occurred, review details below\");\r\n }\r\n\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n\r\n // 5. need to roll back the created \"inprogress\" payment (and any created coupon payment) if a payment was created!\r\n // Return this promise rather than waiting for it here, the user can carry on\r\n var paymentsToDelete = [];\r\n if (newPaymentId)\r\n paymentsToDelete.push(newPaymentId);\r\n if (couponPaymentId)\r\n paymentsToDelete.push(couponPaymentId);\r\n return YouLi.CreditCardPaymentForm.CancelInProgressPayment(paymentsToDelete);\r\n });\r\n\r\n }).catch((errorObject) => {\r\n console.error('Error:', errorObject.message);\r\n\r\n // roll back the payment (and any created coupon payment) that was created locally if a payment was created\r\n var paymentsToDelete = [];\r\n if (newPaymentId)\r\n paymentsToDelete.push(newPaymentId);\r\n if (couponPaymentId)\r\n paymentsToDelete.push(couponPaymentId);\r\n YouLi.CreditCardPaymentForm.CancelInProgressPayment(paymentsToDelete);\r\n\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n\r\n if (!errorObject.errorHandled) {\r\n YouLi.CreditCardPaymentForm.OnPageErrorHandlerFunction(errorObject.message, moment());\r\n }\r\n\r\n });\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.CancelInProgressPayment = function (paymentIdsToDelete) {\r\n\r\n if (YouLi.CreditCardPaymentForm.CancelPaymentCallback)\r\n return YouLi.CreditCardPaymentForm.CancelPaymentCallback(paymentIdsToDelete);\r\n\r\n if (!paymentIdsToDelete || paymentIdsToDelete.length == 0)\r\n return Promise.resolve();\r\n\r\n const data = {\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n paymentIdsToDelete: paymentIdsToDelete,\r\n }\r\n\r\n // default cancel action:\r\n return fetch('/trip/cancelinprogresspayment', {\r\n method: \"POST\",\r\n body: JSON.stringify(data),\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n 'Cache-Control': 'no-cache'\r\n },\r\n })\r\n\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.SquareHandlePaymentMethodSubmission = function () {\r\n\r\n clearErrorInModal();\r\n $(\".content-trip-paymentdetails-error\").addClass(\"hidden\");\r\n\r\n YouLi.CreditCardPaymentForm.SquareTokenize(YouLi.CreditCardPaymentForm.SquarePaymentCardObject)\r\n .then((token) => {\r\n return YouLi.CreditCardPaymentForm.CheckForOverpayment()\r\n .then(() => {\r\n\r\n YouLi.CreditCardPaymentForm.MakePaymentFunction(token, \"square\");\r\n\r\n }).catch((errorObject) => {\r\n console.error('Error:', errorObject.message);\r\n\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n\r\n if (!errorObject.errorHandled) {\r\n YouLi.CreditCardPaymentForm.OnPageErrorHandlerFunction(\"\", moment());\r\n }\r\n });\r\n }).catch((e) => {\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n\r\n $(\".content-trip-paymentdetails-error\").removeClass(\"hidden\");\r\n\r\n $(\"#GenericPaymentErrorMessage\").text(e.message).removeClass(\"hidden\");\r\n });\r\n }\r\n\r\n // This function tokenizes a payment method. \r\n // The ‘error’ thrown from this function denotes a failed tokenization,\r\n // which is due to buyer error (such as an expired card). It is up to the\r\n // developer to handle the error and provide the buyer the chance to fix\r\n // their mistakes.\r\n YouLi.CreditCardPaymentForm.SquareTokenize = function (paymentMethod) {\r\n return paymentMethod.tokenize()\r\n .then((tokenResult) => {\r\n if (tokenResult.status === 'OK') {\r\n return tokenResult.token;\r\n } else {\r\n let errorMessage = `Tokenization failed-status: ${tokenResult.status}`;\r\n if (tokenResult.errors) {\r\n errorMessage += ` and errors: ${JSON.stringify(\r\n tokenResult.errors\r\n )}`;\r\n }\r\n throw new Error(errorMessage);\r\n }\r\n })\r\n .catch((error) => {\r\n throw new Error(error.message);\r\n })\r\n }\r\n\r\n\r\n YouLi.CreditCardPaymentForm.InitialiseSquare = function () {\r\n\r\n // Create and initialize a Square payment form object\r\n\r\n if (!window.Square) {\r\n throw new Error('Square.js failed to load properly');\r\n }\r\n const payments = window.Square.payments(YouLi.CreditCardPaymentForm.SquareApplicationId, YouLi.CreditCardPaymentForm.SquareLocationId);\r\n\r\n const cardStyles = {\r\n input: {\r\n fontSize: '16px',\r\n fontFamily: 'Arial, Helvetica, sans-serif'\r\n }\r\n };\r\n\r\n payments.card({\r\n style: cardStyles\r\n }).then((card) => {\r\n YouLi.CreditCardPaymentForm.SquarePaymentCardObject = card;\r\n\r\n return YouLi.CreditCardPaymentForm.SquarePaymentCardObject.attach('#card-container');\r\n }).catch((e) => {\r\n console.error('Initializing Card failed', e);\r\n return;\r\n });\r\n\r\n };\r\n\r\n YouLi.CreditCardPaymentForm.InitialisePayPal = function () {\r\n\r\n if ($('#paypal-button-container').length > 0) {\r\n\r\n if (YouLi.CreditCardPaymentForm.PayPalButtons != null) YouLi.CreditCardPaymentForm.PayPalButtons.close();\r\n\r\n // Create and initialize a PayPal payment form object\r\n YouLi.CreditCardPaymentForm.PayPalButtons = paypal.Buttons({\r\n createOrder(inputData, actions) {\r\n\r\n clearErrorInModal();\r\n\r\n let data = {\r\n amount: $(\"#ChargeAmount\").val(),\r\n currencyCode: YouLi.CreditCardPaymentForm.Currency.Code,\r\n transactionFee: YouLi.CreditCardPaymentForm.TransactionFee,\r\n merchantId: YouLi.CreditCardPaymentForm.ConnectedPaymentGatewayUserId,\r\n merchantName: YouLi.CreditCardPaymentForm.Name,\r\n chargeLabel: $(\"#ChargeLabel\").val(),\r\n saveCard: false\r\n }\r\n return fetch(\"/paypal/CreatePayPalPayment\", {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(data),\r\n })\r\n .then((response) => response.json())\r\n .then((order) => order.id);\r\n },\r\n onApprove(data) {\r\n\r\n if ($(\"#GenericPaymentFormDialog\").hasClass(\"in\")) {\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n $(\"#GenericPaymentFormDialog\").modal(\"hide\");\r\n }\r\n YouLi.CreditCardPaymentForm.PayPalButtons.close();\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n return YouLi.CreditCardPaymentForm.MakePaymentFunction(data.orderID, \"paypal\")\r\n .then((response) => {\r\n YouLi.Common.UI.HideLoading();\r\n })\r\n .catch((error) => {\r\n YouLi.Common.UI.HideLoading();\r\n })\r\n\r\n },\r\n onCancel(data) {\r\n },\r\n onError(err) {\r\n showErrorInModal(\"An issue has occurred and we cannot proceed. Please contact your planner for more information\");\r\n },\r\n });\r\n YouLi.CreditCardPaymentForm.PayPalButtons.render('#paypal-button-container');\r\n }\r\n\r\n if (YouLi.CreditCardPaymentForm.PayPalCardFields == null) {\r\n\r\n //if (YouLi.CreditCardPaymentForm.PayPalCardFields != null) {\r\n // if(payPalNameField) payPalNameField.close();\r\n // if(payPalNumberField) payPalNumberField.close();\r\n // if(payPalExpiryField) payPalExpiryField.close();\r\n // if (payPalCVVField) payPalCVVField.close();\r\n //}\r\n\r\n YouLi.CreditCardPaymentForm.PayPalCardFields = paypal.CardFields({\r\n style: {\r\n 'input': {\r\n 'font-size': '14px',\r\n 'font-family': 'Open Sans, Arial, Helvetica, sans-serif',\r\n 'line-height': '1.42857143',\r\n 'padding': '10px 12px',\r\n 'color': '#555'\r\n },\r\n '.invalid': {\r\n 'color': '#a94442'\r\n }\r\n },\r\n createOrder() {\r\n\r\n clearErrorInModal();\r\n\r\n let data = {\r\n amount: $(\"#ChargeAmount\").val(),\r\n currencyCode: YouLi.CreditCardPaymentForm.Currency.Code,\r\n transactionFee: YouLi.CreditCardPaymentForm.TransactionFee,\r\n merchantId: YouLi.CreditCardPaymentForm.ConnectedPaymentGatewayUserId,\r\n merchantName: YouLi.CreditCardPaymentForm.Name,\r\n chargeLabel: $(\"#ChargeLabel\").val(),\r\n saveCard: $(\"#SaveCard\").is(\":checked\")\r\n }\r\n return fetch(\"/paypal/CreatePayPalPayment\", {\r\n method: \"POST\",\r\n headers: { \"Content-Type\": \"application/json\" },\r\n body: JSON.stringify(data),\r\n })\r\n .then((response) => response.json())\r\n .then((order) => order.id);\r\n },\r\n onApprove: function (data) {\r\n if ($(\"#GenericPaymentFormDialog\").hasClass(\"in\")) {\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n $(\"#GenericPaymentFormDialog\").modal(\"hide\");\r\n }\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n return YouLi.CreditCardPaymentForm.MakePaymentFunction(data.orderID, \"paypal\")\r\n .then((response) => {\r\n YouLi.Common.UI.HideLoading();\r\n })\r\n .catch((error) => {\r\n YouLi.Common.UI.HideLoading();\r\n })\r\n },\r\n onCancel(data) {\r\n },\r\n onError(err) {\r\n showErrorInModal(\"An issue has occurred and we cannot proceed. Please contact your planner for more information\");\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n },\r\n });\r\n\r\n if (YouLi.CreditCardPaymentForm.PayPalCardFields.isEligible()) {\r\n payPalNameField = YouLi.CreditCardPaymentForm.PayPalCardFields.NameField();\r\n payPalNameField.render(\"#card-name-field-container\");\r\n\r\n payPalNumberField = YouLi.CreditCardPaymentForm.PayPalCardFields.NumberField();\r\n payPalNumberField.render(\"#card-number-field-container\");\r\n\r\n payPalExpiryField = YouLi.CreditCardPaymentForm.PayPalCardFields.ExpiryField();\r\n payPalExpiryField.render(\"#card-expiry-field-container\");\r\n\r\n payPalCVVField = YouLi.CreditCardPaymentForm.PayPalCardFields.CVVField();\r\n payPalCVVField.render(\"#card-cvv-field-container\");\r\n } else {\r\n // Handle the workflow when credit and debit cards are not available\r\n console.error(\"Credit and debit cards are not available\");\r\n $(\"#SaveCardOption\").hide();\r\n $(\"#AutoPayEnrolOption\", \"#GenericPaymentFormDialog\").hide();\r\n }\r\n const submitButton = document.getElementById(\"p-creditcard\");\r\n submitButton.addEventListener(\"click\", () => {\r\n\r\n // Validate the form before anything else\r\n let $form = $('#GenericPaymentForm');\r\n $form.validateBootstrap();\r\n if (!$form.valid()) {\r\n console.log(\"Invalid form\");\r\n showErrorInModal(\"Please review form and try again\");\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n return;\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.PayPalCardFields.submit()\r\n .then(() => { })\r\n .catch((error) => {\r\n showErrorInModal(\"Invalid card details, please review and try again\");\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n });\r\n });\r\n\r\n $(\"#SaveCard.planner-save-card\").off(\"change\");\r\n $(\"#SaveCard.planner-save-card\").on(\"change\", function () {\r\n $(\"#SaveCardPlannerDetails\").toggleClass(\"hidden\", !$(this).is(\":checked\"));\r\n });\r\n\r\n // initialise tooltip for Save Card manually (if needed)\r\n $('#SaveCardPlannerDetails [data-toggle=\"tooltip\"]').tooltip({\r\n trigger: \"hover focus\",\r\n container: \"body\"\r\n });\r\n\r\n } // end PayPalCardFields init\r\n\r\n };\r\n\r\n YouLi.CreditCardPaymentForm.InitialiseCyberSource = function () {\r\n var captureContext = YouLi.CreditCardPaymentForm.CyberSourceJWT;\r\n\r\n var myStyles = {\r\n 'input': {\r\n 'font-size': '14px',\r\n 'font-family': 'helvetica, tahoma, calibri, sans-serif',\r\n 'color': '#555'\r\n },\r\n ':disabled': { 'cursor': 'not-allowed' },\r\n 'valid': { 'color': '#555' },\r\n 'invalid': { 'color': '#a94442' }\r\n };\r\n\r\n var flex = new Flex(captureContext);\r\n YouLi.CreditCardPaymentForm.CyberSourceForm = flex.microform({ styles: myStyles });\r\n var number = YouLi.CreditCardPaymentForm.CyberSourceForm.createField('number', { placeholder: 'Card number' });\r\n var securityCode = YouLi.CreditCardPaymentForm.CyberSourceForm.createField('securityCode', { placeholder: 'CVV' });\r\n\r\n number.load('#p-card-number');\r\n securityCode.load('#p-cvv');\r\n\r\n // set up validation of form for billing details\r\n refreshValidators();\r\n };\r\n\r\n YouLi.CreditCardPaymentForm.CyberSourceRequestCardNonce = function () {\r\n\r\n // Validate the form before anything else\r\n let $form = $('#GenericPaymentForm');\r\n $form.validateBootstrap();\r\n if (!$form.valid()) {\r\n YouLi.Common.UI.ScrollToTopModal(\"GenericPaymentFormDialog\");\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n return;\r\n }\r\n\r\n var expMonth = document.querySelector('#p-expiration-month');\r\n var expYear = document.querySelector('#p-expiration-year');\r\n\r\n var options = {\r\n expirationMonth: expMonth.value,\r\n expirationYear: expYear.value\r\n };\r\n\r\n YouLi.CreditCardPaymentForm.CyberSourceForm.createToken(options, function (error, token) {\r\n clearErrorInModal();\r\n\r\n if (error) {\r\n showErrorInModal(error.message, error.reason);\r\n\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n\r\n return;\r\n }\r\n\r\n //document.getElementById('card-nonce').value = token;\r\n\r\n return YouLi.CreditCardPaymentForm.CheckForOverpayment()\r\n .then(() => {\r\n\r\n YouLi.CreditCardPaymentForm.MakePaymentFunction(token, \"cybersource\");\r\n\r\n }).catch((errorObject) => {\r\n console.error('Error:', errorObject.message);\r\n\r\n YouLi.Common.UI.HideButtonLoading($(\"#p-creditcard\"));\r\n\r\n if (!errorObject.errorHandled) {\r\n YouLi.CreditCardPaymentForm.OnPageErrorHandlerFunction(\"\", moment());\r\n }\r\n });\r\n });\r\n };\r\n\r\n YouLi.CreditCardPaymentForm.ClearAuthorizeNetForm = function () {\r\n\r\n $('#GenericPaymentForm').validate().resetForm();\r\n $('.field-validation-error').empty()\r\n document.getElementById(\"p-card-number\").value = \"\";\r\n document.getElementById(\"p-exp-Month\").value = \"\";\r\n document.getElementById(\"p-exp-Year\").value = \"\";\r\n document.getElementById(\"p-card-Code\").value = \"\";\r\n document.getElementById(\"dataDescriptor\").value = \"\";\r\n document.getElementById(\"dataValue\").value = \"\";\r\n\r\n };\r\n\r\n YouLi.CreditCardPaymentForm.CheckForOverpayment = function () {\r\n\r\n if (!YouLi.CreditCardPaymentForm.DoOverpaymentCheck)\r\n return Promise.resolve();\r\n\r\n let data = {\r\n couponCode: $(\"#ChargeCouponCode\").val(),\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n chargeAmount: $(\"#ChargeAmount\").val(),\r\n surchargeAmount: $(\"#SurchargeAmount\").val(),\r\n refundProtectAmount: $(\"#RefundProtectAmount\").val(),\r\n originPage: $(\"#OriginPage\").val(),\r\n };\r\n\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: '/trip/checkpaymentforoverpayment',\r\n type: 'POST',\r\n cache: false,\r\n dataType: \"json\",\r\n data: JSON.stringify(data),\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n var errorDate;\r\n if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n }\r\n else if (response.status === 500) {\r\n\r\n YouLi.CreditCardPaymentForm.OnPageErrorHandlerFunction(\"\", moment());\r\n\r\n reject({\r\n message: \"Failed on check for overpayment\",\r\n errorHandled: true\r\n });\r\n }\r\n else if (response.responseJSON.errorMessage) {\r\n\r\n YouLi.CreditCardPaymentForm.OnPageErrorHandlerFunction(response.responseJSON.errorMessage, moment(response.responseJSON.paymentErrorDate));\r\n\r\n reject({\r\n message: \"Failed on check for overpayment\",\r\n errorHandled: true\r\n });\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n });\r\n });\r\n\r\n };\r\n\r\n function clearErrorInModal() {\r\n $(\"#GenericPaymentErrorMessage\").addClass(\"hidden\");\r\n }\r\n\r\n function showErrorInModal(message, reason, paymentMethod) {\r\n var errorMessage = message + (reason ? ` [${reason}]` : \"\");\r\n\r\n if (paymentMethod === 'paypal') {\r\n const $error = $('Failed Processing Payment by card issuer.
\\n' +\r\n 'Contact your credit card company for approval and try again.
\\n' +\r\n '');\r\n\r\n $(\"#GenericPaymentErrorMessage\")\r\n .html($error)\r\n .removeClass(\"hidden\")\r\n .find('.payment-error-message')\r\n .text(reason);\r\n } else {\r\n $(\"#GenericPaymentErrorMessage\").text(errorMessage).removeClass(\"hidden\");\r\n }\r\n\r\n // To do: it would be good to scroll to an element within the FORM not the container\r\n // (or else get that parent container ID passed in and use that)\r\n YouLi.Common.UI.ScrollToTopModal(\"GenericPaymentFormDialog\");\r\n }\r\n\r\n function getBillToStateTextInput() {\r\n return ''\r\n }\r\n\r\n function getBillToStateDropdown() {\r\n return '';\r\n }\r\n\r\n function refreshValidators() {\r\n $(\"#GenericPaymentForm\").validateBootstrap(true);\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.UpdateStateSelections = function () {\r\n if ($(\"#p-billto-country\").val()) {\r\n\r\n var selectedCountryStates = undefined;\r\n // TODO: Add in AuthoriseNet when we move that code to here\r\n switch (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway) {\r\n case YouLi.Common.PaymentGateway.CyberSource:\r\n selectedCountryStates = YouLi.CreditCardPaymentForm.CybersourceCountryStates.find(i => i.Country.Label == $(\"#p-billto-country\").val());\r\n break;\r\n case YouLi.Common.PaymentGateway.AuthorizeNet:\r\n selectedCountryStates = YouLi.CreditCardPaymentForm.AuthorizeCountryStates.find(i => i.Country.Label == $(\"#p-billto-country\").val());\r\n break;\r\n }\r\n\r\n if (selectedCountryStates && selectedCountryStates.States.length > 0) {\r\n\r\n var arrOptions = [];\r\n arrOptions.push(\"\");\r\n\r\n for (i = 0; i < selectedCountryStates.States.length; i++) {\r\n arrOptions.push(``);\r\n }\r\n\r\n $(\"#StateSelection\").html(getBillToStateDropdown());\r\n $(\"#p-billto-state\").html(arrOptions.join(\"\"));\r\n }\r\n else {\r\n // no states defiend for selected country, so show a plain text input for state\r\n $(\"#StateSelection\").html(getBillToStateTextInput());\r\n }\r\n }\r\n else {\r\n // no country selected, so show a plain text input for state\r\n $(\"#StateSelection\").html(getBillToStateTextInput());\r\n }\r\n\r\n refreshValidators();\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.UpdateAutoPayVisibility = function (showAutoPay) {\r\n YouLi.CreditCardPaymentForm.ShowAutoPay = showAutoPay;\r\n\r\n if ($(\"#AutoPayEnrolOption\", \"#GenericPaymentFormDialog\").length > 0 && !YouLi.CreditCardPaymentForm.TripHasInstallmentsWithoutDueDate) {\r\n $(\"#AutoPayEnrolOption\", \"#GenericPaymentFormDialog\").toggleClass(\"hidden\", !showAutoPay);\r\n\r\n if (!showAutoPay)\r\n $(\"#EnrolInAutoPay\", \"#GenericPaymentFormDialog\").attr(\"disabled\", true);\r\n }\r\n };\r\n\r\n $(function () {\r\n\r\n $(\"#GenericPaymentFormDialog\").off(\"show.bs.modal\");\r\n $(\"#GenericPaymentFormDialog\").on(\"show.bs.modal\", function () {\r\n if (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.Square) {\r\n YouLi.CreditCardPaymentForm.InitialiseSquare();\r\n }\r\n else if (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.CyberSource) {\r\n YouLi.CreditCardPaymentForm.InitialiseCyberSource();\r\n }\r\n else if (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.PayPal) {\r\n YouLi.CreditCardPaymentForm.InitialisePayPal();\r\n }\r\n\r\n $(\".content-trip-paymentdetails-error\").addClass(\"hidden\");\r\n });\r\n\r\n $(\"#GenericPaymentFormDialog\").off(\"hide.bs.modal\");\r\n $(\"#GenericPaymentFormDialog\").on(\"hide.bs.modal\", function () {\r\n\r\n if (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.Stripe && YouLi.CreditCardPaymentForm.StripePaymentElement) {\r\n // Fully destroy the Stripe payment element when the dialog is closed. Changes to amounts require a new element to be\r\n // created, as the amount for the payment can change things like the available payment methods\r\n YouLi.CreditCardPaymentForm.StripePaymentElement.destroy();\r\n YouLi.CreditCardPaymentForm.StripeElements = undefined;\r\n YouLi.CreditCardPaymentForm.StripePaymentElement = undefined;\r\n }\r\n else if (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.CyberSource) {\r\n if (YouLi.CreditCardPaymentForm.CyberSourceForm)\r\n YouLi.CreditCardPaymentForm.CyberSourceForm.teardown();\r\n }\r\n else if (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.Square) {\r\n if (YouLi.CreditCardPaymentForm.SquarePaymentCardObject)\r\n YouLi.CreditCardPaymentForm.SquarePaymentCardObject.destroy();\r\n }\r\n else if (YouLi.CreditCardPaymentForm.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.AuthorizeNet) {\r\n YouLi.CreditCardPaymentForm.ClearAuthorizeNetForm();\r\n }\r\n\r\n clearErrorInModal();\r\n });\r\n\r\n $(\"#p-billto-country\").off(\"change\");\r\n $(\"#p-billto-country\").on(\"change\", function () {\r\n YouLi.CreditCardPaymentForm.UpdateStateSelections();\r\n })\r\n YouLi.CreditCardPaymentForm.UpdateStateSelections();\r\n\r\n // initialise the state selection/value\r\n $(\"#p-billto-state\").val(YouLi.CreditCardPaymentForm.InitialState);\r\n });\r\n\r\n }(YouLi.CreditCardPaymentForm ? YouLi.CreditCardPaymentForm : {}));\r\n}(YouLi ? YouLi : {}));"]}