PageSourceSearch

https://ge-iic.com/wp-content/themes/thegem/js/thegem-gallery.js?ver=5.12.3.1

js ge-iic.com collected 2026-10-01 12:11:24 UTC 22,384 bytes, 689 lines download raw bytes

1(function($) {
2
3	$.fn.buildSimpleGalleries = function() {
4		$('.gem-simple-gallery:not(.activated)', this).each(function() {
5
6			var $galleryElement = $(this);
7			$galleryElement.addClass('activated');
8
9			var $thumbItems = $('.gem-gallery-item', $galleryElement);
10
11			var $galleryItemsWrap = $('<div class="gem-gallery-items-carousel-wrap"/>')
12				.appendTo($galleryElement);
13			var $galleryItemsCarousel = $('<div class="gem-gallery-items-carousel"/>')
14				.appendTo($galleryItemsWrap);
15			var $galleryItemsNavigation = $('<div class="gem-gallery-items-navigation"/>')
16				.appendTo($galleryItemsWrap);
17			var $galleryItemsPrev = $('<a href="#" class="gem-prev gem-gallery-items-prev" aria-label="arrow-left"></a>')
18				.appendTo($galleryItemsNavigation);
19			var $galleryItemsNext = $('<a href="#" class="gem-next gem-gallery-items-next" aria-label="arrow-right"></a>')
20				.appendTo($galleryItemsNavigation);
21			$thumbItems.appendTo($galleryItemsCarousel);
22			$('a', $galleryItemsCarousel).addClass('fancy-gallery');
23			$galleryItemsCarousel.initGalleryFancybox();
24		});
25	}
26
27	$.fn.updateGalleries = function() {
28		$('.gem-gallery', this).each(updateGallery);
29	}
30
31	$.fn.updateSimpleGalleries = function() {
32		$('.gem-simple-gallery', this).each(updateSimpleGallery);
33	}
34
35
36	$(function() {
37
38		function gallery_images_loaded($box, image_selector, callback) {
39			function check_image_loaded(img) {
40				return img.getAttribute('loading') === 'lazy' || img.getAttribute('src') === '' || (img.complete && img.naturalWidth !== undefined && img.naturalWidth !== 0);
41			}
42
43			var $images = $(image_selector, $box).filter(function() {
44					return !check_image_loaded(this);
45				}),
46				images_count = $images.length;
47
48			if (images_count == 0) {
49				return callback();
50			}
51
52			if (window.gemBrowser.name == 'ie' && !isNaN(parseInt(window.gemBrowser.version)) && parseInt(window.gemBrowser.version) <= 10) {
53				function image_load_event() {
54					images_count--;
55					if (images_count == 0) {
56						callback();
57					}
58				}
59
60				$images.each(function() {
61					if (check_image_loaded(this)) {
62						return;
63					}
64
65					var proxyImage = new Image();
66					proxyImage.addEventListener( 'load', image_load_event );
67					proxyImage.addEventListener( 'error', image_load_event );
68					proxyImage.src = this.src;
69				});
70				return;
71			}
72
73			$images.on('load error', function() {
74				images_count--;
75				if (images_count == 0) {
76					callback();
77				}
78			});
79		}
80
81		function init_circular_overlay($gallery, $set) {
82			if (!$gallery.hasClass('hover-circular')) {
83				return;
84			}
85
86			$('.gallery-item', $set).on('mouseenter touchstart', function() {
87				var overlayWidth = $('.overlay', this).width(),
88					overlayHeight = $('.overlay', this).height(),
89					$overlayCircle = $('.overlay-circle', this),
90					maxSize = 0;
91
92				if (overlayWidth > overlayHeight) {
93					maxSize = overlayWidth;
94					$overlayCircle.height(overlayWidth)
95				} else {
96					maxSize = overlayHeight;
97					$overlayCircle.width(overlayHeight);
98				}
99				maxSize += overlayWidth * 0.3;
100
101				$overlayCircle.css({
102					marginLeft: -maxSize / 2,
103					marginTop: -maxSize / 2
104				});
105			});
106		}
107
108		function initGalleryGrid() {
109			var layoutMode = 'masonry-custom';
110			if ($(this).hasClass('metro')) {
111				layoutMode = 'metro'
112			}
113
114			if (window.tgpLazyItems !== undefined) {
115				var isShowed = window.tgpLazyItems.checkGroupShowed(this, function (node) {
116					initGalleryGrid.call(node);
117				});
118				if (!isShowed) {
119					return;
120				}
121			}
122
123			var $gallery = $(this);
124			var $set = $('.gallery-set', this);
125
126			gallery_images_loaded($set, '.image-wrap img', function () {
127				$gallery.closest('.gallery-preloader-wrapper').prev('.preloader').remove();
128
129				init_circular_overlay($gallery, $set);
130
131				if ($gallery.hasClass('loading-animation')) {
132					var itemsAnimations = $gallery.itemsAnimations({
133						itemSelector: '.gallery-item',
134						scrollMonitor: true
135					});
136				}
137
138				var init_gallery = true;
139
140				if (!$gallery.hasClass('disable-isotope')) {
141					let size_container = $('.portfolio-item-size-container .gallery-item', $gallery);
142					let active_filter = $gallery.data('filter');
143					let filter = '';
144					if (active_filter.length) {
145						active_filter.forEach(function (item, index) {
146							if (index != 0) {
147								filter += ', ';
148							}
149							filter += '.' + item;
150						});
151					} else {
152						filter = '*';
153					}
154					$set
155						.on('arrangeComplete', function (event, filteredItems) {
156							if (init_gallery) {
157								init_gallery = false;
158
159								var items = [];
160								filteredItems.forEach(function (item) {
161									items.push(item.element);
162								});
163
164								if ($gallery.hasClass('loading-animation')) {
165									itemsAnimations.show($(items));
166								}
167							}
168						}).on('layoutComplete', function (event, laidOutItems) {
169							let items = [];
170							laidOutItems.forEach(function (item) {
171								items.push(item.element);
172							});
173
174							if (!init_gallery && $gallery.hasClass('loading-animation')) {
175								itemsAnimations.reinitItems($(items));
176								itemsAnimations.show($(items));
177							}
178						})
179						.thegem_isotope({
180							itemSelector: '.gallery-item',
181							itemImageWrapperSelector: '.image-wrap',
182							fixHeightDoubleItems: $gallery.hasClass('gallery-style-justified'),
183							layoutMode: layoutMode,
184							'masonry-custom': {
185								columnWidth: (size_container.length > 0) ? size_container[0] : '.gallery-item:not(.double-item)'
186							},
187							filter: filter
188						});
189				} else {
190					if ($gallery.hasClass('loading-animation')) {
191						$gallery.itemsAnimations('instance').show($('.gallery-item', $gallery));
192					}
193				}
194			});
195
196			if ($('.portfolio-filters', $gallery).length) {
197				$('.portfolio-filters, .portfolio-filters-resp ul li', $gallery).on('click', 'a', function (e) {
198					let thisFilter = $(this).data('filter');
199					let filtersPanel = $(this).parents('.portfolio-top-panel-left');
200					let isMultiple = filtersPanel.hasClass('multiple');
201
202					if (thisFilter) {
203						e.preventDefault();
204					} else {
205						return;
206					}
207
208					let filtersArr = $gallery.data('gallery-filter') ? $gallery.data('gallery-filter') : [];
209
210					if (thisFilter === '*') {
211						filtersArr = [];
212						filtersPanel.find('a').removeClass('active');
213						$(this).addClass('active');
214					} else if ($(this).hasClass('active')) {
215						$(this).removeClass('active');
216						if (filtersArr.includes(thisFilter)) {
217							const index = filtersArr.indexOf(thisFilter);
218							if (index > -1) {
219								filtersArr.splice(index, 1);
220							}
221							if (filtersArr.length === 0) {
222								filtersPanel.find('a.all').addClass('active');
223							}
224						}
225					} else {
226						if (!isMultiple) {
227							filtersPanel.find('a').removeClass('active');
228							filtersArr = [];
229						} else {
230							filtersPanel.find('a.all').removeClass('active');
231						}
232						$(this).addClass('active');
233						filtersArr.push(thisFilter);
234					}
235
236					$gallery.data('gallery-filter', filtersArr);
237
238					filterGallery($gallery, filtersArr);
239
240					if ($('.portfolio-filters-resp', $gallery).length > 0 && typeof $.fn.dlmenu === 'function') {
241						$('.portfolio-filters-resp', $gallery).dlmenu('closeMenu');
242					}
243
244					return false;
245				});
246
247				if (typeof $.fn.dlmenu === 'function') {
248					$('.portfolio-filters-resp', $gallery).dlmenu({
249						animationClasses: {
250							classin: 'dl-animate-in',
251							classout: 'dl-animate-out'
252						}
253					});
254				}
255
256				initFiltersMore($gallery);
257			}
258
259			if ($set.closest('.gem_tab').size() > 0) {
260				$set.closest('.gem_tab').bind('tab-update', function () {
261					if (!$gallery.hasClass('disable-isotope')) {
262						$set.thegem_isotope('layout');
263					}
264				});
265			}
266			$(document).on('show.vc.tab', '[data-vc-tabs]', function () {
267				var $tab = $(this).data('vc.tabs').getTarget();
268				if ($tab.find($set).length && !$gallery.hasClass('disable-isotope')) {
269					$set.thegem_isotope('layout');
270				}
271			});
272		}
273
274		function filterGallery($gallery, filtersArr) {
275
276			let uid = $gallery.data('uid'),
277				queryParams = new URLSearchParams(window.location.search),
278				delArr = [];
279			for (let p of queryParams) {
280				if (p[0].includes(uid)) {
281					delArr.push(p[0]);
282				}
283			}
284			for (let del of delArr) {
285				queryParams.delete(del);
286			}
287
288			if ($gallery.hasClass('loading-animation') && $gallery.itemsAnimations('instance').getAnimationName() != 'disabled') {
289				$('.gallery-item', $gallery).addClass('item-animations-not-inited');
290			} else {
291				$('.gallery-item', $gallery).removeClass('item-animations-not-inited');
292			}
293
294			if (!$gallery.hasClass('disable-isotope')) {
295
296				let $set = $('.gallery-set', $gallery);
297
298				if (filtersArr.length) {
299					queryParams.set('grid_' + uid + '-filter', filtersArr);
300					let filter = '';
301					filtersArr.forEach(function (item, index) {
302						if (index != 0) {
303							filter += ', ';
304						}
305						filter += '.' + item;
306					});
307					$set.thegem_isotope({filter: filter});
308				} else {
309					$set.thegem_isotope({filter: '*'});
310				}
311			} else {
312
313				if (filtersArr.length === 0) {
314					$gallery.find('.gallery-item').show();
315				} else {
316					queryParams.set('grid_' + uid + '-filter', filtersArr);
317
318					$gallery.find('.gallery-item:not(.size-item)').hide();
319
320					filtersArr.forEach(function (item, index) {
321						$gallery.find('.gallery-item.' + item).show();
322					});
323				}
324
325				if ($gallery.hasClass('loading-animation')) {
326					if (filtersArr.length === 0) {
327						$gallery.itemsAnimations('instance').reinitItems($('.gallery-item', $gallery));
328						$gallery.itemsAnimations('instance').show($('.gallery-item', $gallery));
329					} else {
330						filtersArr.forEach(function (item, index) {
331							$gallery.itemsAnimations('instance').reinitItems($('.gallery-item.' + item, $gallery));
332							$gallery.itemsAnimations('instance').show($('.gallery-item.' + item, $gallery));
333						});
334					}
335				}
336			}
337
338			if (queryParams.toString().length > 0) {
339				history.replaceState(null, null, "?" + queryParams.toString());
340			} else {
341				history.replaceState(null, null, location.href.split("?")[0]);
342			}
343		}
344
345		function initFiltersMore($gallery) {
346			if (!$('.portfolio-filters-more', $gallery).length)
347				return false;
348
349			$('.portfolio-filters-more', $gallery).on('mouseover', function () {
350				$(this).addClass('active');
351			}).on('mouseout', function () {
352				$(this).removeClass('active');
353			});
354
355			$('.portfolio-filters-more a', $gallery).on('click', function (e) {
356				$('.portfolio-filters-more', $gallery).mouseout();
357			});
358		}
359
360		if (typeof $.fn.scSticky === 'function') {
361			$('.filters-top-sticky').scSticky({hideStickyHeader: true, fullWidth: true});
362		}
363
364		function initGallerySlider() {
365			if (window.tgpLazyItems !== undefined) {
366				var isShowed = window.tgpLazyItems.checkGroupShowed(this, function(node) {
367					initGallerySlider.call(node);
368				});
369				if (!isShowed) {
370					return;
371				}
372			}
373
374			var $gallery = $(this);
375			var $set = $('.gallery-set', this);
376			var $items = $('.gallery-item', $set);
377
378			init_circular_overlay($gallery, $set);
379
380			// update images list
381			$set.wrap('<div class="gem-gallery-preview-carousel-wrap clearfix"/>');
382			var $galleryPreviewWrap = $('.gem-gallery-preview-carousel-wrap', this);
383			$galleryPreviewWrap.wrap('<div class="gem-gallery-preview-carousel-padding clearfix"/>');
384			var $galleryPreviewNavigation = $('<div class="gem-gallery-preview-navigation"/>')
385				.appendTo($galleryPreviewWrap);
386			var $galleryPreviewPrev = $('<a href="#" class="gem-prev gem-gallery-preview-prev" aria-label="arrow-left"></a>')
387				.appendTo($galleryPreviewNavigation);
388			var $galleryPreviewNext = $('<a href="#" class="gem-next gem-gallery-preview-next" aria-label="arrow-right"></a>')
389				.appendTo($galleryPreviewNavigation);
390
391			// create thumbs list
392			var $galleryThumbsWrap = $('<div class="gem-gallery-thumbs-carousel-wrap col-lg-12 col-md-12 col-sm-12 clearfix" style="opacity: 0"/>')
393				.appendTo($gallery);
394			var $galleryThumbsCarousel = $('<ul class="gem-gallery-thumbs-carousel"/>')
395				.appendTo($galleryThumbsWrap);
396			var $galleryThumbsNavigation = $('<div class="gem-gallery-thumbs-navigation"/>')
397				.appendTo($galleryThumbsWrap);
398			var $galleryThumbsPrev = $('<a href="#" class="gem-prev gem-gallery-thumbs-prev" aria-label="arrow-left"></a>')
399				.appendTo($galleryThumbsNavigation);
400			var $galleryThumbsNext = $('<a href="#" class="gem-next gem-gallery-thumbs-next" aria-label="arrow-right"></a>')
401				.appendTo($galleryThumbsNavigation);
402			var thumbItems = '';
403			$items.each(function() {
404				thumbItems += '<li><span><img src="' + $('.image-wrap img', this).data('thumb-url') + '" alt="" /></span></li>';
405			});
406			var $thumbItems = $(thumbItems);
407			$thumbItems.appendTo($galleryThumbsCarousel);
408			$thumbItems.each(function(index) {
409				$(this).data('gallery-item-num', index);
410			});
411
412			var $galleryPreview = $set.carouFredSel({
413				auto: false,
414				circular: false,
415				infinite: false,
416				responsive: true,
417				width: '100%',
418				height: '100%',
419				items: 1,
420				align: 'center',
421				prev: $galleryPreviewPrev,
422				next: $galleryPreviewNext,
423				swipe: true,
424				scroll: {
425					items: 1,
426					onBefore: function(data) {
427						var current = $(this).triggerHandler('currentPage');
428						var thumbCurrent = $galleryThumbs.triggerHandler('slice', [current, current+1]);
429						var thumbsVisible = $galleryThumbs.triggerHandler('currentVisible');
430						$thumbItems.filter('.active').removeClass('active');
431						if(thumbsVisible.index(thumbCurrent) === -1) {
432							$galleryThumbs.trigger('slideTo', current);
433						}
434						$('span', thumbCurrent).trigger('click');
435					}
436				}
437			});
438
439			var $galleryThumbs = null;
440			gallery_images_loaded($galleryThumbsCarousel, 'img', function() {
441				$galleryThumbs = $galleryThumbsCarousel.carouFredSel({
442					auto: false,
443					circular: false,
444					infinite: false,
445					width: '100%',
446					height: 'variable',
447					align: 'center',
448					prev: $galleryThumbsPrev,
449					next: $galleryThumbsNext,
450					swipe: true,
451					onCreate: function(data) {
452						$('span', $thumbItems).click(function(e) {
453							e.preventDefault();
454							$thumbItems.filter('.active').removeClass('active');
455							$(this).closest('li').addClass('active');
456							$galleryPreview.trigger('slideTo', $(this).closest('li').data('gallery-item-num'));
457						});
458						$thumbItems.eq(0).addClass('active');
459					}
460				});
461				$galleryThumbsWrap.animate({opacity: 1}, 400);
462				if($thumbItems.length < 2) {
463					$galleryThumbsWrap.hide();
464				}
465			});
466		}
467
468		function initGallery() {
469			if (window.tgpLazyItems !== undefined) {
470				var isShowed = window.tgpLazyItems.checkGroupShowed(this, function(node) {
471					initGallery.call(node);
472				});
473				if (!isShowed) {
474					return;
475				}
476			}
477
478			var $galleryElement = $(this);
479
480			var $thumbItems = $('.gem-gallery-item', $galleryElement);
481
482			var $galleryPreviewWrap = $('<div class="gem-gallery-preview-carousel-wrap"/>')
483				.appendTo($galleryElement);
484			var $galleryPreviewCarousel = $('<div class="gem-gallery-preview-carousel "/>')
485				.appendTo($galleryPreviewWrap);
486			var $galleryPreviewNavigation = $('<div class="gem-gallery-preview-navigation"/>')
487				.appendTo($galleryPreviewWrap);
488			var $galleryPreviewPrev = $('<a href="#" class="gem-prev gem-gallery-preview-prev" aria-label="arrow-left"></a>')
489				.appendTo($galleryPreviewNavigation);
490			var $galleryPreviewNext = $('<a href="#" class="gem-next gem-gallery-preview-next" aria-label="arrow-right"></a>')
491				.appendTo($galleryPreviewNavigation);
492			if($galleryElement.hasClass('with-pagination')) {
493				var $galleryPreviewPagination = $('<div class="gem-gallery-preview-pagination gem-mini-pagination"/>')
494					.appendTo($galleryPreviewWrap);
495			}
496			var $previewItems = $thumbItems.clone(true, true);
497			$previewItems.appendTo($galleryPreviewCarousel);
498			$previewItems.each(function() {
499				$('img', this).attr('src', $('a', this).attr('href'));
500				$('a', this)
501					.attr('href', $('a', this)
502					.data('full-image-url'))
503					.attr('data-fancybox', $('a', this).data('fancybox-group'))
504					.addClass('fancy-gallery');
505			});
506
507			$galleryPreviewCarousel.initGalleryFancybox();
508
509			var $galleryThumbsWrap = $('<div class="gem-gallery-thumbs-carousel-wrap"/>')
510				.appendTo($galleryElement);
511			var $galleryThumbsCarousel = $('<div class="gem-gallery-thumbs-carousel"/>')
512				.appendTo($galleryThumbsWrap);
513			var $galleryThumbsNavigation = $('<div class="gem-gallery-thumbs-navigation"/>')
514				.appendTo($galleryThumbsWrap);
515			var $galleryThumbsPrev = $('<a href="#" class="gem-prev gem-gallery-thumbs-prev" aria-label="arrow-left"></a>')
516				.appendTo($galleryThumbsNavigation);
517			var $galleryThumbsNext = $('<a href="#" class="gem-next gem-gallery-thumbs-next" aria-label="arrow-right"></a>')
518				.appendTo($galleryThumbsNavigation);
519			$thumbItems.appendTo($galleryThumbsCarousel);
520			$thumbItems.each(function(index) {
521				$(this).data('gallery-item-num', index);
522			});
523		}
524
525		$('.gem-gallery-grid').not('.gallery-slider').each(initGalleryGrid);
526		$('.gallery-slider').each(initGallerySlider);
527
528		$('.gem-gallery-grid').on('click', '.gallery-item', function() {
529			$(this).mouseover();
530		});
531
532		$('.gem-gallery').each(initGallery);
533
534		$('body').updateGalleries();
535		$('body').buildSimpleGalleries();
536		$('body').updateSimpleGalleries();
537
538		$('.gem_tab').on('tab-update', function() {
539			$(this).updateGalleries();
540		});
541		$(document).on('gem.show.vc.tabs', '[data-vc-accordion]', function() {
542			$(this).data('vc.accordion').getTarget().updateGalleries();
543		});
544		$(document).on('gem.show.vc.accordion', '[data-vc-accordion]', function() {
545			$(this).data('vc.accordion').getTarget().updateGalleries();
546		});
547	});
548
549	function updateGallery() {
550		if (window.tgpLazyItems !== undefined) {
551			var isShowed = window.tgpLazyItems.checkGroupShowed(this, function(node) {
552				updateGallery.call(node);
553			});
554			if (!isShowed) {
555				return;
556			}
557		}
558
559		var $galleryElement = $(this);
560
561		var $galleryPreviewCarousel = $('.gem-gallery-preview-carousel', $galleryElement);
562		var $galleryThumbsWrap = $('.gem-gallery-thumbs-carousel-wrap', $galleryElement);
563		var $galleryThumbsCarousel = $('.gem-gallery-thumbs-carousel', $galleryElement);
564		var $thumbItems = $('.gem-gallery-item', $galleryThumbsCarousel);
565		var $galleryPreviewPrev = $('.gem-gallery-preview-prev', $galleryElement);
566		var $galleryPreviewNext = $('.gem-gallery-preview-next', $galleryElement);
567		var $galleryPreviewPagination = $('.gem-gallery-preview-pagination', $galleryElement);
568		var $galleryThumbsPrev = $('.gem-gallery-thumbs-prev', $galleryElement);
569		var $galleryThumbsNext = $('.gem-gallery-thumbs-next', $galleryElement);
570
571		$galleryElement.thegemPreloader(function() {
572
573			var $galleryThumbs = $galleryThumbsCarousel, $galleryPreview = $galleryPreviewCarousel;
574
575			$('img', $galleryPreviewCarousel).removeAttr('data-tgpli-image-inited');
576
577			$galleryPreview = $galleryPreviewCarousel.carouFredSel({
578				auto: $galleryElement.data('autoscroll') ? $galleryElement.data('autoscroll') : false,
579				circular: true,
580				infinite: true,
581				responsive: true,
582				width: '100%',
583				height: 'auto',
584				items: 1,
585				align: 'center',
586				prev: $galleryPreviewPrev,
587				next: $galleryPreviewNext,
588				pagination: $galleryElement.hasClass('with-pagination') ? $galleryPreviewPagination : false,
589				swipe: true,
590				scroll: {
591					pauseOnHover: true,
592					items: 1,
593					onBefore: function(data) {
594						var current = $(this).triggerHandler('currentPage');
595						var thumbCurrent = $galleryThumbs.triggerHandler('slice', [current, current+1]);
596						var thumbsVisible = $galleryThumbs.triggerHandler('currentVisible');
597						$thumbItems.filter('.active').removeClass('active');
598						if(thumbsVisible.index(thumbCurrent) === -1) {
599							$galleryThumbs.trigger('slideTo', current);
600						}
601						$('a', thumbCurrent).trigger('gemActivate');
602					}
603				},
604				onCreate: function () {
605					$(window).on('resize', function () {
606						$galleryPreviewCarousel.parent().add($galleryPreviewCarousel).height($galleryPreviewCarousel.children().first().height());
607					}).trigger('resize');
608				}
609			});
610
611			$('img', $galleryThumbsCarousel).removeAttr('data-tgpli-image-inited');
612
613			$galleryThumbs = $galleryThumbsCarousel.carouFredSel({
614				auto: false,
615				circular: true,
616				infinite: true,
617				width: '100%',
618				height: 'variable',
619				align: 'center',
620				prev: $galleryThumbsPrev,
621				next: $galleryThumbsNext,
622				swipe: true,
623				onCreate: function(data) {
624					$('a', $thumbItems).on('gemActivate', function(e) {
625						$thumbItems.filter('.active').removeClass('active');
626						$(this).closest('.gem-gallery-item').addClass('active');
627						$galleryPreview.trigger('slideTo', $(this).closest('.gem-gallery-item').data('gallery-item-num'));
628					});
629					$('a', $thumbItems).click(function(e) {
630						e.preventDefault();
631						$(this).trigger('gemActivate');
632					});
633				}
634			});
635
636			if($thumbItems.filter('.active').length) {
637				$thumbItems.filter('.active').eq(0).find('a').trigger('click');
638			} else {
639				$thumbItems.eq(0).find('a').trigger('gemActivate');
640			}
641
642			if($thumbItems.length < 2) {
643				$galleryThumbsWrap.hide();
644			}
645
646		});
647	}
648
649	function updateSimpleGallery() {
650		if (window.tgpLazyItems !== undefined) {
651			var isShowed = window.tgpLazyItems.checkGroupShowed(this, function(node) {
652				updateSimpleGallery.call(node);
653			});
654			if (!isShowed) {
655				return;
656			}
657		}
658
659		var $galleryElement = $(this);
660
661		var $galleryItemsCarousel = $('.gem-gallery-items-carousel', $galleryElement);
662		var $thumbItems = $('.gem-gallery-item', $galleryItemsCarousel);
663		var $galleryItemsPrev = $('.gem-gallery-items-prev', $galleryElement);
664		var $galleryItemsNext = $('.gem-gallery-items-next', $galleryElement);
665
666		$galleryElement.thegemPreloader(function() {
667			var $galleryItems = $galleryItemsCarousel.carouFredSel({
668				auto: ($galleryElement.data('autoscroll') > 0 ? $galleryElement.data('autoscroll') : false),
669				circular: true,
670				infinite: true,
671				responsive: $galleryElement.hasClass('responsive'),
672				width: '100%',
673				height: 'variable',
674				align: 'center',
675				prev: $galleryItemsPrev,
676				next: $galleryItemsNext,
677				swipe: true,
678				scroll: {
679					pauseOnHover: true
680				},
681				onCreate: function(data) {
682					$galleryElement.trigger('gallery-inited');
683				}
684			});
685
686		});
687	}
688
689})(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.