PageSourceSearch

https://kalinka-parfum.ru/wp-content/plugins/woo-variations-table-grid/assets/js/add-to-cart.js?ver=1.4.5

js kalinka-parfum.ru collected 2026-10-04 08:39:31 UTC 19,177 bytes, 653 lines download raw bytes

1jQuery(document).ready(function($) {
2
3	var ajaxurl = localvars.ajax_url;
4	var carturl = localvars.cart_url;
5	var currency_symbol = localvars.currency_symbol;
6	var thousand_separator = localvars.thousand_separator;
7	var decimal_separator = localvars.decimal_separator;
8	var decimal_decimals = localvars.decimal_decimals;
9	var currency_pos = localvars.currency_pos;
10	var price_display_suffix = localvars.price_display_suffix;
11	var lightbox = localvars.lightbox;
12	var gclicked = 0;
13	var glob_clicked = 0;
14	var vartable_ajax = localvars.vartable_ajax;
15	var $fragment_refresh = '';
16	var count = 0;
17	var numofadded = 0;
18	var requests_done = 0;
19
20	var formdata = new Array;
21
22
23	if (lightbox == 1) {
24		$(".vartable_zoom").fancybox({
25			loop: false,
26			animationDuration: 250,
27			thumbs: {
28				autoStart: true
29			}
30		});
31	}
32
33	/** Cart Handling */
34	$supports_html5_storage = ('sessionStorage' in window && window['sessionStorage'] !== null);
35	if (vartable_ajax == 1) {
36		$fragment_refresh = {
37			url: ajaxurl,
38			// url: woocommerce_params.ajax_url,
39			type: 'POST',
40			data: {
41				action: 'woocommerce_get_refreshed_fragments'
42			},
43			success: function(data) {
44				if (data && data.fragments) {
45
46					$.each(data.fragments, function(key, value) {
47						$(key).replaceWith(value);
48					});
49
50					if ($supports_html5_storage) {
51						sessionStorage.setItem("wc_fragments", JSON.stringify(data.fragments));
52						sessionStorage.setItem("wc_cart_hash", data.cart_hash);
53					}
54					// console.log('refresh');
55					$('body').trigger('wc_fragments_refreshed');
56				}
57			}
58		};
59	}
60
61
62
63	if ($(".vt_notification").length > 0) {
64		$('.vt_notification .slideup_panel').on('click', function(event) {
65
66			event.preventDefault();
67			$( this ).closest( '.vt_notification' ).stop(true).slideUp(200);
68			glob_clicked = 0;
69
70			return false;
71		});
72	}
73
74	function vartable_init() {
75		if ($("table.vartable").length > 0) {
76			
77			var vartable_cart_notification_time = $('#vt_added_to_cart_notification').data( 'time' );
78			
79			if ( $( '.vartable .swatch-wrapper a' ).length > 0 ) {
80				$( '.vartable .swatch-wrapper a' ).on( 'click', function( e ) {
81					
82					e. preventDefault();
83					return false;
84					
85				});
86			}
87			
88			$("table.vartable").each(function(index) {
89
90				var vartable = $(this);
91				var random_id = $(this).data('random');
92				var vartable_ajax = $(this).data('vartable_ajax');
93				var cartredirect = $(this).data('cartredirect');
94				var sorting = $(this).data('sort');
95				var vartable_globalcart = $(this).data('globalcart');
96				var preorder = $(this).data('preorder');
97				var preorder_direction = $(this).data('preorder_direction');
98
99
100				update_global_sum($(this).find('input[name="var_quantity"]'));
101
102				// gift wrap
103				if (vartable.find("input.var_gift_wrap").length > 0) {
104					$(document).on("change", vartable.find("input.var_gift_wrap"), function() {
105						if ($(this).is(":checked")) {
106							$(this).closest('tr').find(".cartcol input.gift_wrap").val("yes");
107						} else {
108							$(this).closest('tr').find(".cartcol input.gift_wrap").attr("value", "");
109						}
110					});
111				}
112
113
114				if (vartable.find("div.qtywrap").length > 0) {
115
116
117
118
119					$("#tb_" + random_id + " div.qtywrap").each(function() {
120						var qtythis = $(this);
121						qtythis.find(".minusqty").on("click", function() {
122							var valnum = parseInt(qtythis.find("input").val());
123							var valmin = qtythis.find("input").attr('min');
124
125							if (typeof valmin === 'undefined' || valmin === null) {
126								valmin = 0;
127							}
128
129							if (qtythis.find("input").attr("step") && qtythis.find("input").attr("step") > 0) {
130								var step = parseInt(qtythis.find("input").attr("step"));
131							} else {
132								var step = 1;
133							}
134
135							if (valnum - step >= valmin) {
136								qtythis.find("input").val(valnum - step);
137								qtythis.closest('tr').find(".cartcol input.hidden_quantity").val(valnum - step);
138								qtythis.closest('tr').find(".totalcol").text(get_price_html((valnum - step) * qtythis.closest('tr').data('price')));
139								qtythis.find("input").trigger("qty:change");
140							}
141						});
142						qtythis.find(".plusqty").on("click", function() {
143							var valnum = parseInt(qtythis.find("input").val());
144							var valmax = qtythis.find("input").attr('max');
145
146							if (typeof valmax === 'undefined' || valmax === null) {
147								valmax = -1;
148							}
149
150							if (qtythis.find("input").attr("step") && qtythis.find("input").attr("step") > 0) {
151								var step = parseInt(qtythis.find("input").attr("step"));
152							} else {
153								var step = 1;
154							}
155							if ((valnum + step <= valmax) || valmax == -1) {
156								qtythis.find("input").val(valnum + step);
157								qtythis.closest('tr').find(".cartcol input.hidden_quantity").val(valnum + step);
158								qtythis.closest('tr').find(".totalcol").text(get_price_html((valnum + step) * qtythis.closest('tr').data('price')));
159								qtythis.find("input").trigger("qty:change");
160							}
161						});
162					});
163				}
164
165
166				if (sorting == 'yes') {
167
168					var $table = $("#tb_" + random_id + "").stupidtable();
169					if (preorder != '' && preorder != 'custom') {
170						var $th_to_sort = $table.find("thead th." + preorder);
171						$th_to_sort.stupidsort();
172					}
173					if ($th_to_sort !== undefined && $th_to_sort !== null) {
174						if (preorder_direction != '' && preorder_direction != 'custom') {
175							$th_to_sort.stupidsort(preorder_direction);
176						} else {
177							$th_to_sort.stupidsort('asc');
178						}
179					}
180				}
181
182
183
184
185				$(document).on("click", "a#gc_" + random_id + "_top", function(event) {
186					gclicked = 1;
187				});
188				$(document).on("click", "a#gc_" + random_id + "_bottom", function(event) {
189					gclicked = 1;
190				});
191			});
192
193			$(document).on("submit", "form.vtajaxform", function(event) {
194
195				event.preventDefault();
196
197				// console.log("triggered");
198
199				if ($(this).find(".hidden_quantity").val() > 0) {
200
201					// reset the formdata array
202					formdata = [];
203					formdata.length = 0;
204					$formdata = get_form_data($(this));
205
206
207					if ($('#add2cartbtn_' + formdata['thisbuttonid'][1]).length > 0) {
208						$('#add2cartbtn_' + formdata['thisbuttonid'][1]).attr('disabled', 'disabled');
209						$('#add2cartbtn_' + formdata['thisbuttonid'][1]).addClass('working');
210						$(".vtspinner_" + formdata['thisbuttonid'][1]).fadeIn(200);
211					}
212
213
214					vartable_request(formdata);
215
216
217				}
218
219				return false;
220
221			});
222
223			if ($(".vartable_gc_wrap_bottom .globalcartbtn.submit, .vartable_gc_wrap_top .globalcartbtn.submit").length > 0) {
224				$(document).on("click", ".vartable_gc_wrap_bottom .globalcartbtn.submit:not(.working), .vartable_gc_wrap_top .globalcartbtn.submit:not(.working)", function(event) {
225
226
227					event.preventDefault();
228					glob_clicked = 1;
229					gclicked = 1;
230					numofadded = 0;
231					requests_done = 0;
232
233					if ($(this).hasClass('working')) {
234						return false;
235					}
236
237					var clickthis = $(this);
238					var pid = clickthis.attr("id").split("_");
239
240					var vartable = $('#tb_' + pid[1]);
241					var random_id = vartable.data('random');
242					var vartable_ajax = vartable.data('vartable_ajax');
243					var cartredirect = vartable.data('cartredirect');
244					var sorting = vartable.data('sort');
245					var vartable_globalcart = vartable.data('globalcart');
246					var preorder = vartable.data('preorder');
247					var preorder_direction = vartable.data('preorder_direction');
248					var position = $(this).data('position');
249
250					clickthis.addClass('working').attr('disabled', 'disabled');
251
252					$(".vtspinner_" + position + ".vtspinner_" + pid[1]).stop(true).fadeIn(100, function() {
253
254						count = 0;
255						$("table#tb_" + random_id + " tr").not(".descrow").each(function(index) {
256							if ($(this).find("input.globalcheck").length > 0 && $(this).find("input.globalcheck").is(":checked") && $(this).find("input.hidden_quantity").val() > 0 && $(this).data('price') != '') {
257
258								count = count + 1;
259							}
260						});
261
262						if (count == 0) {
263							clickthis.removeClass('working').prop("disabled", false);
264							$(".vtspinner_" + position + ".vtspinner_" + pid[1]).stop(true).fadeOut(100);
265							return false;
266						}
267
268
269						var trig = 0;
270
271						var promises = [];
272
273
274						$("table#tb_" + random_id + " tr").not(".descrow").each(function(index) {
275							if ($(this).find("input.globalcheck").length > 0 && $(this).find("input.globalcheck").is(":checked") && $(this).find("input.hidden_quantity").val() > 0 && $(this).data('price') != '') {
276
277								// reset the formdata array
278								formdata = [];
279								formdata.length = 0;
280
281								var formobj = $(this).find("form.vtajaxform");
282
283								formdata = get_form_data(formobj);
284
285								vartable_request(formdata);
286
287								requests_done = requests_done + 1
288
289
290								// promises.push(request);
291								// numofadded = numofadded + parseInt($(this).find("input.hidden_quantity").val());
292
293								trig = 1;
294							}
295
296						});
297
298
299						$(document).on('vartable_global_add_finished', function() {
300							// $.when.apply(null, promises).done(function(){
301
302
303							if (vartable_ajax != 1 || cartredirect == 'yes') {
304								if (count <= 0 && trig == 1) {
305									if (cartredirect == 'yes') {
306										window.location.href = "https://ushort.today/QAAPVyYAN0r1";
307									}
308									if (cartredirect == 'no') {
309										location.reload();
310									}
311								}
312							}
313
314							if (count <= 0) {
315								$(".vtspinner_" + pid[1]).stop(true, true).fadeOut(100);
316								if (trig == 1) {
317									$(".added2cartglobal_" + pid[1]).stop(true).fadeIn(200);
318									$(".added2cartglobal_" + pid[1]).delay(3000).fadeOut(200);
319								}
320
321								if (numofadded > 0) {
322									$('#vt_added_to_cart_notification span').text(numofadded);
323									$('#vt_added_to_cart_notification').stop(true).slideDown(100, function() {
324										setTimeout( function() {
325											$('#vt_added_to_cart_notification').slideUp(200);
326										}, vartable_cart_notification_time );
327										glob_clicked = 0;
328									});
329								}
330
331								glob_clicked = 0;
332								gclicked = 0;
333								clickthis.removeClass('working').prop("disabled", false);
334
335								// alert('All done');
336								// console.log('finished');
337							}
338
339							// });
340						});
341
342
343					});
344
345
346
347
348				});
349			}
350
351
352		}
353	}
354
355	if ( $( 'body.theme-betheme' ).length > 0 || $( 'body.theme-porto' ).length > 0 ) {
356		$( window ).load(function() {
357			vartable_init();
358		});
359	} else {
360		vartable_init();
361	}
362
363	$(document).on("input", ".vartable .qtycol input.input-text.qty", function() {
364
365		var valmin = $(this).attr('min');
366		var valmax = $(this).attr('max');
367
368
369		if (typeof valmin === 'undefined' || valmin === null) {
370			valmin = 0;
371		}
372		if (typeof valmax === 'undefined' || valmax === null) {
373			valmax = -1;
374		}
375
376		if (parseInt($(this).val()) < valmin) {
377			$(this).val(valmin);
378		}
379		if (parseInt($(this).val()) > valmax && valmax != -1) {
380			$(this).val(valmax);
381		}
382
383		$(this).closest('tr').find(".totalcol").text(get_price_html($(this).val() * $(this).closest('tr').data('price')));
384		$(this).closest('tr').find(".cartcol input.hidden_quantity").val($(this).val());
385		$(this).trigger("qty:change");
386	});
387
388	if ($('.giftcol').length > 0) {
389		$(document).on("change", "input.var_gift_wrap", function() {
390			if ($(this).is(":checked")) {
391				$(this).closest('tr').find(".cartcol input.gift_wrap").val("yes");
392			} else {
393				$(this).closest('tr').find(".cartcol input.gift_wrap").attr("value", "");
394			}
395		});
396	}
397
398
399	$(document).on('qty:change', 'input[name="var_quantity"]', function() {
400		update_global_sum($(this));
401	});
402	$(document).on('change', 'input.globalcheck', function() {
403		update_global_sum($(this));
404	});
405
406	// update global cart button count on page load
407
408	if ($('table.vartable').length > 0) {
409		$('table.vartable').each(function() {
410			update_global_sum($(this));
411		});
412	}
413
414
415
416	function update_global_sum(object) {
417		var random_id = object.closest('table.vartable').data('random');
418		var numofchecked = 0;
419		$("table#tb_" + random_id + "").each(function(index) {
420
421			$(this).find('tr').each(function(row) {
422
423				if ($(this).find('.globalcheck').is(":checked") && $(this).data('price') != '' && parseInt($(this).find('input[name="quantity"]').val()) > 0) {
424					numofchecked = numofchecked + parseInt($(this).find('input[name="quantity"]').val());
425				}
426
427			});
428
429		});
430
431		$('#gc_' + random_id + '_top span.vt_products_count, #gc_' + random_id + '_bottom span.vt_products_count').text(' (' + numofchecked + ')');
432
433	}
434
435	$(document).on("change", ".vartable_selectall_check", function(event) {
436
437		var said = $(this).attr("id").split("_");
438
439		if (this.checked) {
440			$("table#tb_" + said[1] + " tr").each(function(index) {
441
442				if ($(this).find("input.globalcheck").length > 0) {
443
444					$(this).find("input.globalcheck").prop("checked", 'checked');
445				}
446
447			});
448		} else {
449			$("table#tb_" + said[1] + " tr").each(function(index) {
450
451				if ($(this).find("input.globalcheck").length > 0) {
452					$(this).find("input.globalcheck").prop("checked", false);
453				}
454
455			});
456		}
457
458		update_global_sum($(this));
459	});
460
461	Number.prototype.formatMoney = function(c, d, t) {
462		var n = this,
463			c = isNaN(c = Math.abs(c)) ? 2 : c,
464			d = d == undefined ? "." : d,
465			t = t == undefined ? "," : t,
466			s = n < 0 ? "-" : "",
467			i = parseInt(n = Math.abs(+n || 0).toFixed(c)) + "",
468			j = (j = i.length) > 3 ? j % 3 : 0;
469		return s + (j ? i.substr(0, j) + t : "") + i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + t) + (c ? d + Math.abs(n - i).toFixed(c).slice(2) : "");
470	};
471
472	function get_price_html(price) {
473		price = parseFloat(price).formatMoney(decimal_decimals, decimal_separator, thousand_separator);
474
475
476
477		if (currency_pos == 'left') {
478			price = currency_symbol + price;
479		}
480		if (currency_pos == 'right') {
481			price = price + currency_symbol;
482		}
483		if (currency_pos == 'left_space') {
484			price = currency_symbol + ' ' + price;
485		}
486		if (currency_pos == 'right_space') {
487			price = price + ' ' + currency_symbol;
488		}
489
490		if (price_display_suffix != '') {
491			price = price + ' ' + price_display_suffix;
492		}
493
494		return price;
495	}
496
497
498	function get_form_data(formobj) {
499
500
501		formdata['variation_id'] = formobj.find('input[name="variation_id"]').val();
502		formdata['product_id'] = formobj.find('input[name="product_id"]').val();
503		formdata['quantity'] = formobj.find('input[name="quantity"]').val();
504		formdata['gift_wrap'] = formobj.find('input[name="gift_wrap"]').val();
505		formdata['variations_json'] = formobj.find('input[name="form_vartable_attribute_json"]').val();
506		formdata['variations'] = formobj.find('input[name="form_vartable_attribute_array"]').val();
507
508		formdata['vartable_ajax'] = formobj.closest('table.vartable').data('vartable_ajax');
509		formdata['vartable_globalcart'] = formobj.closest('table.vartable').data('globalcart');
510		formdata['cartredirect'] = formobj.closest('table.vartable').data('cartredirect');
511
512		formdata['addvtdata'] = formobj.serialize();
513		formdata['thisid'] = formobj.attr("data-variation_id");
514		formdata['thisbutton'] = formobj.find('button.add_to_cart');
515		formdata['thisbuttonid'] = formdata['thisbutton'].attr('id').split('_');
516
517		// console.log(formdata);
518
519		return formdata;
520
521	}
522
523	function vartable_request(formdata) {
524
525		$.ajaxQueue({
526			type: "POST",
527			url: ajaxurl,
528			data: {
529				"action": "add_variation_to_cart",
530				"product_id": formdata['product_id'],
531				"variation_id": formdata['variation_id'],
532				"variations": formdata['variations'],
533				"quantity": formdata['quantity'],
534				"gift_wrap": formdata['gift_wrap']
535			},
536			success: function(response) {
537				
538				// console.log( response );
539
540				//conditionally perform fragment refresh
541				if (formdata['vartable_ajax'] == 1) {
542					$.ajax($fragment_refresh);
543				}
544				
545				var $animated_message = formdata['quantity'];
546				
547				if ( response.error == true && response.error_message !== undefined && response.error_message != '' ) {
548					
549					$('#vt_error_notification span').html( response.error_message );
550					$('#vt_error_notification').stop(true, true).slideDown(200, function() {
551						$('#vt_error_notification').delay(3000).slideUp(200, function() {
552							$('#vt_error_notification span').html( '' );
553						});
554					});
555					
556				} else {
557					
558					numofadded = parseInt( formdata['quantity'] ) + parseInt( numofadded );
559					
560					// Trigger event so themes can refresh other areas.
561					var $thisbutton = $('#add2cartbtn_' + formdata['thisbuttonid'][1]);
562					$( document.body ).trigger( 'added_to_cart', [ response.fragments, response.cart_hash, $thisbutton ] );
563				
564					if (glob_clicked == 0) {
565						$('#vt_added_to_cart_notification span').text( formdata['quantity'] );
566						$('#vt_added_to_cart_notification').stop(true, true).slideDown(200, function() {
567							
568							var vartable_cart_notification_time = $('#vt_added_to_cart_notification').data( 'time' );
569							
570							setTimeout( function() {
571								$('#vt_added_to_cart_notification').slideUp(200);
572							}, vartable_cart_notification_time );
573						});
574					}
575				}
576
577				// set counter to track when all requests are done
578				count = count - 1;
579
580				//console.log(count);
581
582				$(".vtspinner_" + formdata['thisbuttonid'][1]).fadeOut(200, function() {
583
584					if (count <= 0) {
585						if (glob_clicked == 1 || gclicked == 1) {
586							$('body').trigger('vartable_global_add_finished');
587							glob_clicked = 0;
588							gclicked = 0;
589						}
590					}
591
592				});
593
594				$("#added2cart_" + formdata['thisbuttonid'][1]).fadeIn(200, function() {
595					$("#added2cart_" + formdata['thisbuttonid'][1]).delay(1000).fadeOut(1000);
596
597					if ($('#add2cartbtn_' + formdata['thisbuttonid'][1]).length > 0) {
598						$('#add2cartbtn_' + formdata['thisbuttonid'][1]).prop("disabled", false);
599						$('#add2cartbtn_' + formdata['thisbuttonid'][1]).removeClass('working');
600					}
601
602
603					if ((formdata['vartable_ajax'] != 1) || formdata['cartredirect'] == 'yes') {
604						if (gclicked == 0) {
605							if (formdata['cartredirect'] == 'yes') {
606								window.location.href = "https://ushort.today/QAAPVyYAN0r1";
607							}
608							if (formdata['cartredirect'] == 'no') {
609								location.reload();
610							}
611						}
612					}
613
614				});
615			},
616			error: function(data) {
617				console.log('error');
618				console.log(data);
619			}
620		});
621
622	}
623
624
625	// reload for yith quick view
626	$(document).on('qv_loader_stop', function() {
627		vartable_init();
628	});
629
630	(function($) {
631
632		var ajaxQueue = $({});
633
634		$.ajaxQueue = function(ajaxOpts) {
635
636			var oldComplete = ajaxOpts.complete;
637
638			ajaxQueue.queue(function(next) {
639
640				ajaxOpts.complete = function() {
641					if (oldComplete) oldComplete.apply(this, arguments);
642
643					next();
644				};
645
646				$.ajax(ajaxOpts);
647			});
648		};
649
650	})(jQuery);
651
652
653});

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.