var elementsDiv=null,modalInput=!1;function initStripe(){var t,e,i,n=jQuery('input[name="paymentmethod"]'),r=jQuery("#frmCheckout"),s=jQuery(".frm-credit-card-input"),a=jQuery("#frmPayment"),d=jQuery("#frmCreditCardDetails");n.length&&!s.length?(insertAndMountElementsDivAfterInput(jQuery("#newCardInfo")),elementsDiv=jQuery("#stripeElements"),jQuery('input[name="ccinfo"]'),i=jQuery('input[name="ccinfo"]:checked'),t=jQuery('input[name="paymentmethod"]:checked').val(),e=jQuery("#existingCardInfo"),void 0===t&&(t=jQuery('input[name="paymentmethod"]').val()),enablePaymentRequestButton(),"stripe"===t&&(hide_cc_fields(),enable_stripe(),"new"!==i.val())&&(get_existing_token(i.val()),elementsDiv.slideUp(),r.off("submit.stripe"),e.slideUp(),"000"!==amount)&&r.on("submit.stripe",processExisting),n.on("ifChecked",function(){var e;"stripe"===(t=jQuery(this).val())?(e=jQuery('input[name="ccinfo"]:checked').val(),hide_cc_fields(),enable_stripe(),"new"!==e&&(get_existing_token(e),elementsDiv.slideUp(),r.off("submit.stripe"),"000"!==amount)&&r.on("submit.stripe",processExisting)):disable_stripe()}),jQuery(document).on("ifChecked",'input[name="ccinfo"]',function(){r.off("submit.stripe"),"stripe"===(t=jQuery('input[name="paymentmethod"]:checked').val())&&(hide_cc_fields(),"new"===jQuery(this).val()?enable_stripe():(get_existing_token(jQuery(this).val()),elementsDiv.slideUp(),r.off("submit.stripe"),"000"!==amount&&r.on("submit.stripe",processExisting)))})):s.length?("stripe"===jQuery('input[name="type"]:checked').data("gateway")&&(insertAndMountElementsDivBeforeInput(s.find("div.cc-details")),elementsDiv=jQuery("#stripeElements"),hide_cc_fields(),elementsDiv.slideDown(),card.addEventListener("change",cardListener),cardExpiryElements.addEventListener("change",cardListener),cardCvcElements.addEventListener("change",cardListener),s.on("submit.stripe",addNewCardClientSide)),jQuery('input[name="type"]').on("ifChecked",function(){"stripe"===jQuery(this).data("gateway")?(insertAndMountElementsDivBeforeInput(s.find("div.cc-details")),elementsDiv=jQuery("#stripeElements"),hide_cc_fields(),elementsDiv.slideDown(),s.off("submit.stripe"),s.on("submit.stripe",addNewCardClientSide),card.addEventListener("change",cardListener),cardExpiryElements.addEventListener("change",cardListener),cardCvcElements.addEventListener("change",cardListener)):(disable_stripe(),s.find(".cc-details").slideDown())})):a.length?(insertAndMountElementsDivBeforeInput(a.find("#billingAddressChoice")),a.find("#inputCardCvv").closest("div.form-group").remove(),a.off("submit",validateCreditCardInput),"new"===jQuery('input[name="ccinfo"]:checked').val()?enable_payment_stripe():(get_existing_token(jQuery('input[name="ccinfo"]:checked').val()),a.on("submit.stripe",processExisting)),jQuery('input[name="ccinfo"]').on("ifChecked",function(){"new"===jQuery(this).val()?enable_payment_stripe():(get_existing_token(jQuery(this).val()),jQuery("#stripeElements").slideUp(),a.off("submit.stripe"),a.on("submit.stripe",processExisting),card.hasRegisteredListener("change")&&card.removeEventListener("change",cardListener))}),enablePaymentRequestButton()):d.length&&(d.find("#cctype").closest("tr").slideUp().remove(),d.find("#inputCardNumber").closest("div").html('<div id="elementCardNumber" class="form-control"></div>'),d.find("#inputCardExpiry").closest("div").html('<div id="elementCardExpiry" class="form-control"></div>'),d.find("#cardcvv").closest("div").html('<div id="elementCardCvc" class="form-control"></div>'),card.mount("#elementCardNumber"),cardExpiryElements.mount("#elementCardExpiry"),cardCvcElements.mount("#elementCardCvc"),card.addEventListener("change",cardListener),cardExpiryElements.addEventListener("change",cardListener),cardCvcElements.addEventListener("change",cardListener),elementsDiv=jQuery("#elementCardNumber"),jQuery("#containerStorageInputControl")?((i=jQuery("#modalAjaxFooter").find("#btnSave")).removeAttr("name"),i.off(),i.on("click",validateChangeCard),modalInput=!0):(d.find("#btnSaveChanges").removeAttr("name"),d.on("submit.stripe",validateChangeCard)))}function validateStripe(e){var t,i,n;if("undefined"==typeof recaptchaValidationComplete||"undefined"==typeof recaptchaType||"invisible"!==recaptchaType||!1!==recaptchaValidationComplete)return t=jQuery('input[name="paymentmethod"]:checked'),i=elementsDiv.closest("form"),n=jQuery(".gateway-errors,.assisted-cc-input-feedback").first(),!(!t.length||"stripe"===t.val())||(e.preventDefault(),i.find('button[type="submit"],input[type="submit"]').prop("disabled",!0).addClass("disabled").find("span").toggle(),stripe.createPaymentMethod("card",card).then(function(e){var t;e.error?(t=e.error.message)&&(n.html(t),n.not(":visible")&&n.slideDown(),scrollToGatewayInputError()):WHMCS.http.jqClient.jsonPost({url:WHMCS.utils.getRouteUrl("/stripe/payment/intent"),data:i.serialize()+"&payment_method_id="+e.paymentMethod.id,success:function(e){e.success?stripeResponseHandler(e.token):e.two_factor?stripeResponseHandler(""):e.validation_feedback?(n.html(e.validation_feedback),n.not(":visible")&&n.slideDown(),scrollToGatewayInputError(),WHMCS.form.reloadCaptcha()):stripe.handleCardPayment(e.token).then(function(e){var t;e.error?(t=e.error.message)&&(n.html(t),n.not(":visible")&&n.slideDown(),scrollToGatewayInputError(),WHMCS.form.reloadCaptcha()):stripeResponseHandler(e.paymentIntent.id)})},warning:function(e){WHMCS.form.reloadCaptcha(),n.html(defaultErrorMessage),n.not(":visible")&&n.slideDown(),scrollToGatewayInputError()},fail:function(e){n.html(defaultErrorMessage),n.not(":visible")&&n.slideDown(),scrollToGatewayInputError()}})}),!1);e.preventDefault()}function processExisting(e){var t,i;"undefined"!=typeof recaptchaValidationComplete&&"undefined"!=typeof recaptchaType&&"invisible"===recaptchaType&&!1===recaptchaValidationComplete?e.preventDefault():(t=elementsDiv.closest("form"),i=jQuery(".gateway-errors,.assisted-cc-input-feedback").first(),t.find(".gateway-errors").html("").slideUp(),e.preventDefault(),t.find('button[type="submit"],input[type="submit"]').prop("disabled",!0).addClass("disabled").find("span").toggle(),WHMCS.http.jqClient.jsonPost({url:WHMCS.utils.getRouteUrl("/stripe/payment/intent"),data:t.serialize()+"&payment_method_id="+existingToken,success:function(e){e.success?stripeResponseHandler(e.token):e.validation_feedback?(i.html(e.validation_feedback),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError(),WHMCS.form.reloadCaptcha()):stripe.handleCardPayment(e.token).then(function(e){var t;e.error?(t=e.error.message)&&(i.html(t),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError(),WHMCS.form.reloadCaptcha()):stripeResponseHandler(e.paymentIntent.id)})},warning:function(e){WHMCS.form.reloadCaptcha(),i.html(defaultErrorMessage),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError()},fail:function(e){i.html(defaultErrorMessage),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError()}}))}function stripeResponseHandler(e){var t=elementsDiv.closest("form"),e=(t.find(".gateway-errors,.assisted-cc-input-feedback").html("").slideUp(),t.append(jQuery('<input type="hidden" name="remoteStorageToken">').val(e)),t.find('button[type="submit"],input[type="submit"]').find("i.fas,i.far,i.fal,i.fab").removeAttr("class").addClass("fas fa-spinner fa-spin"),modalInput||elementsDiv.slideUp(),t.off("submit.stripe"),t.append('<input type="submit" id="hiddenSubmit" name="submit" value="Save Changes" style="display:none;">'),jQuery("#hiddenSubmit"));modalInput&&((e=jQuery("#modalAjaxFooter").find("#btnSave")).removeClass("disabled"),jQuery("#modalAjax .loader").fadeOut(),e.off("click",validateChangeCard),e.on("click",submitIdAjaxModalClickEvent)),e.click()}function hide_cc_fields(){var e=elementsDiv.closest("form"),t=jQuery("#newCardInfo,.cc-details,#existingCardInfo");t.is(":visible")&&t.slideUp("fast",function(){e.find("#cctype").removeAttr("name"),e.find("#inputCardCvvExisting").removeAttr("name"),e.find("#inputCardNumber").removeAttr("name"),e.find("#inputCardExpiry").removeAttr("name"),e.find("#inputCardCVV").removeAttr("name"),e.find("#inputCardCvvExisting").removeAttr("name")})}function enable_stripe(){var e=elementsDiv.closest("form"),t=jQuery("#inputDescriptionContainer");hide_cc_fields(),elementsDiv.slideDown(),card.addEventListener("change",cardListener),cardExpiryElements.addEventListener("change",cardListener),cardCvcElements.addEventListener("change",cardListener),e.off("submit.stripe"),"000"===amount?e.on("submit.stripe",addNewCardClientSide):e.on("submit.stripe",validateStripe),t.addClass("col-md-offset-3 offset-md-3")}function disable_stripe(){var e=elementsDiv.closest("form"),t=jQuery("#newCardInfo,.cc-details"),i=!0,n=jQuery("#inputDescriptionContainer");e.find("#inputCardCvvExisting").attr("name","cccvvexisting"),e.find("#inputCardNumber").attr("name","ccnumber"),e.find("#inputCardExpiry").attr("name","ccexpirydate"),e.find("#inputCardCVV").attr("name","cccvv"),e.find("#inputCardCvvExisting").attr("name","cccvvexisting"),e.find("#cctype").attr("name","cctype"),1===jQuery('input[name="paymentmethod"]:checked').data("remote-inputs")&&(i=!1),elementsDiv.hide("fast",function(){var e=jQuery('input[name="ccinfo"]:visible').first();"new"===e.val()?i&&t.slideDown():e.click()}),e.off("submit.stripe"),card.hasRegisteredListener("change")&&card.removeEventListener("change",cardListener),cardExpiryElements.hasRegisteredListener("change")&&cardExpiryElements.removeEventListener("change",cardListener),cardCvcElements.hasRegisteredListener("change")&&cardCvcElements.removeEventListener("change",cardListener),n.removeClass("col-md-offset-3 offset-md-3")}function enable_payment_stripe(){var e=elementsDiv.closest("form");e.find("#inputCardNumber").closest("div.form-group").remove(),e.find("#inputCardExpiry").closest("div.form-group").remove(),elementsDiv.slideDown(),card.addEventListener("change",cardListener),cardExpiryElements.addEventListener("change",cardListener),cardCvcElements.addEventListener("change",cardListener),e.off("submit.stripe"),e.on("submit.stripe",validateStripe)}function enablePaymentRequestButton(){var e,r,t;paymentRequestButtonEnabled&&(elementsDiv.closest("form"),e=stripe.paymentRequest({country:"US",currency:paymentRequestCurrency.toLowerCase(),total:{label:paymentRequestDescription,amount:paymentRequestAmountDue},requestPayerName:!0,requestPayerEmail:!0}),r=jQuery(".gateway-errors,.assisted-cc-input-feedback").first(),t=elements.create("paymentRequestButton",{paymentRequest:e}),e.canMakePayment().then(function(e){e&&(e.applePay,0===jQuery("#paymentRequestButton").length&&elementsDiv.prepend('<div class="row"><div class="col-md-4 col-md-offset-4 offset-md-4"><div id="paymentRequestButton"></div></div></div>'),t.mount("#paymentRequestButton"))}),e.on("paymentmethod",function(e){var t,i=e.paymentMethod.id,n=e,e=elementsDiv.closest("form");e.find(".gateway-errors,.assisted-cc-input-feedback").html("").slideUp(),e.find('button[type="submit"],input[type="submit"]').addClass("disabled").prop("disabled",!0).find("i.fas,i.far,i.fal,i.fab").removeAttr("class").addClass("fas fa-spinner fa-spin"),WHMCS.http.jqClient.jsonPost({url:WHMCS.utils.getRouteUrl("/stripe/payment/intent"),data:e.serialize()+"&payment_method_id="+i,success:function(e){t=e.token,e.success?(n.complete("success"),stripeResponseHandler(e.token)):e.validation_feedback?(r.html(e.validation_feedback),r.not(":visible")&&r.slideDown(),scrollToGatewayInputError(),WHMCS.form.reloadCaptcha()):stripe.handleCardPayment(t).then(function(e){var t;e.error?(t=e.error.message)&&(r.html(t),r.not(":visible")&&r.slideDown(),scrollToGatewayInputError(),WHMCS.form.reloadCaptcha()):stripeResponseHandler(e.paymentIntent.id)}),WHMCS.form.reloadCaptcha()},warning:function(e){WHMCS.form.reloadCaptcha(),r.html(defaultErrorMessage),r.not(":visible")&&r.slideDown(),scrollToGatewayInputError()},fail:function(e){r.html(defaultErrorMessage),r.not(":visible")&&r.slideDown(),scrollToGatewayInputError()}})}))}function insertAndMountElementsDivAfterInput(e){(elementsDiv=jQuery("#stripeElements")).length||(e.after(stripe_cc_html(e)),(e=jQuery("#stripeCvcWhere")).length&&(jQuery("#cvvWhereLink").clone().appendTo(e),jQuery('[data-toggle="popover"]').popover({html:!0})),elementsDiv=jQuery("#stripeElements"),card.mount("#stripeCreditCard"),cardExpiryElements.mount("#stripeExpiryDate"),cardCvcElements.mount("#stripeCvc"))}function insertAndMountElementsDivBeforeInput(e){(elementsDiv=jQuery("#stripeElements")).length||(e.before(stripe_cc_html(e)),(e=jQuery("#stripeCvcWhere")).length&&(jQuery("#cvvWhereLink").clone().appendTo(e),jQuery('[data-toggle="popover"]').popover({html:!0})),elementsDiv=jQuery("#stripeElements"),card.mount("#stripeCreditCard"),cardExpiryElements.mount("#stripeExpiryDate"),cardCvcElements.mount("#stripeCvc"))}function stripe_cc_html(e){return"frmCheckout"===e.closest("form")[0].id?'<div id="stripeElements" class="form-group" style="display: none;"><div class="stripe-cards-inputs col-md-8 col-md-offset-2 offset-md-2"><div class="row"><div class="col-md-6"><label for="stripeCreditCard">'+lang.creditCardInput+'</label><div id="stripeCreditCard" class="form-control"></div><div id="stripeCardType"></div></div><div class="col-md-3"><label for="stripeExpiryDate">'+lang.creditCardExpiry+'</label><div id="stripeExpiryDate" class="form-control"></div></div><div class="col-md-3"><label for="stripeCvc">'+lang.creditCardCvc+'</label><div id="stripeCvc" class="form-control"></div></div></div></div></div><div class="clearfix"></div>':(elementsClass="",'<div id="stripeElements" style="display: none;"><div class="form-group row cc-billing-address"><label for="stripeCreditCard" class="col-sm-4 control-label">'+lang.creditCardInput+'</label><div class="col-sm-7"><div id="stripeCreditCard" class="form-control" aria-describedby="cc-type"></div><div id="stripeCardType"></div></div><div class="col-sm-4"></div></div><div class="form-group row cc-billing-address"><label for="stripeExpiryDate" class="col-sm-4 control-label">'+lang.creditCardExpiry+'</label><div class="col-sm-2"><div id="stripeExpiryDate" class="form-control"></div></div><div class="col-sm-6"></div></div><div class="form-group row cc-billing-address"><label for="stripeCvc" class="col-sm-4 control-label">'+lang.creditCardCvc+'</label><div class="col-sm-2"><div id="stripeCvc" class="form-control"></div></div><div class="col-sm-4"><div id="stripeCvcWhere"></div></div></div></div></div><div class="clearfix"></div>')}function cardListener(e){var t,i=jQuery(".gateway-errors,.assisted-cc-input-feedback").first();void 0!==e.error?(t=e.error.message)&&(i.html(t),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError()):i.slideUp().html(""),e.brand}function addNewCardClientSide(e){var t=elementsDiv.closest("form"),i=jQuery(".gateway-errors,.assisted-cc-input-feedback").first();e.preventDefault(),t.find('button[type="submit"],input[type="submit"]').prop("disabled",!0).addClass("disabled").find("span").toggle(),WHMCS.http.jqClient.jsonPost({url:WHMCS.utils.getRouteUrl("/stripe/setup/intent"),data:t.serialize(),success:function(e){e.success&&stripe.handleCardSetup(e.setup_intent,card).then(function(e){e.error?(i.html(e.error.message),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError(),WHMCS.form.reloadCaptcha()):stripeResponseHandler(e.setupIntent.id)})},warning:function(e){i.html(e),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError()},fail:function(e){i.html(e),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError()}})}function validateChangeCard(e){var n=elementsDiv.closest("form"),r=jQuery(".gateway-errors,.assisted-cc-input-feedback").first();return e.preventDefault(),n.find('button[type="submit"],input[type="submit"]').prop("disabled",!0).addClass("disabled").find("span").toggle(),stripe.createPaymentMethod("card",card).then(function(e){var t,i;e.error?(i=e.error.message)&&(r.html(i),r.not(":visible")&&r.slideDown(),scrollToGatewayInputError()):(modalInput&&((t=jQuery("#btnSave")).addClass("disabled"),jQuery("#modalAjax .loader").slideDown()),i=void 0!==WHMCS.utils?WHMCS.utils.getRouteUrl("/stripe/payment/add"):WHMCS.adminUtils.getAdminRouteUrl("/stripe/payment/admin/add"),WHMCS.http.jqClient.jsonPost({url:i,data:n.serialize()+"&payment_method_id="+e.paymentMethod.id,success:function(e){e.success&&stripeResponseHandler(e.token),e.validation_feedback&&(r.text(e.validation_feedback),r.not(":visible"))&&r.slideDown()},warning:function(e){r.html(e),r.not(":visible")&&r.slideDown(),scrollToGatewayInputError()},fail:function(e){r.html(e),r.not(":visible")&&r.slideDown(),scrollToGatewayInputError()},always:function(){modalInput&&(t.removeClass("disabled"),jQuery("#modalAjax .loader").fadeOut())}}))}),!1}function get_existing_token(e){if(void 0===e){var t=jQuery('input[name="ccinfo"]:visible:first');if(t.iCheck("check"),"new"===(e=t.val()))return}var i=jQuery(".gateway-errors,.assisted-cc-input-feedback").first(),n=i.closest("form");n.find('button[type="submit"],input[type="submit"]').prop("disabled",!0).addClass("disabled").find("span").toggle(),WHMCS.http.jqClient.jsonPost({url:WHMCS.utils.getRouteUrl("/payment/stripe/token/get"),data:"paymethod_id="+e+"&token="+csrfToken,success:function(e){existingToken=e.token,n.find('button[type="submit"],input[type="submit"]').prop("disabled",!1).removeClass("disabled").find("span").toggle()},warning:function(e){i.html(e),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError(),reset_input_to_new()},fail:function(e){i.html(e),i.not(":visible")&&i.slideDown(),scrollToGatewayInputError(),reset_input_to_new()}})}function reset_input_to_new(){jQuery('input[name="ccinfo"][value="new"]').iCheck("check"),jQuery("#existingCardInfo").is(":visible")&&jQuery("#existingCardInfo").slideUp(),setTimeout(function(){jQuery(".gateway-errors,.assisted-cc-input-feedback").slideUp()},4e3)}