PageSourceSearch

https://kupilink.ru/js/tygh/checkout.js?ver=1790818367

js kupilink.ru collected 2026-10-08 00:52:19 UTC 8,019 bytes, 236 lines download raw bytes

1(function (_, $) {
2  var prevent_scroll = false;
3  (function ($) {
4    var inputs_selector = 'input, textarea, select';
5    var place_order_buttons_selector = '.cm-checkout-place-order-buttons';
6    var recalculate_buttons_selector = '.cm-checkout-recalculate-buttons';
7    var form_values = {};
8    function changed() {
9      var form = $(this);
10      if (checkFormChanged(form) && form.ceFormValidator('check')) {
11        displayRecalculate(form);
12      }
13    }
14    function displayRecalculate(form) {
15      var changed_groups = {
16        user_data: false
17      };
18      form.find(inputs_selector).each(function () {
19        var elm = $(this);
20        if (elm.attr('type') != 'hidden' && form_values[elm.attr('name') + '_' + elm.attr('id')] != getVal(elm)) {
21          var elm_name = elm.attr('name');
22          if (elm_name) {
23            var elm_group = elm_name.split('[')[0];
24            changed_groups[elm_group] = true;
25          }
26        }
27      });
28
29      // require recalculate only when user data changed
30      if (changed_groups['user_data']) {
31        form.find(place_order_buttons_selector).hide();
32        form.find(recalculate_buttons_selector).show();
33      }
34    }
35    function saveFormValues(form) {
36      form.find(inputs_selector).each(function () {
37        var elm = $(this);
38        form_values[elm.attr('name') + '_' + elm.attr('id')] = getVal(elm);
39      });
40    }
41    function checkFormChanged(form) {
42      var result = false;
43      form.find(inputs_selector).each(function () {
44        var elm = $(this);
45        if (elm.attr('type') != 'hidden' && form_values[elm.attr('name') + '_' + elm.attr('id')] != getVal(elm)) {
46          result = true;
47        }
48      });
49      return result;
50    }
51    function getVal(elm) {
52      return ['checkbox', 'radio'].indexOf(elm.attr('type')) != -1 ? elm.is(':checked') : elm.val();
53    }
54    var methods = {
55      init: function (v1) {
56        var form = $(this);
57        if (form.data('CheckoutRecalculateFormInited')) {
58          return false;
59        }
60        form.data('CheckoutRecalculateFormInited', true);
61        if (!form.find(recalculate_buttons_selector).length) {
62          return true;
63        }
64        saveFormValues(form);
65        form.find(inputs_selector).on('input propertychange change', function (e) {
66          changed.apply(form);
67        });
68      }
69    };
70    $.fn.ceCheckoutRecalculateForm = function (method) {
71      if (methods[method]) {
72        return methods[method].apply(this, Array.prototype.slice.call(arguments, 1));
73      } else if (typeof method === 'object' || !method) {
74        return methods.init.apply(this, arguments);
75      } else {
76        $.error('ty.ceCheckoutRecalculateForm: method ' + method + ' does not exist');
77      }
78    };
79  })($);
80  $.ceEvent('on', 'ce.commoninit', function (context) {
81    var elm = context.find('.ty-step__title-active');
82    if (elm.length && !prevent_scroll) {
83      $.scrollToElm(elm);
84    }
85    prevent_scroll = false;
86    elm = context.find('.cm-checkout-recalculate-form');
87    if (elm.length) {
88      elm.ceCheckoutRecalculateForm();
89    }
90    $customerNotesText = $('.ty-customer-notes__text');
91    if (!$customerNotesText.length) {
92      return;
93    }
94    restoreCustomerNote($('.ty-customer-notes__text'));
95  });
96  $(_.doc).on('click', '.cm-checkout-place-order', function () {
97    var jelm = $(this),
98      form = jelm.parents('form');
99    if (!form.ceFormValidator('check')) {
100      return;
101    }
102    form.removeClass('cm-ajax').removeClass('cm-ajax-full-render');
103    $.ceEvent('on', 'ce.formpost_' + $(form).attr('name'), function () {
104      $.toggleStatusBox('show', {
105        statusContent: '<span class="ty-ajax-loading-box-with__text-wrapper">' + _.tr('placing_order') + '</span>',
106        statusClass: 'ty-ajax-loading-box_text_block'
107      });
108    });
109  });
110  $(_.doc).on('click', '.cm-checkout-recalculate', function () {
111    prevent_scroll = true;
112  });
113  $(_.doc).on('click', '.cm-select-payment', function () {
114    var jelm = $(this),
115      url = jelm.data('caUrl'),
116      result_ids = jelm.data('caResultIds');
117    $.ceAjax('request', fn_url(url + '&payment_id=' + jelm.val()), {
118      result_ids: result_ids,
119      full_render: true
120    });
121  });
122  $.ceEvent('on', 'ce.loadershow', function () {
123    var forms = $('#checkout_steps', _.doc).find('form');
124    forms.on('submit.checkout_lock', function () {
125      return false;
126    });
127    forms.find('button[type="submit"]').on('click.checkout_lock', function () {
128      return false;
129    });
130  });
131  $.ceEvent('on', 'ce.loaderhide', function () {
132    var forms = $('#checkout_steps', _.doc).find('form');
133    forms.off('submit.checkout_lock');
134    forms.find('button[type="submit"]').off('click.checkout_lock');
135  });
136  $.ceEvent('on', 'ce.payments_tab_switch', function () {
137    restoreCustomerNote($('.ty-customer-notes__text'));
138  });
139  var customerNote = '';
140  function saveCustomerNote($textarea) {
141    customerNote = $textarea.val();
142  }
143  function restoreCustomerNote($textarea) {
144    $textarea.val(customerNote);
145  }
146  $(_.doc).on('input', '.ty-customer-notes__text', function () {
147    saveCustomerNote($(this));
148  });
149})(Tygh, Tygh.$);
150function fn_switch_checkout_type() {
151  var $ = Tygh.$;
152  $.ceNotification('closeAll');
153  $('#step_one_register').show();
154  $('#step_one_login').hide();
155}
156function fn_show_checkout_buttons(type) {
157  var $ = Tygh.$;
158  if (type == 'register') {
159    $('#register_checkout').show();
160    $('#anonymous_checkout').hide();
161  } else {
162    $('#register_checkout').hide();
163    $('#anonymous_checkout').show();
164  }
165}
166
167/**
168 * This workaround is mainly required for a shipping estimator block to work outside of cart page.
169 * This function cannot be just moved from checkout.js, because some themes ("boilerplate" for example)
170 * might not include cs-cart's native core.js, which will lead to breaking delivery estimation
171 * functionality on the cart page.
172 **/
173if (window.fn_calculate_total_shipping === undefined) {
174  function fn_calculate_total_shipping(wrapper_id) {
175    var $ = Tygh.$;
176    wrapper_id = wrapper_id || 'shipping_estimation';
177    var parent = $('#' + wrapper_id);
178    var radio = $('input[type=radio]:checked', parent);
179    var params = [];
180    $.each(radio, function (id, elm) {
181      params.push({
182        name: elm.name,
183        value: elm.value
184      });
185    });
186    var url = fn_url('checkout.shipping_estimation.get_total');
187    for (var i in params) {
188      url += '&' + params[i]['name'] + '=' + encodeURIComponent(params[i]['value']);
189    }
190    var suffix = parent.find('input[name="suffix"]').first().val();
191    $.ceAjax('request', url, {
192      result_ids: 'shipping_estimation_total' + suffix,
193      data: {
194        additional_id: parent.find('input[name="additional_id"]').first().val()
195      },
196      method: 'post'
197    });
198  }
199}
200function fn_calculate_total_shipping_cost(is_hidden) {
201  is_hidden = is_hidden || false;
202  var params = [],
203    $parents = Tygh.$('#shipping_rates_list'),
204    $radio = Tygh.$('input[type=radio]:checked', $parents),
205    $shippingInfo = Tygh.$('[data-ca-shipping-field]'),
206    url = fn_url('checkout.checkout'),
207    result_ids = 'shipping_rates_list,checkout_info_summary_*,checkout_info_order_info_*',
208    $additional_result_ids = Tygh.$('input[name="additional_result_ids[]"]', $parents);
209  Tygh.$.each($radio, function (id, elm) {
210    params.push({
211      name: elm.name,
212      value: elm.value
213    });
214  });
215  Tygh.$.each($shippingInfo, function (id, elm) {
216    params.push({
217      name: elm.name,
218      value: elm.value
219    });
220  });
221  Tygh.$.each($additional_result_ids, function (id, elm) {
222    result_ids += ',' + $(elm).val();
223  });
224  for (var i in params) {
225    url += '&' + params[i]['name'] + '=' + encodeURIComponent(params[i]['value']);
226  }
227  Tygh.$.ceAjax('request', url, {
228    result_ids: result_ids,
229    method: 'get',
230    full_render: true,
231    hidden: is_hidden,
232    callback: function (response) {
233      $.ceEvent('trigger', 'ce.total-shipping-cost.calculated', [response]);
234    }
235  });
236}

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.