{"version":3,"sources":["wwwroot/scripts/youli.paymentchargeform.js","wwwroot/scripts/youli.trip.checkout.js","wwwroot/scripts/vendor/jquery.multistatecheck.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","Checkout","prevState","isPackageCategory","PaymentGateway","Stripe","Square","CyberSource","AuthorizeNet","ConnectedPaymentGateway","StripeHandler","undefined","AuthorizeNetClientKey","AuthorizeNetAPIKey","Name","Description","ThirdPartyCardSurchargePercent","RefundProtectPercent","AllowRefundablePayments","CurrencyHasDecimals","IsBalanceSelected","RefundProtectTotalCostEstimate","RefundProtectOptedOutConfirmed","PrepayTotal","CouponCodeAmountApplied","InviteeReferenceCode","SquareApplicationId","SquareLocationId","SquarePaymentForm","PayNowButtonText","NotifyPlannerButtonText","SelectedInstallmentId","InstallmentIdBalance","InstallmentIdOther","BookingAddOnOptions","SelectedGangInvoiceAndViewMode","length","val","GetRefundProtectSelection","InitialiseResponseChecks","multiStateCheck","states","onAfterChangeState","e","UI","ShowLoading","targetElement","target","itemId","data","attr","responseValue","DoItemResponse","targetElementItineraryItemContainer","closest","find","toggleClass","HideLoading","element","callback","Preview","ScheduleItemId","InviteeId","ResponseValue","SelectedTripPackageId","SelectedBookingAddOnOptionId","gangWithAddOnResponses","GetInviteeDetailsData","CheckoutFlowNumberInGroup","gangInvoiceAndViewMode","ajax","url","type","dataType","JSON","stringify","contentType","complete","response","responseJSON","window","location","href","status","success","ShowStandardDialog","revert","initialSelectedInvoiceAndViewMode","initialSelectedPaymentMethod","initialSelectedPaymentOption","isFreePackage","addClass","removeClass","html","paymentDetailsHtml","Init","validator","unobtrusive","parse","first","InitialisePaymentDetails","UpdateInviteesAndPrice","preserveNumberInGroup","Promise","resolve","reject","packageId","bookingAddOnOptionId","tripId","inviteeId","preview","numberInGroup","PushRemoveCartGAData","googleAnalyticsHtml","PushAddCartGAData","packageCardHtml","gangSetupHtml","packageIsAvailable","ClearArrivalDepartureDateEvents","SetupArrivalDepartureDateEvents","InitializeGangEmailEvent","trigger","currentState","is","each","index","ProcessGenericCreditCardPayment","nonce","paymentMethod","$form","remove","append","processCheckout","ProcessPaymentWithSavedPaymentMethod","isThirdPartyCard","newPaymentId","couponPaymentId","redirectURL","gaData","GetGAData","dataLayer","push","ecommerce","CreditCardPaymentForm","InitialiseStripe","then","userMessage","debugMessage","host","OpenSupportTicket","savedPaymentMethodId","ChargeStripeSavedPaymentMethod","reload","catch","errorObject","console","error","message","paymentsToDelete","CancelInProgressPayment","HideInputLoading","errorHandled","OnPageErrorHandlerFunction","moment","log","paymentId","isCheckoutFlow","inviteeReferenceCode","chargeAmount","chargeLabel","isRegisteredWithPayment","useThirdPartyCardPaymentMethod","thirdPartyCardPaymentCostCentre","thirdPartyCardPaymentDepartment","thirdPartyCardPaymentApprovedBy","returnURL","fetch","method","headers","Content-Type","body","ok","json","ShowErrorOnPage","errorMessage","errorDate","text","format","modal","inviteeDetails","id","firstname","lastname","email","phonenumber","referencecode","arrivaldate","departuredate","optedinaddonids","map","this","get","inviteecategory","ProfileFormTaskResponseFields","fieldIndex","fieldElement","IsSystemField","IsPrimarySystemField","APIFieldName","FieldType","TaskItemFormBuilderFieldId","IsRequired","Label","CustomOptionMultipleAnswers","toArray","filter","field","toLowerCase","CancelCheckout","paymentIdsToDelete","Cache-Control","ChangePaymentOption","selectedOption","refreshInstallmentsTable","UpdateAutoPayVisibility","TogglePaymentButtonVisiblity","GetSelectedPaymentOptionAmount","ChangeMethodOrOptions","selectedMethod","selectedPaymentMethodElement","selectedPaymentOption","isPackageSoldout","isMobile","navigator","userAgent","match","ToggleRefundProtectVisiblity","UpdateChargeDetails","selectedPaymentMethod","GetSelectedBookingAddOnOption","selectedBookingAddOnOptionId","item","Id","GetBookingAddOnOptionTotalPriceDue","result","selectedBookingAddOnOption","numTravellersMultiplier","PricePerPerson","label","ConsentPrompt","totalAmountDue","tripTotal","refundPercentage","bookingAddOnOptionTotalPriceForGang","GetBookingAddOnOptionTotalPriceForGang","costInstallmentId","couponCode","selectedTripPackageId","checkoutFlow","checkoutFlowNumberInGroup","installmentIsBalance","installmentAmountDue","bookingAddOnOptionTotalPrice","installmentLabel","paySeparatelyInviteePrepayTotal","newInstallmentsTableHtml","ScrollToInvalid","errorElements","document","querySelectorAll","animate","scrollTop","focus","offset","top","hasBillingAddress","continuePayment","ShowInputLoading","replace","UpdateChargeLabelFromPrimaryInvitee","billToEmail","prop","UpdateBillToEmailFromPrimaryInvitee","valid","IsRegisteredWithPayment","preselectedFreeTextRoom","gangName","checkoutPrefillId","paymentChargeFormData","FormData","pair","entries","creditCardFormData","hasClass","ShowButtonLoading","HideButtonLoading","statusCode","errorMessages","errors","ErrorMessage","join","ClearClientSideErrors","tripPageRedirectURI","removeFromCartData","off","on","elem","newValue","param","Get","siblings","toggle","history","back","change","gangFormIsValid","tripConsentFormIsValid","ShowItemDetails","UpdateDateTimeAnswer","container","datePicker","timePicker","date","gridItemElement","clone","appendTo","empty","$currentlySelectedItem","selectedCouponCode","installmentId","newCheckoutPaymentChargeDetailsHtml","couponCodeAmount","isBalance","balanceAmount","which","preventDefault","returnUrl","pathname","redirectUrl","trim","options","defaults","plugin","settings","$element","init","indexCurrentState","indexOf","nextState","fn","jQuery"],"mappings":"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","file":"site-tripcheckout.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.Checkout = YouLi.Trip.Checkout ? YouLi.Trip.Checkout : {};\r\n\r\n(function (YouLi) {\r\n (function (Trip) {\r\n (function (Checkout) {\r\n\r\n let prevState = {\r\n isPackageCategory: false\r\n }\r\n\r\n YouLi.Trip.Checkout.PaymentGateway = { \r\n Stripe: 0,\r\n Square: 1,\r\n CyberSource: 2,\r\n AuthorizeNet: 3\r\n };\r\n YouLi.Trip.Checkout.ConnectedPaymentGateway = YouLi.Trip.Checkout.PaymentGateway.Stripe;\r\n YouLi.Trip.Checkout.StripeHandler = undefined;\r\n YouLi.Trip.Checkout.AuthorizeNetClientKey = \"\";\r\n YouLi.Trip.Checkout.AuthorizeNetAPIKey = \"\";\r\n YouLi.Trip.Checkout.Name = \"\";\r\n YouLi.Trip.Checkout.Description = \"\";\r\n YouLi.Trip.Checkout.ThirdPartyCardSurchargePercent = 0;\r\n YouLi.Trip.Checkout.RefundProtectPercent = 0;\r\n YouLi.Trip.Checkout.AllowRefundablePayments = false;\r\n YouLi.Trip.Checkout.CurrencyHasDecimals = true;\r\n\r\n YouLi.Trip.Checkout.IsBalanceSelected = false;\r\n YouLi.Trip.Checkout.RefundProtectTotalCostEstimate = 0;\r\n YouLi.Trip.Checkout.RefundProtectOptedOutConfirmed = false;\r\n YouLi.Trip.Checkout.PrepayTotal = 0;\r\n YouLi.Trip.Checkout.CouponCodeAmountApplied = 0;\r\n YouLi.Trip.Checkout.InviteeReferenceCode = \"\";\r\n\r\n YouLi.Trip.Checkout.SquareApplicationId = '';\r\n YouLi.Trip.Checkout.SquareLocationId = '';\r\n YouLi.Trip.Checkout.SquarePaymentForm = null;\r\n\r\n YouLi.Trip.Checkout.PayNowButtonText = \"Pay Now\";\r\n YouLi.Trip.Checkout.NotifyPlannerButtonText = \"Notify Planner\";\r\n\r\n YouLi.Trip.Checkout.SelectedInstallmentId = \"\";\r\n YouLi.Trip.Checkout.InstallmentIdBalance = undefined;\r\n YouLi.Trip.Checkout.InstallmentIdOther = undefined;\r\n\r\n YouLi.Trip.Checkout.BookingAddOnOptions = [];\r\n YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode = function () {\r\n if ($('input[type=radio][name=\"CurrentInvitee.GangInvoiceAndViewMode\"]').length > 0) {\r\n return $('input[type=radio][name=\"CurrentInvitee.GangInvoiceAndViewMode\"]:checked').val();\r\n }\r\n else {\r\n return $('input[name=\"CurrentInvitee.GangInvoiceAndViewMode\"]').val();\r\n }\r\n }\r\n\r\n YouLi.Trip.Checkout.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.Checkout.InitialiseResponseChecks = function () {\r\n\r\n $(\".content-checkout-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 targetElement = e.target;\r\n\r\n var itemId = $(targetElement).data(\"id\");\r\n if ($(targetElement).attr(\"data-state\") == \"checked\")\r\n responseValue = \"yes\";\r\n else\r\n var responseValue = \"no\";\r\n\r\n YouLi.Trip.Checkout.DoItemResponse(itemId, responseValue, targetElement, function () {\r\n\r\n // toggle where the cost for addon is shown (depending on whether they are going or not)\r\n const targetElementItineraryItemContainer = $(targetElement).closest(\".addon-item-container\");\r\n $(targetElementItineraryItemContainer).find(\".cost-label\").toggleClass(\"hidden\", responseValue == \"yes\")\r\n $(targetElementItineraryItemContainer).find(\".cost-line-item-amount\").toggleClass(\"hidden\", responseValue != \"yes\")\r\n\r\n YouLi.Common.UI.HideLoading();\r\n });\r\n }\r\n })\r\n };\r\n\r\n YouLi.Trip.Checkout.DoItemResponse = function (itemId, responseValue, element, callback) {\r\n\r\n let targetElement = element;\r\n\r\n let data = {\r\n Preview: $(\"#PreviewMode\").val(),\r\n ScheduleItemId: itemId,\r\n InviteeId: $(element).data(\"invitee-id\"),\r\n ResponseValue: responseValue,\r\n SelectedTripPackageId: $(\"#SelectedPackageId\").val(),\r\n SelectedBookingAddOnOptionId: $(\"input[type=radio][name=BookingAddOnOption]:checked\").val(),\r\n gangWithAddOnResponses: GetInviteeDetailsData(),\r\n CheckoutFlowNumberInGroup: $(\"#NumberInGroup\").val(),\r\n };\r\n\r\n data.gangInvoiceAndViewMode = YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode();\r\n\r\n $.ajax({\r\n url: '/trip/checkoutinviteeschedulerespond',\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\r\n if (response.responseJSON != undefined && response.responseJSON.url) {\r\n YouLi.Common.UI.HideLoading();\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.HideLoading();\r\n YouLi.Common.UI.ShowStandardDialog(\"An error occurred.\");\r\n\r\n // reset the multistate check to the previous value\r\n $(targetElement).data(\"multiStateCheck\").revert();\r\n }\r\n else {\r\n\r\n var initialSelectedInvoiceAndViewMode = $(\"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode']:checked\").val();\r\n var initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]:checked\").val();\r\n var initialSelectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n\r\n if (response.responseJSON.isFreePackage) {\r\n $(\".page-fold-right\").addClass(\"free-package-view\");\r\n } else {\r\n $(\".page-fold-right\").removeClass(\"free-package-view\");\r\n }\r\n\r\n $(\".content-trip-checkout-paymentdetails-costs\").html(response.responseJSON.paymentDetailsHtml);\r\n\r\n YouLi.Trip.Checkout.InitialiseResponseChecks();\r\n YouLi.Common.UI.Init();\r\n\r\n // reinitialise\r\n $.validator.unobtrusive.parse($(\"#GangSetupForm\"));\r\n $.validator.unobtrusive.parse($(\"#TripConsentForm\"));\r\n\r\n if (!initialSelectedPaymentMethod)\r\n initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]\").first().val();\r\n if (!initialSelectedPaymentOption)\r\n initialSelectedPaymentOption = $(\"input[type=radio][name=PaymentOption]\").first().val();\r\n\r\n $(\"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode'][value=\" + initialSelectedInvoiceAndViewMode + \"]\").attr(\"checked\", true);\r\n $(\"input[type=radio][name=PaymentMethod][value=\" + initialSelectedPaymentMethod + \"]\").attr(\"checked\", true);\r\n $(\"input[type=radio][name=PaymentOption][value=\" + initialSelectedPaymentOption + \"]\").attr(\"checked\", true);\r\n InitialisePaymentDetails();\r\n\r\n if (callback) {\r\n callback();\r\n }\r\n }\r\n }\r\n\r\n });\r\n\r\n\r\n };\r\n\r\n YouLi.Trip.Checkout.UpdateInviteesAndPrice = function (preserveNumberInGroup = false) {\r\n\r\n const defaultPromise = new Promise((resolve, reject) => {\r\n resolve('Success!');\r\n });\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n let data = {\r\n packageId: $(\"#SelectedPackageId\").val(),\r\n bookingAddOnOptionId: $(\"input[type=radio][name=BookingAddOnOption]:checked\").val(),\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n preview: $(\"#PreviewMode\").val(),\r\n gangWithAddOnResponses: GetInviteeDetailsData()\r\n }\r\n\r\n data.gangInvoiceAndViewMode = YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode();\r\n\r\n if (preserveNumberInGroup) {\r\n data.numberInGroup = $(\"#NumberInGroup\").val();\r\n }\r\n\r\n return $.ajax({\r\n url: \"/trip/UpdateCheckoutInviteesAndPrice/\",\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 {\r\n\r\n //google analytics\r\n PushRemoveCartGAData();\r\n $(\"#GoogleAnalyticsData\").html(response.responseJSON.googleAnalyticsHtml);\r\n PushAddCartGAData();\r\n\r\n var initialSelectedInvoiceAndViewMode = $(\"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode']:checked\").val();\r\n var initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]:checked\").val();\r\n var initialSelectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n\r\n if (response.responseJSON.isFreePackage) {\r\n $(\".page-fold-right\").addClass(\"free-package-view\");\r\n } else {\r\n $(\".page-fold-right\").removeClass(\"free-package-view\");\r\n }\r\n\r\n $(\".content-trip-checkout-paymentdetails-costs\").html(response.responseJSON.paymentDetailsHtml);\r\n\r\n $(\".package-card\").html(response.responseJSON.packageCardHtml);\r\n $(\".gang-setup\").html(response.responseJSON.gangSetupHtml);\r\n\r\n $(\".page-fold-right\").toggleClass(\"sold-out-view\", !response.responseJSON.packageIsAvailable)\r\n\r\n if (response.responseJSON.packageIsAvailable) {\r\n\r\n YouLi.Trip.Checkout.InitialiseResponseChecks();\r\n\r\n // reinitialise\r\n $.validator.unobtrusive.parse($(\"#GangSetupForm\"));\r\n $.validator.unobtrusive.parse($(\"#TripConsentForm\"));\r\n // initially select the first payment option and payment method\r\n\r\n if (!initialSelectedPaymentMethod)\r\n initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]\").first().val();\r\n if (!initialSelectedPaymentOption)\r\n initialSelectedPaymentOption = $(\"input[type=radio][name=PaymentOption]\").first().val();\r\n\r\n $(\"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode'][value=\" + initialSelectedInvoiceAndViewMode + \"]\").attr(\"checked\", true);\r\n $(\"input[type=radio][name=PaymentMethod][value=\" + initialSelectedPaymentMethod + \"]\").attr(\"checked\", true);\r\n $(\"input[type=radio][name=PaymentOption][value=\" + initialSelectedPaymentOption + \"]\").attr(\"checked\", true);\r\n InitialisePaymentDetails();\r\n }\r\n\r\n ClearArrivalDepartureDateEvents(); // clear event handlers for dates which will be re-initialised\r\n\r\n YouLi.Common.UI.Init();\r\n\r\n SetupArrivalDepartureDateEvents();\r\n\r\n InitializeGangEmailEvent();\r\n\r\n $('.gang-email').trigger('blur');\r\n\r\n const currentState = $('.gang-member').find('#GangInvitees_0__InviteeCategory').is(':hidden');\r\n\r\n if (prevState.isPackageCategory) {\r\n if (currentState !== prevState.isPackageCategory) {\r\n $('.gang-member').each((index, element) => {\r\n $(element).find(`#GangInvitees_${index}__InviteeCategory`).val(null);\r\n });\r\n }\r\n }\r\n\r\n prevState.isPackageCategory = currentState;\r\n }\r\n }\r\n\r\n });\r\n\r\n return defaultPromise;\r\n }\r\n\r\n /* Returns a promise */\r\n YouLi.Trip.Checkout.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 processCheckout(paymentMethod);\r\n };\r\n\r\n YouLi.Trip.Checkout.ProcessPaymentWithSavedPaymentMethod = function (isThirdPartyCard) {\r\n\r\n let newPaymentId, couponPaymentId;\r\n var redirectURL = window.location.href;\r\n\r\n if (YouLi.Trip.Checkout.ConnectedPaymentGateway === YouLi.Common.PaymentGateway.Stripe) {\r\n\r\n //google tag manager\r\n var gaData = YouLi.Common.GetGAData(\"begin_checkout\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n\r\n YouLi.CreditCardPaymentForm.InitialiseStripe()\r\n .then(() => YouLi.Trip.Checkout.ProcessGenericCreditCardPayment(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 return YouLi.Trip.Checkout.ChargeStripeSavedPaymentMethod(newPaymentId, redirectURL, isThirdPartyCard, savedPaymentMethodId);\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 YouLi.Common.UI.HideInputLoading($(\".pay-now-button\"));\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.Checkout.ChargeStripeSavedPaymentMethod = function (paymentId, redirectURL, isThirdPartyCard, savedPaymentMethodId) {\r\n\r\n let data = {\r\n tripId: $(\"#TripId\").val(),\r\n isCheckoutFlow: true,\r\n inviteeReferenceCode: YouLi.Trip.Checkout.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 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.Checkout.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.Checkout.ShowErrorOnPage = function (errorMessage, errorDate /* a Moment date */) {\r\n $(\".checkout-payment-error\").removeClass(\"hidden\");\r\n\r\n if (errorDate)\r\n $(\"#PaymentErrorDate\").text(errorDate.format(\"D MMM YYYY\") + \" @ \" + errorDate.format(\"h:mma\"));\r\n\r\n $(\"#PaymentErrorMessage\").text(errorMessage);\r\n\r\n if ($('#GenericPaymentFormDialog'))\r\n $('#GenericPaymentFormDialog').modal('hide');\r\n };\r\n\r\n var GetInviteeDetailsData = function () {\r\n var inviteeDetails = [];\r\n $(\".gang-member\").each((index, element) => {\r\n\r\n const inviteeId = $(element).find(`#GangInvitees_${index}__Id`).val();\r\n inviteeDetails[index] = {\r\n \"id\": inviteeId,\r\n \"firstname\": $(element).find(`#GangInvitees_${index}__FirstName`).val(),\r\n \"lastname\": $(element).find(`#GangInvitees_${index}__LastName`).val(),\r\n \"email\": $(element).find(`#GangInvitees_${index}__Email`).val(),\r\n \"phonenumber\": $(element).find(`#GangInvitees_${index}__PhoneNumber`).val(),\r\n \"referencecode\": $(element).find(`#GangInvitees_${index}__ReferenceCode`).val(),\r\n \"arrivaldate\": $(\"#CurrentInvitee_GangInvitees_0__ArrivalDate\").val(), // nb: always using the first gang member's date\r\n \"departuredate\": $(\"#CurrentInvitee_GangInvitees_0__DepartureDate\").val(), // nb: always using the first gang member's date\r\n \"optedinaddonids\": $(`.multistate-check-schedule-item-response[data-invitee-id=${inviteeId}][data-state=checked]`).map(function () {\r\n return $(this).data('id');\r\n }).get(),\r\n \"inviteecategory\": $(element).find(`#GangInvitees_${index}__InviteeCategory`).val()\r\n }\r\n\r\n // create an array of profile field data\r\n inviteeDetails[index].ProfileFormTaskResponseFields = [];\r\n\r\n $(element).find(\".profile-field\").each((fieldIndex, fieldElement) => {\r\n inviteeDetails[index].ProfileFormTaskResponseFields[fieldIndex] = {\r\n IsSystemField: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__IsSystemField`).val(),\r\n IsPrimarySystemField: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__IsPrimarySystemField`).val(),\r\n APIFieldName: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__APIFieldName`).val(),\r\n FieldType: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__FieldName`).val(),\r\n TaskItemFormBuilderFieldId: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__TaskItemFormBuilderFieldId`).val(),\r\n IsRequired: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__IsRequired`).val(),\r\n Label: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__Label`).val(),\r\n ResponseValue: $(fieldElement).find(`#GangInvitees_${index}__ProfileFormTaskResponseFields_${fieldIndex}__ResponseValue`).val(),\r\n CustomOptionMultipleAnswers: $(fieldElement).find(`input[name=\"GangInvitees[${index}].ProfileFormTaskResponseFields[${fieldIndex}].CustomOptionMultipleAnswers\"]:checked`)\r\n .map(function () {\r\n return $(this).val();\r\n }).toArray()\r\n }\r\n });\r\n\r\n inviteeDetails[index].ProfileFormTaskResponseFields = inviteeDetails[index].ProfileFormTaskResponseFields.filter(function (field) {\r\n return field.IsPrimarySystemField.toLowerCase() === \"false\";\r\n });\r\n });\r\n\r\n return inviteeDetails;\r\n };\r\n\r\n YouLi.Trip.Checkout.CancelCheckout = function (paymentIdsToDelete) {\r\n\r\n if (!paymentIdsToDelete || paymentIdsToDelete.length == 0)\r\n return Promise.resolve();\r\n\r\n // For checkout, we are going to delete the entire invitee, so just pass the first payment Id\r\n\r\n return fetch(`/trip/cancelinprogresscheckout?tripId=${$(\"#TripId\").val()}&paymentId=${paymentIdsToDelete[0]}`, {\r\n method: \"GET\",\r\n headers: {\r\n 'Cache-Control': 'no-cache'\r\n },\r\n })\r\n };\r\n\r\n var ChangePaymentOption = function (selectedOption, refreshInstallmentsTable = false) {\r\n\r\n $(\".installments-details\").addClass(\"hidden\");\r\n\r\n if (selectedOption == \"installment\") {\r\n $(\".installments-details\").removeClass(\"hidden\");\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 YouLi.CreditCardPaymentForm.UpdateAutoPayVisibility(selectedOption != \"balance\");\r\n }\r\n\r\n // Reset the selected installment value\r\n if (selectedOption == \"installment\")\r\n YouLi.Trip.Checkout.SelectedInstallmentId = YouLi.Trip.Checkout.InstallmentIdOther;\r\n else\r\n YouLi.Trip.Checkout.SelectedInstallmentId = YouLi.Trip.Checkout.InstallmentIdBalance;\r\n\r\n if (YouLi.Trip.Checkout.SelectedInstallmentId != null) {\r\n TogglePaymentButtonVisiblity();\r\n\r\n // now update the actual payment amount\r\n GetSelectedPaymentOptionAmount(refreshInstallmentsTable);\r\n }\r\n }\r\n\r\n var ChangeMethodOrOptions = function (selectedMethod) {\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 // hide all and then show whichever is needed\r\n $(\".cost-line-item-credit-card-surcharge\").addClass(\"hidden\");\r\n $(\".credit-card-surcharge-val\").addClass(\"hidden\");\r\n $(\".cost-line-item-refund-protect\").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 $(\"#ThirdPartyCardDetails\").addClass(\"hidden\");\r\n $(\"#CustomLinkDetails\").addClass(\"hidden\");\r\n $(\"#PhoneDetails\").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.Checkout.PayNowButtonText);\r\n }\r\n\r\n switch (selectedMethod) {\r\n case \"savedpaymentmethod\":\r\n //$(\"#PayCreditCard\").removeClass(\"hidden\");\r\n\r\n if (selectedPaymentOption) {\r\n if (YouLi.PaymentChargeForm.Default.SurchargePercent > 0 && YouLi.PaymentChargeForm.Ach.HasSurcharge === false) {\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 break;\r\n case \"thirdpartycard\":\r\n if (selectedPaymentOption) {\r\n if (YouLi.Trip.Checkout.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 \"creditcard\":\r\n $(\"#PayCreditCard\").removeClass(\"hidden\");\r\n\r\n if (selectedPaymentOption) {\r\n if (YouLi.PaymentChargeForm.Default.SurchargePercent > 0 && YouLi.PaymentChargeForm.Ach.HasSurcharge === false) {\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 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.Checkout.NotifyPlannerButtonText);\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.Checkout.PayNowButtonText : YouLi.Trip.Checkout.NotifyPlannerButtonText);\r\n }\r\n\r\n break;\r\n case \"customlink\":\r\n $(\"#CustomLinkDetails\").removeClass(\"hidden\");\r\n break;\r\n }\r\n\r\n ToggleRefundProtectVisiblity();\r\n\r\n TogglePaymentButtonVisiblity();\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 $(\".cost-line-item-refund-protect\").removeClass(\"hidden\");\r\n $(\".refund-protect-val\").removeClass(\"hidden\");\r\n }\r\n\r\n if (YouLi.Trip.Checkout.RefundProtectPercent > 0) {\r\n $(\"#RefundProtectSelection\").removeClass(\"hidden\");\r\n }\r\n }\r\n\r\n }\r\n\r\n var TogglePaymentButtonVisiblity = 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 $(\".payment-button\").toggleClass(\"hidden\", !(selectedPaymentMethod && selectedPaymentOption)); // only show if a method AND the payment option have both been selected\r\n }\r\n\r\n var UpdateChargeLabelFromPrimaryInvitee = function () {\r\n\r\n let label = $(\"input[Name=ChargeLabel]\").val();\r\n\r\n label = label.replace(\"[NAME]\", `${$(\"#GangInvitees_0__FirstName\").val()} ${$(\"#GangInvitees_0__LastName\").val()}`);\r\n\r\n $(\"input[Name=ChargeLabel]\").val(label);\r\n }\r\n\r\n var UpdateBillToEmailFromPrimaryInvitee = function () {\r\n\r\n let billToEmail = $(\"input[Name=billtoemail]\");\r\n\r\n if (billToEmail.length > 0) {\r\n billToEmail.val($(\"#GangInvitees_0__Email\").val());\r\n billToEmail.prop(\"readOnly\", billToEmail.val().length > 0)\r\n }\r\n }\r\n\r\n var UpdateTotalAmountDue = function () {\r\n $(\"input[Name=ChargeAmount]\").val(YouLi.PaymentChargeForm.GetChargeAmount());\r\n }\r\n\r\n var GetSelectedBookingAddOnOption = function () {\r\n let selectedBookingAddOnOptionId = $('input[type=radio][name=BookingAddOnOption]:checked').val();\r\n\r\n if (YouLi.Trip.Checkout.BookingAddOnOptions.length == 0)\r\n return undefined;\r\n\r\n return YouLi.Trip.Checkout.BookingAddOnOptions.find((item) => {\r\n return item.Id == selectedBookingAddOnOptionId;\r\n });\r\n };\r\n\r\n var GetBookingAddOnOptionTotalPriceDue = function () {\r\n let result = 0;\r\n\r\n if (YouLi.Trip.Checkout.BookingAddOnOptions.length > 0 && $('input[type=radio][name=BookingAddOnOption]').length > 0) {\r\n const selectedBookingAddOnOption = GetSelectedBookingAddOnOption();\r\n\r\n const numTravellersMultiplier = $(\"#SelectedTripPackageNumTravellers\").val() > 1 ? $(\"#SelectedTripPackageNumTravellers\").val() : 1;\r\n\r\n const numberInGroup = $(\"#NumberInGroup\").length > 0 ? $(\"#NumberInGroup\").val() : 1;\r\n\r\n if (YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode() == \"paytogether\")\r\n result = selectedBookingAddOnOption.PricePerPerson * numberInGroup * numTravellersMultiplier;\r\n else\r\n result = selectedBookingAddOnOption.PricePerPerson * numTravellersMultiplier;\r\n }\r\n\r\n return result;\r\n };\r\n\r\n var GetBookingAddOnOptionTotalPriceForGang = function () {\r\n let result = 0;\r\n\r\n if (YouLi.Trip.Checkout.BookingAddOnOptions.length > 0 && $('input[type=radio][name=BookingAddOnOption]').length > 0) {\r\n const selectedBookingAddOnOption = GetSelectedBookingAddOnOption();\r\n\r\n const numTravellersMultiplier = $(\"#SelectedTripPackageNumTravellers\").val() > 1 ? $(\"#SelectedTripPackageNumTravellers\").val() : 1;\r\n\r\n const numberInGroup = $(\"#NumberInGroup\").length > 0 ? $(\"#NumberInGroup\").val() : 1;\r\n\r\n result = selectedBookingAddOnOption.PricePerPerson * numberInGroup * numTravellersMultiplier;\r\n }\r\n\r\n return result;\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\r\n YouLi.PaymentChargeForm.BookingAddOnAmountDue = GetBookingAddOnOptionTotalPriceDue();\r\n\r\n if (YouLi.Trip.Checkout.BookingAddOnOptions.length > 0 && $('input[type=radio][name=BookingAddOnOption]').length > 0) {\r\n const selectedBookingAddOnOption = GetSelectedBookingAddOnOption();\r\n\r\n $(\"#TripBookingAddonOptionConsentText\").html(selectedBookingAddOnOption.ConsentPrompt);\r\n }\r\n\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.PaymentChargeForm.BookingAddOnAmountDue) * YouLi.Trip.Checkout.ThirdPartyCardSurchargePercent / 100).toFixed(2));\r\n $(\".credit-card-surcharge-val\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(surchargeAmount)}`);\r\n $(\".cost-line-item-surcharge-val\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(surchargeAmount)}`);\r\n\r\n if (selectedPaymentOption\r\n && YouLi.Trip.Checkout.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 === \"creditcard\") {\r\n surchargeAmount = parseFloat(YouLi.PaymentChargeForm.GetSurchargeAmount(null).toFixed(2));\r\n $(\".credit-card-surcharge-val\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(surchargeAmount)}`);\r\n $(\".cost-line-item-surcharge-val\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(surchargeAmount)}`);\r\n\r\n if (selectedPaymentOption\r\n && YouLi.PaymentChargeForm.Default.SurchargePercent > 0\r\n && YouLi.PaymentChargeForm.Ach.HasSurcharge === false) {\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 }\r\n totalAmountDue = YouLi.PaymentChargeForm.AmountDue + YouLi.PaymentChargeForm.BookingAddOnAmountDue + surchargeAmount;\r\n\r\n var tripTotal = YouLi.Trip.Checkout.PrepayTotal - YouLi.Trip.Checkout.CouponCodeAmountApplied;\r\n\r\n // add Refund Protect (if applicable and selected)\r\n $(\".cost-line-item-refund-protect\").addClass(\"hidden\");\r\n $(\".refund-protect-val\").addClass(\"hidden\");\r\n let refundProtectAmount = 0;\r\n let refundPercentage = 0;\r\n if (YouLi.Trip.Checkout.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.Checkout.RefundProtectPercent / 100).toFixed(2));\r\n refundPercentage = YouLi.Trip.Checkout.RefundProtectPercent;\r\n $(\".refund-protect-val\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(refundProtectAmount)}`);\r\n\r\n $(\".cost-line-item-refund-protect\").removeClass(\"hidden\");\r\n $(\".refund-protect-val\").removeClass(\"hidden\");\r\n\r\n if (!YouLi.Trip.Checkout.AllowRefundablePayments)\r\n tripTotal += YouLi.Trip.Checkout.RefundProtectTotalCostEstimate;\r\n }\r\n else {\r\n $(\".cost-line-item-refund-protect\").addClass(\"hidden\");\r\n $(\".refund-protect-val\").addClass(\"hidden\");\r\n }\r\n\r\n // Update booking add-on if in use\r\n if ($(\".cost-line-item-amount-booking-add-on-total\").length > 0) {\r\n\r\n $(\".booking-add-on-val\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.BookingAddOnAmountDue)}`);\r\n\r\n const bookingAddOnOptionTotalPriceForGang = GetBookingAddOnOptionTotalPriceForGang();\r\n $(\".cost-line-item-amount-booking-add-on-total\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(bookingAddOnOptionTotalPriceForGang)}`);\r\n }\r\n\r\n // update the trip total to include any extras (e.g. RP and booking add-on)\r\n $(\".cost-line-item-amount-total\").html(`${YouLi.PaymentChargeForm.GetFormattedCurrency(tripTotal)}`);\r\n\r\n $(\".cost-line-item-installment-total\").html(YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.AmountDue));\r\n\r\n $(\".cost-line-item-amount-due\").html(YouLi.PaymentChargeForm.GetFormattedCurrency(YouLi.PaymentChargeForm.AmountDue));\r\n\r\n YouLi.PaymentChargeForm.UpdatePaymentInfo({\r\n surchargeAmount: surchargeAmount,\r\n refundProtectAmount: refundProtectAmount,\r\n refundProtectPercent: refundPercentage\r\n });\r\n\r\n if (selectedPaymentMethod === \"creditcard\" && 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 UpdateTotalAmountDue();\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 GetSelectedPaymentOptionAmount = function (refreshInstallmentsTable) {\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n let data = {\r\n preview: $(\"#PreviewMode\").val(),\r\n costInstallmentId: YouLi.Trip.Checkout.SelectedInstallmentId,\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n couponCode: $(\"#ChargeCouponCode\").val(),\r\n selectedTripPackageId: $(\"#SelectedPackageId\").val(),\r\n selectedBookingAddOnOptionId: $(\"input[type=radio][name=BookingAddOnOption]:checked\").val(),\r\n checkoutFlow: true,\r\n checkoutFlowNumberInGroup: $(\"#NumberInGroup\").val(),\r\n gangWithAddOnResponses: GetInviteeDetailsData(),\r\n refreshInstallmentsTable: refreshInstallmentsTable\r\n }\r\n\r\n data.gangInvoiceAndViewMode = YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode();\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 {\r\n YouLi.Trip.Checkout.IsBalanceSelected = response.responseJSON.installmentIsBalance;\r\n YouLi.PaymentChargeForm.AmountDue = response.responseJSON.installmentAmountDue;\r\n\r\n // For balance, we need to remove the upfront amount from the amount due before using it. We then add it as needed along the way\r\n if (YouLi.Trip.Checkout.IsBalanceSelected) {\r\n const bookingAddOnOptionTotalPrice = GetBookingAddOnOptionTotalPriceDue();\r\n YouLi.PaymentChargeForm.AmountDue -= bookingAddOnOptionTotalPrice;\r\n }\r\n\r\n if (YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode() == \"paytogether\") {\r\n $(\".cost-line-item-text-installment-label\").html(response.responseJSON.installmentLabel);\r\n $(\".cost-line-item-total-invitee\").addClass(\"hidden\");\r\n }\r\n else {\r\n $(\".cost-line-item-text-installment-label\").html(`Your ${response.responseJSON.installmentLabel}`);\r\n $(\".cost-line-item-total-invitee\").removeClass(\"hidden\");\r\n $(\".cost-line-item-amount-total-invitee\").html(YouLi.PaymentChargeForm.GetFormattedCurrency(response.responseJSON.paySeparatelyInviteePrepayTotal));\r\n }\r\n\r\n if (response.responseJSON.newInstallmentsTableHtml && $(\".cost-installments-selection\").length > 0) {\r\n $(\".cost-installments-selection\").html(response.responseJSON.newInstallmentsTableHtml);\r\n }\r\n\r\n UpdateChargeDetails(response.responseJSON.chargeLabel);\r\n\r\n $(\"input[Name=ChargeInstallmentId]\").val(YouLi.Trip.Checkout.SelectedInstallmentId);\r\n }\r\n }\r\n });\r\n };\r\n\r\n var InitialisePaymentDetails = function () {\r\n\r\n ChangePaymentOption($(\"input[type=radio][name=PaymentOption]:checked\").val());\r\n ChangeMethodOrOptions($(\"input[type=radio][name=PaymentMethod]:checked\").val(), true);\r\n }\r\n\r\n var ScrollToInvalid = function () {\r\n var errorElements = document.querySelectorAll(\".has-error\");\r\n\r\n if (errorElements.length == 0)\r\n return;\r\n\r\n $('html, body').animate({\r\n scrollTop: $(errorElements[0]).focus().offset().top - 80\r\n }, 1000);\r\n }\r\n\r\n var hasBillingAddress = function () {\r\n return $(\"#BillToFieldsIncluded\") && $(\"#BillToFieldsIncluded\").val() == \"true\";\r\n }\r\n\r\n var continuePayment = function () {\r\n\r\n YouLi.Common.UI.ShowInputLoading($(\".pay-now-button\"));\r\n\r\n UpdateChargeLabelFromPrimaryInvitee();\r\n UpdateBillToEmailFromPrimaryInvitee();\r\n UpdateChargeDetails(undefined);\r\n var selectedPaymentMethod = $('input[type=radio][name=PaymentMethod]:checked').val();\r\n\r\n switch (selectedPaymentMethod) {\r\n case \"thirdpartycard\":\r\n\r\n if (!$(\"#PaymentCostChargingDetailsForm\").valid()) {\r\n ScrollToInvalid();\r\n YouLi.Common.UI.HideInputLoading($(\".pay-now-button\"));\r\n return;\r\n }\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 case \"creditcard\":\r\n\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n //google tag manager\r\n var gaData = YouLi.Common.GetGAData(\"begin_checkout\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n\r\n if (YouLi.Trip.Checkout.ConnectedPaymentGateway === YouLi.Trip.Checkout.PaymentGateway.Stripe) {\r\n YouLi.CreditCardPaymentForm.InitialiseStripe()\r\n .then(() => {\r\n YouLi.Common.UI.HideLoading();\r\n\r\n YouLi.CreditCardPaymentForm.IsRegisteredWithPayment = true;\r\n $('#GenericPaymentFormDialog').modal('show');\r\n })\r\n }\r\n else {\r\n YouLi.Common.UI.HideLoading();\r\n $('#GenericPaymentFormDialog').modal('show');\r\n }\r\n\r\n YouLi.Common.UI.HideInputLoading($(\".pay-now-button\"));\r\n\r\n break;\r\n case \"banktransfer\":\r\n case \"paypallink\":\r\n case \"phone\":\r\n case \"customlink\":\r\n YouLi.Common.UI.ShowLoading();\r\n\r\n processCheckout(selectedPaymentMethod)\r\n .then(() => {\r\n YouLi.Common.UI.HideLoading();\r\n }).catch((errorObject) => {\r\n console.error('Error:', errorObject.message);\r\n\r\n YouLi.Common.UI.HideLoading();\r\n });\r\n break;\r\n }\r\n };\r\n\r\n /* Returns a promise */\r\n var processCheckout = function (paymentMethod) {\r\n\r\n $(\".checkout-payment-error\").addClass(\"hidden\");\r\n\r\n let data = {\r\n preselectedFreeTextRoom: $(\"#PreselectedFreeTextRoom\").val(),\r\n gangName: $(\"#GangName\").val(),\r\n gangWithAddOnResponses: GetInviteeDetailsData(),\r\n paymentMethod: paymentMethod,\r\n checkoutPrefillId: $(\"#CheckoutPrefillId\").val()\r\n };\r\n\r\n data[\"gangInvoiceAndViewMode\"] = YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode();\r\n\r\n var paymentChargeFormData = new FormData($(\"#PaymentChargeForm\")[0]);\r\n for (let pair of paymentChargeFormData.entries()) {\r\n data[pair[0]] = pair[1]; // add the form field data\r\n }\r\n\r\n data[\"isRegisteredWithPayment\"] = true; // always true for checkout page\r\n\r\n if (YouLi.Trip.Checkout.RefundProtectOptedOutConfirmed)\r\n data[\"optedOutRefundProtect\"] = true;\r\n\r\n data[\"RefundProtectSelection\"] = YouLi.Trip.Checkout.GetRefundProtectSelection();\r\n\r\n data[\"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 data[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 // For payment methods that use the Generic Credit Card popup,\r\n // hide the modal - do this after we've grabbed out the form data\r\n if ($(\"#GenericPaymentFormDialog\").hasClass(\"in\"))\r\n YouLi.Common.UI.ShowButtonLoading($(\"#p-creditcard\"));\r\n\r\n return new Promise((resolve, reject) => {\r\n $.ajax({\r\n url: '/trip/checkoutinviteerespond/',\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 if (response.status === 500) {\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.HideInputLoading($(\".pay-now-button\"));\r\n\r\n $(\".checkout-payment-error\").removeClass(\"hidden\");\r\n\r\n $(\".payment-error-message\").text(\"\");\r\n\r\n return reject({\r\n message: \"checkoutinviteerespond failed\",\r\n errorHandled: true\r\n });\r\n }\r\n else if (response.responseJSON.statusCode === 500 || response.status === 500 || (response.responseJSON != undefined && response.responseJSON.success == false)) {\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.HideInputLoading($(\".pay-now-button\"));\r\n\r\n let errorMessages = [];\r\n $.each(response.responseJSON.errors, function () {\r\n errorMessages.push(this[this.length - 1].ErrorMessage);\r\n });\r\n\r\n $(\".payment-error-message\").text(errorMessages.join(\", \"));\r\n\r\n if (paymentMethod === 'paypal') {\r\n $('.checkout-payment-paypal-error').removeClass('hidden');\r\n $('html, body').animate({\r\n scrollTop: $('.checkout-payment-paypal-error').offset().top - 80\r\n }, 1000);\r\n\r\n } else {\r\n $('.checkout-payment-error').removeClass('hidden');\r\n $('html, body').animate({\r\n scrollTop: $('.checkout-payment-error').offset().top - 80\r\n }, 1000);\r\n\r\n }\r\n\r\n return reject({\r\n message: \"checkoutinviteerespond failed\",\r\n errorHandled: true\r\n });\r\n }\r\n else {\r\n YouLi.Common.UI.ClearClientSideErrors();\r\n\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 if (response.responseJSON.url) {\r\n window.location.href = response.responseJSON.url;\r\n if (response.responseJSON.reload)\r\n location.reload();\r\n } else {\r\n // return the new payment ID (for things like Stripe)\r\n const newPaymentId = response.responseJSON.newPaymentId;\r\n const redirectURL = response.responseJSON.tripPageRedirectURI;\r\n return resolve({ newPaymentId, redirectURL });\r\n }\r\n }\r\n }\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 var ClearArrivalDepartureDateEvents = function () {\r\n $(document).off(\"dp.change\", \"#CurrentInvitee_GangInvitees_0__ArrivalDate\");\r\n $(document).off(\"dp.change\", \"#CurrentInvitee_GangInvitees_0__DepartureDate\");\r\n };\r\n\r\n var SetupArrivalDepartureDateEvents = function () {\r\n $(document).off(\"dp.change\", \"#CurrentInvitee_GangInvitees_0__ArrivalDate\");\r\n $(document).on(\"dp.change\", \"#CurrentInvitee_GangInvitees_0__ArrivalDate\", function () {\r\n YouLi.Trip.Checkout.UpdateInviteesAndPrice(true);\r\n });\r\n\r\n $(document).off(\"dp.change\", \"#CurrentInvitee_GangInvitees_0__DepartureDate\");\r\n $(document).on(\"dp.change\", \"#CurrentInvitee_GangInvitees_0__DepartureDate\", function () {\r\n YouLi.Trip.Checkout.UpdateInviteesAndPrice(true);\r\n });\r\n };\r\n\r\n const InitializeGangEmailEvent = function () {\r\n\r\n $(document).off('blur', '.gang-email');\r\n $(document).on('blur', '.gang-email', function (e) {\r\n const elem = $(this);\r\n const newValue = elem.val();\r\n const oldValue = elem.data('old-value');\r\n if (oldValue === newValue || newValue === '') {\r\n return;\r\n }\r\n\r\n const param = {\r\n tripId: $(\"#TripId\").val(),\r\n email: newValue\r\n }\r\n\r\n YouLi.Common.Get(\r\n '/trip/GetTripInviteeIsBooked',\r\n param,\r\n function (response) {\r\n elem.siblings('.email-paid-warning').toggle(response);\r\n elem.attr('data-old-value', newValue);\r\n }\r\n );\r\n });\r\n }\r\n\r\n $(function () {\r\n\r\n // TODO: Confirm if I need to set youli.paymentchargeform.amountdue instead??\r\n // YouLi.Trip.Checkout.TotalAmountDue = $(\"input[Name=ChargeAmount]\").val();\r\n\r\n if ($(\"#RefundProtectConfirmationForm\").length > 0)\r\n $.validator.unobtrusive.parse(\"#RefundProtectConfirmationForm\")\r\n\r\n $(document).off(\"click\");\r\n $(document).on(\"click\", \".go-back-link\", function () {\r\n if (history.length > 1)\r\n history.back();\r\n else\r\n window.location.href = $(this).data(\"logo-link\");\r\n });\r\n\r\n $(document).off(\"change\", \"#SelectedPackageId\");\r\n $(document).on(\"change\", \"#SelectedPackageId\", function () {\r\n $('.gang-member').each((index, element) => {\r\n $(element).find(`#GangInvitees_${index}__InviteeCategory`).val(null);\r\n });\r\n YouLi.Trip.Checkout.UpdateInviteesAndPrice();\r\n });\r\n\r\n $(document).off(\"change\", \"#NumberInGroup\");\r\n $(document).on(\"change\", \"#NumberInGroup\", function () {\r\n YouLi.Trip.Checkout.UpdateInviteesAndPrice(true);\r\n });\r\n\r\n $(document).off(\"change\", \".gang-category\");\r\n $(document).on(\"change\", \".gang-category\", function () {\r\n YouLi.Trip.Checkout.UpdateInviteesAndPrice(true);\r\n });\r\n\r\n SetupArrivalDepartureDateEvents();\r\n\r\n $(document).off(\"click\", \".choose-default-package\");\r\n $(document).on(\"click\", \".choose-default-package\", function () {\r\n $(\"#SelectedPackageId\").prop(\"selectedIndex\", 0).change();\r\n });\r\n\r\n $(document).off(\"click\", \".choose-free-package\");\r\n $(document).on(\"click\", \".choose-free-package\", function () {\r\n //$(\"#SelectedPackageId\").prop(\"selectedIndex\", 0).change();\r\n\r\n var gangFormIsValid = $('#GangSetupForm').valid();\r\n\r\n var tripConsentFormIsValid = true;\r\n if ($(\"#TripConsentForm\").length > 0)\r\n tripConsentFormIsValid = $(\"#TripConsentForm\").valid();\r\n\r\n if (!(gangFormIsValid && tripConsentFormIsValid)) {\r\n ScrollToInvalid();\r\n return;\r\n }\r\n\r\n YouLi.Common.UI.ShowButtonLoading($(\".choose-free-package\"));\r\n\r\n processCheckout(null).then(() => {\r\n YouLi.Common.UI.HideButtonLoading($(\".choose-free-package\"));\r\n }).catch((errorObject) => {\r\n console.error('Error:', errorObject.message);\r\n\r\n YouLi.Common.UI.HideButtonLoading($(\".choose-free-package\"));\r\n });\r\n });\r\n\r\n $(document).off(\"change\", \"input[type=radio][name=BookingAddOnOption]\");\r\n $(document).on(\"change\", \"input[type=radio][name=BookingAddOnOption]\", function () {\r\n\r\n YouLi.Trip.Checkout.UpdateInviteesAndPrice(true);\r\n });\r\n\r\n // initially select the first payment option and payment method\r\n // YOULI-8514 remove initial server call\r\n //$(\"input[type=radio][name=PaymentOption]\").first().prop(\"checked\", true);\r\n //$(\"input[type=radio][name=PaymentMethod]\").first().prop(\"checked\", true);\r\n\r\n $(document).off(\"change\", \"input[type=radio][name=PaymentOption]\")\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\r\n $(document).off(\"change\", \"input[type=radio][name=PaymentMethod]\");\r\n $(document).on(\"change\", \"input[type=radio][name=PaymentMethod]\", function () {\r\n var selectedMethod = $(this).val();\r\n\r\n ChangeMethodOrOptions(selectedMethod, false, true);\r\n\r\n });\r\n\r\n $(document).off(\"change\", \"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode']\")\r\n $(document).on(\"change\", \"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode']\", function () {\r\n // trigger change method, but it will just be for updating (same as for refund protect, below)\r\n var selectedOption = $('input[type=radio][name=PaymentOption]:checked').val();\r\n ChangePaymentOption(selectedOption, /* refreshInstallmentsTable = */true);\r\n });\r\n\r\n $(document).off(\"change\", \"input[type=radio][name='CurrentInvitee.RefundProtectSelection']\");\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 ChangeMethodOrOptions(selectedPaymentMethod, true, true); // Nb: no scroll when changing Refund Protect\r\n\r\n });\r\n\r\n $(document).off(\"click\", \".show-itinerary-details-link\");\r\n $(document).on(\"click\", \".show-itinerary-details-link\", function () {\r\n ShowItemDetails($(this).closest(\".addon-item-container\"));\r\n\r\n $(\"#ProgramItemDialog\").modal(\"show\");\r\n });\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 ShowItemDetails = function (gridItemElement) {\r\n $(gridItemElement).find(\".addon-item-details-contents\").clone().appendTo($(\"#ProgramItemDialog .modal-body\").empty()).find(\".show-more\").remove();\r\n $currentlySelectedItem = $(gridItemElement);\r\n }\r\n\r\n let isPackageSoldout = $(\".choose-default-package\").data('sold-out');\r\n if (!isPackageSoldout) {\r\n\r\n //InitialisePaymentDetails();\r\n\r\n YouLi.Trip.Checkout.InitialiseResponseChecks();\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.Checkout.ProcessPaymentWithSavedPaymentMethod(true);\r\n });\r\n\r\n $(document).off(\"click\", \"#SavedThirdPartyCardConfirmationCancel\");\r\n $(document).on(\"click\", \"#SavedThirdPartyCardConfirmationCancel\", function () {\r\n YouLi.Common.UI.HideInputLoading($(\".pay-now-button\"));\r\n });\r\n\r\n\r\n\r\n $(document).on(\"click\", \".apply-coupon-code\", function () {\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 let data = {\r\n couponCode: selectedCouponCode,\r\n preview: $(\"#PreviewMode\").val(),\r\n tripId: $(\"#TripId\").val(),\r\n inviteeId: $(\"#InviteeId\").val(),\r\n installmentId: YouLi.Trip.Checkout.SelectedInstallmentId,\r\n selectedTripPackageId: $(\"#SelectedPackageId\").val(),\r\n selectedBookingAddOnOptionId: $(\"input[type=radio][name=BookingAddOnOption]:checked\").val(),\r\n checkoutFlow: true,\r\n checkoutFlowNumberInGroup: $(\"#NumberInGroup\").val(),\r\n gangWithAddOnResponses: GetInviteeDetailsData()\r\n };\r\n\r\n data.gangInvoiceAndViewMode = YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode();\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 {\r\n //google tag manager\r\n var gaData = YouLi.Common.GetGAData(\"select_promotion\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(gaData);\r\n\r\n var initialSelectedInvoiceAndViewMode = $(\"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode']:checked\").val();\r\n var initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]:checked\").val();\r\n var initialSelectedPaymentOption = $(\"input[type=radio][name=PaymentOption]:checked\").val();\r\n\r\n // when a coupon code is applied, we have to update the installments table, the charge details section and the actual charge form amounts if it is a balance being paid.\r\n $(\"#ChargeDetails\").html(response.responseJSON.newCheckoutPaymentChargeDetailsHtml);\r\n\r\n if ($(\".cost-installments-selection\").length > 0) {\r\n $(\".cost-installments-selection\").html(response.responseJSON.newInstallmentsTableHtml);\r\n }\r\n\r\n if (YouLi.Trip.Checkout.SelectedGangInvoiceAndViewMode() != \"paytogether\") {\r\n $(\".cost-line-item-amount-total-invitee\").html(YouLi.PaymentChargeForm.GetFormattedCurrency(response.responseJSON.paySeparatelyInviteePrepayTotal));\r\n }\r\n\r\n // update the charge details line item for coupon code\r\n $(\"input[Name=ChargeCouponCode]\").val(selectedCouponCode);\r\n $(\".coupon-code-value\").html(selectedCouponCode);\r\n $(\".cost-line-item-amount-coupon-code\").html(`-${YouLi.PaymentChargeForm.GetFormattedCurrency(response.responseJSON.couponCodeAmount)}`);\r\n $(\".cost-line-item-coupon-code\").removeClass(\"hidden\");\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.Trip.Checkout.IsBalanceSelected = true;\r\n YouLi.PaymentChargeForm.AmountDue = response.responseJSON.balanceAmount;\r\n UpdateChargeDetails(undefined);\r\n }\r\n\r\n // reinitialise\r\n $.validator.unobtrusive.parse($(\"#GangSetupForm\"));\r\n $.validator.unobtrusive.parse($(\"#TripConsentForm\"));\r\n\r\n if (!initialSelectedPaymentMethod)\r\n initialSelectedPaymentMethod = $(\"input[type=radio][name=PaymentMethod]\").first().val();\r\n if (!initialSelectedPaymentOption)\r\n initialSelectedPaymentOption = $(\"input[type=radio][name=PaymentOption]\").first().val();\r\n\r\n $(\"input[type=radio][name='CurrentInvitee.GangInvoiceAndViewMode'][value=\" + initialSelectedInvoiceAndViewMode + \"]\").attr(\"checked\", true);\r\n $(\"input[type=radio][name=PaymentMethod][value=\" + initialSelectedPaymentMethod + \"]\").attr(\"checked\", true);\r\n $(\"input[type=radio][name=PaymentOption][value=\" + initialSelectedPaymentOption + \"]\").attr(\"checked\", true);\r\n InitialisePaymentDetails();\r\n }\r\n }\r\n\r\n });\r\n });\r\n\r\n $(document).on(\"click\", \".pay-now-button\", function () {\r\n\r\n var gangFormIsValid = $('#GangSetupForm').valid();\r\n\r\n var tripConsentFormIsValid = true;\r\n if ($(\"#TripConsentForm\").length > 0)\r\n tripConsentFormIsValid = $(\"#TripConsentForm\").valid();\r\n\r\n if (!(gangFormIsValid && tripConsentFormIsValid)) {\r\n ScrollToInvalid();\r\n return;\r\n }\r\n\r\n YouLi.Trip.Checkout.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\", \"#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.Checkout.RefundProtectOptedOutConfirmed = true;\r\n\r\n continuePayment();\r\n });\r\n\r\n // The following event handling for the date-time update is now included in the TaskResponseFieldDateTime partial\r\n function UpdateDateTimeAnswer(element) {\r\n var container = element.closest(\".date-time-container\");\r\n var datePicker = $('.datepicker', container).data(\"DateTimePicker\");\r\n var timePicker = $('.timepicker', container).data(\"DateTimePicker\");\r\n if (!datePicker || datePicker.date() == null || !timePicker || timePicker.date() == null) {\r\n $(\".combined-date-time-answer\", container).val(\"\");\r\n }\r\n else {\r\n $(\".combined-date-time-answer\", container).val(\r\n datePicker.date().format(\"D/M/Y \") + timePicker.date().format(\"hh:mm A\"));\r\n }\r\n };\r\n\r\n $(document).on(\"dp.change\", \".date-time-container .datepicker\", function (e) {\r\n UpdateDateTimeAnswer(this);\r\n });\r\n\r\n $(document).on(\"dp.change\", \".date-time-container .timepicker\", function (e) {\r\n UpdateDateTimeAnswer(this);\r\n });\r\n\r\n $(document).on('keypress', '.gang-last-name , .gang-first-name', function (e) {\r\n //64 is char '@'\r\n if (e.which === 64) {\r\n e.preventDefault();\r\n }\r\n });\r\n\r\n $(document).on('click', '.save-card-login a', function (e) {\r\n e.preventDefault();\r\n const returnUrl = window.location.pathname;\r\n const persona = 'traveler';\r\n const redirectUrl = $(this).attr('href');\r\n\r\n window.location.href = `${redirectUrl}?returnUrl=${returnUrl}&defaultPersona=${persona}`;\r\n })\r\n\r\n InitializeGangEmailEvent();\r\n //view_item\r\n var data = YouLi.Common.GetGAData(\"view_item\");\r\n dataLayer.push({ ecommerce: null });\r\n dataLayer.push(data);\r\n\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 prevState.isPackageCategory = $('.gang-member').find('#GangInvitees_0__InviteeCategory').is(':hidden');\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.Checkout ? YouLi.Trip.Checkout : {}));\r\n }(YouLi.Trip ? YouLi.Trip : {}));\r\n}(YouLi ? YouLi : {}));","(function ( $ ) {\r\n \r\n $.multiStateCheck = function (element, options) {\r\n\r\n var defaults = {\r\n states: [\"crossed\", \"unchecked\", \"checked\"],\r\n onAfterChangeState: function () { },\r\n }\r\n\r\n var plugin = this;\r\n\r\n plugin.settings = {}\r\n\r\n var $element = $(element),\r\n element = element;\r\n\r\n plugin.init = function () {\r\n plugin.settings = $.extend({}, defaults, options);\r\n\r\n $element.off(\"click\").on(\"click\", function (e) {\r\n\r\n if ($(this).attr(\"disabled\")) {\r\n return;\r\n }\r\n\r\n // three-way state\r\n //switch ($(this).attr(\"data-state\")) {\r\n // case \"checked\":\r\n // $(this).attr(\"data-state\", \"crossed\");\r\n // break;\r\n // case \"crossed\":\r\n // $(this).attr(\"data-state\", \"unchecked\");\r\n // break;\r\n // default: /* unchecked */\r\n // $(this).attr(\"data-state\", \"checked\");\r\n //}\r\n\r\n var currentState = $(this).attr(\"data-state\");\r\n var indexCurrentState = options.states.indexOf(currentState);\r\n var nextState = indexCurrentState == options.states.length - 1 ? 0 : indexCurrentState + 1; // either choose the next state, or if we are at the last state, choose the first state\r\n $(this).attr(\"data-state\", options.states[nextState])\r\n\r\n if (options.onAfterChangeState !== undefined) {\r\n options.onAfterChangeState(e);\r\n }\r\n });\r\n\r\n }\r\n\r\n plugin.revert = function () {\r\n if ($element.attr(\"disabled\")) {\r\n return;\r\n }\r\n console.log(\"Reverting\");\r\n // three-way state\r\n //switch ($element.attr(\"data-state\")) {\r\n // case \"checked\":\r\n // $element.attr(\"data-state\", \"unchecked\");\r\n // break;\r\n // case \"crossed\":\r\n // $element.attr(\"data-state\", \"checked\");\r\n // break;\r\n // default:\r\n // $element.attr(\"data-state\", \"crossed\");\r\n //}\r\n\r\n var currentState = $element.attr(\"data-state\");\r\n var indexCurrentState = options.states.indexOf(currentState);\r\n var nextState = 0 ? options.states.length - 1 : indexCurrentState - 1; // either choose the previous state, or if we are at the first state, choose the last state\r\n $element.attr(\"data-state\", options.states[nextState])\r\n }\r\n\r\n plugin.init(); \r\n }\r\n\r\n $.fn.multiStateCheck = function (options) {\r\n\r\n return this.each(function () {\r\n if ($(this).data('multiStateCheck') == undefined) {\r\n var plugin = new $.multiStateCheck(this, options);\r\n $(this).data('multiStateCheck', plugin);\r\n }\r\n });\r\n }\r\n}(jQuery));\r\n\r\n\r\n"]}