https://otani.co/wp-content/plugins/stripe-payments/public/assets/js/stripe-handler-ng.js?ver=2.0.73
1var stripeHandlerNG = function (data) { 2 3 jQuery('input#stripeAmount_' + data.uniq_id).keydown(function (e) { 4 if (e.keyCode === 13) { 5 e.preventDefault(); 6 jQuery('#asp_ng_button_' + data.uniq_id).click(); 7 return false; 8 } 9 }); 10 11 this.isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent); 12 13 this.checkPPVisible = function () { 14 if (parent.iframe.find('#Aligner-item').is(':hidden')) { 15 parent.form.submit(); 16 return true; 17 } 18 setTimeout(this.checkPPVisible, 100); 19 } 20 21 this.validateAmount = function () { 22 var amount = jQuery('input#stripeAmount_' + data.uniq_id).val(); 23 data.amountOpts = { applySepOpts: 0 }; 24 data.minAmounts = []; 25 if (data.amountOpts.applySepOpts != 0) { 26 amount = amount.replace(data.amountOpts.thousandSep, ''); 27 amount = amount.replace(data.amountOpts.decimalSep, '.'); 28 } else { 29 amount = amount.replace(/\$/g, ''); 30 amount = amount.replace(/\,/g, ''); 31 amount = amount.replace(/\ /g, ''); 32 } 33 amount = parseFloat(amount); 34 35 if (isNaN(amount)) { 36 jQuery('#error_explanation_' + data.uniq_id).hide().html('Enter valid amount').fadeIn('slow'); 37 return false; 38 } 39 40 var displayAmount = amount.toFixed(2).toString(); 41 if (data.amountOpts.applySepOpts != 0) { 42 displayAmount = displayAmount.replace('.', data.amountOpts.decimalSep); 43 } 44 if (data.zeroCents.indexOf(data.currency) <= -1) { 45 // amount = Math.round(amount); 46 } 47 // if (typeof data.minAmounts[data.currency] !== 'undefined') { 48 // if (data.minAmounts[data.currency] > amount) { 49 // jQuery('#error_explanation_' + data.uniq_id).hide().html(data.strMinAmount + ' ' + parent.cents_to_amount(stripehandler.minAmounts[data.currency], data.currency)).fadeIn('slow'); 50 // return false; 51 // } 52 // } else if (50 > amount) { 53 // jQuery('#error_explanation_' + data.uniq_id).hide().html(data.strMinAmount + ' 0.5').fadeIn('slow'); 54 // return false; 55 // } 56 jQuery('#error_explanation_' + data.uniq_id).html(''); 57 jQuery('input#stripeAmount_' + data.uniq_id).val(displayAmount); 58 59 return amount; 60 } 61 62 this.handleModal = function (show) { 63 if (parent.data.show_custom_amount_input) { 64 var pass_amount = parent.validateAmount(); 65 if (!pass_amount) { 66 return false; 67 } 68 } 69 70 if (!parent.modal) { 71 parent.modal = jQuery('div[data-asp-iframe-prod-id="' + parent.data.product_id + '"][id="asp-payment-popup-' + parent.data.uniq_id + '"]'); 72 if (parent.modal.length === 0) { 73 jQuery('body').append('<div id="asp-payment-popup-' + parent.data.uniq_id + '" style="display: none;" data-asp-iframe-prod-id="' + parent.data.product_id + '" class="asp-popup-iframe-cont"><iframe frameborder="0" allowtransparency="true" class="asp-popup-iframe" allow="payment" allowpaymentrequest="true" src="' + parent.data.iframe_url + '"></iframe></div>'); 74 parent.modal = jQuery('#asp-payment-popup-' + parent.data.uniq_id); 75 } 76 if (show) { 77 window.aspVisibleModalObj = parent.modal; 78 parent.modal.css('display', 'flex').hide().fadeIn(); 79 } 80 var iframe = parent.modal.find('iframe'); 81 parent.iframe = iframe; 82 iframe.on('load', function () { 83 84 if (parent.redirectToResult) { 85 window.location.href = iframe[0].contentWindow.location.href; 86 return false; 87 } 88 89 if (pass_amount) { 90 iframe.contents().find('#amount').val(pass_amount); 91 iframe[0].contentWindow.triggerEvent(iframe.contents().find('#amount')[0], 'change'); 92 } 93 94 if (parent.data.thankyou_page_url) { 95 iframe.contents().find('#thankyou_page_url').val(parent.data.thankyou_page_url); 96 } 97 98 iframe[0].contentWindow['doSelfSubmit'] = data.doSelfSubmit; 99 100 parent.iForm = iframe.contents().find('form#payment-form'); 101 parent.iForm.on('submit', function (e) { 102 e.preventDefault(); 103 if (parent.form_submitted || parent.redirectToResult) { 104 return false; 105 } 106 var token = parent.iForm.find('input#payment-intent').val(); 107 if (token !== '') { 108 if (parent.form.length === 0) { 109 console.log('Waiting for iframe to complete loading'); 110 parent.redirectToResult = true; 111 return true; 112 }
113 var hiddenInputsDiv = parent.form.find('div.asp-child-hidden-fields'); 114 parent.iForm.find('[name!=""]').each(function () { 115 if (jQuery(this).attr('name')) { 116 jQuery(this).attr('name', 'asp_' + jQuery(this).attr('name')); 117 var clonedItem = jQuery(this).clone(); 118 if (jQuery(this).is('select')) { 119 clonedItem.prop('selectedIndex', jQuery(this).prop('selectedIndex')); 120 } 121 hiddenInputsDiv.append(clonedItem); 122 } 123 }); 124 console.log('Parent form submit'); 125 parent.form_submitted = true; 126 if (parent.isSafari) { 127 parent.checkPPVisible(); 128 } else { 129 parent.form.submit(); 130 } 131 } 132 return false; 133 }); 134 }); 135 } else { 136 if (pass_amount) { 137 parent.iframe.contents().find('#amount').val(pass_amount); 138 parent.iframe[0].contentWindow.triggerEvent(parent.iframe.contents().find('#amount')[0], 'change'); 139 } 140 window.aspVisibleModalObj = parent.modal; 141 parent.modal.css('display', 'flex').hide().fadeIn(); 142 parent.iframe[0].contentWindow.popupDisplayed(); 143 } 144 145 }; 146 147 var parent = this; 148 parent.data = data; 149 parent.form = jQuery('form#asp_ng_form_' + parent.data.uniq_id); 150 window.WPASPDocumentElementOrigOverflow = jQuery('html').css('overflow'); 151 jQuery('#asp_ng_button_' + parent.data.uniq_id).prop('disabled', false); 152 if (parent.data.preload) { 153 parent.handleModal(false); 154 } else if (parent.data.prefetch) { 155 parent.data.iframe_url = parent.data.iframe_url + '&ckey=' + wpASPNG.ckey; 156 jQuery('body').append('<link rel="prefetch" as="document" href="' + parent.data.iframe_url + '">'); 157 } 158 159 var el = '#asp_ng_button_' + parent.data.uniq_id; 160 161 if (data.attachToElement) { 162 el = data.attachToElement; 163 } 164 165 jQuery(el).click(function (e) { 166 jQuery('html').css('overflow', 'hidden'); 167 e.preventDefault(); 168 parent.handleModal(true); 169 }); 170}; 171 172function WPASPClosePaymentPopup() { 173 window.aspVisibleModalObj.fadeOut(); 174 jQuery('html').css('overflow', window.WPASPDocumentElementOrigOverflow); 175} 176 177function WPASPAttachToAElement(el) { 178 var hrefStr = jQuery(el).attr('href'); 179 if (!hrefStr) { 180 return false; 181 } 182 var regExp = new RegExp('asp_action=show_pp&product_id=[0-9]*(.*)|' + wpASPNG.ppSlug + '(.*)product_id=[0-9]*(.*)'); 183 var meinHref = hrefStr.match(regExp); 184 if (meinHref[0]) { 185 var productId = meinHref[0].match(/product_id=([0-9]+)/); 186 if (productId[1]) { 187 var params = ''; 188 if (meinHref[1]) { 189 params = meinHref[1]; 190 } 191 WPASPAttach(el, productId[1], params); 192 } 193 } 194 return true; 195} 196 197function WPASPAttach(el, prodId, params) { 198 var uniqId = Math.random().toString(36).substr(2, 9); 199 var item_price = jQuery(el).data('asp-price'); 200 if (item_price) { 201 params += '&price=' + item_price; 202 } 203 var params_sep = '&'; 204 if (wpASPNG.iframeUrl.indexOf('?') === -1) { 205 params_sep = '?'; 206 } 207 new stripeHandlerNG({ 'attachToElement': el, 'uniq_id': uniqId, 'product_id': prodId, 'doSelfSubmit': true, 'iframe_url': wpASPNG.iframeUrl + params_sep + 'product_id=' + prodId + params, 'prefetch': wpASPNG.prefetch === '1' ? true : false }); 208} 209 210function WPASPDocReady(callbackFunc) { 211 if (document.readyState !== 'loading') { 212 callbackFunc(); 213 } else if (document.addEventListener) { 214 document.addEventListener('DOMContentLoaded', callbackFunc); 215 } else { 216 document.attachEvent('onreadystatechange', function () { 217 if (document.readyState === 'complete') { 218 callbackFunc(); 219 } 220 }); 221 } 222} 223 224WPASPDocReady(function () { 225 if (typeof wpaspInitOnDocReady !== 'undefined') { 226 console.log('ASP: Creating buttons on page load'); 227 wpaspInitOnDocReady.forEach(function (data) { 228 new stripeHandlerNG(data); 229 }); 230 } 231 jQuery('[class*="asp-attach-product-"]').each(function (id, el) { 232 var classStr = jQuery(el).attr('class'); 233 var meinClass = classStr.match(/asp-attach-product-[0-9]*/); 234 if (meinClass[0]) { 235 var productId = meinClass[0].match(/([0-9].*)/); 236 if (productId[0]) { 237 WPASPAttach(el, productId[0], ''); 238 } 239 } 240 }); 241 242 jQuery('a[href*="asp_action=show_pp&product_id="],a[href*="' + wpASPNG.ppSlug + '"]').each(function (id, el) { 243 WPASPAttachToAElement(el); 244 }); 245 246});
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.