{"version":3,"sources":["wwwroot/scripts/youli.paymentchargeform.js","wwwroot/scripts/youli.trip.payments.js"],"names":["YouLi","PaymentChargeForm","Ach","SurchargePercent","HasSurcharge","Default","_paymentChargeForm","surchargeAmount","refundProtectAmount","refundProtectPercent","AmountDue","BookingAddOnAmountDue","Currency","GetStripeChargeAmount","stripePaymentType","GetSurchargeAmount","GetRefundProtectAmount","GetChargeAmount","GetChargeAmountNoSurcharge","computed","surcharge","GetSurchargePercent","parseFloat","toFixed","GetFormattedCurrency","amount","Common","DisplayCost","UpdatePaymentInfo","info","Error","$","extend","Trip","Payments","ConnectedPaymentGateway","PaymentGateway","Stripe","StripeHandler","undefined","AuthorizeNetClientKey","AuthorizeNetAPIKey","ThirdPartyCardSurchargePercent","RefundProtectPercent","RefundProtectOptedOutConfirmed","CurrencyHasDecimals","SaveCardMethodType","CostPrepayTotalForAllGangMembers","InviteeHasPayments","InviteeReferenceCode","ChipAwayMinimumAmount","ChipAwayMaximumAmount","PayNowButtonText","NotifyPlannerButtonText","PackageSoldOutFooterWarningText","InviteeHasOwing","HasAnyOwingInstallments","SelectedInstallmentId","InstallmentIdBalance","InstallmentIdOther","RecentlyClickedEnrolAutoPay","BillToEmail","GetRefundProtectSelection","length","val","SendPaymentDataToAuthorizeNet","event","$form","validateBootstrap","valid","authData","clientKey","apiLoginID","cardData","cardNumber","document","getElementById","value","month","year","cardCode","secureData","Accept","dispatchData","response","messages","resultCode","i","message","console","log","code","text","removeClass","addClass","opaqueData","dataDescriptor","dataValue","ProcessGenericCreditCardPayment","UI","ScrollToTopModal","CheckForPaymentButtonUpdate","SetFooterToPaymentButton","InitialiseResponseChecks","multiStateCheck","states","onAfterChangeState","e","ShowLoading","Schedule","Response","MultiStateCheckUpdateAndTakeAction","target","HideLoading","each","this","attr","CheckForOverpayment","data","couponCode","tripId","inviteeId","chargeAmount","Promise","resolve","reject","ajax","url","type","cache","dataType","JSON","stringify","contentType","complete","errorDate","responseJSON","window","open","status","moment","format","errorMessage","paymentErrorDate","cookieError","ShowStaticStandardDialogNoClose","processPaymentWithSavedPaymentMethod","isThirdPartyCard","newPaymentId","couponPaymentId","redirectURL","location","href","then","ProcessStripePayment","userMessage","debugMessage","host","OpenSupportTicket","savedPaymentMethodId","isEnrolInAutoPayChecked","is","ChargeStripeSavedPaymentMethod","reload","catch","errorObject","error","paymentsToDelete","push","CreditCardPaymentForm","CancelInProgressPayment","errorHandled","OnPageErrorHandlerFunction","PayPal","processPayment","paymentId","inviteeReferenceCode","chargeLabel","isRegisteredWithPayment","useThirdPartyCardPaymentMethod","thirdPartyCardPaymentCostCentre","thirdPartyCardPaymentDepartment","thirdPartyCardPaymentApprovedBy","isAutoPayEnrol","returnURL","fetch","method","headers","Content-Type","body","ok","json","success","ShowErrorOnPage","RefreshPaymentMethod","preventScroll","ChangeMethod","ClearFooterPaymentButton","ForceFooterUpdate","UpdateGangPlaceholdersFormSuccess","result","formSubmitBtn","find","errors","HideInputLoading","ClearClientSideErrors","FormatClientSideErrors","showCosts","RefreshInviteesTab","inviteesDetailsHtmlString","showInvitees","initialSelectedPaymentMethod","html","paymentDetailsHtml","InitialiseUI","Init","modal","UpdateGangPlaceholdersFormFailure","xhr","animate","scrollTop","hasBillingAddress","paymentMethod","dataString","FormData","append","isChipAwaySelected","creditCardFormData","pair","entries","processData","hasClass","HideButtonLoading","statusCode","paymentErrorMessage","GetGAData","gaData","dataLayer","ecommerce","paymentDetailsHtmlString","tripHeadingTitle","tripHeadingDetails","tasksListHtmlString","ShowInviteesAllTab","showInviteesAllTab","offset","top","placeholdersDetails","tripName","totalPrice","paymentAmount","googleAnalyticsHtml","SetupUpdatePaymentsListTimer","Utils","IsMobile","nonce","remove","paymentIntentId","Cache-Control","FooterUpdatesPaused","UpdateResponseFooter","runOnce","checkTripUpdates","selectedMethod","footerForPayment","clone","GetSelectedPaymentOptionAmount","chipAwayPaymentAmount","previewMode","preview","costInstallmentId","isChipAway","toLowerCase","selectedTripPackageId","ShowStandardDialog","installmentAmountDue","installmentIsBalance","UpdateChargeDetails","scrollToPaymentLine","selectedPaymentMethodElement","selectedPaymentOption","scrollTarget","isPackageSoldout","HasAchSurcharge","closest","isMobile","navigator","userAgent","match","ToggleRefundProtectVisiblity","TogglePaymentButtonVisiblity","ToggleAutoPayOptionVisibility","selectedPaymentMethod","validChipAwayAmountEntered","showPaymentButtons","toggleClass","showSavedPaymentMethodAutoPayDetails","showCreditCardAutoPayDetails","label","totalAmountDue","refundProtectPercentage","trigger","tabHTML","showInviteeTab","SetupInviteeSectionMenu","continuePayment","billToEmail","prop","UpdateBillToEmail","totalAmount","InitialiseStripe","UpdateTripPackage","selectedPackageId","selectedTripPackageRoomId","defaultPromise","programTabIsHidden","itineraryTabIsHidden","taskTabIsHidden","selectedMenuSection","packageCardHtml","tripCostSummaryHtml","paymentInfoHtml","UpdateProgramContent","contentProgramHtml","UpdateItineraryContent","contentItineraryHtml","UpdateTaskContent","contentTaskHtml","UpdateMenuContent","menuHtml","PushRemoveCartGAData","PushAddCartGAData","CancelAutoPay","Post","contentCostPaymentDetailsHtml","removeFromCartData","InitialisePayments","on","selectedOption","UpdateAutoPayVisibility","ChangePaymentOption","selectedCouponCode","installmentId","newPaymentsBreakdownTable","newCostSummaryHtml","newInstallmentsTableHtml","isBalance","balanceAmount","off","preventDefault","redirectUrl","replace","trim"],"mappings":"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","file":"youli.trip.payments.min.js","sourcesContent":["var YouLi = YouLi ? YouLi : {};\r\nYouLi.PaymentChargeForm = YouLi.PaymentChargeForm ? YouLi.PaymentChargeForm : {};\r\n\r\n(function (YouLi) {\r\n (function (PaymentChargeForm) {\r\n\r\n YouLi.PaymentChargeForm = {\r\n Ach: {\r\n SurchargePercent: 0,\r\n HasSurcharge: false\r\n },\r\n Default: {\r\n SurchargePercent: 0\r\n }\r\n };\r\n\r\n let _paymentChargeForm = {\r\n Default: {\r\n surchargeAmount: 0,\r\n refundProtectAmount: 0,\r\n refundProtectPercent: 0\r\n }\r\n };\r\n\r\n YouLi.PaymentChargeForm.AmountDue = 0;\r\n YouLi.PaymentChargeForm.BookingAddOnAmountDue = 0;\r\n YouLi.PaymentChargeForm.Currency = \"\";\r\n\r\n YouLi.PaymentChargeForm.GetStripeChargeAmount = function (stripePaymentType) {\r\n const totalAmount = YouLi.PaymentChargeForm.AmountDue\r\n + YouLi.PaymentChargeForm.GetSurchargeAmount(stripePaymentType)\r\n + YouLi.PaymentChargeForm.BookingAddOnAmountDue;\r\n\r\n return totalAmount + YouLi.PaymentChargeForm.GetRefundProtectAmount(stripePaymentType);\r\n }\r\n\r\n //this is used for payment method selection NOT in stripe UI\r\n YouLi.PaymentChargeForm.GetChargeAmount = function () {\r\n return YouLi.PaymentChargeForm.GetChargeAmountNoSurcharge()\r\n + _paymentChargeForm.Default.surchargeAmount;\r\n }\r\n\r\n YouLi.PaymentChargeForm.GetChargeAmountNoSurcharge = function () {\r\n return YouLi.PaymentChargeForm.AmountDue\r\n + _paymentChargeForm.Default.refundProtectAmount\r\n + YouLi.PaymentChargeForm.BookingAddOnAmountDue;\r\n }\r\n\r\n YouLi.PaymentChargeForm.GetSurchargeAmount = function (stripePaymentType) {\r\n let computed = (YouLi.PaymentChargeForm.AmountDue + YouLi.PaymentChargeForm.BookingAddOnAmountDue);\r\n const surcharge = YouLi.PaymentChargeForm.GetSurchargePercent(stripePaymentType);\r\n\r\n return parseFloat((computed * surcharge / 100).toFixed(2));\r\n }\r\n\r\n YouLi.PaymentChargeForm.GetRefundProtectAmount = function (stripePaymentType) {\r\n const totalAmount = YouLi.PaymentChargeForm.AmountDue\r\n + YouLi.PaymentChargeForm.GetSurchargeAmount(stripePaymentType)\r\n + YouLi.PaymentChargeForm.BookingAddOnAmountDue;\r\n\r\n return (totalAmount * _paymentChargeForm.Default.refundProtectPercent / 100);\r\n }\r\n\r\n YouLi.PaymentChargeForm.GetSurchargePercent = function (stripePaymentType) {\r\n switch (stripePaymentType) {\r\n case 'us_bank_account':\r\n return YouLi.PaymentChargeForm.Ach.SurchargePercent === 0\r\n ? YouLi.PaymentChargeForm.Default.SurchargePercent\r\n : YouLi.PaymentChargeForm.Ach.SurchargePercent;\r\n default:\r\n return YouLi.PaymentChargeForm.Default.SurchargePercent;\r\n }\r\n }\r\n\r\n YouLi.PaymentChargeForm.GetFormattedCurrency = function (amount) {\r\n return YouLi.Common.Currency.DisplayCost(YouLi.PaymentChargeForm.Currency, amount);\r\n }\r\n\r\n YouLi.PaymentChargeForm.UpdatePaymentInfo = function (info) {\r\n if (typeof info !== 'object' || info === null) {\r\n throw new Error('The argument must be an object.');\r\n }\r\n\r\n _paymentChargeForm.Default = $.extend({}, _paymentChargeForm.Default, info);\r\n }\r\n\r\n }(YouLi.PaymentChargeForm ? YouLi.PaymentChargeForm : {}));\r\n}(YouLi ? YouLi : {}));","var YouLi = YouLi ? YouLi : {};\r\nYouLi.Trip = YouLi.Trip ? YouLi.Trip : {};\r\nYouLi.Trip.Payments = YouLi.Trip.Payments ? YouLi.Trip.Payments : {};\r\n\r\n(function (YouLi) {\r\n (function (Trip) {\r\n (function (Payments) {\r\n\r\n YouLi.Trip.Payments.ConnectedPaymentGateway = YouLi.Common.PaymentGateway.Stripe;\r\n YouLi.Trip.Payments.StripeHandler = undefined;\r\n YouLi.Trip.Payments.AuthorizeNetClientKey = \"\";\r\n YouLi.Trip.Payments.AuthorizeNetAPIKey = \"\";\r\n YouLi.Trip.Payments.ThirdPartyCardSurchargePercent = 0;\r\n YouLi.Trip.Payments.RefundProtectPercent = 0;\r\n YouLi.Trip.Payments.RefundProtectOptedOutConfirmed = false;\r\n YouLi.Trip.Payments.CurrencyHasDecimals = true;\r\n YouLi.Trip.Payments.SaveCardMethodType = \"\";\r\n\r\n YouLi.Trip.Payments.CostPrepayTotalForAllGangMembers = 0;\r\n\r\n YouLi.Trip.Payments.InviteeHasPayments = false;\r\n YouLi.Trip.Payments.InviteeReferenceCode = \"\";\r\n\r\n YouLi.Trip.Payments.ChipAwayMinimumAmount = 0;\r\n YouLi.Trip.Payments.ChipAwayMaximumAmount = 0;\r\n\r\n YouLi.Trip.Payments.PayNowButtonText = \"Pay Now\";\r\n YouLi.Trip.Payments.NotifyPlannerButtonText = \"Notify Planner\";\r\n YouLi.Trip.Payments.PackageSoldOutFooterWarningText = \"Choose Another Package\";\r\n\r\n YouLi.Trip.Payments.InviteeHasOwing = false;\r\n\r\n YouLi.Trip.Payments.HasAnyOwingInstallments = false;\r\n YouLi.Trip.Payments.SelectedInstallmentId = \"\";\r\n YouLi.Trip.Payments.InstallmentIdBalance = undefined;\r\n YouLi.Trip.Payments.InstallmentIdOther = undefined;\r\n\r\n YouLi.Trip.Payments.RecentlyClickedEnrolAutoPay = undefined;\r\n \r\n YouLi.Trip.Payments.BillToEmail = undefined;\r\n\r\n YouLi.Trip.Payments.GetRefundProtectSelection = function () {\r\n if ($('input[type=radio][name=\"CurrentInvitee.RefundProtectSelection\"]').length > 0) {\r\n return $('input[type=radio][name=\"CurrentInvitee.RefundProtectSelection\"]:checked').val();\r\n }\r\n else {\r\n return $('input[name=\"CurrentInvitee.RefundProtectSelection\"]').val();\r\n }\r\n }\r\n\r\n YouLi.Trip.Payments.SendPaymentDataToAuthorizeNet = function (event) {\r\n\r\n // Validate the form before anything else\r\n var $form = $('#GenericPaymentForm');\r\n $form.validateBootstrap();\r\n if (!$form.valid()) {\r\n YouLi.Common.UI.ScrollToTopModal(\"GenericPaymentFormDialog\");\r\n return;\r\n }\r\n\r\n var authData = {};\r\n authData.clientKey = YouLi.Trip.Payments.AuthorizeNetClientKey;\r\n authData.apiLoginID = YouLi.Trip.Payments.AuthorizeNetAPIKey;\r\n\r\n var cardData = {};\r\n cardData.cardNumber = document.getElementById(\"p-card-number\").value;\r\n cardData.month = document.getElementById(\"p-exp-Month\").value;\r\n cardData.year = document.getElementById(\"p-exp-Year\").value;\r\n cardData.cardCode = document.getElementById(\"p-card-Code\").value;;\r\n\r\n var secureData = {};\r\n secureData.authData = authData;\r\n secureData.cardData = cardData;\r\n\r\n Accept.dispatchData(secureData, responseHandler);\r\n\r\n function responseHandler(response) {\r\n if (response.messages.resultCode === \"Error\") {\r\n var i = 0;\r\n while (i < response.messages.message.length) {\r\n console.log(\r\n response.messages.message[i].code + \": \" +\r\n response.messages.message[i].text\r\n );\r\n $(\"#GenericPaymentErrorMessage\").text(response.messages.message[i].code + \": \" +\r\n response.messages.message[i].text).removeClass(\"hidden\");\r\n i = i + 1;\r\n }\r\n }\r\n else {\r\n $(\"#GenericPaymentErrorMessage\").addClass(\"hidden\");\r\n document.getElementById(\"dataDescriptor\").value = response.opaqueData.dataDescriptor;\r\n document.getElementById(\"dataValue\").value = response.opaqueData.dataValue;\r\n // If using your own form to collect the sensitive data from the customer,\r\n // blank out the fields before submitting them to your server.\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 var FirstName = document.getElementById(\"p-billto-first-name\").value;\r\n var LastName = document.getElementById(\"p-billto-last-name\").value;\r\n var Address = document.getElementById(\"p-billto-street-line1\").value + \" \" + document.getElementById(\"p-billto-street-line2\").value;\r\n var city = document.getElementById(\"p-billto-city\").value;\r\n var zip = document.getElementById(\"p-postal-code\").value;\r\n\r\n YouLi.Trip.Payments.ProcessGenericCreditCardPayment(response.opaqueData.dataValue, \"authorizenet\");\r\n }\r\n }\r\n };\r\n\r\n YouLi.Trip.Payments.CheckForPaymentButtonUpdate = function () {\r\n\r\n // If we have a selected payment method, update the footer to have the payment button (in case it's not already set)\r\n if ($(\"input[type=radio][name=PaymentMethod]:checked\").val()) {\r\n SetFooterToPaymentButton($(\"input[type=radio][name=PaymentMethod]:checked\").val());\r\n }\r\n };\r\n\r\n YouLi.Trip.Payments.InitialiseResponseChecks = function () {\r\n $(\".content-trip-paymentdetails-itinerary-addons .multistate-check-schedule-item-response\").multiStateCheck({\r\n states: [\"unchecked\", \"checked\"],\r\n onAfterChangeState: function (e) {\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n const applyToGang = false;\r\n YouLi.Trip.Schedule.Response.MultiStateCheckUpdateAndTakeAction(e.target, applyToGang, function () {\r\n YouLi.Common.UI.HideLoading();\r\n }, true);\r\n }\r\n }).each(function () {\r\n if ($(\"#PreviewMode\").val() == \"True\") {\r\n $(this).attr(\"disabled\", \"\");\r\n }\r\n });\r\n };\r\n\r\n\r\n /* Returns a promise */\r\n YouLi.Trip.Payments.CheckForOverpayment = function () {\r\n\r\n YouLi.Common.UI.ShowLoading();\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 };\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 YouLi.Common.UI.HideLoading();\r\n var errorDate;\r\n if (response.responseJSON != undefined && response.responseJSON.url) {\r\n window.open(response.responseJSON.url, '_blank');\r\n }\r\n else if (response.status === 500) {\r\n $(\".content-trip-paymentdetails-error\").removeClass(\"hidden\");\r\n\r\n errorDate = moment();\r\n $(\"#PaymentErrorDate\").text(errorDate.format(\"D MMM YYYY\") + \" @ \" + errorDate.format(\"h:mma\"));\r\n $(\"#PaymentErrorMessage\").text(\"\");\r\n }\r\n else if (response.responseJSON.errorMessage) {\r\n $(\".content-trip-paymentdetails-error\").removeClass(\"hidden\");\r\n\r\n errorDate = moment(response.responseJSON.paymentErrorDate);\r\n\r\n $(\"#PaymentErrorDate\").text(errorDate.format(\"D MMM YYYY\") + \" @ \" + errorDate.format(\"h:mma\"));\r\n $(\"#PaymentErrorMessage\").text(response.responseJSON.errorMessage);\r\n }\r\n else if (response.responseJSON.cookieError && response.responseJSON.message) {\r\n YouLi.Common.UI.ShowStaticStandardDialogNoClose(response.responseJSON.message, \"Identity error\");\r\n }\r\n else {\r\n resolve();\r\n }\r\n }\r\n });\r\n });\r\n\r\n };\r\n\r\n YouLi.Trip.Payments.processPaymentWithSavedPaymentMethod = function (isThirdPartyCard) {\r\n\r\n let newPaymentId, couponPaymentId;\r\n var redirectURL = window.location.href;\r\n\r\n if (YouLi.Trip.Payments.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.Stripe) {\r\n\r\n YouLi.Trip.Payments.CheckForOverpayment()\r\n .then(() => {\r\n YouLi.Common.UI.ShowLoading();\r\n })\r\n .then(() => YouLi.Trip.Payments.ProcessStripePayment(undefined, \"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 redirectURL = data.redirectURL;\r\n }\r\n\r\n // 3. Create and Confirm Payment Intent to charge immediately\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 const savedPaymentMethodId = isThirdPartyCard ? $(\"#ThirdPartyCardPaymentMethodId\").val() : $(\"#SavedPaymentMethodId\").val();\r\n const isEnrolInAutoPayChecked = !isThirdPartyCard && $(\"#SavedPaymentMethodConfirmationDialog #EnrolInAutoPay\").is(\":checked\");\r\n\r\n return YouLi.Trip.Payments.ChargeStripeSavedPaymentMethod(newPaymentId, redirectURL, isThirdPartyCard, savedPaymentMethodId, isEnrolInAutoPayChecked);\r\n })\r\n .then((data) => {\r\n\r\n if (data.redirectURL) {\r\n redirectURL = data.redirectURL; // update from the payment intent\r\n }\r\n\r\n if (window.location.href == redirectURL)\r\n window.location.reload();\r\n else\r\n window.location.href = redirectURL;\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.HideLoading();\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 else if (YouLi.Trip.Payments.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.PayPal) {\r\n\r\n const savedPaymentMethodId = $(\"#SavedPaymentMethodId\").val(); // Nb: no handling third party cards for now\r\n\r\n YouLi.Trip.Payments.CheckForOverpayment()\r\n .then(() => {\r\n YouLi.Common.UI.ShowLoading();\r\n })\r\n .then(() => processPayment(\"paypal\", savedPaymentMethodId))\r\n .then((response) => {\r\n YouLi.Common.UI.HideLoading();\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.HideLoading();\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 else {\r\n console.log(\"Invalid gateway for saved payment method\");\r\n }\r\n\r\n }\r\n\r\n YouLi.Trip.Payments.ChargeStripeSavedPaymentMethod = function (paymentId, redirectURL, isThirdPartyCard, savedPaymentMethodId, isEnrolInAutoPayChecked) {\r\n\r\n let data = {\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n inviteeReferenceCode: YouLi.Trip.Payments.InviteeReferenceCode,\r\n chargeAmount: $(\"#ChargeAmount\").val(),\r\n chargeLabel: $(\"#ChargeLabel\").val(),\r\n paymentId: paymentId,\r\n isRegisteredWithPayment: false, // never true for Trip Page, only for Checkout\r\n useThirdPartyCardPaymentMethod: isThirdPartyCard,\r\n thirdPartyCardPaymentCostCentre: $(\"#ThirdPartyCardPaymentCostCentre\").val(),\r\n thirdPartyCardPaymentDepartment: $(\"#ThirdPartyCardPaymentDepartment\").val(),\r\n thirdPartyCardPaymentApprovedBy: $(\"#ThirdPartyCardPaymentApprovedBy\").val(),\r\n savedPaymentMethodId: savedPaymentMethodId,\r\n isAutoPayEnrol: isEnrolInAutoPayChecked,\r\n returnURL: redirectURL\r\n };\r\n\r\n return fetch(\"/trip/chargestripesavedpaymentmethod\", {\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(\"An error occurred when updating payment intent\");\r\n }\r\n return response.json();\r\n }).then(data => {\r\n\r\n if (!data.success) {\r\n throw {\r\n message: \"An error occurred when charging payment\",\r\n errorHandled: true\r\n };\r\n }\r\n\r\n var redirectURL = data.redirectURL;\r\n return Promise.resolve({ redirectURL });\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 YouLi.Trip.Payments.ShowErrorOnPage(\"Error processing payment. Please try again or contact your planner for assistance\", moment());\r\n\r\n throw {\r\n message: \"Error charging payment\",\r\n errorHandled: true\r\n };\r\n });\r\n }\r\n\r\n YouLi.Trip.Payments.RefreshPaymentMethod = function (preventScroll = false) {\r\n ChangeMethod($(\"input[type=radio][name=PaymentMethod]:checked\").val(), preventScroll);\r\n ClearFooterPaymentButton();\r\n ForceFooterUpdate();\r\n }\r\n\r\n YouLi.Trip.Payments.UpdateGangPlaceholdersFormSuccess = function (result) {\r\n\r\n var formSubmitBtn = $(\"form\").find(\"input[type='submit']\");\r\n\r\n if (result.errors) {\r\n YouLi.Common.UI.HideInputLoading(formSubmitBtn);\r\n YouLi.Common.UI.HideLoading();\r\n YouLi.Common.UI.ClearClientSideErrors();\r\n YouLi.Common.UI.FormatClientSideErrors(result.errors);\r\n\r\n } else {\r\n YouLi.Common.UI.ClearClientSideErrors();\r\n\r\n // Update the payment details UI now their name etc has changed\r\n if (result.showCosts) {\r\n $(\".content-tab-paymentdetails\").removeClass(\"hidden\");\r\n }\r\n\r\n RefreshInviteesTab(result.inviteesDetailsHtmlString, result.showInvitees);\r\n\r\n var initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]:checked\").val();\r\n if ($(\".content-trip-paymentdetails-costs\").length > 0)\r\n $(\".content-trip-paymentdetails-costs\").html(result.paymentDetailsHtml);\r\n\r\n YouLi.Trip.Payments.InitialiseUI();\r\n YouLi.Common.UI.Init();\r\n\r\n // reinitialise\r\n $(\"input[type=radio][name=PaymentMethod][value=\" + initialSelectedPaymentMethod + \"]\").attr(\"checked\", true);\r\n ChangeMethod(initialSelectedPaymentMethod, true);\r\n\r\n $('#GangPlaceholdersDialog').modal('hide');\r\n }\r\n };\r\n\r\n YouLi.Trip.Payments.UpdateGangPlaceholdersFormFailure = function (xhr, status, error) {\r\n var formSubmitBtn = $(\"form\").find(\"input[type='submit']\");\r\n YouLi.Common.UI.HideInputLoading(formSubmitBtn);\r\n\r\n YouLi.Common.UI.FormatClientSideErrors(error, xhr);\r\n\r\n $('#GangPlaceholdersDialog').animate({ scrollTop: 0 }, 800);\r\n };\r\n\r\n var hasBillingAddress = function () {\r\n return $(\"#BillToFieldsIncluded\") && $(\"#BillToFieldsIncluded\").val() == \"true\";\r\n }\r\n\r\n /* Returns a promise */\r\n var processPayment = function (paymentMethod, savedPaymentMethodId) {\r\n\r\n var dataString = new FormData($(\"#PaymentChargeForm\")[0]);\r\n\r\n $(\".content-trip-paymentdetails-error\").addClass(\"hidden\");\r\n $(\".paypal-trip-paymentdetails-error\").addClass(\"hidden\");\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n dataString.append(\"paymentMethod\", paymentMethod);\r\n\r\n const isChipAwaySelected = $(\"input[type=radio][name=PaymentOption]:checked\").val() == \"chipaway\";\r\n dataString.append(\"isChipAway\", isChipAwaySelected);\r\n\r\n dataString.append(\"isRegisteredWithPayment\", false);// never true for Trip Page, only for Checkout\r\n\r\n if (YouLi.Trip.Payments.RefundProtectOptedOutConfirmed)\r\n dataString.append(\"optedOutRefundProtect\", true);\r\n\r\n dataString.append(\"RefundProtectSelection\", YouLi.Trip.Payments.GetRefundProtectSelection());\r\n\r\n dataString.append(\"includedBillingAddress\", hasBillingAddress());\r\n if (hasBillingAddress()) {\r\n // add credit card form details like billing details\r\n var creditCardFormData = new FormData($('#GenericPaymentForm')[0]);\r\n for (let pair of creditCardFormData.entries()) {\r\n dataString.append(pair[0], pair[1]);\r\n }\r\n }\r\n\r\n if ($('input[type=radio][name=PaymentMethod]:checked').val() === \"thirdpartycard\") {\r\n data[\"IsThirdPartyCardPayment\"] = true;\r\n data[\"ThirdPartyCardPaymentCostCentre\"] = $(\"#ThirdPartyCardPaymentCostCentre\").val();\r\n data[\"ThirdPartyCardPaymentDepartment\"] = $(\"#ThirdPartyCardPaymentDepartment\").val();\r\n data[\"ThirdPartyCardPaymentApprovedBy\"] = $(\"#ThirdPartyCardPaymentApprovedBy\").val();\r\n }\r\n\r\n if (savedPaymentMethodId) {\r\n dataString.append(\"SavedPaymentMethodId\", savedPaymentMethodId);\r\n }\r\n\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: '/trip/inviteemakepayment',\r\n type: 'POST',\r\n data: dataString,\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n complete: function (response) {\r\n YouLi.Common.UI.HideLoading();\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\r\n if (response.status === 500) {\r\n YouLi.Trip.Payments.ShowErrorOnPage(\"\", moment());\r\n\r\n YouLi.Trip.Payments.RefreshPaymentMethod(true);\r\n }\r\n else if (response.responseJSON.statusCode === 500) {\r\n YouLi.Trip.Payments.ShowErrorOnPage(response.responseJSON.paymentErrorMessage, moment(response.responseJSON.paymentErrorDate), paymentMethod);\r\n\r\n YouLi.Trip.Payments.RefreshPaymentMethod(true);\r\n }\r\n else if (response.responseJSON.cookieError && response.responseJSON.message) {\r\n YouLi.Common.UI.ShowStaticStandardDialogNoClose(response.responseJSON.message, \"Identity error\");\r\n }\r\n else {\r\n\r\n if ($(\"#IsBooked\").val() != \"True\") {\r\n if (YouLi.Common.GetGAData != null) {\r\n var gaData = YouLi.Common.GetGAData(\"purchase\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n }\r\n }\r\n\r\n // Note: even for payment methods that redirect the user (e.g PayPal or Custom links), we still refresh in the background, so that if they hit \"back\" it will have refreshed info\r\n // B. Thulke: note that currently this is NOT actually staying applied when the user hits \"Back\" in their\r\n // browser to return to the trip page. See https://stackoverflow.com/questions/10096671/chrome-back-button-only-giving-cached-version-of-initial-page-without-any-ajax for a\r\n // possible solution, setting the cache-control header for the original trip page index request.\r\n $('#payment-detail-content').html(response.responseJSON.paymentDetailsHtmlString);\r\n $(\"#content-trip-paymentdetails\").removeClass(\"hidden\");\r\n YouLi.Trip.Payments.InitialiseUI();\r\n YouLi.Common.UI.Init(); // reinitialise things like popovers!\r\n $('.trip-heading-title').html(response.responseJSON.tripHeadingTitle);\r\n $('.content-trip-heading-details.content-trip-heading-details-bullets').html(response.responseJSON.tripHeadingDetails);\r\n RefreshInviteesTab(response.responseJSON.inviteesDetailsHtmlString, response.responseJSON.showInvitees);\r\n $('#tasks-content').html(response.responseJSON.tasksListHtmlString);\r\n YouLi.Trip.ShowInviteesAllTab = response.responseJSON.showInviteesAllTab;\r\n\r\n $('html, body').animate({\r\n scrollTop: $(\".cost-payments\").offset().top - 80\r\n }, 1000, () => {\r\n if (response.responseJSON.placeholdersDetails) {\r\n $('#GangPlaceholdersDialogContent').html(response.responseJSON.placeholdersDetails);\r\n $('#GangPlaceholdersDialog').modal('show');\r\n }\r\n });\r\n\r\n dataLayer.push({\r\n 'tripName': $(\"#TripName\").val(),\r\n 'totalPrice': YouLi.Trip.Payments.CostPrepayTotalForAllGangMembers,\r\n 'paymentAmount': YouLi.PaymentChargeForm.GetChargeAmount(),\r\n 'event': 'Trip Booked'\r\n });\r\n\r\n //google tag manager\r\n $('#GoogleAnalyticsData').html(response.responseJSON.googleAnalyticsHtml);\r\n\r\n YouLi.Trip.SetupUpdatePaymentsListTimer();\r\n\r\n YouLi.Trip.Payments.RefreshPaymentMethod();\r\n\r\n // Redirect if specified - for phone we only redirect on mobile\r\n if (response.responseJSON.redirectURL && (paymentMethod != \"phone\" || YouLi.Common.Utils.IsMobile())) {\r\n window.location.href = response.responseJSON.redirectURL;\r\n }\r\n }\r\n\r\n resolve(response);\r\n }\r\n });\r\n });\r\n };\r\n\r\n YouLi.Trip.Payments.ShowErrorOnPage = function (errorMessage, errorDate /* a Moment date */, paymentMethod) {\r\n\r\n if (errorDate)\r\n $(\"#PaymentErrorDate\").text(errorDate.format(\"D MMM YYYY\") + \" @ \" + errorDate.format(\"h:mma\"));\r\n\r\n $(\".payment-error-message\").text(errorMessage);\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\r\n if (paymentMethod === 'paypal') {\r\n $('.paypal-trip-paymentdetails-error').removeClass('hidden');\r\n $('html, body').animate({\r\n scrollTop: $('.paypal-trip-paymentdetails-error').offset().top - 80\r\n }, 1000);\r\n\r\n } else {\r\n $('.content-trip-paymentdetails-error').removeClass('hidden');\r\n $('html, body').animate({\r\n scrollTop: $('.content-trip-paymentdetails-error').offset().top - 80\r\n }, 1000);\r\n\r\n }\r\n };\r\n\r\n YouLi.Trip.Payments.ProcessGenericCreditCardPayment = function (nonce, paymentMethod) {\r\n\r\n if (nonce) {\r\n var $form = $('#PaymentChargeForm');\r\n\r\n $(\"#chargeNonce\").remove();\r\n $form.append($('').val(nonce));\r\n }\r\n\r\n return processPayment(paymentMethod); // TODO: Base this on the planner's settings\r\n };\r\n\r\n /* Returns a promise */\r\n YouLi.Trip.Payments.ProcessStripePayment = function (paymentIntentId, paymentMethod) {\r\n\r\n var dataString = new FormData($(\"#PaymentChargeForm\")[0]);\r\n\r\n dataString.append(\"paymentMethod\", \"stripe\");\r\n\r\n if (paymentIntentId) {\r\n var $form = $('#PaymentChargeForm');\r\n\r\n $(\"#chargeNonce\").remove();\r\n $form.append($('').val(paymentIntentId));\r\n }\r\n\r\n const isChipAwaySelected = $(\"input[type=radio][name=PaymentOption]:checked\").val() == \"chipaway\";\r\n dataString.append(\"isChipAway\", isChipAwaySelected);\r\n\r\n dataString.append(\"isRegisteredWithPayment\", false);// never true for Trip Page, only for Checkout\r\n\r\n if (YouLi.Trip.Payments.RefundProtectOptedOutConfirmed)\r\n dataString.append(\"optedOutRefundProtect\", true);\r\n\r\n dataString.append(\"RefundProtectSelection\", YouLi.Trip.Payments.GetRefundProtectSelection());\r\n\r\n dataString.append(\"includedBillingAddress\", hasBillingAddress());\r\n if (hasBillingAddress()) {\r\n // add credit card form details like billing details\r\n var creditCardFormData = new FormData($('#GenericPaymentForm')[0]);\r\n for (let pair of creditCardFormData.entries()) {\r\n dataString.append(pair[0], pair[1]);\r\n }\r\n }\r\n\r\n if ($('input[type=radio][name=PaymentMethod]:checked').val() === \"thirdpartycard\") {\r\n dataString.append(\"IsThirdPartyCardPayment\", true);\r\n dataString.append(\"ThirdPartyCardPaymentCostCentre\", $(\"#ThirdPartyCardPaymentCostCentre\").val());\r\n dataString.append(\"ThirdPartyCardPaymentDepartment\", $(\"#ThirdPartyCardPaymentDepartment\").val());\r\n dataString.append(\"ThirdPartyCardPaymentApprovedBy\", $(\"#ThirdPartyCardPaymentApprovedBy\").val());\r\n }\r\n\r\n return fetch(\"/trip/inviteemakepayment\", {\r\n method: \"POST\",\r\n headers: {\r\n 'Cache-Control': 'no-cache'\r\n },\r\n body: dataString\r\n }).then(response => {\r\n\r\n if (!response.ok) {\r\n throw new Error(response.message);\r\n }\r\n\r\n return response.json();\r\n }).then(data => {\r\n if (data.statusCode == 500) {\r\n\r\n YouLi.Trip.Payments.ShowErrorOnPage(data.paymentErrorMessage, moment(data.paymentErrorDate));\r\n\r\n YouLi.Trip.Payments.RefreshPaymentMethod(true);\r\n\r\n throw {\r\n message: \"Failed to create payment: \" + data.paymentErrorMessage,\r\n errorHandled: true\r\n };\r\n }\r\n else if (data.cookieError && data.message) {\r\n $(\"#GenericPaymentFormDialog\").modal(\"hide\");\r\n\r\n YouLi.Common.UI.ShowStaticStandardDialogNoClose(data.message, \"Identity error\");\r\n\r\n throw {\r\n message: data.message,\r\n errorHandled: true\r\n };\r\n }\r\n\r\n\r\n //google tag manager \r\n if ($(\"#IsBooked\").val() != \"True\") {\r\n if (YouLi.Common.GetGAData != null) {\r\n var gaData = YouLi.Common.GetGAData(\"purchase\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n }\r\n }\r\n $('#GoogleAnalyticsData').html(data.googleAnalyticsHtml);\r\n\r\n var newPaymentId = data.newPaymentId;\r\n var couponPaymentId = data.couponPaymentId;\r\n var redirectURL = data.redirectURL;\r\n return Promise.resolve({ newPaymentId, couponPaymentId, redirectURL });\r\n });\r\n };\r\n\r\n var ForceFooterUpdate = function () {\r\n YouLi.Trip.FooterUpdatesPaused = false;\r\n YouLi.Trip.UpdateResponseFooter(runOnce = true, checkTripUpdates = false);\r\n };\r\n\r\n var SetFooterToPaymentButton = function (selectedMethod) {\r\n\r\n // update footer for payment button\r\n if (selectedMethod) {\r\n YouLi.Trip.FooterUpdatesPaused = true;\r\n var footerForPayment = \"\";\r\n let isPackageSoldout = $(\".pay-now-button-label\").data('sold-out');\r\n if (isPackageSoldout) {\r\n footerForPayment = ``;\r\n } else {\r\n footerForPayment = $(\"\")\r\n .append(`${YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.GetChargeAmount())}`);\r\n }\r\n $(\".content-trip-response-footer\")\r\n .removeClass(\"hidden\")\r\n .html(footerForPayment);\r\n\r\n $(\".content-trip-response-footer\").append($(\".payment-button\").clone());\r\n }\r\n };\r\n\r\n var ClearFooterPaymentButton = function () {\r\n $(\".content-trip-response-footer\").html(\"\");\r\n }\r\n\r\n var ChangePaymentOption = function (selectedOption) {\r\n\r\n $(\".installments-details\").addClass(\"hidden\");\r\n\r\n if (!YouLi.Trip.Payments.InviteeHasPayments && selectedOption == \"installment\") {\r\n $(\".installments-details\").removeClass(\"hidden\");\r\n }\r\n\r\n YouLi.CreditCardPaymentForm.UpdateAutoPayVisibility(selectedOption != \"balance\");\r\n\r\n $(\".cost-line-item-payment-total\").toggleClass(\"hidden\", !selectedOption); // only show if a method is selected\r\n\r\n $(\"#ChipAwayPaymentOptionDetails\").toggleClass(\"hidden\", selectedOption != \"chipaway\");\r\n\r\n // Reset teh selected installment value\r\n if (selectedOption == \"installment\")\r\n YouLi.Trip.Payments.SelectedInstallmentId = YouLi.Trip.Payments.InstallmentIdOther;\r\n else if (selectedOption == \"chipaway\") {\r\n // \"chip away\" at the next installment or the balance if there's no installments owed\r\n if (YouLi.Trip.Payments.HasAnyOwingInstallments)\r\n YouLi.Trip.Payments.SelectedInstallmentId = YouLi.Trip.Payments.InstallmentIdOther;\r\n else\r\n YouLi.Trip.Payments.SelectedInstallmentId = YouLi.Trip.Payments.InstallmentIdBalance;\r\n }\r\n else\r\n YouLi.Trip.Payments.SelectedInstallmentId = YouLi.Trip.Payments.InstallmentIdBalance;\r\n\r\n TogglePaymentButtonVisiblity();\r\n\r\n ToggleAutoPayOptionVisibility();\r\n\r\n // now update the actual payment amount\r\n GetSelectedPaymentOptionAmount();\r\n }\r\n\r\n var GetSelectedPaymentOptionAmount = function () {\r\n\r\n const isChipAwaySelected = $(\"input[type=radio][name=PaymentOption]:checked\").val() == \"chipaway\";\r\n const chipAwayPaymentAmount = $(\"#CurrentInvitee_ChipAwayPaymentAmount\").val();\r\n\r\n if (isChipAwaySelected) {\r\n if (chipAwayPaymentAmount == \"\" || chipAwayPaymentAmount < YouLi.Trip.Payments.ChipAwayMinimumAmount) {\r\n\r\n $(\"#ChipAwayErrorMessage\").text(`Payment cannot be less than ${YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.Trip.Payments.ChipAwayMinimumAmount)}`).removeClass(\"hidden\");\r\n return;\r\n }\r\n else if (chipAwayPaymentAmount > YouLi.Trip.Payments.ChipAwayMaximumAmount) {\r\n\r\n $(\"#ChipAwayErrorMessage\").text(`Payment cannot be greater than the amount you owe, ${YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.Trip.Payments.ChipAwayMaximumAmount)}`).removeClass(\"hidden\");\r\n return;\r\n }\r\n }\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n var previewMode = $(\"#PreviewMode\").val();\r\n let data = {\r\n preview: previewMode,\r\n costInstallmentId: isChipAwaySelected ? '' : YouLi.Trip.Payments.SelectedInstallmentId,\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n couponCode: $(\"#ChargeCouponCode\").val(),\r\n isChipAway: isChipAwaySelected,\r\n chipAwayPaymentAmount: chipAwayPaymentAmount\r\n }\r\n\r\n if (previewMode.toLowerCase() == \"true\") {\r\n data.selectedTripPackageId = $(\"#SelectedPackageId\").val();\r\n }\r\n\r\n $.ajax({\r\n url: `/trip/getinstallmentamount`,\r\n type: \"POST\",\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 YouLi.Common.UI.HideLoading();\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 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred. Please refresh the page to try again.\");\r\n }\r\n else if (response.responseJSON.cookieError && response.responseJSON.message) {\r\n YouLi.Common.UI.ShowStaticStandardDialogNoClose(response.responseJSON.message, \"Identity error\");\r\n }\r\n else {\r\n YouLi.PaymentChargeForm.AmountDue = response.responseJSON.installmentAmountDue; // + response.responseJSON.upfrontPaymentAmount;\r\n\r\n if (!isChipAwaySelected) {\r\n if (response.responseJSON.installmentIsBalance)\r\n $(\".amount-due-balance\").html(YouLi.Common.Currency.DisplayCost(YouLi.PaymentChargeForm.Currency, YouLi.PaymentChargeForm.AmountDue));\r\n else\r\n $(\".amount-due-installment\").html(YouLi.Common.Currency.DisplayCost(YouLi.PaymentChargeForm.Currency, YouLi.PaymentChargeForm.AmountDue));\r\n }\r\n\r\n UpdateChargeDetails(response.responseJSON.chargeLabel);\r\n\r\n $(\"input[Name=ChargeInstallmentId]\").val(YouLi.Trip.Payments.SelectedInstallmentId);\r\n }\r\n }\r\n });\r\n };\r\n\r\n var ChangeMethod = function (selectedMethod, preventScroll, scrollToPaymentLine) {\r\n\r\n var selectedPaymentMethodElement = $('input[type=radio][name=PaymentMethod]:checked');\r\n\r\n let selectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n\r\n // If the user initiated this change, scroll to the top of the Payment Methods selection if it is being shown, otherwise scroll to the top of the payments table (YOULI-3747)\r\n if (selectedPaymentOption && !preventScroll) {\r\n var scrollTarget = $(\"#ChoosePaymentMethodTitle\").length > 0 && scrollToPaymentLine ? $(\"#ChoosePaymentMethodTitle\") : $(\".content-trip-package-container\");\r\n $('html, body').animate({\r\n scrollTop: scrollTarget.offset().top - 80\r\n }, 1000);\r\n }\r\n\r\n // hide all and then show whichever is needed\r\n $(\".credit-card-surcharge-val\").addClass(\"hidden\");\r\n $(\".refund-protect-val\").addClass(\"hidden\");\r\n $(\"#RefundProtectSelection\").addClass(\"hidden\");\r\n $(\".payment-method-details\").addClass(\"hidden\");\r\n\r\n $(\"#PhoneDetails\").addClass(\"hidden\");\r\n $(\"#SavedPaymentMethodAutoPayDetails\").addClass(\"hidden\");\r\n $(\"#ThirdPartyCardDetails\").addClass(\"hidden\");\r\n $(\"#BankTransferDetails\").addClass(\"hidden\");\r\n\r\n // standard labels\r\n let isPackageSoldout = $(\".pay-now-button-label\").data('sold-out');\r\n if (isPackageSoldout) {\r\n $(\".pay-now-button-label\").text(\"Sold Out\");\r\n } else {\r\n $(\".pay-now-button-label\").text(YouLi.Trip.Payments.PayNowButtonText);\r\n }\r\n\r\n // if the tab is currently being displayed, update the footer for the selected method\r\n var tabIsSelected = !$(\"#content-trip-paymentdetails\").hasClass(\"hidden\");\r\n if (tabIsSelected && selectedMethod)\r\n SetFooterToPaymentButton(selectedMethod);\r\n\r\n switch (selectedMethod) {\r\n case \"savedpaymentmethod\":\r\n if (selectedPaymentOption && YouLi.Trip.HasAchSurcharge === false) {\r\n if (YouLi.Payments.Default.SurchargePercent > 0) {\r\n // show the surcharge value associated with this selected payement method\r\n selectedPaymentMethodElement.closest(\".row\").find(\".credit-card-surcharge-val\").removeClass(\"hidden\");\r\n }\r\n }\r\n break;\r\n case \"thirdpartycard\":\r\n if (selectedPaymentOption) {\r\n if (YouLi.Trip.Payments.ThirdPartyCardSurchargePercent > 0) {\r\n $(\".cost-line-item-credit-card-surcharge\").removeClass(\"hidden\");\r\n // show the surcharge value associated with this selected payement method\r\n selectedPaymentMethodElement.closest(\".row\").find(\".credit-card-surcharge-val\").removeClass(\"hidden\");\r\n }\r\n }\r\n $(\"#ThirdPartyCardDetails\").removeClass(\"hidden\");\r\n break;\r\n case \"banktransfer\":\r\n $(\"#PayBankTransfer\").removeClass(\"hidden\");\r\n $(\"#BankTransferDetails\").removeClass(\"hidden\");\r\n // override some labels\r\n if (isPackageSoldout) {\r\n $(\".pay-now-button-label\").text(\"Sold Out\");\r\n } else {\r\n $(\".pay-now-button-label\").text(YouLi.Trip.Payments.NotifyPlannerButtonText);\r\n }\r\n break;\r\n case \"creditcard\":\r\n $(\"#PayCreditCard\").removeClass(\"hidden\");\r\n\r\n if (selectedPaymentOption && YouLi.Trip.HasAchSurcharge === false) {\r\n if (YouLi.PaymentChargeForm.Default.SurchargePercent > 0) {\r\n // show the surcharge value associated with this selected payement method\r\n selectedPaymentMethodElement.closest(\".row\").find(\".credit-card-surcharge-val\").removeClass(\"hidden\");\r\n }\r\n }\r\n break;\r\n case \"paypallink\":\r\n $(\"#PayPayPalLink\").removeClass(\"hidden\");\r\n break;\r\n case \"phone\":\r\n $(\"#PayPhone\").removeClass(\"hidden\");\r\n $(\"#PhoneDetails\").removeClass(\"hidden\");\r\n if (isPackageSoldout) {\r\n $(\".pay-now-button-label\").text('Sold Out');\r\n } else {\r\n var isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|webOS|BlackBerry|IEMobile|Opera Mini)/i);\r\n $(\".pay-now-button-label\").text(isMobile ? YouLi.Trip.Payments.PayNowButtonText : YouLi.Trip.Payments.NotifyPlannerButtonText);\r\n }\r\n\r\n break;\r\n case \"customlink\":\r\n $(\"#PayCustomLink\").removeClass(\"hidden\");\r\n break;\r\n }\r\n\r\n ToggleRefundProtectVisiblity();\r\n\r\n TogglePaymentButtonVisiblity();\r\n\r\n ToggleAutoPayOptionVisibility();\r\n\r\n // update the charge details if they have selected a method - we have to redo this here because of method-based surcharges\r\n if (selectedMethod)\r\n UpdateChargeDetails(undefined);\r\n };\r\n\r\n var ToggleRefundProtectVisiblity = function () {\r\n let selectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n var selectedPaymentMethod = $('input[type=radio][name=PaymentMethod]:checked').val();\r\n\r\n if (selectedPaymentMethod) {\r\n if (selectedPaymentOption) {\r\n $(\".refund-protect-val\").removeClass(\"hidden\");\r\n }\r\n\r\n if (YouLi.Trip.Payments.RefundProtectPercent > 0) {\r\n $(\"#RefundProtectSelection\").removeClass(\"hidden\");\r\n }\r\n }\r\n\r\n }\r\n\r\n var TogglePaymentButtonVisiblity = function () {\r\n const selectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n const selectedPaymentMethod = $('input[type=radio][name=PaymentMethod]:checked').val();\r\n\r\n const isChipAwaySelected = $(\"input[type=radio][name=PaymentOption]:checked\").val() == \"chipaway\";\r\n const chipAwayPaymentAmount = $(\"#CurrentInvitee_ChipAwayPaymentAmount\").val();\r\n const validChipAwayAmountEntered = !isChipAwaySelected || (chipAwayPaymentAmount >= YouLi.Trip.Payments.ChipAwayMinimumAmount && chipAwayPaymentAmount <= YouLi.Trip.Payments.ChipAwayMaximumAmount);\r\n\r\n // Only show if a method AND the payment option have both been selected, and chip away amount is valid if that is the selected payment optoin\r\n const showPaymentButtons = !(selectedPaymentMethod && selectedPaymentOption && validChipAwayAmountEntered);\r\n $(\".payment-button\").toggleClass(\"hidden\", showPaymentButtons);\r\n\r\n $(\".enrol-in-autopay\").toggleClass(\"hidden\", showPaymentButtons);\r\n };\r\n\r\n var ToggleAutoPayOptionVisibility = function () {\r\n const selectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n const selectedPaymentMethod = $('input[type=radio][name=PaymentMethod]:checked').val();\r\n\r\n const showSavedPaymentMethodAutoPayDetails = selectedPaymentMethod == \"savedpaymentmethod\"\r\n && selectedPaymentOption\r\n && (YouLi.Trip.Payments.HasAnyOwingInstallments && YouLi.Trip.Payments.SelectedInstallmentId !== YouLi.Trip.Payments.InstallmentIdBalance);\r\n $(\"#SavedPaymentMethodAutoPayDetails\").toggleClass(\"hidden\", !showSavedPaymentMethodAutoPayDetails);\r\n\r\n // show the \"promo\" for AutoPay under credit card when no installment has been seleted at all, or when the balance has not been selected\r\n const showCreditCardAutoPayDetails = !selectedPaymentOption\r\n || (YouLi.Trip.Payments.HasAnyOwingInstallments && YouLi.Trip.Payments.SelectedInstallmentId !== YouLi.Trip.Payments.InstallmentIdBalance);\r\n $(\"#CreditCardAutoPayDetails\").toggleClass(\"hidden\", !showCreditCardAutoPayDetails);\r\n };\r\n\r\n var UpdateBillToEmail = function () {\r\n\r\n let billToEmail = $(\"input[Name=billtoemail]\");\r\n\r\n if (billToEmail.length > 0) {\r\n billToEmail.val(YouLi.Trip.Payments.BillToEmail);\r\n billToEmail.prop(\"readOnly\", billToEmail.val().length > 0)\r\n }\r\n }\r\n\r\n var UpdateChargeDetails = function (label) {\r\n\r\n /// Add surcharge and any other charges to the amount before setting\r\n let selectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n let selectedPaymentMethod = $('input[type=radio][name=PaymentMethod]:checked').val();\r\n let surchargeAmount = 0;\r\n let totalAmountDue = 0;\r\n\r\n if (selectedPaymentMethod === \"thirdpartycard\") {\r\n surchargeAmount = parseFloat((YouLi.PaymentChargeForm.AmountDue * YouLi.Trip.Payments.ThirdPartyCardSurchargePercent / 100).toFixed(2));\r\n $(\".credit-card-surcharge-val\").html(`+${YouLi.PaymentChargeForm.GetFormattedCurrency(surchargeAmount)}`);\r\n\r\n if (selectedPaymentOption && YouLi.Trip.Payments.ThirdPartyCardSurchargePercent > 0) {\r\n $(\".cost-line-item-credit-card-surcharge\").removeClass(\"hidden\");\r\n $(\".cost-line-item-surcharge-val\").removeClass(\"hidden\");\r\n }\r\n }\r\n else if (selectedPaymentMethod === \"savedpaymentmethod\" || selectedPaymentMethod === \"creditcard\") {\r\n const paymentMethod = selectedPaymentMethod === \"savedpaymentmethod\" ? YouLi.Trip.Payments.SaveCardMethodType : null;\r\n surchargeAmount = YouLi.PaymentChargeForm.GetSurchargeAmount(paymentMethod);\r\n\r\n $(\".credit-card-surcharge-val\").html(`+${YouLi.PaymentChargeForm.GetFormattedCurrency(surchargeAmount)}`);\r\n if (selectedPaymentOption\r\n && YouLi.PaymentChargeForm.Default.SurchargePercent > 0\r\n && YouLi.PaymentChargeForm.Ach.HasSurcharge === false) {\r\n\r\n // show the surcharge for the selected payment method\r\n let selectedPaymentMethodElement = $('input[type=radio][name=PaymentMethod]:checked');\r\n selectedPaymentMethodElement.closest(\".row\").find(\".credit-card-surcharge-val\").removeClass(\"hidden\");\r\n }\r\n }\r\n\r\n totalAmountDue = YouLi.PaymentChargeForm.AmountDue + surchargeAmount;\r\n\r\n // add Refund Protect (if applicable and selected)\r\n $(\".refund-protect-val\").addClass(\"hidden\");\r\n let refundProtectAmount = 0;\r\n let refundProtectPercentage = 0;\r\n if (YouLi.Trip.Payments.RefundProtectPercent > 0\r\n && selectedPaymentOption\r\n && $(\"input[type=radio][name='CurrentInvitee.RefundProtectSelection']:checked\").val() != undefined\r\n && $(\"input[type=radio][name='CurrentInvitee.RefundProtectSelection']:checked\").val().toLowerCase() == \"optedin\"\r\n ) {\r\n\r\n refundProtectAmount = parseFloat((totalAmountDue * YouLi.Trip.Payments.RefundProtectPercent / 100).toFixed(2));\r\n refundProtectPercentage = YouLi.Trip.Payments.RefundProtectPercent;\r\n $(\".refund-protect-val\").html(`+${YouLi.PaymentChargeForm.GetFormattedCurrency(refundProtectAmount)}`);\r\n\r\n $(\".refund-protect-val\").removeClass(\"hidden\");\r\n }\r\n else {\r\n $(\".refund-protect-val\").addClass(\"hidden\");\r\n }\r\n\r\n YouLi.PaymentChargeForm.UpdatePaymentInfo({\r\n surchargeAmount: surchargeAmount,\r\n refundProtectAmount: refundProtectAmount,\r\n refundProtectPercent: refundProtectPercentage\r\n });\r\n\r\n if ((selectedPaymentMethod === \"creditcard\" || selectedPaymentMethod == \"savedpaymentmethod\") && YouLi.PaymentChargeForm.Ach.HasSurcharge === true) {\r\n $(\".cost-line-item-amount-payment-total\").html(YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.GetChargeAmountNoSurcharge()));\r\n $('#GenericPaymentFormDialog')\r\n .find('.cost-line-item-amount-payment-total')\r\n .html(YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.GetChargeAmount()));\r\n } else {\r\n $(\".cost-line-item-amount-payment-total\").html(YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.GetChargeAmount()));\r\n }\r\n\r\n $(\"input[Name=RefundProtectAmount]\").val(refundProtectAmount);\r\n $(\"input[Name=ChargeAmount]\").val(YouLi.PaymentChargeForm.GetChargeAmount());\r\n $(\"input[Name=SurchargeAmount]\").val(surchargeAmount);\r\n\r\n if (label) {\r\n $(\"input[Name=ChargeLabel]\").val(label);\r\n }\r\n\r\n // trigger the change event on the ChargeAmount field for things like updating the payment intent for Stripe\r\n $(\"input[Name=ChargeAmount]\").trigger(\"change\");\r\n };\r\n\r\n var RefreshInviteesTab = function (tabHTML, showInviteeTab) {\r\n if (showInviteeTab) {\r\n // Display and refresh invitees tab (if not already displayed)\r\n $(\".content-tab-invitees\").removeClass(\"hidden\");\r\n\r\n $(\"#invitees-content\").html(tabHTML);\r\n\r\n YouLi.Trip.SetupInviteeSectionMenu();\r\n }\r\n }\r\n\r\n var continuePayment = function () {\r\n\r\n UpdateBillToEmail();\r\n UpdateChargeDetails(undefined);\r\n var selectedPaymentMethod = $('input[type=radio][name=PaymentMethod]:checked').val();\r\n\r\n switch (selectedPaymentMethod) {\r\n\r\n case \"savedpaymentmethod\":\r\n const totalAmount = YouLi.PaymentChargeForm.GetChargeAmount();\r\n $(\"#SavedPaymentMethodConfirmationDialog .current-payment-amount\").text(YouLi.PaymentChargeForm.GetFormattedCurrency(totalAmount));\r\n $('#ChargeAmount').val(totalAmount);\r\n\r\n $(\"#AutoPayEnrolOption\").toggleClass(\"hidden\", YouLi.Trip.Payments.SelectedInstallmentId == YouLi.Trip.Payments.InstallmentIdBalance);\r\n\r\n $(\"#EnrolInAutoPay\").prop(\"checked\", YouLi.Trip.Payments.RecentlyClickedEnrolAutoPay);\r\n YouLi.Trip.Payments.RecentlyClickedEnrolAutoPay = false; // reset for next time\r\n\r\n $(\"#SavedPaymentMethodConfirmationDialog\").modal(\"show\");\r\n\r\n break;\r\n\r\n case \"thirdpartycard\":\r\n\r\n if (!$(\"#PaymentCostChargingDetailsForm\").valid())\r\n return;\r\n\r\n $(\"#SavedThirdPartyCardConfirmationDialog .current-payment-amount\").text(\r\n YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.GetChargeAmount()));\r\n\r\n $(\"#SavedThirdPartyCardConfirmationDialog\").modal(\"show\");\r\n\r\n break;\r\n\r\n case \"creditcard\":\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n //google tag manager\r\n if ($(\"#IsBooked\").val() == \"\" || $(\"#IsBooked\").val() == \"False\") {\r\n var gaData = YouLi.Common.GetGAData(\"begin_checkout\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n }\r\n\r\n // log analytics - don't do anything on success/fail\r\n $.ajax({\r\n url: `/trip/logpaymentclick?tripId=${$(\"#TripId\").val()}&inviteeId=${$(\"#InviteeId\").val()}`,\r\n type: 'POST',\r\n cache: false,\r\n contentType: false,\r\n processData: false,\r\n complete: function (response) {\r\n if (response.responseJSON.cookieError && response.responseJSON.message) {\r\n YouLi.Common.UI.HideLoading();\r\n YouLi.Common.UI.ShowStaticStandardDialogNoClose(response.responseJSON.message, \"Identity error\");\r\n }\r\n }\r\n\r\n });\r\n\r\n if (YouLi.Trip.Payments.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.Stripe) {\r\n YouLi.CreditCardPaymentForm.InitialiseStripe()\r\n .then(() => {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n $(\"#GenericPaymentFormDialog\").modal(\"show\");\r\n })\r\n }\r\n else {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n $(\"#GenericPaymentFormDialog\").modal(\"show\");\r\n }\r\n\r\n break;\r\n case \"banktransfer\":\r\n case \"paypallink\":\r\n case \"phone\":\r\n case \"customlink\":\r\n YouLi.Trip.Payments.CheckForOverpayment()\r\n .then(() => processPayment(selectedPaymentMethod));\r\n\r\n break;\r\n }\r\n\r\n };\r\n\r\n YouLi.Trip.Payments.InitialiseUI = function () {\r\n YouLi.Trip.Payments.InitialiseResponseChecks();\r\n YouLi.Common.UI.Init();\r\n };\r\n\r\n YouLi.Trip.Payments.UpdateTripPackage = function (selectedPackageId, selectedTripPackageRoomId) {\r\n\r\n const defaultPromise = new Promise((resolve, reject) => {\r\n resolve('Success!');\r\n });\r\n\r\n let programTabIsHidden = $(\"#content-trip-program\").hasClass(\"hidden\");\r\n let itineraryTabIsHidden = $(\"#content-trip-itinerary\").length == 0 || $(\"#content-trip-itinerary\").hasClass(\"hidden\");\r\n let taskTabIsHidden = $(\"#content-trip-tasks\").length == 0 || $(\"#content-trip-tasks\").hasClass(\"hidden\");\r\n let selectedMenuSection = $(\".content-trip-details-menu .nav li.active\").data(\"section\");\r\n\r\n var previewMode = $(\"#PreviewMode\").val();\r\n if (selectedPackageId) {\r\n YouLi.Common.UI.ShowLoading();\r\n var tripId = $(\"#TripId\").val();\r\n var inviteeId = $(\"#InviteeId\").val();\r\n\r\n return $.ajax({\r\n url: `/trip/UpdateInviteeTripPackage/?packageId=${selectedPackageId}&packageRoomId=${selectedTripPackageRoomId}&tripId=${tripId}&inviteeId=${inviteeId}&preview=${previewMode}`,\r\n type: \"GET\",\r\n dataType: \"json\",\r\n contentType: \"application/json; charset=utf-8\",\r\n complete: function (response) {\r\n\r\n YouLi.Common.UI.HideLoading();\r\n\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 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred. Please refresh the page to try again.\");\r\n }\r\n else {\r\n\r\n if (response.responseJSON.showCosts) {\r\n $(\".content-tab-paymentdetails\").removeClass(\"hidden\");\r\n }\r\n\r\n var initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]:checked\").val();\r\n if ($(\".content-trip-paymentdetails-costs\").length > 0)\r\n $(\".content-trip-paymentdetails-costs\").html(response.responseJSON.paymentDetailsHtml);\r\n\r\n $(\".package-card\").html(response.responseJSON.packageCardHtml);\r\n $(\".content-trip-heading-details-cost\").html(response.responseJSON.tripCostSummaryHtml);\r\n\r\n // Update payment info - but only if the server has passed it back\r\n if ($(\".content-trip-paymentdetails-payment-info\").length > 0 && response.responseJSON.paymentInfoHtml.length > 0)\r\n $(\".content-trip-paymentdetails-payment-info\").html(response.responseJSON.paymentInfoHtml);\r\n\r\n YouLi.Trip.UpdateProgramContent(programTabIsHidden, response.responseJSON.contentProgramHtml);\r\n YouLi.Trip.UpdateItineraryContent(itineraryTabIsHidden, response.responseJSON.contentItineraryHtml);\r\n YouLi.Trip.UpdateTaskContent(taskTabIsHidden, response.responseJSON.contentTaskHtml);\r\n YouLi.Trip.UpdateMenuContent(selectedMenuSection, response.responseJSON.menuHtml);\r\n\r\n YouLi.Trip.Schedule.Response.InitialiseResponseChecks();\r\n\r\n //google analytics\r\n var preveiousSelectedTripPackage = $(\"#GA_PackageName\").val();\r\n\r\n PushRemoveCartGAData();\r\n $(\"#GoogleAnalyticsData\").html(response.responseJSON.googleAnalyticsHtml);\r\n PushAddCartGAData();\r\n\r\n YouLi.Trip.Payments.InitialiseUI();\r\n YouLi.Common.UI.Init();\r\n\r\n // reinitialise\r\n $(\"input[type=radio][name=PaymentMethod][value=\" + initialSelectedPaymentMethod + \"]\").attr(\"checked\", true);\r\n ChangeMethod(initialSelectedPaymentMethod, true);\r\n\r\n // YOULI-5433 turning off this footer button refresh here, as we don't actually see any need to refresh the footer now. It's already\r\n // refreshed above based on the selected payment method.\r\n //if (!$(\"input[type=radio][name=PaymentMethod]:checked\").val()) {\r\n // // Have to force footer update after package selection changes even if any payment method hasn't been selected\r\n // SetFooterToPaymentButton(true);\r\n //}\r\n }\r\n }\r\n\r\n });\r\n }\r\n\r\n return defaultPromise;\r\n\r\n }\r\n\r\n YouLi.Trip.Payments.CancelAutoPay = function () {\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n const url = \"/Trip/CancelAutoPayEnrollment\";\r\n const data = {\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val()\r\n };\r\n\r\n YouLi.Common.Post(\r\n url,\r\n data,\r\n (response) => {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n if (!response.success) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when cancelling AutoPay. Try again or contact your planner.\");\r\n }\r\n else {\r\n $(\".content-trip-paymentdetails-costs\").html(response.contentCostPaymentDetailsHtml);\r\n YouLi.Trip.Payments.RefreshPaymentMethod(true);\r\n }\r\n },\r\n () => {\r\n YouLi.Common.UI.HideLoading();\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred when cancelling AutoPay. Try again or contact your planner.\");\r\n }\r\n );\r\n };\r\n\r\n var PushRemoveCartGAData = function () {\r\n //remove_from_cart event\r\n var removeFromCartData = YouLi.Common.GetGAData(\"remove_from_cart\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(removeFromCartData);\r\n }\r\n\r\n var PushAddCartGAData = function () {\r\n //add_to_cart\r\n var removeFromCartData = YouLi.Common.GetGAData(\"add_to_cart\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(removeFromCartData);\r\n }\r\n\r\n InitialisePayments = function () {\r\n\r\n // If credit card is the only payment method, initialise to select that. Otherwise leave it unselected so the user\r\n // has to review details before seeing the \"notify\" button\r\n if ($(\"input[name=PaymentMethod]:not(':disabled')\").length == 1) {\r\n if ($(\"input[name=PaymentMethod]:not(':disabled')\").val() === \"creditcard\") {\r\n $(\"input[name=PaymentMethod]:not(':disabled')\").attr(\"checked\", true);\r\n }\r\n }\r\n\r\n // If remaining balance is the only payment option, initialise to select that.\r\n if ($(\"input[name=PaymentOption]:not(':disabled')\").length == 1) {\r\n if ($(\"input[name=PaymentOption]:not(':disabled')\").val() === \"balance\") {\r\n $(\"input[name=PaymentOption]:not(':disabled')\").attr(\"checked\", true);\r\n }\r\n }\r\n\r\n $(document).on(\"change\", \"input[type=radio][name=PaymentOption]\", function () {\r\n var selectedOption = $(this).val();\r\n\r\n ChangePaymentOption(selectedOption);\r\n });\r\n //ChangePaymentOption($(\"input[type=radio][name=PaymentOption]:checked\").val()); // YOULI-8514 remove initial server call\r\n\r\n $(document).on(\"change\", \"input[type=radio][name=PaymentMethod]\", function () {\r\n var selectedMethod = $(this).val();\r\n\r\n ChangeMethod(selectedMethod, false, true);\r\n\r\n });\r\n ChangeMethod($(\"input[type=radio][name=PaymentMethod]:checked\").val(), true);\r\n\r\n $(document).on(\"change\", \"input[type=radio][name='CurrentInvitee.RefundProtectSelection']\", function () {\r\n\r\n // trigger change method, but it will just be for updating refund protect\r\n var selectedPaymentMethod = $('input[type=radio][name=PaymentMethod]:checked').val();\r\n ChangeMethod(selectedPaymentMethod, true, true); // Nb: no scroll when changing Refund Protect\r\n\r\n });\r\n ChangeMethod($(\"input[type=radio][name=PaymentMethod]:checked\").val(), true);\r\n\r\n\r\n $(document).on(\"click\", \".apply-coupon-code\", function () {\r\n\r\n if ($(\"#PreviewMode\").val().toLowerCase() == \"true\")\r\n return;\r\n\r\n $(\".content-trip-coupon-code-error\").addClass(\"hidden\");\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n let selectedCouponCode = $(\"#SelectedCouponCode\").val();\r\n\r\n const data = {\r\n couponCode: selectedCouponCode,\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n installmentId: YouLi.Trip.Payments.SelectedInstallmentId\r\n };\r\n\r\n $.ajax({\r\n url: `/trip/applycouponcode/`,\r\n type: \"POST\",\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 YouLi.Common.UI.HideLoading();\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 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred. Please refresh the page to try again.\");\r\n }\r\n else if (response.responseJSON.errorMessage) {\r\n $(\".content-trip-coupon-code-error\").removeClass(\"hidden\")\r\n $(\"#CouponCodeErrorMessage\").text(response.responseJSON.errorMessage);\r\n }\r\n else if (response.responseJSON.cookieError && response.responseJSON.message) {\r\n YouLi.Common.UI.ShowStaticStandardDialogNoClose(response.responseJSON.message, \"Identity error\");\r\n }\r\n else {\r\n\r\n //google tag manager\r\n if ($(\"#IsBooked\").val() == \"\" || $(\"#IsBooked\").val() == \"False\") {\r\n var gaData = YouLi.Common.GetGAData(\"select_promotion\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n }\r\n\r\n $(\"#SelectedCouponCode\").val(\"\");\r\n $(\"#BreakdownTable\").html(response.responseJSON.newPaymentsBreakdownTable);\r\n $(\".content-trip-heading-details-cost\").html(response.responseJSON.newCostSummaryHtml);\r\n if ($(\".cost-installments-selection:not(.individual)\").length > 0) {\r\n $(\".cost-installments-selection:not(.individual)\").html(response.responseJSON.newInstallmentsTableHtml);\r\n }\r\n YouLi.Trip.Payments.InitialiseUI();\r\n $(\"input[Name=ChargeCouponCode]\").val(selectedCouponCode);\r\n\r\n // if balance is being paid, update the current amount due. For all other installments, we do NOT reduce the amount based on the coupon code.\r\n if (response.responseJSON.isBalance) {\r\n YouLi.PaymentChargeForm.AmountDue = response.responseJSON.balanceAmount;\r\n }\r\n UpdateChargeDetails(undefined);\r\n\r\n $(\".amount-due-balance\").html(YouLi.PaymentChargeForm.GetFormattedCurrency(response.responseJSON.balanceAmount));\r\n }\r\n }\r\n\r\n });\r\n });\r\n };\r\n\r\n $(function () {\r\n\r\n YouLi.Trip.Payments.InitialiseUI();\r\n\r\n $(document).on(\"click\", \".pay-now-button\", function () {\r\n\r\n YouLi.Trip.Payments.RecentlyClickedEnrolAutoPay = $(this).hasClass(\"enrol-in-autopay\"); // store for later use\r\n\r\n if ($(\"#RecentPaymentMadeDialog\").length == 1) {\r\n $(\"#RecentPaymentMadeDialog .current-payment-amount\").text(YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.GetChargeAmount()));\r\n $(\"#RecentPaymentMadeDialog\").modal(\"show\");\r\n return;\r\n }\r\n\r\n YouLi.Trip.Payments.RefundProtectOptedOutConfirmed = false;\r\n\r\n if ($(\"#RefundProtectConfirmationDialog\").length > 0 && $(\"input[type=radio][name='CurrentInvitee.RefundProtectSelection']\").length > 0 && $(\"input[type=radio][name='CurrentInvitee.RefundProtectSelection']:checked\").val().toLowerCase() == \"optedout\") {\r\n $(\"#RefundProtectConfirmationDialog\").modal(\"show\");\r\n return;\r\n }\r\n\r\n continuePayment();\r\n });\r\n\r\n $(document).on(\"click\", \"#RecentPaymentConfirmationFormOk\", function () {\r\n\r\n $(\"#RecentPaymentMadeDialog\").modal(\"hide\");\r\n\r\n continuePayment();\r\n });\r\n\r\n $(document).on(\"click\", \"#RefundProtectConfirmationFormOk\", function () {\r\n\r\n if (!$(\"#RefundProtectConfirmationForm\").valid())\r\n return;\r\n\r\n $(\"#RefundProtectConfirmationDialog\").modal(\"hide\");\r\n\r\n YouLi.Trip.Payments.RefundProtectOptedOutConfirmed = true;\r\n\r\n continuePayment();\r\n });\r\n\r\n $(document).off(\"click\", \"#SavedPaymentMethodConfirmationOk\");\r\n $(document).on(\"click\", \"#SavedPaymentMethodConfirmationOk\", function () {\r\n\r\n $(\"#SavedPaymentMethodConfirmationDialog\").modal(\"hide\");\r\n\r\n YouLi.Trip.Payments.processPaymentWithSavedPaymentMethod(false);\r\n });\r\n\r\n $(document).off(\"click\", \"#SavedThirdPartyCardConfirmationOk\");\r\n $(document).on(\"click\", \"#SavedThirdPartyCardConfirmationOk\", function () {\r\n\r\n $(\"#SavedThirdPartyCardConfirmationDialog\").modal(\"hide\");\r\n\r\n YouLi.Trip.Payments.processPaymentWithSavedPaymentMethod(true);\r\n });\r\n\r\n $(document).on('click', '.save-card-login a', function (e) {\r\n e.preventDefault();\r\n const persona = 'traveler';\r\n const redirectUrl = $(this).attr('href');\r\n\r\n window.location.href = `${redirectUrl}?defaultPersona=${persona}`;\r\n })\r\n\r\n if (YouLi.Trip.Payments.InviteeHasOwing) {\r\n // showing payment details and form\r\n InitialisePayments();\r\n }\r\n\r\n $(document).on(\"change\", \"#SelectedPackageId\", function () {\r\n YouLi.Trip.Payments.UpdateTripPackage($(this).val());\r\n });\r\n\r\n $(document).on('input', '#CurrentInvitee_ChipAwayPaymentAmount', function () {\r\n $(this).val($(this).val().replace(/[^\\d.]/g, ''));\r\n });\r\n\r\n $(document).on('blur', '#CurrentInvitee_ChipAwayPaymentAmount', function () {\r\n $(\"#ChipAwayErrorMessage\").addClass(\"hidden\");\r\n GetSelectedPaymentOptionAmount(); // update the amount to be charged\r\n TogglePaymentButtonVisiblity();\r\n });\r\n\r\n $(document).on(\"click\", \"#ChangeAutoPayPaymentMethod\", function () {\r\n $(\"#ChangeAutoPayConfirmationDialog\").modal(\"show\");\r\n });\r\n $(document).on(\"click\", \"#CancelAutoPay\", function () {\r\n $(\"#CancelAutoPayConfirmationDialog\").modal(\"show\");\r\n });\r\n\r\n $(document).on(\"click\", \".cancel-autopay-button\", function () {\r\n\r\n $(\"#ChangeAutoPayConfirmationDialog\").modal(\"hide\");\r\n $(\"#CancelAutoPayConfirmationDialog\").modal(\"hide\");\r\n\r\n YouLi.Trip.Payments.CancelAutoPay();\r\n });\r\n\r\n // If credit card payemnt form is loaded (it won't be initially for $0 packages)\r\n if (YouLi.CreditCardPaymentForm) {\r\n var selectedOption = $('input[type=radio][name=PaymentOption]:checked').val();\r\n YouLi.CreditCardPaymentForm.UpdateAutoPayVisibility(selectedOption != \"balance\");\r\n }\r\n\r\n\r\n // Trim fields that we do not want to allow spaces in\r\n $(\".trim-before-validation\").on(\"blur\", function () {\r\n $(this).val($(this).val().trim());\r\n });\r\n });\r\n\r\n }(YouLi.Trip.Payments ? YouLi.Trip.Payments : {}));\r\n }(YouLi.Trip ? YouLi.Trip : {}));\r\n}(YouLi ? YouLi : {}));"]}