PageSourceSearch

https://zhetizhargy.kz/wp-content/plugins/memberpress/js/signup.js?ver=1.12.15

js zhetizhargy.kz collected 2026-10-07 23:01:33 UTC 24,335 bytes, 664 lines download raw bytes

1(function($) {
2  $(document).ready(function() {
3    // Handle form labels
4    const $placeholderInputs = $('.mp-form-row .mepr-form-input');
5
6    $.each($placeholderInputs, function(index, input) {
7      const $label = $(this).siblings('.mp-form-label').find('label');
8
9      if($(this).val() !== '' || $(this).is('select')) {
10        $label.addClass('active');
11      } else {
12        $label.removeClass('active');
13      }
14
15      $(input).on('keyup', function(event) {
16        if($(this).val() !== '') {
17          $label.addClass('active');
18        } else {
19          $label.removeClass('active');
20        }
21      });
22    });
23
24    $('body').on('click', '.mepr-signup-form .have-coupon-link', function(e) {
25      e.preventDefault();
26      $(this).hide();
27      $('div.mepr_coupon_'+$(this).data("prdid")).show();
28    });
29
30    $('body').on('keydown', '.mepr-signup-form .mepr-coupon-code', function(e) {
31      if(e.which === 13) {
32        e.preventDefault();
33        $(this).trigger('blur');
34      }
35    });
36
37    // Store the default price string
38    $('.mepr_price_cell').each(function () {
39      $(this).data('default-price-string', $(this).text());
40    });
41
42    let updateCheckoutStateTimeout,
43        lastRequestData,
44        updatingCheckoutState = false,
45        updateCheckoutStateAgain = false,
46        updateCheckoutState = function ($form) {
47          clearTimeout(updateCheckoutStateTimeout);
48
49          updateCheckoutStateTimeout = setTimeout(function () {
50            debouncedUpdateCheckoutState($form);
51          }, 50);
52        },
53        getRequestData = function ($form) {
54          let payment_methods = [];
55
56          $form.find('input[name="mepr_payment_method"]').each(function () {
57            payment_methods.push($(this).val());
58          });
59
60          const data = {
61            action: 'mepr_get_checkout_state',
62            mepr_product_id: $form.find('input[name="mepr_product_id"]').val(),
63            'mepr-address-one': $form.find('input[name="mepr-address-one"]').val(),
64            'mepr-address-two': $form.find('input[name="mepr-address-two"]').val(),
65            'mepr-address-city': $form.find('input[name="mepr-address-city"]').val(),
66            'mepr-address-state': $form.find('select[name="mepr-address-state"]').is(':visible') ? $form.find('select[name="mepr-address-state"]').val() : $form.find('input[name="mepr-address-state"]').val(),
67            'mepr-address-country': $form.find('select[name="mepr-address-country"]').val(),
68            'mepr-address-zip': $form.find('input[name="mepr-address-zip"]').val(),
69            mepr_vat_number: $form.find('input[name="mepr_vat_number"]').val(),
70            mepr_vat_customer_type: $form.find('input[name="mepr_vat_customer_type"]:checked').val(),
71            mepr_coupon_code: $form.find('input[name="mepr_coupon_code"]').val(),
72            mepr_coupon_nonce: MeprSignup.coupon_nonce,
73            mepr_is_product_page: (typeof MeprProTemplateSignup !== 'undefined' && MeprProTemplateSignup.is_product_page) || MeprSignup.is_product_page,
74            mpca_corporate_account_id: $form.find('input[name="mpca_corporate_account_id"]').val(),
75            mpgft_gift_checkbox: $form.find('input[name="mpgft-signup-gift-checkbox"]').is(':checked'),
76            mepr_payment_methods: payment_methods
77          };
78
79          if (!data.mpgft_gift_checkbox) {
80            let order_bumps = [];
81
82            $form.find('input[name="mepr_order_bumps[]"]:checked').each(function () {
83              order_bumps.push($(this).val());
84            });
85
86            data.mepr_order_bumps = order_bumps;
87          }
88
89          $form.trigger('meprCheckoutStateRequestData', [data]);
90
91          return data;
92        };
93
94    const debouncedUpdateCheckoutState = function ($form) {
95      if (updatingCheckoutState) {
96        updateCheckoutStateAgain = true;
97        return;
98      }
99
100      const data = getRequestData($form);
101
102      if (JSON.stringify(data) === JSON.stringify(lastRequestData)) {
103        return;
104      }
105
106      updatingCheckoutState = true;
107      lastRequestData = data;
108
109      if (MeprSignup.spc_enabled === '1' && MeprSignup.spc_invoice === '1') {
110        $form.find('.mepr-invoice-loader').fadeIn();
111      }
112
113      const onComplete = function () {
114        if (MeprSignup.spc_enabled === '1' && MeprSignup.spc_invoice === '1') {
115          $form.find('.mepr-invoice-loader').stop().hide();
116        }
117
118        updatingCheckoutState = false;
119      };
120
121      $.ajax({
122        type: 'POST',
123        url: MeprI18n.ajaxurl,
124        dataType: 'json',
125        data: getRequestData($form)
126      })
127      .done(function (response) {
128        if (response && typeof response.success === 'boolean' && response.success) {
129          $form.trigger('meprPriceStringUpdated', [response.data]);
130          $form.find('div.mepr_price_cell').html(response.data.price_string);
131
132          if (response.data.payment_required) {
133            $form.find('.mepr-payment-methods-wrapper').show();
134            $form.find('input[name="mepr_payment_methods_hidden"]').remove();
135          } else {
136            $form.find('.mepr-payment-methods-wrapper').hide();
137            $form.append('<input type="hidden" name="mepr_payment_methods_hidden" value="1">');
138
139            // Clear validation errors on fields now hidden
140            $form.find('.mepr-payment-methods-wrapper .mepr-form-input').each(function () {
141              meprValidateInput(this);
142            });
143          }
144
145          $form.trigger('meprAfterPriceStringUpdated', [response.data]);
146
147          if (MeprSignup.spc_enabled === '1' && MeprSignup.spc_invoice === '1') {
148            $form.find('.mepr-transaction-invoice-wrapper > div').replaceWith(response.data.invoice_html);
149            $form.find(".mepr-transaction-invoice-wrapper .mp_invoice").css({ opacity: 1 });
150          }
151
152          $form.trigger('meprAfterCheckoutStateUpdated', [response.data]);
153
154          onComplete();
155
156          if (updateCheckoutStateAgain) {
157            updateCheckoutStateAgain = false;
158            updateCheckoutState($form);
159          }
160        } else {
161          onComplete();
162        }
163      })
164      .fail(onComplete);
165    };
166
167    $('.mepr-signup-form').on('meprUpdateCheckoutState', function () {
168      updateCheckoutState($(this));
169    });
170
171    $('.mepr-signup-form').each(function () {
172      var $form = $(this);
173
174      if($form.find('input[name="mpgft-signup-gift-checkbox"]').is(':checked')) {
175        updateCheckoutState($form);
176      }
177
178      // Trigger checkout update if coupon code exists on page load (e.g., URL parameter), otherwise the invoice is cut out
179      if($form.find('input[name="mepr_coupon_code"]').val()) {
180        updateCheckoutState($form);
181      }
182
183    });
184
185    var meprValidateInput = function (obj, submitting) {
186      $(obj).removeClass('invalid');
187
188      var form = $(obj).closest('.mepr-signup-form');
189
190      if ($(obj).attr('required') !== undefined) {
191        var notBlank = mpValidateFieldNotBlank($(obj));
192
193        // Special handling for state field - not required for countries without states
194        if ($(obj).attr('name') === 'mepr-address-state') {
195          var selectedCountry = form.find('select[name="mepr-address-country"]').val();
196
197          if (selectedCountry && MeprI18n.countries_without_states &&
198              MeprI18n.countries_without_states.indexOf(selectedCountry) !== -1) {
199            // This country doesn't require states, so validation always passes
200            mpToggleFieldValidation($(obj), true);
201            return;
202          }
203        }
204
205        mpToggleFieldValidation($(obj), notBlank);
206      }
207
208      // Validate actual email only if it's not empty otherwise let the required/un-required logic hold
209      if ($(obj).attr('type')==='email' && $(obj).val().length > 0) {
210        var validEmail = mpValidateEmail($(obj).val());
211        mpToggleFieldValidation($(obj), validEmail);
212      }
213
214      // Validate the URL by using the browser validation functions
215      if ($(obj).attr('type')==='url' && $(obj).val().length > 0) {
216        var validURL = mpValidateUrl($(obj).val());
217        mpToggleFieldValidation($(obj), validURL);
218      }
219
220      if ($(obj).hasClass('mepr-password-confirm')) {
221        var confirmMatch = $(obj).val() === form.find('.mepr-password').val();
222        mpToggleFieldValidation($(obj), confirmMatch);
223      }
224
225      if($(obj).hasClass('mepr-coupon-code') && !submitting) {
226        var price_string = form.find('div.mepr_price_cell');
227
228        if($(obj).val().match(/(\s|\S)/)) {
229          $(obj).prev('.mp-form-label').find('.mepr-coupon-loader').fadeIn();
230          $(obj).data('validating', true);
231
232          var data = {
233            action: 'mepr_validate_coupon',
234            code: $(obj).val(),
235            prd_id: $(obj).data("prdid"),
236            user_email: form.find("input[name='user_email']").val(),
237            coupon_nonce: MeprSignup.coupon_nonce
238          };
239
240          $.post(MeprI18n.ajaxurl, data, function(res) {
241            $(obj).prev('.mp-form-label').find('.mepr-coupon-loader').hide();
242            res = res.trim();
243            mpToggleFieldValidation($(obj), (res.toString() == 'true'));
244
245            if(res.toString() == 'true') {
246              form.one('meprAfterPriceStringUpdated', function () {
247                $(obj).removeData('validating');
248
249                if($(obj).data('submit-when-valid')) {
250                  $(obj).removeData('submit-when-valid');
251                  form.find('.mepr-submit').trigger('click');
252                }
253              });
254
255              // Let's update price string and invoice
256              updateCheckoutState(form);
257            }
258            else {
259              form.find('.mepr-payment-methods-wrapper:hidden').show();
260              form.find('input[name="mepr_payment_methods_hidden"]').remove();
261              price_string.text(price_string.data('default-price-string'));
262
263              $(obj).removeData('validating');
264              $(obj).removeData('submit-when-valid');
265
266              // Invalid Coupon - update SPC Invoice
267              updateCheckoutState(form);
268            }
269          })
270          .fail(function () {
271            $(obj).removeData('validating');
272            $(obj).removeData('submit-when-valid');
273          });
274        }
275        else if($(obj).val().trim() === '') {
276          if (form.find('.mepr-payment-methods-wrapper').is(':hidden')) {
277            // Looks like we need to restore the payment methods
278            form.find('.mepr-payment-methods-wrapper').show();
279            form.find('input[name="mepr_payment_methods_hidden"]').remove();
280          }
281
282          price_string.text(price_string.data('default-price-string'));
283          // Enpty Coupon - update SPC Invoice
284          updateCheckoutState(form);
285        }
286      }
287
288      $(obj).trigger('mepr-validate-input');
289    };
290
291    window.meprValidateInput = meprValidateInput;
292
293    $('body').on('focus', '.mepr-form .mepr-form-input', function (e) {
294      $(this).prev('.mp-form-label').find('.cc-error').hide();
295      $(this).removeClass('invalid');
296    });
297
298    $('body').on('blur', '.mepr-form .mepr-form-input', function (e) {
299      //Don't validate date fields here, wait til the push the submit button
300      if(!$(this).hasClass('mepr-date-picker')) {
301        meprValidateInput(this);
302      }
303    });
304
305    // Specific to validating with the datepicker ui text field
306    $('body').on('mepr-date-picker-closed', '.mepr-form .mepr-form-input.mepr-date-picker', function (e, date, inst) {
307      meprValidateInput(this);
308    });
309
310    $('body').on('click', '.mepr-signup-form .mepr-submit', function (e) {
311      // We want to control if/when the form is submitted
312      e.preventDefault();
313
314      var form = $(this).closest('.mepr-signup-form');
315      var coupon = form.find('.mepr-coupon-code');
316
317      if(coupon.data('validating')) {
318        coupon.data('submit-when-valid', true);
319        return;
320      }
321
322      $.each(form.find('.mepr-form-input:visible'), function(i,obj) {
323        meprValidateInput(obj, true);
324      });
325
326      if (0 < form.find('.invalid:visible').length) {
327        form.find('.validation').addClass('failed');
328      }
329      else {
330        var submittedTelInputs = document.querySelectorAll(".mepr-tel-input");
331        for (var i = 0; i < submittedTelInputs.length; i++) {
332          var iti = window.intlTelInputGlobals.getInstance(submittedTelInputs[i]);
333          submittedTelInputs[i].value = iti.getNumber();
334        }
335        form.find('.validation').addClass('passed');
336        this.disabled = true;
337        form.find('.mepr-loading-gif').show();
338        $(this).trigger('mepr-register-submit');
339        form.trigger('submit');
340      }
341    });
342
343    // A debounced window resize function, to fix a Square card input sizing issue.
344    const windowResize = (() => {
345      let timeoutId;
346      return () => {
347        clearTimeout(timeoutId);
348        timeoutId = setTimeout(() => {
349          window.dispatchEvent(new Event('resize'));
350        }, 10);
351      };
352    })();
353
354    $('body').on('click', '.mepr-signup-form div[class^=mepr-payment-method] input.mepr-form-radio', function () {
355      var form = $(this).closest('.mepr-signup-form');
356
357      // Reset the transaction ID to prevent any issues after switching payment methods.
358      form.find('input[name="mepr_transaction_id"]').val('');
359
360      // Fire event for gateways to react to payment method change.
361      form.trigger('meprPaymentMethodChanged', [$(this).val()]);
362
363      var pmid = '.mp-pm-desc-' + $(this).val();
364      var pmid_exists = (form.find(pmid).length > 0);
365
366      form.find('.mepr-payment-method-desc-text').addClass('mepr-close');
367
368      if(pmid_exists) {
369        form.find(pmid).removeClass('mepr-close');
370      }
371
372      //If nothing has the mepr-close class, we still need to show this one's description
373      var mepr_close_exists = (form.find('.mepr-payment-method-desc-text.mepr-close').length > 0);
374
375      if(mepr_close_exists) {
376        form.find('.mepr-payment-method-desc-text.mepr-close').slideUp({
377          duration: 200,
378          complete: function() {
379            // Clear validation errors on fields now hidden
380            form.find('.mepr-payment-methods-wrapper .mepr-form-input').each(function () {
381              $('.mepr-form-input.invalid').removeClass('.invalid');
382              $('.cc-error').hide();
383              $('.mepr-form-has-errors').hide();
384            });
385
386            if(pmid_exists) {
387              form.find(pmid).slideDown(200, windowResize);
388            }
389          }
390        });
391      } else {
392        // Clear validation errors on fields now hidden
393        form.find('.mepr-payment-methods-wrapper .mepr-form-input').each(function () {
394          $('.mepr-form-input.invalid').removeClass('.invalid');
395          $('.cc-error').hide();
396          $('.mepr-form-has-errors').hide();
397        });
398
399        if(pmid_exists) {
400          form.find(pmid).slideDown(200, windowResize);
401        }
402      }
403    });
404
405    // Update price string & invoice when certain inputs change value
406    $("body").on("change mepr-geolocated",
407      ".mepr-form .mepr-form-input, .mepr-form .mepr-form-radios-input, .mepr-form .mepr-select-field",
408      function () {
409        if($(this).attr('name') == 'mepr-address-zip' ||
410          $(this).attr('name') == 'mepr-address-city' ||
411          $(this).attr('name') == 'mepr-address-country' ||
412          $(this).attr('name') == 'mepr-address-one' ||
413          $(this).attr('name') == 'mepr-address-state' ||
414          $(this).attr('name') == 'mepr_vat_customer_type' ||
415          $(this).attr('name') == 'mepr_vat_number' ||
416          $(this).attr('name') == 'mpgft-signup-gift-checkbox'
417        ) {
418          updateCheckoutState($(this).closest(".mepr-signup-form"));
419        }
420      }
421    );
422
423    $(".mepr-replace-file").each(function(){
424      $(this).closest('div').find('.mepr-file-uploader').hide();
425    });
426    $('body').on('click', '.mepr-replace-file', function (e) {
427      $(this).closest('div').find('.mepr-file-uploader').toggle();
428    });
429
430    // Set the visibility of payment methods based on order bumps
431    var handleOrderBumpToggle = function () {
432      var $input = $(this),
433          $order_bump = $input.closest('.mepr-order-bump'),
434          $order_bumps = $order_bump.closest('.mepr-order-bumps'),
435          $form = $order_bumps.closest('.mepr-signup-form'),
436          has_order_bump = false,
437          has_sub = false,
438          $to_hide = $(),
439          $to_show = $(),
440          $compatible_pm,
441          $incompatible_pm;
442
443      $order_bumps.find('input[name="mepr_order_bumps[]"]:checked').each(function () {
444        has_order_bump = true;
445
446        if($(this).closest('.mepr-order-bump').hasClass('mepr-sub')) {
447          has_sub = true;
448        }
449      });
450
451      if ( $(this).hasClass('mepr_order_bumps_init') ) {
452        return;
453      }
454
455      var is_ob_required = $order_bump.hasClass('mepr-order-bump-required');
456
457      if (is_ob_required) {
458        $(this).addClass('mepr_order_bumps_init');
459      }
460
461      $form.find('.mepr-order-bumps-notice').removeClass('mepr_error').addClass('mepr-hidden');
462      $form.removeClass('mepr-order-bumps-required-error');
463
464      $form.find('div[class^=mepr-payment-method] input.mepr-form-radio, input[type="hidden"][name="mepr_payment_method"]').each(function () {
465        var $pm = $(this);
466
467        if(has_order_bump) {
468          if($pm.hasClass('mepr-can-order-bumps')) {
469            if(has_sub) {
470              if($pm.hasClass('mepr-can-multiple-subscriptions')) {
471                $to_show = $to_show.add($pm);
472
473                if(!$compatible_pm) {
474                  $compatible_pm = $pm;
475                }
476              } else {
477                $to_hide = $to_hide.add($pm);
478
479                if($pm.prop('checked')) {
480                  $incompatible_pm = $pm;
481                }
482              }
483            } else {
484              $to_show = $to_show.add($pm);
485
486              if(!$compatible_pm) {
487                $compatible_pm = $pm;
488              }
489            }
490          } else {
491            $to_hide = $to_hide.add($pm);
492
493            if($pm.prop('checked')) {
494              $incompatible_pm = $pm;
495            }
496          }
497        } else {
498          $to_show = $to_show.add($pm);
499        }
500      });
501
502      if($incompatible_pm && is_ob_required) {
503        $to_hide = $to_hide.add($incompatible_pm);
504        $to_hide.closest('.mepr_payment_method, .mepr-payment-option-label').hide()
505      }
506
507      if(!$to_show.length) {
508        if( is_ob_required ) {
509          $form.find('.mepr-order-bumps-notice').text(MeprSignup.no_compatible_pms_ob_required).addClass('mepr_error').removeClass('mepr-hidden');
510          $form.addClass('mepr-order-bumps-required-error');
511        } else {
512          alert(MeprSignup.no_compatible_pms);
513          return false;
514        }
515      }
516
517      if($incompatible_pm) {
518        if($compatible_pm) {
519          var compatible_pm_label = $compatible_pm.data('payment-method-type'),
520              prompt = MeprSignup.switch_pm_prompt.replace('%s', compatible_pm_label);
521
522          if($.magnificPopup) {
523            var $switch_button = $('<div class="mepr-btn">').text(MeprSignup.switch_pm.replace('%s', compatible_pm_label)).on('click', function () {
524              $compatible_pm.trigger('click');
525              $input.trigger('click');
526              $.magnificPopup.close();
527            });
528
529            var $cancel_button = $('<div class="mepr-btn mepr-btn-secondary">').text(MeprSignup.cancel).on('click', function () {
530              $.magnificPopup.close();
531            });
532
533            var $popup_content = $('<div class="mepr-switch-pm-popup">').append(
534              $('<img class="mepr-switch-pm-popup-icon">').attr('src', MeprSignup.warning_icon_url),
535              $('<p>').text(prompt),
536              $('<div class="mepr-switch-pm-popup-buttons">').append($switch_button, $cancel_button)
537            );
538
539            if( ! is_ob_required ) {
540              $.magnificPopup.open({
541                mainClass: 'mepr-switch-pm-mfp',
542                items: {
543                  src: $popup_content,
544                  type: 'inline'
545                }
546              });
547            } else {
548              $compatible_pm.trigger('click');
549              $input.trigger('click');
550            }
551
552          } else if(confirm(prompt)) {
553            $compatible_pm.trigger('click');
554            $input.trigger('click');
555            return;
556          }
557        } else {
558          if( is_ob_required ) {
559            $form.find('.mepr-order-bumps-notice').text(MeprSignup.no_compatible_pms_ob_required).addClass('mepr_error').removeClass('mepr-hidden');
560            $form.addClass('mepr-order-bumps-required-error');
561          } else {
562            alert(MeprSignup.no_compatible_pms);
563          }
564        }
565
566        return false;
567      }
568
569      $to_hide.closest('.mepr_payment_method, .mepr-payment-option-label').hide();
570      $to_show.closest('.mepr_payment_method, .mepr-payment-option-label').show();
571
572      $order_bump.toggleClass('mepr-order-bump-selected', this.checked);
573    };
574
575    $('body').on('click', '.mepr-signup-form input[name="mepr_order_bumps[]"]', handleOrderBumpToggle);
576
577    if( $('.mepr-order-bump-required').length ) {
578
579      $('input[name="mepr_order_bumps[]"]:checked').each(function () {
580        handleOrderBumpToggle.call(this);
581      });
582
583      if( $('.mepr-signup-form.mepr-order-bumps-required-error').length ) {
584        $('.mepr-signup-form').find('.mepr-submit').hide();
585        $('.mepr-signup-form').find('.mepr-submit').attr('disabled','disabled');
586      } else {
587        $('.mepr-signup-form').find('.mepr-submit').show();
588        $('.mepr-signup-form').find('.mepr-submit').removeAttr('disabled');
589      }
590
591      updateCheckoutState($('.mepr-signup-form'));
592    }
593
594    // Hide subscription order bumps if no payment method supports multiple subscriptions
595    $('.mepr-signup-form').each(function () {
596      var $form = $(this),
597          $order_bumps = $form.find('.mepr-order-bumps'),
598          pm_supports_multiple_subs = false;
599
600      if(!$order_bumps.length) {
601        return;
602      }
603
604      $form.find('div[class^=mepr-payment-method] input.mepr-form-radio, input[type="hidden"][name="mepr_payment_method"]').each(function (index) {
605        var $pm = $(this);
606
607        if($pm.hasClass('mepr-can-multiple-subscriptions') && pm_supports_multiple_subs === false) {
608          pm_supports_multiple_subs = index;
609        }
610      });
611
612      if(pm_supports_multiple_subs === false) {
613        $order_bumps.find('.mepr-order-bump.mepr-sub').hide();
614
615        if(!$order_bumps.find('.mepr-order-bump:visible').length) {
616          $order_bumps.hide();
617        }
618      } else if(pm_supports_multiple_subs > 0) {
619        var $new_first_pm = $form.find('div[class^=mepr-payment-method] input.mepr-form-radio').eq(pm_supports_multiple_subs);
620
621        $new_first_pm
622          .closest('.mepr_payment_method, .mepr-payment-option-label')
623          .insertBefore(
624            $form.find('div[class^=mepr-payment-method] input.mepr-form-radio')
625              .eq(0)
626              .closest('.mepr_payment_method, .mepr-payment-option-label')
627          );
628
629        $new_first_pm.trigger('click');
630      }
631
632      // If gift checkbox is checked, hide and disable order bumps
633      if($form.find('input[name="mpgft-signup-gift-checkbox"]').is(':checked')) {
634        $order_bumps.hide().find('input[name="mepr_order_bumps[]"]').prop('checked', false);
635      }
636    });
637
638    $("body").on("change",
639      '.mepr-form input[name="mepr_order_bumps[]"]',
640      function (e) {
641        let form = $(this).closest(".mepr-signup-form");
642        if( $('input[type="hidden"][name="mepr_process_signup_form"]').length ) {
643          if( $('input[type="hidden"][name="mepr_process_signup_form"]').val() == 'Y' ) {
644            return;
645          }
646        }
647        updateCheckoutState(form);
648      }
649    );
650
651    $("body").on('change', '.mepr-signup-form input[name="mpgft-signup-gift-checkbox"]', function () {
652      let $is_gift = $(this),
653          $form = $is_gift.closest('.mepr-signup-form');
654
655      if ($is_gift.is(':checked')) {
656        $form.find('.mepr-order-bumps').hide().find('input[name="mepr_order_bumps[]"]:checked').prop('checked', false).each(function () {
657          handleOrderBumpToggle.call(this);
658        });
659      } else {
660        $form.find('.mepr-order-bumps').show();
661      }
662    });
663  });
664})(jQuery);

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.