PageSourceSearch

https://couragerc.org/wp-content/themes/uncode/library/js/woocommerce-uncode.js?ver=1209368063

js couragerc.org collected 2026-10-02 04:49:00 UTC 38,778 bytes, 1,207 lines download raw bytes

1(function($) {
2	"use strict";
3
4	var UNCODE_WC = window.UNCODE_WC || {};
5	window.UNCODE_WC = UNCODE_WC;
6
7	function get_cart() {
8		var ajaxurl = '';
9
10		if (window.wc_add_to_cart_params != undefined) {
11			ajaxurl = wc_add_to_cart_params.ajax_url
12		}
13
14		if (window.woocommerce_params != undefined) {
15			ajaxurl = woocommerce_params.ajax_url
16		}
17
18		if (ajaxurl) {
19			$.post({
20				url: ajaxurl,
21				dataType: 'JSON',
22				data: {
23					action: 'woomenucart_ajax'
24				},
25				success: function(data, textStatus, XMLHttpRequest) {
26					$('.uncode-cart-dropdown').html(data.cart);
27					if (data != '') {
28						if ( SiteParameters.uncode_wc_popup_cart_qty ) {
29							if ($('.uncode-cart .badge, .mobile-shopping-cart .badge').length) {
30								$('.uncode-cart .badge, .mobile-shopping-cart .badge').html(data.articles);
31							} else {
32								$('.uncode-cart .cart-icon-container').append('<span class="badge init-product-counter">' + data.articles + '</span>'); //$('.uncode-cart .badge').html(data.articles);
33							}
34							$(document.body).trigger('uncode_get_cart', [data.articles]);
35						} else {
36							if ($('.uncode-cart .badge, .mobile-shopping-cart .badge').length) {
37								if (data.articles > 0) {
38									$('.uncode-cart .badge, .mobile-shopping-cart .badge').html(data.articles);
39									$('.uncode-cart .badge, .mobile-shopping-cart .badge').show();
40								} else {
41									$('.uncode-cart .badge, .mobile-shopping-cart .badge').hide();
42								}
43							} else {
44								$('.uncode-cart .cart-icon-container').append('<span class="badge">' + data.articles + '</span>'); //$('.uncode-cart .badge').html(data.articles);
45							}
46						}
47					}
48				}
49			});
50		}
51
52	}
53
54	function remove_from_cart() {
55		$(document).on('click', '.uncode-cart-dropdown a.remove', function(e){
56
57			var $remove = $(this),
58				product_id = $remove.attr("data-product_id"),
59				item_key = $remove.attr("data-item_key"),
60				$li = $remove.parents('.cart-item-list').eq(0).addClass('removing-item').animate({
61					opacity: .5
62				},150);
63
64			$.post({
65				dataType: 'json',
66				url: wc_add_to_cart_params.ajax_url,
67				data: {
68					action: "woomenucart_remove_ajax",
69					item_key: item_key
70				},
71				success: function(html){
72					$li.slideUp(200, function(){
73						get_cart();
74					});
75				}
76			});
77
78			return false;
79		});
80	}
81
82	function reset_product_image(event, variation) {
83		var $target = event.target,
84			$row = $target.closest('.row-parent', $row),
85			get_href = $('a.woocommerce-main-image', $row),
86			image_variable = $('> img', get_href),
87			getLightbox = typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced ? UNCODE.lightboxArray[get_href.data('lbox')] : false;
88
89		if (SiteParameters.uncode_adaptive == true) {
90			image_variable.removeClass(['async-done', 'woocommerce-product-gallery__image-first__img']).addClass('adaptive-async');
91			image_variable.wc_reset_variation_attr( 'src' );
92			image_variable.wc_reset_variation_attr( 'data-path' );
93			image_variable.wc_reset_variation_attr( 'data-guid' );
94			UNCODE.adaptive();
95		}
96
97		if (getLightbox != undefined && getLightbox !== false) {
98			getLightbox.refresh();
99		} else if ( SiteParameters.lbox_enhanced ) {
100			get_href.closest('.woocommerce-product-gallery').trigger('more-items-loaded');
101		}
102	}
103
104	function change_images(event, variation) {
105		if ($(this).closest('.tmb-woocommerce').length > 0) {
106			return;
107		}
108
109		UNCODE.single_product_variation_already_changed = true;
110		if (variation.image_src !== '') {
111			var $target = event.target,
112				$row = $target.closest('.row-parent', $row),
113				get_href = $('a.woocommerce-main-image', $row),
114				$col_bg = $('.uncol-featured-image .background-inner', $row),
115				image_variable = $('> img', get_href),
116				image_thumb = variation.image.thumb_src,
117				gallery_thumb = variation.image.gallery_thumbnail_src,
118				image_srcset = variation.image.thumb_srcset,
119				getLightbox = typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced ? UNCODE.lightboxArray[get_href.data('lbox')] : false;
120			get_href.data('options', "thumbnail: '" + variation.image_src + "'");
121			if (SiteParameters.uncode_adaptive == true) {
122				image_variable.wc_set_variation_attr( 'src', variation.image_src );
123				image_variable.wc_set_variation_attr( 'data-path', variation.uncode_image_path );
124				image_variable.wc_set_variation_attr( 'data-guid', variation.uncode_image_guid );
125				image_variable.removeClass(['async-done', 'woocommerce-product-gallery__image-first__img']).addClass('adaptive-async');
126				UNCODE.adaptive();
127			}
128			if (getLightbox != undefined && getLightbox !== false) {
129				getLightbox.refresh();
130			} else if ( SiteParameters.lbox_enhanced ) {
131				get_href.closest('.woocommerce-product-gallery').trigger('more-items-loaded');
132			}
133			$(window).trigger('focus');
134
135			var $woocommerce_product_gallery_nav = $('.woocommerce-product-gallery-nav');
136
137			if ($woocommerce_product_gallery_nav.length) {
138				var $first_thumb = $woocommerce_product_gallery_nav.find('.woocommerce-product-gallery__wrapper-nav li.woocommerce-product-gallery__first-thumb img', $row);
139				if ( SiteParameters.uncode_adaptive == true ) {
140					var data_crop = $first_thumb.attr('data-crop'),
141						data_singlew = $first_thumb.attr('data-singlew'),
142						data_singleh = $first_thumb.attr('data-singleh');
143
144					$first_thumb
145						.attr('src', gallery_thumb)
146						.attr('data-path', variation.uncode_image_path)
147						.attr('data-guid', variation.uncode_image_guid)
148						.attr('data-uniqueid', variation.data_uniqueid)
149						.attr('data-width', variation.data_width)
150						.attr('data-height', variation.data_height)
151						.attr('data-singlew', variation.data_singlew)
152						.attr('data-singleh', variation.data_singleh)
153						.attr('data-crop', variation.data_crop);
154
155					if (!$woocommerce_product_gallery_nav.hasClass('lateral-nav-wrapper')) {
156						$first_thumb.removeClass(['async-done', 'adaptive-fetching']).addClass('adaptive-async');
157						UNCODE.adaptive();
158					}
159				} else {
160					$first_thumb
161						.attr('src', gallery_thumb);
162					if ( image_srcset ) {
163						$first_thumb.attr('srcset', image_srcset);
164					}
165					$(window).trigger('woocommerce_variation_has_loaded');
166				}
167			}
168
169			if ( $col_bg.length ) {
170				var objImg = new Image(),
171					bg_img_src;
172				if ( $col_bg.hasClass( 'async-done') ) {
173					bg_img_src = variation.image_link;
174				} else {
175					bg_img_src = variation.image_src;
176				}
177				objImg.src = bg_img_src;
178				objImg.onload = function() {
179					$col_bg.animate({ opacity: 0 }, 100, function(){
180						$col_bg.css({'background-image':'url('+bg_img_src+')'});
181						$col_bg.animate({ opacity: 1 }, 250);
182					});
183				}
184			}
185		}
186	}
187
188	function reset_data(event) {
189		if ( UNCODE.single_product_variation_already_changed ) {
190			var $col_bg = $('.uncol-featured-image .background-inner'),
191				$first_thumb = $('.woocommerce-product-gallery__first-thumb img'),
192				bg_img_src,
193				bg_img_srcset,
194				objImg = new Image();
195
196			if ( $col_bg.length ) {
197				bg_img_src = $col_bg.attr('data-o_src');
198				objImg = new Image();
199				objImg.src = bg_img_src;
200				objImg.onload = function() {
201					$col_bg.animate({ opacity: 0 }, 100, function(){
202						$col_bg.css({'background-image':'url('+bg_img_src+')'});
203						$col_bg.animate({ opacity: 1 }, 250);
204					});
205				}
206			} else if ( $first_thumb.length ) {
207				bg_img_src = $first_thumb.attr('data-o_src');
208				bg_img_srcset = $first_thumb.attr('data-o_srcset');
209				objImg = new Image();
210				objImg.src = bg_img_src;
211				objImg.onload = function() {
212					$first_thumb
213						.attr('src', bg_img_src)
214						.attr('srcset', bg_img_srcset);
215					$(window).trigger('woocommerce_variation_has_loaded');
216				}
217			}
218		}
219	}
220
221	function check_variation_values(event) {
222		var $selects = $(event.currentTarget).find('select'),
223			checkSelectValues = false;
224		$selects.each(function(){
225			var $select = $(this);
226			if ( $select.val() !== '' ) {
227				checkSelectValues = true;
228			}
229		});
230
231		if ( checkSelectValues ) {
232			$(event.currentTarget).removeClass('hide-clear');
233		} else {
234			$(event.currentTarget).addClass('hide-clear');
235		}
236
237		setTimeout(function(){
238			$(window).trigger('woocommerce_variation_has_loaded');
239		}, 1250);
240	}
241
242	function reloadVariations() {
243		remove_from_cart();
244		$('body').on("added_to_cart wc_fragments_refreshed removed_from_cart", get_cart);
245		if (!$('body').hasClass('uncode-default-product-gallery')) {
246			$('.variations_form')
247				.on("show_variation", change_images)
248				.on("reset_data", reset_data)
249				.on("check_variations", check_variation_values)
250				.on('reset_image', reset_product_image);
251		}
252	}
253
254	$(document).ready(reloadVariations);
255	$(document).on('uncode-quick-view-loaded', reloadVariations);
256
257	function handleRatings() {
258		if ( $('#rating').length ) {
259			setTimeout(function(){
260				$('.comment-form-rating').each(function(){
261					var $wrap = $(this),
262						$stars = $('p.stars', $wrap).remove();
263					$( 'select[name="rating"]', $wrap ).hide().before( '<p class="stars"><span><a class="star-1" href="#">1</a><a class="star-2" href="#">2</a><a class="star-3" href="#">3</a><a class="star-4" href="#">4</a><a class="star-5" href="#">5</a></span></p>' );
264				});
265			}, 10);
266		}
267	}
268
269	$(document).ready(handleRatings);
270	$(document).on('vc-uncode_single_product_reviews', handleRatings);
271
272	$(document).on('vc-uncode_single_product_reviews', function(e, el) {
273		if ( el !== 'undefined' ) {
274			var $tabContainer = $(el).closest('.tab-container');
275			$tabContainer.addClass('wootabs');
276		}
277	} );
278
279	var scrollToReviews = function(){
280		if ( $('.wootabs, .wpb_accordion').length ) {
281
282			var hash = window.location.hash,
283				url = window.location.href,
284				$tabs = $( this ).find( 'ul.nav-tabs' ).first(),
285				$accordion = $( this ).find('.panel-group').first(),
286				scrollAction = false,
287				$tabs_wrapper = $tabs.closest('.wootabs'),
288				$both_wrapper,
289				$li, $panel, $click_trigger = false;
290
291			var scrollToReviewsInside = function( clicked ){
292
293				if ( $tabs.length && $('#reviews', $tabs_wrapper).length ) {
294					var tab_reviews = $('#reviews', $tabs_wrapper).first().closest('.tab-pane').attr('id');
295					$('[data-tab-id="' + tab_reviews + '"]', $tabs).addClass('reviews_tab');
296					$li = $('.reviews_tab', $tabs);
297					$both_wrapper = $tabs_wrapper;
298					$click_trigger = true;
299				} else if ( $accordion.length && $('#reviews', $accordion).length ) {
300					var tab_reviews = $('#reviews', $accordion).first().closest('.tab-pane').attr('id');
301					$panel = $('#reviews', $accordion).first().closest('.panel');
302					$li = $('.panel-title', $panel);
303					$both_wrapper = $accordion;
304					$click_trigger = true;
305				} else if ( $('div#reviews').length && clicked ) {
306					$both_wrapper = $('div#reviews');
307					scrollAction = true;
308				} else {
309					return false;
310				}
311
312				if ( $click_trigger && ( hash.toLowerCase().indexOf( 'comment-' ) >= 0 || hash === '#reviews' || hash === '#tab-reviews' ) ) {
313					$( 'a', $li ).click();
314					scrollAction = true;
315				} else if ( $click_trigger && ( url.indexOf( 'comment-page-' ) > 0 || url.indexOf( 'cpage=' ) > 0 ) ) {
316					$( 'a', $li ).click();
317					scrollAction = true;
318				}
319
320				if ( scrollAction ) {
321					var body = $("html, body"),
322						bodyTop = document.documentElement['scrollTop'] || document.body['scrollTop'],
323						delta = bodyTop - ($both_wrapper.length ? $both_wrapper.offset().top : 0),
324						getOffset = UNCODE.get_scroll_offset();
325					if ( typeof $both_wrapper.offset() === 'undefined' )
326						return;
327					scrollTo = $both_wrapper.offset().top - 27;
328					scrollTo -= getOffset;
329
330					var scrollSpeed = (SiteParameters.constant_scroll == 'on') ? Math.abs(delta) / parseFloat(SiteParameters.scroll_speed) : SiteParameters.scroll_speed;
331					if (scrollSpeed < 1000 && SiteParameters.constant_scroll == 'on') scrollSpeed = 1000;
332
333					if (scrollSpeed == 0) {
334						body.scrollTop((delta > 0) ? scrollTo - 0.1 : scrollTo);
335					} else {
336						body.animate({
337							scrollTop: (delta > 0) ? scrollTo - 0.1 : scrollTo
338						}, scrollSpeed, 'easeInOutQuad');
339					}
340				} else {
341					return false;
342				}
343			};
344
345			scrollToReviewsInside( false );
346
347			$('a.woocommerce-review-link').on('click', function(e) {
348				e.preventDefault();
349				hash = '#reviews';
350				scrollToReviewsInside( true );
351			});
352
353		}
354	}
355	$(document).ready(scrollToReviews);
356
357	var qtyPlusMinus = function(){
358		$('.qty-inset:not(.qty-inset-active)').each(function(){
359			var $qtyInsets = $(this).addClass('qty-inset-active'),
360				$input = $('input.qty', $qtyInsets),
361				$minus = $('.qty-minus', $qtyInsets),
362				$plus = $('.qty-plus', $qtyInsets),
363				step = parseFloat( $input.attr('step') ),
364				min = parseFloat( $input.attr('min') ),
365				max = parseFloat( $input.attr('max') ),
366				value = parseFloat($input.val());
367
368			if ( isNaN(step) ) {
369				step = 1;
370			}
371
372			if ( isNaN(min) ) {
373				min = 1;
374			}
375
376			if ( isNaN(value) ) {
377				value = 0;
378				$input.val( value );
379			}
380
381			$minus.on('click', function () {
382				if (UncodeWCParameters.activate_input_check_on_click) {
383					step = parseFloat( $input.attr('step') );
384					min = parseFloat( $input.attr('min') );
385					max = parseFloat( $input.attr('max') );
386					if ( isNaN(step) ) {
387						step = 1;
388					}
389					if ( isNaN(min) ) {
390						min = 1;
391					}
392				}
393
394				value = parseFloat( $input.val() ) - step;
395				if ( value < min ) {
396					value = min;
397				}
398				$input.val( value ).trigger( 'change' );
399			});
400
401			$plus.on('click', function () {
402				if (UncodeWCParameters.activate_input_check_on_click) {
403					console.log('click');
404					step = parseFloat( $input.attr('step') );
405					min = parseFloat( $input.attr('min') );
406					max = parseFloat( $input.attr('max') );
407					if ( isNaN(step) ) {
408						step = 1;
409					}
410					if ( isNaN(min) ) {
411						min = 1;
412					}
413				}
414
415				value = parseFloat( $input.val() ) + step;
416				if ( !isNaN(max) && value > max ) {
417					value = max;
418				}
419				$input.val( value ).trigger( 'change' );
420			});
421		});
422	};
423
424	var resizeCartRow = function(){
425		if ($('form.woocommerce-cart-form').length > 0) {
426			window.dispatchEvent(new CustomEvent('vc-resize'));
427		}
428	};
429
430	$(document.body).on('updated_cart_totals', qtyPlusMinus);
431	$(document.body).on('updated_cart_totals', resizeCartRow);
432	$(document).ready(qtyPlusMinus);
433	$(document).on('vc-frontend:vc_button', qtyPlusMinus);
434
435	var woocommerce_product_gallery = function() {
436		$( 'body:not(.single-uncodeblock) .woocommerce-product-gallery' ).each( function() {
437			if ($('body').hasClass('uncode-default-product-gallery')) {
438				return;
439			}
440
441			var $slider = $(this);
442
443			UNCODE_WC.product_gallery($slider);
444		});
445	}
446
447	UNCODE_WC.product_gallery = function($slider) {
448		var $parent = $slider.closest('.uncode-wrapper').length ? $slider.closest('.uncode-wrapper') : $slider.closest('.uncont'),
449			cols = parseFloat( $slider.attr('data-columns') ),
450			dots = $parent.attr('data-dots') == 'true',
451			gutter = $parent.length && typeof $parent.attr('data-gutter') !== 'undefined' ? parseFloat( $parent.attr('data-gutter') ) : 18,
452			$main = $('.woocommerce-product-gallery__wrapper.owl-carousel', $parent),
453			$stack = $('.woocommerce-layout-images-stack-lateral .woocommerce-product-gallery__wrapper', $parent),
454			mainL = $main.find('.woocommerce-product-gallery__image').length,
455			$thumbs = $('.woocommerce-product-gallery__wrapper-nav:not(.lateral-nav)', $parent),
456			$thumbs_nav = $('.woocommerce-product-gallery__wrapper-nav', $parent),
457			thumbsL = $thumbs.find('li').length;
458
459		if ($.fn.owlCarousel) {
460			if ( mainL > 1 && $slider.hasClass('owl-carousel-wrapper') ) {
461				$main.owlCarousel({
462					items: 1,
463					autoHeight: true,
464					rtl: $('body').hasClass('rtl') ? true : false,
465					responsiveRefreshRate: 200,
466					responsive: {
467						0: {
468							dots: $('.woocommerce-product-gallery__wrapper-nav.lateral-nav', $parent).length || dots === true
469						},
470						960: {
471							dots: dots
472						}
473					}
474				}).on('changed.owl.carousel', function(event) {
475					if (event.namespace && event.property.name === 'position') {
476						var target = event.relatedTarget.relative(event.property.value, true);
477						var data = $thumbs.data('owl.carousel');
478						if ( ! $('.owl-item', $thumbs).eq( target ).hasClass('active') ) {
479							$thumbs.owlCarousel( 'to', target, 300, true );
480						}
481					}
482				});
483				$main.on('translate.owl.carousel', function(event) {
484					$(event.currentTarget).addClass('owl-translating');
485				});
486				$main.on('translated.owl.carousel', function(event) {
487					$(event.currentTarget).removeClass('owl-translating');
488				});
489				$thumbs.on('initialized.owl.carousel', function(event) {
490					$thumbs.closest('.woocommerce-product-gallery-nav-wrapper').css({
491						opacity: 1
492					});
493				}).owlCarousel({
494					items: cols,
495					margin: gutter,
496					autoHeight: true,
497					nav: true,
498					rtl: $('body').hasClass('rtl') ? true : false,
499					mouseDrag: cols < thumbsL,
500					navText: ['<div class="owl-nav-container btn-default btn-hover-nobg"><i class="fa fa-fw fa-angle-left"></i></div>', '<div class="owl-nav-container btn-default btn-hover-nobg"><i class="fa fa-fw fa-angle-right"></i></div>'],
501					responsiveRefreshRate: 100,
502				});
503				$(window).on('load uncode-quick-view-first-hover woocommerce_variation_has_loaded', function () {
504					$main.trigger('refresh.owl.carousel');
505					$thumbs.trigger('refresh.owl.carousel');
506
507					var product_div = $main.closest('div.woocommerce-product-gallery--with-variation-gallery');
508
509					if (!product_div.length > 0) {
510						if (!$('.owl-item', $main).eq(0).hasClass('active')) {
511							$main.owlCarousel( 'to', 0, 300, true );
512						}
513						if (!$('.owl-item', $thumbs).eq(0).hasClass('active')) {
514							$thumbs.owlCarousel( 'to', 0, 300, true );
515						}
516					}
517				});
518			}
519		}
520
521		var scrollBody = function(index) {
522			$('.woocommerce-product-gallery__thumb', $thumbs_nav).removeClass('is-selected');
523			$('.woocommerce-product-gallery__thumb', $thumbs_nav).eq(index).addClass('is-selected');
524
525			var top_gutter = parseInt($stack.closest('.row').css('padding-top'));
526
527			var getSection = $('.woocommerce-product-gallery__image', $stack).eq(index),
528				scrollTo;
529
530			if (getSection == undefined) return;
531
532			var body = $("html, body"),
533				bodyTop = document.documentElement['scrollTop'] || document.body['scrollTop'],
534				delta = bodyTop - ($('.woocommerce-product-gallery__image', $stack).eq(index).length ? $('.woocommerce-product-gallery__image', $stack).eq(index).offset().top : 0),
535				getOffset = UNCODE.get_scroll_offset(index);
536			if ( typeof getSection.offset() === 'undefined' ) {
537				return;
538			}
539			scrollTo = getSection.offset().top;
540
541			if  ( !( $('.menu-desktop-transparent').length && UNCODE.wwidth > UNCODE.mediaQuery ) && !( $('.menu-mobile-transparent').length && UNCODE.wwidth <= UNCODE.mediaQueryMobile ) ) {
542				var shrink = typeof $('.navbar-brand').data('padding-shrink') !== 'undefined' ?  $('.navbar-brand').data('padding-shrink')*2 : 36;
543				if ( $('.menu-sticky .menu-container:not(.menu-hide)').length && $('.menu-shrink').length ) {
544					scrollTo += UNCODE.menuHeight - ( $('.navbar-brand').data('minheight') + shrink );
545				}
546
547				if ( $('.menu-sticky .menu-container:not(.menu-hide)').length && ! $('.menu-shrink').length && $('.body').hasClass('vmenu') ) {
548					if ( index === 0 ) {
549						scrollTo = 0;
550					} else {
551						scrollTo -= $('.menu-sticky .menu-container').outerHeight();
552					}
553				} else {
554					scrollTo -= getOffset;
555				}
556			}
557
558			scrollTo -= top_gutter;
559
560			var scrollSpeed = (SiteParameters.constant_scroll == 'on') ? Math.abs(delta) / parseFloat(SiteParameters.scroll_speed) : SiteParameters.scroll_speed;
561			if (scrollSpeed < 1000 && SiteParameters.constant_scroll == 'on') scrollSpeed = 1000;
562
563			if (index != 0) {
564				UNCODE.scrolling = true;
565			}
566
567			if (scrollSpeed == 0) {
568				body.scrollTop((delta > 0) ? scrollTo - 0.1 : scrollTo);
569				UNCODE.scrolling = false;
570			} else {
571				body.on("scroll wheel DOMMouseScroll mousewheel touchmove", function(){
572					$(this).stop();
573				}).stop(true,false).animate({
574					scrollTop: (delta > 0) ? scrollTo - 0.1 : scrollTo
575				}, scrollSpeed, 'easeInOutCubic', function(){
576					UNCODE.scrolling = false;
577				});
578			}
579
580		};
581
582		var changeThumbActive = function(section, index) {
583			var newSection = $('.woocommerce-product-gallery__thumb', $thumbs_nav).eq(index);
584			if (newSection.length) {
585				$('.woocommerce-product-gallery__thumb', $thumbs_nav).removeClass('is-selected');
586				newSection.addClass('is-selected');
587			}
588		}
589
590		$('.woocommerce-product-gallery__image', $stack).each(function(index, val) {
591			new Waypoint({
592				context: UNCODE.isUnmodalOpen ? document.getElementById('unmodal-content') : window,
593				element: val,
594				handler: function(direction) {
595					changeThumbActive(this.element, index);
596				},
597			});
598		});
599
600		$thumbs_nav.on( 'click', '.woocommerce-product-gallery__thumb', function(e){
601			e.preventDefault();
602			var number = $(this).index();
603			if ( $main.length ) {
604				number = $(this).closest('.owl-item').index();
605				if ( number < 0 ) {
606					number = $(this).index();
607				}
608				$main.owlCarousel( 'to', number, 300, true );
609			} else if ( $stack.length ) {
610				scrollBody( number );
611			}
612		});
613
614		var uncodeZoom = function(){
615			if ($.fn.zoom && $('body').hasClass('wc-zoom-enabled') ) {
616				var $zoomTrgt = $('.woocommerce-product-gallery__image', $slider);
617
618				if ( $('.thumbnails', $slider).length )
619					$zoomTrgt = $zoomTrgt.first();
620
621				$zoomTrgt.trigger( 'zoom.destroy' );
622				$zoomTrgt.zoom();
623
624				var checkForZoom = function(){
625
626					if ( $parent.hasClass( 'no-zoom-mobile' ) && UNCODE.wwidth < 960 ) {
627						$zoomTrgt.trigger( 'zoom.destroy' ).addClass('mouse-moving');
628						$('.zoom-overlay', $zoomTrgt).remove();
629						return false;
630					}
631					$('.woocommerce-product-gallery__image').each(function(){
632						var $wrap = $(this),
633							$zoomImg = $('.zoomImg', $wrap);
634
635						if (UNCODE.isMobile || !$zoomImg.length) {
636							$wrap.addClass('mouse-moving');
637						}
638					});
639
640					var galleryWidth = $zoomTrgt.width(),
641						zoom_options = {
642							touch: true,
643							callback: function(){
644								$('.woocommerce-product-gallery__image').each(function(){
645									var $wrap = $(this),
646										$zoomImg = $('.zoomImg', $wrap),
647										$overZoom = $('.zoom-overlay', $wrap),
648										$imageIL = $('a[data-lbox]', $wrap),
649										$carousel = $wrap.closest('.owl-carousel');
650
651									$wrap.prepend($zoomImg);
652									if (UNCODE.isMobile || !$zoomImg.length) {
653										$wrap.addClass('mouse-moving');
654										$zoomImg.css({
655											'visibility':'hidden'
656										});
657									}
658
659									/* Make work everything on touch events */
660									var onlongtouch,
661										timer,
662										now,
663										touchduration = 500,
664										startX = 0, startY, newX, newY;
665
666									$wrap.parent().on('mousemove.zoom', function(){
667										if ( ! $wrap.hasClass('mouse-moving') ) {
668											if ( startX == 0 ) {
669												startX = event.clientX;
670												startY = event.clientY;
671											}
672											newX = event.clientX;
673											newY = event.clientY;
674											if ( Math.abs( newX - startX ) > 50 && Math.abs( newY - startY ) > 50 ) {
675												$wrap.addClass('mouse-moving');
676											}
677										}
678									});
679
680									$overZoom.on('touchstart.zoom', function (e) {
681										now = new Date().getTime();
682									}).on('touchmove.zoom', function (e) {
683										setTimeout(function(){
684											$zoomImg.css({
685												'visibility':'visible'
686											});
687										}, 100);
688									}).on('touchend.zoom', function (e) {
689										var newTap = new Date().getTime();
690										if ( newTap - now < 75 && ! $('body').hasClass('ilightbox-noscroll') ) {
691											$imageIL.trigger('itap.iL');
692										}
693										if (UNCODE.isMobile) {
694											$zoomImg.css({
695												'visibility':'hidden'
696											});
697										}
698									});
699
700								});
701							}
702						};
703
704					if ( 'ontouchstart' in window ) {
705						zoom_options.on = 'click';
706					}
707
708					$zoomTrgt.trigger( 'zoom.destroy' );
709					$zoomTrgt.each(function(){
710						var $thisTrgt = $(this),
711							$img = $('img', $thisTrgt);
712
713						if ( $img.data( 'large_image_width' ) > galleryWidth ) {
714							$thisTrgt.zoom(zoom_options);
715						} else {
716							$thisTrgt.trigger( 'zoom.destroy' );
717						}
718
719					});
720				};
721				checkForZoom();
722
723				var setCheckForZoom;
724				$(window).on( 'resize', function(){
725					clearTimeout(setCheckForZoom);
726					setCheckForZoom = setTimeout( checkForZoom, 500 );
727				});
728			}
729		};
730		uncodeZoom();
731		window.addEventListener('load', uncodeZoom);
732	}
733
734	woocommerce_product_gallery();
735
736	$(window).on('unmodal-open', function(){
737		$('#unmodal-content .woocommerce-product-gallery__image').removeClass('mouse-moving');
738	})
739	$(document).on('unmodal-close', function(){
740		$('#unmodal-content .woocommerce-product-gallery__image').removeClass('mouse-moving');
741	})
742
743	/************************************************************
744	 * Redirect to custom empty cart page
745	 ************************************************************/
746
747	$(document.body).on('wc_cart_emptied', redirect_to_custom_empty_cart);
748
749	function redirect_to_custom_empty_cart() {
750		if (UncodeWCParameters.empty_cart_url !== '') {
751			window.location.replace(UncodeWCParameters.empty_cart_url);
752		}
753	}
754
755	/************************************************************
756	 * Make the variation price inherit the font family from main price
757	************************************************************/
758
759	function variation_price_font() {
760
761		var $forms = $('form.variations_form');
762
763		$forms.each(function(){
764			var $form = $(this);
765
766			$form.on('woocommerce_variation_has_changed wc_variation_form', function(){
767				var $var_price = $('.woocommerce-variation-price .woocommerce-Price-amount'),
768					$row = $form.closest('.vc_row'),
769					$main_price = $('.heading-text .woocommerce-Price-amount', $row);
770
771				if ( $main_price.length ) {
772					var $price_wrap = $main_price.closest('.heading-text'),
773						$price_nest = $('> *:first-child', $price_wrap),
774						font_class = $price_nest.attr('class').split(' '),
775						i;
776
777					for ( i = 0; i < font_class.length; i++ ) {
778						if ( font_class[i].indexOf('font') !== -1 && font_class[i].indexOf('fontsize') === -1 ) {
779							$var_price.addClass( font_class[i] );
780						}
781					}
782				}
783			});
784		});
785	}
786
787	$(document).ready(function() {
788		variation_price_font();
789	});
790
791	/************************************************************
792	 * Show minicart when adding something
793	************************************************************/
794
795	var cartShow, cartHover,
796		sideCart_scrollTop = $('html, body').scrollTop();;
797
798	var minicart_notify = function(){
799		var $body = $('body');
800
801		if ( ! $body.hasClass('minicart-notification') ) {
802			return false;
803		}
804
805		var $sidecart = $('#uncode_sidecart'),
806			$miniCart = $('.menu-smart .uncode-cart-dropdown'),
807			$smartMenu = $miniCart.closest('.menu-smart');
808
809		$miniCart.on('hover', function(){
810			clearTimeout(cartHover);
811		});
812
813		var show_added_to_cart = function(e){
814
815			clearTimeout(cartShow);
816			clearTimeout(cartHover);
817
818			if ( $sidecart.length && ( ! ( $body.hasClass('uncode-sidecart-mobile-disabled') && UNCODE.wwidth <= UNCODE.mediaQuery ) ) ) {
819				$sidecart.imagesLoaded().done( function( instance ) {
820					setTimeout(function(){
821						sideCart_scrollTop = $('html, body').scrollTop();
822						$body.addClass('uncode-sidecart-open');
823						$(window).trigger('uncode-sidecart-open');
824						$('html, body').scrollTop(sideCart_scrollTop);
825					}, 500);
826				});
827			}
828
829			var show_added_to_cart_timeout = function(){
830				cartShow = setTimeout(function(){
831					$miniCart.imagesLoaded().done( function( instance ) {
832						$smartMenu.smartmenus('itemActivate', $('.uncode-cart > a'));
833						cartHover = setTimeout(function(){
834							$smartMenu.smartmenus('menuHideAll');
835						}, 4000);
836					});
837				}, 500);
838			};
839
840			if ( UNCODE.wwidth >= 960 ) {
841				if ( e == 'uncode-wc-added-to-cart' ) {
842					show_added_to_cart_timeout();
843				} else {
844					$( document.body ).on( 'wc_fragments_loaded', function(){
845						show_added_to_cart_timeout();
846					});
847				}
848			}
849		};
850
851		if ( $('body').hasClass('uncode-wc-disable-added-to-cart-trigger')) {
852			$( document.body ).on( 'added_to_cart', function() {
853				setTimeout(function(){
854					$(document.body).trigger('wc_fragment_refresh');
855				}, 500);
856			} );
857		} else {
858			$( document.body ).on( 'added_to_cart', show_added_to_cart );
859		}
860
861		$(document).ready(function() {
862			if ( $('body').hasClass('uncode-wc-added-to-cart')) {
863				show_added_to_cart('uncode-wc-added-to-cart');
864			}
865		});
866
867	};
868
869	minicart_notify();
870
871	/************************************************************
872	 * View Cart Button
873	************************************************************/
874	$( document.body ).on( 'wc_cart_button_updated', function(e, $button){
875		if ( $(document.body).hasClass('minicart-notification') || wc_add_to_cart_params == undefined ) {
876			return false;
877		}
878
879		$button
880			.addClass('added_and_noted')
881			.removeClass('ajax_add_to_cart')
882			.find('.added_to_cart')
883			.text( wc_add_to_cart_params.i18n_view_cart )
884			.on('click', function(e){
885				e.preventDefault();
886				window.location.href = wc_add_to_cart_params.cart_url;
887				return false;
888			});
889	});
890
891	/************************************************************
892	 * Side Cart
893	************************************************************/
894	var init_sidecart = function(){
895		var $body = $('body.uncode-sidecart-enabled');
896		if ( ! $body.length ) {
897			return false;
898		}
899
900		var $cart_icon = $('.mobile-shopping-cart, .uncode-cart.menu-item-link > a'),
901			$sidecart = $('#uncode_sidecart'),
902			$view_cart = $('a.wc-forward:not(.checkout)', $sidecart).removeClass('btn-sm'),
903			$checkout = $('a.checkout', $sidecart).removeClass('btn-sm').addClass('btn-flat'),
904			$overlay = $('#uncode_sidecart_overlay'),
905			$close_cart = $('.close-mini-cart', $sidecart),
906			sidecart_hover = false;
907
908		$cart_icon.off('click').on('click', function( e ){
909			if ( $sidecart.length && ! ( $(this).closest('.overlay').length && UNCODE.wwidth > UNCODE.mediaQuery ) && ( ! ( $body.hasClass('uncode-sidecart-mobile-disabled') && UNCODE.wwidth <= UNCODE.mediaQuery ) ) ) {
910				e.preventDefault();
911				e.stopPropagation();
912				sideCart_scrollTop = $('html, body').scrollTop();
913				$body.addClass('uncode-sidecart-open');
914				$(window).trigger('uncode-sidecart-open');
915				$('html, body').scrollTop(sideCart_scrollTop);
916			}
917		});
918
919		$sidecart.on('mouseover',function(){
920			sidecart_hover = true;
921		}).on('mouseout', function(){
922			sidecart_hover = false;
923		});
924
925		$body.on('click', function( e ){
926			if ( $body.hasClass('uncode-sidecart-open') && !sidecart_hover ) {
927				$body.removeClass('uncode-sidecart-open');
928				$(window).trigger('uncode-sidecart-closed');
929				$('html, body').scrollTop(sideCart_scrollTop);
930			}
931		});
932
933		$close_cart.on('click', function( e ){
934			e.preventDefault();
935			$body.removeClass('uncode-sidecart-open');
936			$(window).trigger('uncode-sidecart-closed');
937			$('html, body').scrollTop(sideCart_scrollTop);
938		});
939	};
940	$(document).ready(function(){
941		init_sidecart();
942	});
943	$( document.body ).on("wc_fragments_refreshed added_to_cart removed_from_cart", function(){
944		init_sidecart();
945		requestTimeout( init_sidecart, 1 );
946	});
947
948	var sidecart_size = function(){
949		var $body = $('body.uncode-sidecart-enabled'),
950			$widget_cart = $('.widget_shopping_cart_content'),
951			$mini_cart_item = $('.mini_cart_item', $widget_cart);
952
953		if ( $widget_cart.length ) {
954			$mini_cart_item.each(function(){
955				var $this = $(this),
956 					$img_product = $('.attachment-woocommerce_thumbnail', $this),
957 					imgH = $img_product.height();
958
959 				$this.css({
960 					'min-height': imgH+6
961 				})
962
963			});
964		}
965		if ( $body.length ) {
966
967			var $sidecart = $('#uncode_sidecart'),
968				$cart_header = $('.woocommerce-mini-cart-header', $sidecart),
969				headerH = $cart_header.outerHeight(),
970				$cart_footer = $('.woocommerce-mini-cart-footer', $sidecart),
971				footerH = $cart_footer.outerHeight(),
972				$cart_body = $('.woocommerce-mini-cart-body', $sidecart);
973
974			$cart_body.css({
975				'padding-top':headerH,
976				'padding-bottom':footerH
977			});
978
979		}
980	};
981	$(document).ready(function(){
982		var setCTA;
983		sidecart_size();
984		requestTimeout(function(){
985			$(window).on( 'resize', function(){
986				clearRequestTimeout(setCTA);
987				setCTA = requestTimeout( sidecart_size, 100 );
988			});
989		}, 400);
990	});
991	$( document.body ).on("wc_fragments_refreshed added_to_cart removed_from_cart", function(){
992		sidecart_size();
993		requestTimeout( sidecart_size, 1 );
994	});
995
996	/************************************************************
997	 * Quick view
998	 ************************************************************/
999
1000	var modal_quick_view_content = $('.quick-view-content');
1001	var last_viewed_product_id;
1002
1003	$(document).off('click', '.quick-view-button').on('click', '.quick-view-button', function() {
1004		var _this = $(this);
1005		var product_id = _this.data('post-id');
1006		var post_type = _this.data('post-type');
1007		var post_url = _this.attr('data-post-url');
1008		var single_variation_atts = _this.attr('data-single-variation');
1009
1010		// Empty modal
1011		if (modal_quick_view_content.length > 0) {
1012			modal_quick_view_content.html('');
1013		}
1014
1015		var data = {
1016			action: 'uncode_load_ajax_quick_view',
1017			post_id: product_id,
1018			post_type: post_type,
1019			post_url: post_url,
1020		};
1021
1022		if (single_variation_atts) {
1023			var variation_atts_obj = JSON.parse(single_variation_atts)
1024
1025			for (var att_key in variation_atts_obj) {
1026				if (variation_atts_obj[att_key]) {
1027					data['attribute_' + att_key] = variation_atts_obj[att_key];
1028				}
1029			}
1030		}
1031
1032		// Get quick view content via AJAX
1033		$.ajax({
1034			url: woocommerce_params.ajax_url,
1035			data: data,
1036			type: 'post',
1037			error: function(data) {
1038				if (SiteParameters.enable_debug == true) {
1039					// This console log is disabled by default
1040					// So nothing is printed in a typical installation
1041					//
1042					// It can be enabled for debugging purposes setting
1043					// the 'uncode_enable_debug_on_js_scripts' filter to true
1044					console.log('AJAX error on quick view response');
1045				}
1046			},
1047			success: function(response) {
1048				if (response && response.success === false) {
1049					if (SiteParameters.enable_debug == true) {
1050						// This console log is disabled by default
1051						// So nothing is printed in a typical installation
1052						//
1053						// It can be enabled for debugging purposes setting
1054						// the 'uncode_enable_debug_on_js_scripts' filter to true
1055						if (response.data.error) {
1056							console.log(response.data.error);
1057						} else {
1058							console.log('Unknown error on quick view response');
1059						}
1060					}
1061				} else {
1062					var html = response.data.html;
1063
1064					if (modal_quick_view_content.length > 0) {
1065						modal_quick_view_content.html(html);
1066					}
1067
1068					last_viewed_product_id = product_id;
1069
1070					modal_quick_view_content.imagesLoaded().done( function( instance ) {
1071						$(document).trigger('uncode-unmodal-show-content');
1072						$(document).trigger('uncode-quick-view-loaded');
1073						window.dispatchEvent(new CustomEvent('uncode-quick-view-loaded'));
1074
1075						setTimeout(function(){
1076							modal_quick_view_content.one('mousemove', function(){
1077								window.dispatchEvent(new CustomEvent('uncode-quick-view-first-hover'));
1078							});
1079						}, 10);
1080					});
1081				}
1082			}
1083		});
1084
1085		return false;
1086	});
1087
1088	$(document).on('uncode-quick-view-loaded', function() {
1089		var form_variation = modal_quick_view_content.find('.variations_form');
1090
1091		form_variation.each(function() {
1092			$(this).wc_variation_form();
1093		});
1094
1095		form_variation.trigger('check_variations');
1096		form_variation.trigger('reset_image');
1097
1098		if( typeof $.fn.wc_product_gallery !== 'undefined' ) {
1099			modal_quick_view_content.find('.woocommerce-product-gallery').each(function(){
1100				$(this).wc_product_gallery();
1101			});
1102		}
1103
1104		$( '#unmodal-content' ).on( 'change', '.quantity .qty', function() {
1105			jQuery( this ).closest('form.cart').find('.add_to_cart_button').attr( 'data-quantity', jQuery( this ).val() );
1106		});
1107
1108		woocommerce_product_gallery();
1109		variation_price_font();
1110		qtyPlusMinus();
1111
1112		UNCODE.preventDoubleTransition();
1113		UNCODE.utils();
1114		if (typeof UNCODE.share !== 'undefined') {
1115			UNCODE.share();
1116		}
1117		if (typeof UNCODE.tooltip !== 'undefined') {
1118			UNCODE.tooltip();
1119		}
1120		if (typeof UNCODE.counters !== 'undefined') {
1121			UNCODE.counters();
1122		}
1123		if (typeof UNCODE.countdowns !== 'undefined') {
1124			UNCODE.countdowns();
1125		}
1126		if (typeof UNCODE.tabs !== 'undefined') {
1127			UNCODE.tabs();
1128		}
1129		if (typeof UNCODE.collapse !== 'undefined') {
1130			UNCODE.collapse();
1131		}
1132		if (typeof UNCODE.okvideo !== 'undefined') {
1133			UNCODE.okvideo();
1134		}
1135		if (typeof UNCODE.backgroundSelfVideos !== 'undefined') {
1136			UNCODE.backgroundSelfVideos();
1137		}
1138		UNCODE.tapHover();
1139		if (typeof UNCODE.isotopeLayout !== 'undefined') {
1140			UNCODE.isotopeLayout();
1141		}
1142		if (typeof UNCODE.justifiedGallery !== 'undefined') {
1143			UNCODE.justifiedGallery();
1144		}
1145		if (typeof UNCODE.cssGrid !== 'undefined') {
1146			UNCODE.cssGrid();
1147		}
1148		if (typeof UNCODE.lightbox !== 'undefined' && !SiteParameters.lbox_enhanced) {
1149			UNCODE.lightbox();
1150		}
1151		if (typeof UNCODE.lightgallery !== 'undefined' && SiteParameters.lbox_enhanced) {
1152			UNCODE.lightgallery();
1153		}
1154		if (typeof UNCODE.carousel !== 'undefined') {
1155			UNCODE.carousel($('body'));
1156		}
1157		UNCODE.lettering();
1158		UNCODE.animations();
1159		UNCODE.stickyElements();
1160		if (typeof UNCODE.twentytwenty !== 'undefined') {
1161			UNCODE.twentytwenty();
1162		}
1163		UNCODE.disableHoverScroll();
1164		if (typeof uncode_progress_bar !== 'undefined') {
1165			uncode_progress_bar();
1166		}
1167		if (typeof UNCODE.filters !== 'undefined') {
1168			UNCODE.filters();
1169		}
1170		if (typeof UNCODE.ajax_filters !== 'undefined') {
1171			UNCODE.ajax_filters();
1172		}
1173		if (typeof UNCODE.widgets !== 'undefined') {
1174			UNCODE.widgets();
1175		}
1176
1177		$(document).trigger('yith_wcwl_init');
1178	});
1179
1180	/************************************************************
1181	 * Trigger fragments
1182	 ************************************************************/
1183	if ( SiteParameters.update_wc_fragments == true ) {
1184		$(document).ready(function() {
1185			$(document.body).trigger('wc_fragment_refresh');
1186		});
1187	}
1188
1189	/************************************************************
1190	 * Cart badge
1191	 ************************************************************/
1192	$(document).ready(function() {
1193		if ( SiteParameters.uncode_wc_popup_cart_qty ) {
1194			$(document.body).on('wc_fragments_loaded', function(){
1195				$('.cart-icon-container .badge').removeClass('init-product-counter');
1196			})
1197			.on('uncode_get_cart', function(e, data){
1198				if ( $('.cart-icon-container .badge').text() !== '' || ( data > 0 ) ) {
1199					$('.cart-icon-container .badge').addClass('init-product-counter');
1200				} else {
1201					$('.cart-icon-container .badge').removeClass('init-product-counter');
1202				}
1203			});
1204		}
1205	});
1206
1207})(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.