PageSourceSearch

https://otani.co/wp-content/plugins/stripe-payments/public/assets/js/stripe-handler-ng.js?ver=2.0.73

js otani.co collected 2026-09-26 10:05:23 UTC 8,218 bytes, 246 lines download raw bytes

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.