PageSourceSearch

https://vending18.ru/g/s3/lp/lpc.v3/js/main.js

js vending18.ru collected 2026-09-30 03:08:40 UTC 78,888 bytes, 2,501 lines download raw bytes

1;(function(){
2	var $win = $(window),
3			$doc = $(document),
4			$body = $('body'),
5			initializedMaps = [],
6			lpc_template = {};
7			
8	window.lpc_template = lpc_template;
9
10	lpc_template.queue = {};
11	
12	lpc_template.queue.aboutPopupLink = function($self) {
13		if (!s3LP.is_cms) {
14			if(window.location.pathname != "/my/s3/cms/v1/lp/live.edit.php"){
15			    $('a[href^="popup:"]').attr('style','pointer-events: none');
16		    }
17			$( document ).ready(function() {
18				$('a[href^="popup:"]').attr('style','pointer-events: auto');
19			});
20		}
21	}
22
23	lpc_template.adaptiveBlock = function() {
24		var $block = $body.find('.lpc-block');
25
26		if (!$block.length) { return; }
27
28
29		var $firstBlock = $block.filter(function(){
30					return !$(this).closest('._hide-block').length;
31				}).eq(0),
32				firstBlockWidth = $firstBlock.width(),
33				firstBlockType = $firstBlock.data("media-source");
34			
35		if (firstBlockWidth < 768 && lpc_template.deviceType != "mobile") {
36			lpc_template.deviceType = "mobile";
37			$block.attr("data-media-source", "mobile");
38			$doc.trigger('checkDeviceType', [lpc_template.deviceType]);
39		} else if (firstBlockWidth < 1024 && firstBlockWidth >= 768 && lpc_template.deviceType != "tablet"){
40			lpc_template.deviceType = "tablet";
41			$block.attr("data-media-source", "tablet");
42			$doc.trigger('checkDeviceType', [lpc_template.deviceType]);
43		} else if (firstBlockWidth >
43= 1024 && lpc_template.deviceType != "desktop") {
44			lpc_template.deviceType = "desktop";
45			$block.attr("data-media-source", "desktop");
46			$doc.trigger('checkDeviceType', [lpc_template.deviceType]);
47		}
48		
49
50		$block.each(function(){
51			var $thisSimpleCols = Array.from(this.querySelectorAll('._simple-col'));
52
53			if (!$thisSimpleCols.length) return;
54
55			var $thisSimpleColsItems = $thisSimpleCols.reduce((acc, item) => [...acc, item.children], []);
56
57			for (let i = 0; i < $thisSimpleColsItems[0].length; i++) {
58				var minHeight = 0
59				$thisSimpleColsItems.forEach(function(elem) {
60					if (!elem[i]) return;
61					var $item = elem[i].querySelector('._title');
62
63					$($item).css('min-height', 0);
64
65					if (lpc_template.deviceType === "mobile") return;
66
67					var	elemHeight = $item.offsetHeight;
68
69					minHeight = minHeight > elemHeight ? minHeight : elemHeight;
70				});
71
72				$thisSimpleColsItems.forEach((elem) => {
73					if (!elem[i]) return;
74					$(elem[i].querySelector('._title')).css('min-height', minHeight)
75				});
76			}
77		});
78	}
79
80	/*
81	lpc_template.initMaps = function(options) {
82		var map;
83
84		if (options.type === "google") {
85			map = new google.maps.Map(document.getElementById(options.id), {
86				zoom: parseInt(options.zoom),
87				scrollwheel: false,
88				center: new google.maps.LatLng(options.center[0], options.center[1])
89			});
90
91			$.each(options.data, function(key, item) {
92
93				var marker = new google.maps.Marker({
94					position: new google.maps.LatLng(item.coords[0], item.coords[1]),
95					map: map,
96					title: item.name
97				});
98
99				var infowindow = new google.maps.InfoWindow({
100					content: '<div class="baloon-content">' +
101							'<h3 style="margin: 0; padding-bottom: 3px;">' + item.name + '</h3>' +
102							item.desc +
103							'</div>'
104				});
105
106				google.maps.event.addListener(marker, 'click', function() {
107					infowindow.open(map, marker);
108				});
109
110
111			});
112
113		} else {
114			ymaps.ready(function() {
115				map = new ymaps.Map(options.id, {
116					center: options.center,
117					zoom: options.zoom,
118					behaviors: ['drag', 'rightMouseButtonMagnifier'],
119				});
120
121				map.controls.add(
122						new ymaps.control.ZoomControl()
123				);
124
125				var MyBalloonContentLayoutClass = ymaps.templateLayoutFactory.createClass(
126						'<div class="baloon-content" style="padding: 0 10px;">' +
127						'<h3 style="margin: 0;">$[properties.name]</h3>' +
128						'<p>$[properties.desc]</p>' +
129						'</div>'
130				);
131
132				var myCollection = new ymaps.GeoObjectCollection();
133
134				$.each(options.data, function(key, item) {
135					myCollection.add(new ymaps.Placemark(
136							item.coords,
137							item, {
138								balloonContentLayout: MyBalloonContentLayoutClass
139							}
140					));
141				});
142
143				map.geoObjects.add(myCollection);
144
145				$('#' + options.id).data('ymaps', map);
146
147				$doc.on('checkDeviceType', function(e, param) {
148					map.container.fitToViewport();
149				});
150			});
151		}
152	}
153	
154	*/
155	
156	lpc_template.checkMapInitialization = function($blocks) {
157        $blocks.each(function() {
158            var $this = $(this),
159                id = $this.attr('id');
160
161            if (initializedMaps.includes(id) && $this.children().length) {
162                return;
163            }
164
165            var inViewport = isElementInViewport(this);
166
167            if (inViewport) {
168                initializedMaps.push(id);
169
170                lpc_template.initMaps($this);
171            }
172        })
173    }
174
175    lpc_template.initGoogleMaps = function(options) {
176        var map = new google.maps.Map(document.getElementById(options.id), {
177            zoom: parseInt(options.zoom),
178            scrollwheel: false,
179            center: new google.maps.LatLng(options.center[0], options.center[1])
180        });
181
182        $.each(options.data, function(key, item) {
183            var marker = new google.maps.Marker({
184                position: new google.maps.LatLng(item.coords[0], item.coords[1]),
185                map: map,
186                title: item.name
187            });
188
189            var infowindow = new google.maps.InfoWindow({
190                content: '<div class="baloon-content">' +
191                    '<h3 style="margin: 0; padding-bottom: 3px;">' + item.name + '</h3>' +
192                    item.desc +
193                    '</div>'
194            });
195
196            google.maps.event.addListener(marker, 'click', function() {
197                infowindow.open(map, marker);
198            });
199        });
200    }
201    
202    
203    lpc_template.initYandexMaps = function(options) {
204    	
205	    ymaps.ready(function () {
206	    	
207	        var map = new ymaps.Map(options.id, {
208	            center: options.center,
209	            zoom: options.zoom,
210	            behaviors: ['drag', 'rightMouseButtonMagnifier'],
211	        });
212	
213	        map.controls.add(
214	            new ymaps.control.ZoomControl()
215	        );
216	
217	        var MyBalloonContentLayoutClass = ymaps.templateLayoutFactory.createClass(
218	            '<div class="baloon-content" style="padding: 0 10px;">' +
219	            '<h3 style="margin: 0;">$[properties.name]</h3>' +
220	            '<p>$[properties.desc]</p>' +
221	            '</div>'
222	        );
223	
224	        var myCollection = new ymaps.GeoObjectCollection();
225	
226	        $.each(options.data, function(key, item) {
227	            myCollection.add(new ymaps.Placemark(
228	                item.coords,
229	                item, {
230	                    balloonContentLayout: MyBalloonContentLayoutClass
231	                }
232	            ));
233	        });
234	
235	        map.geoObjects.add(myCollection);
236	        $('#' + options.id).data('ymaps', map);
237	    });
238	};
239
240    
241    
242
243    /*lpc_template.initYandexMaps = function(options) {
244        var map = new ymaps.Map(options.id, {
245            center: options.center,
246            zoom: options.zoom,
247            behaviors: ['drag', 'rightMouseButtonMagnifier'],
248        });
249
250        map.controls.add(
251            new ymaps.control.ZoomControl()
252        );
253
254        var MyBalloonContentLayoutClass = ymaps.templateLayoutFactory.createClass(
255            '<div class="baloon-content" style="padding: 0 10px;">' +
256            '<h3 style="margin: 0;">$[properties.name]</h3>' +
257            '<p>$[properties.desc]</p>' +
258            '</div>'
259        );
260
261        var myCollection = new ymaps.GeoObjectCollection();
262
263        $.each(options.data, function(key, item) {
264            myCollection.add(new ymaps.Placemark(
265                item.coords,
266                item, {
267                    balloonContentLayout: MyBalloonContentLayoutClass
268                }
269            ));
270        });
271
272        map.geoObjects.add(myCollection);
273
274        $('#' + options.id).data('ymaps', map);
275    }*/
276
277    lpc_template.initMaps = function($block) {
278        var options = $block.data('init-params');
279
280        options = typeof options === 'string' ? JSON.parse(options) : options;
281
282        if (typeof options.center === 'string') {
283            options.center = options.center.split(',');
284        }
285
286        $.each(options.data, function(key, item) {
287            if (typeof item.coords === 'string') {
288                item.coords = item.coords.split(',');
289            }
290        });
291
292        var keyMap = options.key;
293
294        if (options.type === "google") {
295            if (window.google && window.google.maps) {
296                lpc_template.initGoogleMaps(options);
297            } else {
298                var script = document.createElement('script');
299                script.async = 'async';
300                script.src = `//maps.googleapis.com/maps/api/js?key=${keyMap}`;
301                document.body.append(script);
302
303                script.onload = function() {
304                    lpc_template.initGoogleMaps(options);
305                }
306            }
307        } else {
308            if (window.ymaps && window.ymaps.Map) {
309                lpc_template.initYandexMaps(options)
310            } else {
311            	var htmlLang = document.documentElement.lang;
312                var script = document.createElement('script');
313                script.async = 'async';
314                if (htmlLang == 'en') {
315				  if (options.key!="") {
316					script.src = `//api-maps.yandex.ru/2.1/?apikey=${keyMap}&lang=en_RU`;
317				  } else {
318					script.src = `//api-maps.yandex.ru/2.1/?lang=en_RU`;  
319				  }
320                }else {
321				  if (options.key!="") {
322					script.src = `//api-maps.yandex.ru/2.1/?apikey=${keyMap}&lang=ru_RU`;
323				  } else {
324					script.src = `//api-maps.yandex.ru/2.1/?lang=ru_RU`;  
325				  }
326                }
327                
328                document.body.append(script);
329
330                script.onload = function() {
331                    ymaps.ready(function() {
332                        lpc_template.initYandexMaps(options)
333                    });
334                }
335            }
336        }
337    }
338    
339    lpc_template.queue.initVideoBlocks = function () {
340		const blocks = document.querySelectorAll(".lpc-block");
341	
342		blocks.forEach((block) => {
343			const videoPosters = block.querySelectorAll(".lp-video-poster");
344			const videoContainers = block.querySelectorAll(".lp-video-container");
345	
346			videoPosters.forEach((videoPoster, index) => {
347				const iframe = videoContainers[index].querySelector("iframe");
348	
349				videoPoster.addEventListener("click", function () {
350					const dataSrc = videoPoster.getAttribute("data-youtube-id");
351	
352					if (dataSrc) {
353						iframe.setAttribute("src", "https://www.youtube.com/embed/" + dataSrc + "?autoplay=1&mute=1");
354						videoPoster.removeAttribute("data-youtube-id");
355						videoPoster.style.display = "none";
356						videoContainers[index].style.display = "block";
357					}
358				});
359			});
360		});
361	};
362	
363	document.addEventListener("DOMContentLoaded", function () {
364		lpc_template.queue.initVideoBlocks();
365	});
366
367	lpc_template.queue.lpcTimer = function($self) {
368		var $block = $self.find('.js-lp-timer'),
369				htmlLang = document.documentElement.lang,
370				timerDays, timerHours, timerMinutes, timerSeconds, formatOut;
371
372		if (htmlLang == 'de' || htmlLang == 'en') {
373			timerDays = 'days';
374			timerHours = 'hours';
375			timerMinutes = 'minutes';
376			timerSeconds = 'seconds'
377		} else {
378			timerDays = 'Дней';
379			timerHours = 'Часов';
380			timerMinutes = 'Минут';
381			timerSeconds = 'Секунд'
382		}
383
384		var formatOut = '<div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">%d</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerDays + '</div></div><div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">%h</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerHours + '</div></div><div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">%m</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerMinutes + '</div></div><div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">%s</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerSeconds +'</div></div>';
385		var formatEnd = '<div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">00</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerDays + '</div></div><div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">00</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerHours + '</div></div><div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">00</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerMinutes + '</div></div><div class="lp-ui-timer__item"><div class="lp-ui-timer__item-number" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-number">00</div><div class="lp-ui-timer__item-text lp-header-text-4" data-elem-type="text" data-lp-selector=".lp-ui-timer__item-text">' + timerSeconds +'</div></div>';
386
387
388
389		if ($block.length) {
390			$block.each(function(){
391				var $this = $(this);
392				
393
394				$this.timer({
395					format_in: "%d.%M.%y %h:%m:%s",
396					language: htmlLang,
397					update_time: s3LP.is_cms ? 100000 : 1000,
398					format_out: formatOut,
399					onEnd: function(){
400						$this.html(formatEnd);
401					}
402				});
403
404			});
405		}
406	}
407
408	lpc_template.queue.formInputs = function($self) {
409
410		$doc.on('click', '.js-select, .js-multi_select', function() {
411			var $this = $(this),
412					openedClass = '_opened',
413					$thisParent = $this.closest('.lp-form-tpl__field-select, .lp-form-tpl__field-multi_select'),
414					$thisList = $thisParent.find('.lp-form-tpl__field-select__list, .lp-form-tpl__field-multi_select__list');
415
416			if ($thisParent.hasClass(openedClass)) {
417				$thisParent.removeClass(openedClass);
418				$thisList.slideUp();
419			} else {
420				$thisParent.addClass(openedClass);
421				$thisList.slideDown();
422			}
423		});
424		$( document ).ready(function() {
425		
426			$('.js-choose-select._checked').each(function(){
427			
428				var $this = $(this),
429				thisText = $this.text(),
430				$thisParent = $this.closest('.lp-form-tpl__field-select'),
431				checkedClass = '_checked';
432				
433				$thisParent.find('.js-choose-select').removeClass(checkedClass);
434				$thisParent.find('.lp-form-tpl__field-select__input').text(thisText);
435				$thisParent.parent().find('input').val(thisText);
436			});
437		});
438
439		$doc.on('click', '.js-choose-select', function() {
440			var $this = $(this),
441					thisText = $this.text(),
442					$thisParent = $this.closest('.lp-form-tpl__field-select'),
443					checkedClass = '_checked';
444
445			if (!$this.hasClass(checkedClass)) {
446				$thisParent.find('.js-choose-select').removeClass(checkedClass);
447				$this.addClass(checkedClass);
448				$thisParent.find('.lp-form-tpl__field-select__input').text(thisText);
449				$thisParent.parent().find('input').val(thisText);
450			}
451
452			$thisParent.find('.lp-form-tpl__field-select__list').slideUp();
453			$thisParent.removeClass('_opened');
454
455		});
456
457		$doc.on('click', '.js-choose-milti_select', function() {
458			var $this = $(this),
459					$thisParent = $this.closest('.lp-form-tpl__field-multi_select'),
460					checkedClass = '_checked';
461
462			if (!$this.hasClass(checkedClass)) {
463				$this.addClass(checkedClass);
464			} else {
465				$this.removeClass(checkedClass);
466			}
467
468			var choosenElements = $thisParent.find('.' + checkedClass),
469					choosenElementsText = [];
470
471			choosenElements.each(function() {
472				choosenElementsText.push($(this).text());
473			});
474
475			$thisParent.find('.lp-form-tpl__field-multi_select__input--count').text(choosenElements.length);
476			$thisParent.parent().find('input').val(choosenElementsText.join(', '));
477		});
478
479
480
481		$doc.on('click', function(e) {
482			if ($(e.target).closest('.lp-form-tpl__field-select, .lp-form-tpl__field-multi_select').length) return;
483
484			$doc.find('.lp-form-tpl__field-select, .lp-form-tpl__field-multi_select').removeClass('_opened');
485
486			$doc.find('.lp-form-tpl__field-select__list, .lp-form-tpl__field-multi_select__list').slideUp();
487		});
488	}
489
490	/*lpc_template.queue.calendar = function($self) {
491		$doc.on('click', '.js-form-calendar', function() {
492			var $this = $(this),
493					thisCalendarInited = $this.data('calendarInited');
494
495			if (!thisCalendarInited) {
496				$this.datepicker();
497				thisCalendarInited = $this.data('calendarInited', true);
498			}
499		});
500
501		$doc.on('click', '.js-form-calendar-interval', function() {
502			var $this = $(this),
503					thisCalendarInited = $this.data('calendarInited');
504
505			if (!thisCalendarInited) {
506				$this.datepicker({
507					range: true
508				});
509				thisCalendarInited = $this.data('calendarInited', true);
510			}
511		});
512	}*//*Не работал с первого клика*/
513	
514	
515	lpc_template.queue.calendar = function($self) {
516		$doc.on('click', '.js-form-calendar', function() {
517			var $this = $(this),
518				thisCalendarInited = $this.data('calendarInited');
519				
520			if (!thisCalendarInited) {
521				var bb = $this.datepicker().data('datepicker');
522				bb.show();
523				thisCalendarInited = $this.data('calendarInited', true);
524				
525			}
526		});
527		
528		$doc.on('click', '.js-form-calendar-interval', function() {
529			var $this = $(this),
530				thisCalendarInited = $this.data('calendarInited');
531			
532			if (!thisCalendarInited) {
533				var bb = $this.datepicker({
534					range: true,
535					multipleDatesSeparator: " - "
536				}).data('datepicker');
537				bb.show();
538				thisCalendarInited = $this.data('calendarInited', true);
539			}
540			
541		});
542	}
543	
544
545	/*
546	lpc_template.queue.lpcSimpleMap = function($self) {
547		var $block = $self.find('.js-lpc-simple-map');
548
549		if ($block.length) {
550			$block.each(function(){
551				var $this = $(this),
552						thisParams = $this.data('init-params');
553
554				if (typeof thisParams.center === 'string') {
555					thisParams.center = thisParams.center.split(',');
556				}
557
558				$.each(thisParams.data, function(key, item) {
559					if (typeof item.coords === 'string') {
560						item.coords = item.coords.split(',');
561					}
562				});
563
564				setTimeout(function(){
565					lpc_template.initMaps(thisParams);
566				}, 1000)
567			});
568		}
569	}
570	*/
571
572	lpc_template.queue.lpcSimpleAccordeon = function($self) {
573		var $block = $self.find('.js_accordeon_title'),
574				activeClass = 'active';
575
576		if ($block.length) {
577			$block.on('click', function(e) {
578				e.preventDefault();
579
580				var $this = $(this),
581						$ymap = $this.closest('[data-block-layout]').find('.js-lpc-simple-map');
582				$thisParent = $this.closest('._parent'),
583						$thisBody = $thisParent.find('._content');
584
585				if ($thisParent.hasClass(activeClass)) {
586					$thisBody.slideUp(400, function(){
587						$thisParent.removeClass(activeClass);
588						if ($ymap.length && $ymap.data('ymaps')) {
589							$ymap.data('ymaps').container.fitToViewport();
590						}
591					});
592				} else {
593					$thisBody.slideDown(400, function(){
594						$thisParent.addClass(activeClass);
595						if ($ymap.length && $ymap.data('ymaps')) {
596							$ymap.data('ymaps').container.fitToViewport();
597						}
598					});
599				}
600			});
601		}
602	}
603
604	lpc_template.queue.lpcSimpleSlider = function($self) {
605		var $slider = $self.find('.js-lpc-simple-slider');
606
607		if ($slider.length) {
608			$slider.each(function() {
609				var $this = $(this),
610						isOnlyMobile = !!$this.data('mobile-slider'),
611						parentSelector = $this.data('parent') ? $this.data('parent') : '[data-block-layout]',
612						$parent = $this.closest(parentSelector),
613						$items = $this.find('._item-slide'),
614						count = $this.data('count'),
615						margin = $this.data('margin'),
616						infinite = !!$this.data('infinite'),
617						autoplay = !!$this.data('autoplay'),
618						pause = $this.data('pause'),
619						speed = $this.data('speed'),
620						center = !!$this.data('center'),
621						touch = $this.data('touch'),
622						autoWidth = !!$this.data('auto-width'),
623						$nav = $parent.find('.js-simple-slider-nav'),
624						$dots = $parent.find('.js-simple-slider-dots');
625
626				$doc.on('checkDeviceType', function(e, param) {
627					
628					$this.trigger('destroy.owl.carousel');
629
630					if (isOnlyMobile && param !== 'mobile') {
631						return;
632					}
633					
634					var thisCount = param === 'mobile' ? count[2] : param === 'tablet' ? count[1] : count[0];
635					var thisMargin = param === 'mobile' ? margin[2] : param === 'tablet' ? margin[1] : margin[0];
636
637					var isInfinite = $items < thisCount ? false : infinite;
638
639					$this.owlCarousel({
640						items: thisCount,
641						margin: thisMargin,
642						autoplay : autoplay,
643						loop : isInfinite,
644						nav : false,
645						dots : true,
646						autoWidth: autoWidth,
647						center: center,
648						smartSpeed: speed,
649						mouseDrag: s3LP.is_cms ? false : true,
650						autoplayTimeout: pause,
651						touchDrag: touch,
652						onInitialized: function() {
653							if ($dots.length) {
654								var dotsLength = $parent.find('.owl-dots > *').length;
655								if (dotsLength < 2) {
656									$dots.html('');
657								} else {
658									var dotItems = '',
659											dotClass = $dots.data('dot-class');
660
661									for (let i = 0; i < dotsLength; i++) {
662										dotItems += '<div class="lpc-simple-dot-item ' + dotClass +'" data-elem-type="container" data-lp-selector=".lpc-simple-dot-item"></div>'
663									}
664
665									$dots.html(dotItems);
666									$dots.find('.lpc-simple-dot-item').eq(2).addClass('active');
667								}
668							}
669						},
670						onTranslated: function(e) {
671							$dots.find('.lpc-simple-dot-item').removeClass('active').eq(e.page.index).addClass('active');
672						}
673					})
674					if($this.hasClass('lpc-video-2__slider')){
675						$this.on('change.owl.carousel', function(event) {
676						  	$('.lpc-video-2__slider-item video').trigger('pause');
677							$('.owl-item.active ._lp-youtube-video').each(function(){
678						      	var el_src = $(this).attr("src");
679						        $(this).attr("src",el_src);
680						  	});
681		                });
682	                }
683				});
684				
685
686				if ($nav.length) {
687					$nav.on('click', '.js-prev-slide', function(e) {
688						e.preventDefault();
689						$this.trigger('prev.owl.carousel');
690					});
691
692					$nav.on('click', '.js-next-slide', function(e) {
693						e.preventDefault();
694						$this.trigger('next.owl.carousel');
695					});
696				}
697
698				$dots.on('click', '.lpc-simple-dot-item', function(e) {
699					$this.trigger('to.owl.carousel', [$(this).index()]);
700				});
701			});
702		}
703		
704	}
705
706	lpc_template.queue.lpcCarousel1 = function($self) {
707
708		var $block = $self.find('.js-carousels-1');
709
710		if ($block.length) {
711			$block.each(function(){
712				var $this = $(this),
713						$items = $this.find('.lpc-carousels-1__item'),
714						carouselSpeed = $this.data('speed'),
715						$parent = $this.closest('[data-block-layout]'),
716						$nav = $parent.find('.js-simple-slider-nav'),
717						$dots = $parent.find('.js-simple-slider-dots');
718						//43462
719				if (carouselSpeed == 250 || (!carouselSpeed && carouselSpeed != 0)) {
720					carouselSpeed = 2500;
721				}
722				$doc.on('checkDeviceType', function(e, param) {
723
724					var paramTypeWindow = param === 'mobile' ? true : false;
725					
726					$this.trigger('destroy.owl.carousel');
727					
728					$this.owlCarousel({
729						items: 1,
730						loop: true,
731						startPosition: 0,
732						autoplay : carouselSpeed > 0,
733						autoplayTimeout:carouselSpeed,
734						mouseDrag: param === 'mobile' ? true : false,
735						touchDrag: param === 'mobile' ? true : false,
736						pullDrag: false,
737						smartSpeed: 250,
738						nav: false,
739						dots : true,
740						margin: 0,
741						onTranslated: function(e){
742							$dots.find('.lpc-simple-dot-item').removeClass('active').eq(e.page.index).addClass('active');
743						},
744						onInitialized: function(e){
745							addClasses($this, $parent);
746
747							if ($dots.length) {
748								var dotsLength = $parent.find('.owl-dots > *').length;
749								if (dotsLength < 2) {
750									$dots.html('');
751								} else {
752									var dotItems = '',
753											dotClass = $dots.data('dot-class');
754
755									for (let i = 0; i < dotsLength; i++) {
756										dotItems += '<div class="lpc-simple-dot-item ' + dotClass +'" data-elem-type="container" data-lp-selector=".lpc-simple-dot-item"></div>'
757									}
758
759									$dots.html(dotItems);
760									$dots.find('.lpc-simple-dot-item').eq(0).addClass('active');
761								}
762							}
763						},
764						onChanged:function(e){
765							setTimeout(function(){
766								removeClasses($this);
767								addClasses($this, $parent);
768							},1);
769
770						}
771					});
772				});
773
774				$nav.on('click', '.js-lpc-carousels-1-prev-slide', function(e){
775					e.preventDefault();
776					$this.trigger('prev.owl.carousel');
777					removeClasses($this);
778					addClasses($this, $parent);
779				});
780
781				$nav.on('click', '.js-lpc-carousels-1-next-slide', function(e){
782					e.preventDefault();
783					$this.trigger('next.owl.carousel');
784					removeClasses($this);
785					addClasses($this, $parent);
786				});
787
788				$this.on('click', '.prev-1 > div', function(e) {
789					e.preventDefault();
790					$this.trigger('prev.owl.carousel');
791					removeClasses($this);
792					addClasses($this, $parent);
793				});
794
795				$this.on('click', '.next-1 > div', function(e) {
796					e.preventDefault();
797					$this.trigger('next.owl.carousel');
798					removeClasses($this);
799					addClasses($this, $parent);
800				});
801
802				$dots.on('click', '.lpc-simple-dot-item', function(e) {
803					var $newDot = $(this),
804							$owlItems = $this.find('.owl-item'),
805							newIndex = $newDot.index(),
806							oldIndex = $newDot.parent().find('.active').index(),
807							scrolledItems = (newIndex - oldIndex) * carouselSpeed;
808
809					$this.trigger('to.owl.carousel', [$(this).index()]);
810
811					removeClasses($this);
812
813					if (oldIndex < newIndex) {
814						$owlItems.addClass('movingLeft');
815					} else if (oldIndex > newIndex) {
816						$owlItems.addClass('movingRight');
817						scrolledItems *= -1;
818					}
819
820					if (scrolledItems > 1500) {
821						scrolledItems = 250;
822					}
823
824					setTimeout(function() {
825						addClasses($this, $parent);
826					}, scrolledItems);
827
828					setTimeout(function () {
829						$owlItems.removeClass('movingLeft movingRight');
830					}, scrolledItems);
831				});
832
833			});
834		}
835
836		function addClasses($slider, $parent) {
837			if ($parent.width() >= 1024) {
838				$slider.find('.owl-item.active').next().addClass('next-1').next().addClass('next-2').next().addClass('next-3');
839				$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2').prev().addClass('prev-3');
840				$slider.find('.next-1 .lpc-carousels-2__item, .prev-1 .lpc-carousels-2__item').attr("data-has-event", "1");
841			} else if ($parent.width() >= 768) {
842				$slider.find('.owl-item.active').next().addClass('next-1').attr("data-has-event", "1").next().addClass('next-2');
843				$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2');
844			}
845		}
846
847		function removeClasses($slider) {
848			$slider.find('.owl-item').removeClass('next-1 next-2 next-3 prev-1 prev-2 prev-3');
849		}
850	}
851
852	lpc_template.queue.lpcSimpleColumn = function($self) {
853		var $block = $self.find('.js-lpc-simple-colum');
854
855		if ($block.length) {
856			$block.each(function(){
857				var $this = $(this),
858						$items = $this.find('._parent');
859				countArray = $this.data('column-count');
860
861				$doc.on('checkDeviceType', function(e, param) {
862					var thisCount = param === 'mobile' ? countArray[2] : param === 'tablet' ? countArray[1] : countArray[0];
863
864					unwrap($items);
865
866					if (thisCount == 1) {
867						$items.wrap('<div class="_simple-col"></div>');
868						return;
869					}
870
871					var itemsLengthInColumn = Math.round($items.length / thisCount);
872
873					for (let i = 1; i < thisCount + 1; i += 1) {
874						$items.filter(function (index) {
875							return index >= (i - 1) * itemsLengthInColumn && index < i * itemsLengthInColumn;
876						}).wrapAll('<div class="_simple-col"></div>');
877					}
878				});
879			});
880
881			function unwrap ($list) {
882				$list.each(function() {
883					if (!this.parentNode.classList.contains("_simple-col")) return;
884					$(this).unwrap();
885				});
886			}
887		}
888	}
889	
890
891
892	lpc_template.queue.lpcVideo6 = function($self) {
893
894		var $block = $self.hasClass('lpc-video-6') ? $self : $self.find('.lpc-video-6');
895
896		if ($block.length) {
897			$(document).on('checkDeviceType', function(e, param) {
898				$block.each(function(){
899					var $this = $(this),
900							slider_big = $this.find('.lpc-video-6__slider-big'),
901							slider_thumbs = $this.find('.lpc-video-6__slider-thumbs'),
902							$controls = $this.find('.lpc-video-6__thumbs-controls'),
903							$dots = $this.find('.lpc-video-6__thumbs-dots'),
904							$nav = !!slider_thumbs.data('arrows'),
905							$dot = !!slider_thumbs.data('dots'),
906							autoplay = $this.data('autoplay'),
907							pause = $this.data('pause'),
908							speed = $this.data('speed'),
909							infinite = $this.data('infinite');
910
911					if (slider_big.hasClass('slick-initialized') && slider_thumbs.hasClass('slick-initialized')) {
912						slider_big.slick('unslick');
913						slider_thumbs.slick('unslick');
914					}
915
916					slider_big.slick({
917						autoplay: autoplay,
918						autoplaySpeed: pause,
919						infinite: infinite,
920						slidesToShow: 1,
921						slidesToScroll: 1,
922						asNavFor: slider_thumbs,
923						draggable: false,
924						speed: speed,
925						draggable: true,
926						fade: true,
927						arrows: false,
928						dots: false
929					});
930
931					slider_thumbs.slick({
932						autoplay: autoplay,
933						autoplaySpeed: pause,
934						vertical: param == 'desktop' ? true : false,
935						infinite: infinite,
936						verticalSwiping: param == 'desktop' ? true : false,
937						draggable: true,
938						slidesToShow: param == 'desktop' ? 4 : param == 'tablet' ? 3 : 1,
939						slidesToScroll: 1,
940						speed: speed,
941						asNavFor: slider_big,
942						focusOnSelect: true,
943						swipe: true,
944						arrows: $nav,
945						dots: $dot,
946						appendArrows: $controls,
947						appendDots: $dots,
948						prevArrow: '<button data-has-event="1" data-elem-type="container" data-lp-selector=".lpc-video-6__arrow" class="lpc-video-6__arrow lpc-video-6__arrow-prev js-prev-item _primary-fill _svg-light-fill"><div data-elem-type="container" class="arrow-line-wr" data-lp-selector=".arrow-line"><div class="arrow-line"></div><div class="arrow-line"></div></div></button>',
949						nextArrow: '<button data-has-event="1" data-elem-type="container" data-lp-selector=".lpc-video-6__arrow" class="lpc-video-6__arrow lpc-video-6__arrow-next js-next-item _primary-fill _svg-light-fill"><div data-elem-type="container" class="arrow-line-wr" data-lp-selector=".arrow-line"><div class="arrow-line"></div><div class="arrow-line"></div></div></button>'
950					});
951
952					$(window).on('resize', limitTextLines);
953
954					$this.find('.lpc-video-6__slider-thumbs .lpc-video-6__custom-video-btn').click(function() {
955						$this.find('.lpc-video-6__thumbs-controls').toggle();
956					});
957					
958					/*$('.slick-slider.lpc-video-6__slider-thumbs').on('beforeChange', function(event, slick, currentSlide, nextSlide){
959					  $('.lpc-video-6__slider-thumbs video').trigger('pause');
960					  $('.lpc-video-6__slider-big ._lp-youtube-video').each(function(){
961					      var el_src = $(this).attr("src");
962					        $(this).attr("src",el_src);
963					  });
964					});*/
965					
966					$('.slick-slider.lpc-video-6__slider-big').on('beforeChange', function(event, slick, currentSlide, nextSlide){
967					  $('.lpc-video-6__slider-big video').trigger('pause');
968					  $('.lpc-video-6__slider-big ._lp-youtube-video').each(function(){
969					      var el_src = $(this).attr("src");
970					        $(this).attr("src",el_src);
971					        
972					  });
973					});
974
975					function limitTextLines() {
976						let item_title = '.lpc-video-6__thumbs-item-title',
977								item_text = '.lpc-video-6__thumbs-item-text';
978
979						$this.find(item_title).css('max-height', '');
980						$this.find(item_text).css('max-height', '');
981
982						if (window.matchMedia('(min-width: 1024px)').matches) {
983
984							let line_height_title = parseInt($(item_title).css('line-height')),
985									line_height_text = parseInt($(item_text).css('line-height'));
986
987							$(item_title).css('max-height', 2 * line_height_title);
988							$(item_text).css('max-height', 3 * line_height_text);
989						}
990					}
991				});
992			})
993
994			$(window).on('resize', function(){
995				setTimeout(function(){
996					var $dotItem = $block.find('.lpc-video-6__thumbs-dots li button');
997					if ($dotItem.hasClass('lpc-video-6__slider-dot')) {
998
999					}
1000					else {
1001						$dotItem.attr('data-elem-type', 'card_container');
1002						$dotItem.addClass('lpc-video-6__slider-dot');
1003						$dotItem.attr('data-lp-selector','.lpc-video-6__slider-dot');
1004						$dotItem.attr('data-has-event','1');
1005					}
1006				},500);
1007			});
1008		}
1009	}
1010
1011	lpc_template.queue.lpcMenu1 = function($self) {
1012		var $block = $self.hasClass('lpc-menu-1') ? $self : $self.find('.lpc-menu-1');
1013		$block.each(function() {
1014			if ($block.length) {
1015
1016				var $this = $(this),
1017						menu = '.lpc-menu-1',
1018						nav = '.lpc-menu-1-nav',
1019						navWrapper = '.lpc-menu-1-nav-wrapper',
1020						navItem = '.lpc-menu-1-nav__item',
1021						navSubList = '.lpc-menu-1-nav__sublist',
1022						navSubListArrow = '.lpc-menu-1-nav__sublist-arrow',
1023						navSubListArrowHtml = '<div class="lpc-menu-1-nav__sublist-arrow" data-has-event="1" data-elem-type="container" data-lp-selector=".lpc-menu-1-nav__sublist-arrow-line"><div class="lpc-menu-1-nav__sublist-arrow-line"></div><div class="lpc-menu-1-nav__sublist-arrow-line"></div></div>',
1024						navBurger = '.lpc-menu-1__burger',
1025						navPopup = '.lpc-menu-1__popup',
1026						navPopupClass = 'lpc-menu-1__popup-menu',
1027						navPopupCloseBtn = '.lpc-menu-1__popup-close-btn',
1028						navPopupWrapper = '.lpc-menu-1__popup-wrapper',
1029						navPopupOverlay = '.lpc-menu-1__popup-wrapper>.lp-block-bg .lp-block-overlay';
1030
1031				let dataMediaSource = $('.lpc-menu-1').attr('data-media-source');
1032
1033				function displayBurger(show, hide) {
1034					$this.find(hide).removeClass('_show');
1035					$this.find(show).addClass('_show');
1036				}
1037
1038				function checkNavWidth() {
1039					let navWrapperWidth = $(navWrapper).width(),
1040							navWidth = $this.find(nav).width();
1041					if (navWidth > navWrapperWidth) {
1042						displayBurger(navBurger, nav);
1043						$this.find(navPopup + '-menu').css('display', '');
1044					} else {
1045						displayBurger(nav, navBurger);
1046						closeSideMenu();
1047					}
1048				}
1049
1050				function openSideMenu() {
1051					$this.find(navPopup).addClass('_opened');
1052					$this.find(navPopupWrapper).css('height', '100vh').addClass('_opened');
1053					//$this.find(navPopupOverlay).css('background-color', 'rgba(68, 68, 68, 0.6)');
1054				}
1055
1056				function closeSideMenu() {
1057					//$(navPopupOverlay).css('background-color', 'rgba(68, 68, 68, 0)');
1058					$(navPopup).removeClass('_opened');
1059					setTimeout(function(){
1060						$(navPopupWrapper).css('height', '0').removeClass('_opened');
1061						$(navSubList).slideUp();
1062						$(navSubListArrow).removeClass('_opened');
1063					}, 700);
1064				}
1065
1066				try {
1067					$this.find(navBurger).on('click', function(){openSideMenu();});
1068
1069					$this.find(navPopupOverlay).on('click', function(){closeSideMenu()});
1070
1071					$this.find(navPopupCloseBtn).on('click', function(){closeSideMenu()});
1072
1073					checkNavWidth();
1074
1075					$this.find(nav + ' li').has('ul').addClass('hasChild');
1076					$this.find(nav + ' .hasChild').append(navSubListArrowHtml);
1077
1078					$this.find(nav).clone().appendTo($this.find(navPopup)).addClass(navPopupClass).css('display', '');
1079
1080					$(this).find(navPopup + ' a').on('click', function(){
1081						closeSideMenu();
1082					});
1083
1084					$this.find(navSubListArrow).on('click', function() {
1085						$(this).toggleClass('_opened').siblings('ul').stop().slideToggle(400);
1086					});
1087
1088					$(window).resize(function(){
1089						checkNavWidth();
1090					});
1091
1092					setTimeout(function(){
1093						$(window).trigger('resize');
1094					}, 700);
1095
1096				} catch(exception) {
1097					console.log(exception);
1098				}
1099			}
1100		});
1101	}
1102
1103	lpc_template.queue.lpcMenu2 = function($self) {
1104		var $block = $self.hasClass('lpc-menu-2') ? $self : $self.find('.lpc-menu-2');
1105		$block.each(function() {
1106			if ($block.length) {
1107
1108				let $this = $(this),
1109						$list = $this.find('.lpc-menu-2__list'),
1110						$item = $this.find('.lpc-menu-2__item'),
1111						$items = $list.children($item),
1112						$button_wrap = $this.find('.lpc-menu-2__button-wrap'),
1113						$button = $this.find('.lpc-menu-2__button'),
1114						$aside_button = $this.find('.lpc-menu-2__aside-button');
1115
1116				let $sideMenu = $this.find('.lpc-menu-2__aside-wrap'),
1117						$sideMenuOverlay = $this.find('._overlay');
1118
1119
1120				try {
1121					wrapList();
1122
1123					$button.on('click', function () {
1124						openSideMenu();
1125					});
1126
1127					$aside_button.on('click', function () {
1128						closeSideMenu();
1129					});
1130
1131					$sideMenuOverlay.on('click', function () {
1132						closeSideMenu();
1133					});
1134
1135					$this.find('.lpc-menu-2__aside-wrap a').on('click', function(){
1136						closeSideMenu();
1137					});
1138
1139					$(window).on('resize', function () {
1140						wrapList();
1141						closeSideMenu();
1142					});
1143
1144				} catch(exception) {
1145					console.log(exception);
1146				}
1147
1148				function wrapList() {
1149					$list.css('display', '');
1150					$button_wrap.css('display', '');
1151
1152					if (window.matchMedia('(min-width: 768px)').matches) {
1153
1154						let $itemsWidth = 0;
1155						let $listWidth = $list.width();
1156
1157						$items.each(function (index, element) {
1158							$itemsWidth += $(element).outerWidth(true);
1159						});
1160
1161						if ($listWidth < $itemsWidth) {
1162							$list.css('display', 'none');
1163							$button_wrap.css('display', 'flex');
1164						}
1165					}
1166				}
1167
1168				function openSideMenu() {
1169					$sideMenu.addClass('_open');
1170					$sideMenuOverlay.addClass('_open');
1171					$sideMenuOverlay.css('visibility', 'visible');
1172				}
1173
1174				function closeSideMenu() {
1175					$sideMenu.removeClass('_open');
1176					$sideMenuOverlay.removeClass('_open');
1177					setTimeout(function () {
1178						$sideMenuOverlay.css('visibility', 'hidden')
1179					}, 400);
1180				}
1181
1182			}
1183		});
1184	}
1185
1186	lpc_template.queue.faq3 = function($self) {
1187		$block = $self.find('.js-qa-3');
1188
1189		if ($block.length) {
1190			$block.each(function(){
1191				var $this = $(this),
1192						$thisItems = $this.find('.lpc-qa-3-tabs-item');
1193				$thisEmptyDiv = $this.find('.lpc-qa-3-content-items');
1194
1195				$this.on('click', '.js-qa-title', function(e){
1196					e.preventDefault();
1197
1198					var $this = $(this),
1199							$parent = $this.closest('.lpc-qa-3-tabs-item');
1200
1201					if ($parent.hasClass('active')) return;
1202
1203					$thisItems.removeClass('active');
1204					$parent.addClass('active');
1205					$(this).closest('.js-qa-3').find('.lpc-qa-3-content-items').html($parent.find('.lpc-qa-3-content-item').html());
1206					//$thisEmptyDiv.html($parent.find('.lpc-qa-3-content-item').html()); Выдает ошибку при множественном кол. одинаковых блоков
1207				});
1208
1209				$this.find('.js-qa-title').eq(0).trigger('click');
1210			});
1211
1212			$doc.on('checkDeviceType', function(e, param) {
1213				if (param!='desktop') return;
1214
1215				$block.each(function(){
1216					var $this = $(this),
1217							$thisTitle = $this.find('.lpc-qa-3__title');
1218
1219					if (!$thisTitle.length) return;
1220
1221					$this.find('.lpc-qa-3-content-items').css({
1222						marginTop: +$thisTitle.outerHeight() + +$thisTitle.css('margin-bottom')
1223					})
1224				});
1225
1226
1227			});
1228		}
1229	}
1230
1231	lpc_template.queue.lpcGallery1 = function($self) {
1232		var $block = $self.hasClass('lpc-gallery-1') ? $self : $self.find('.lpc-gallery-1');
1233
1234		if ($block.length) {
1235			$block.each(function() {
1236				var $this = $(this),
1237						$mainSlider = $this.find('.lpc-gallery-1__main'),
1238						gallerySlider = $this.find('.lpc-gallery-1__main'),
1239						dataMediaSource = $('.lpc-gallery-1').attr('data-media-source'),
1240						$dots = $this.find('.lpc-gallery-1__preview'),
1241						itemsCount = $this.find('.lpc-gallery-1__main').children('.lpc-gallery-1__main-image').length;
1242
1243				try {
1244					initLightGallery();
1245					initOwlCarousel();
1246
1247					$this.find('.lpc-gallery-1__preview-more').on('click', function() {
1248						$this.find('.lpc-gallery-1__main-image:first-child').trigger('click');
1249					});
1250
1251					$(window).resize(function(){
1252						let newDataMediaSource = $('.lpc-gallery-1').attr('data-media-source');
1253						if (newDataMediaSource != dataMediaSource) {
1254							hidePreviews(newDataMediaSource);
1255							dataMediaSource = newDataMediaSource;
1256						}
1257					});
1258
1259					$(document).on('checkDeviceType', function(e, param) {
1260						setTimeout(function(){
1261							$(window).trigger('resize');
1262						},100);
1263					});
1264
1265					setTimeout(function(){
1266						$(window).trigger('resize');
1267						$mainSlider.trigger('refresh.owl.carousel');
1268						makePreviews();
1269					},500);
1270					
1271				} catch(exception) {
1272					console.log(exception);
1273				}
1274
1275
1276				function makePreviews() {
1277					$this.find('.lpc-gallery-1__main-image').each(function(index, element){
1278						let item = $(this).children('img').clone();
1279						$this.find('.lpc-gallery-1__preview').children('.js-owl-dot').eq(index).addClass('lpc-gallery-1__preview-image').prepend(item);
1280					});
1281					hidePreviews(dataMediaSource);
1282				}
1283
1284				function hidePreviews(dataMediaSource) {
1285					if (dataMediaSource == 'desktop') {
1286						if (itemsCount>6) {
1287							$this.find('.lpc-gallery-1__preview').children('.js-owl-dot').slice(5, itemsCount).css('display', 'none');
1288							$this.find('.lpc-gallery-1__preview-more').css('display', '');
1289						} else {
1290							$this.find('.lpc-gallery-1__preview-more').css('display', 'none');
1291						}
1292					} else {
1293						$this.find('.lpc-gallery-1__preview').children('.js-owl-dot').css('display', '');
1294						$this.find('.lpc-gallery-1__preview-more').css('display', 'none');
1295					}
1296				}
1297
1298				function initLightGallery() {
1299					$this.find('.lpc-gallery-1__main.js-lg').lightGallery({
1300						selector: '.lpc-gallery-1__main-image.js-lg-item',
1301						nextHtml: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.98528 4.32805C9.3758 3.93753 10.009 3.93753 10.3995 4.32805L17.0563 10.9849C17.4469 11.3754 17.4469 12.0086 17.0563 12.3991L10.3995 19.056C10.009 19.4465 9.3758 19.4465 8.98528 19.056C8.59475 18.6654 8.59475 18.0323 8.98528 17.6418L14.935 11.692L8.98528 5.74226C8.59475 5.35174 8.59475 4.71857 8.98528 4.32805Z" fill="white"/></svg>',
1302						prevHtml: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.8492 5.03516L8.19239 11.692L14.8492 18.3489" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'
1303					});
1304				};
1305
1306				function initOwlCarousel() {
1307					gallerySlider.owlCarousel({
1308						loop: false,
1309						rewind: false,
1310						items: 1,
1311						dots: true,
1312						nav: true,
1313						margin: 0,
1314						navContainer: '.lpc-gallery-1-controls',
1315						navClass: ['js-prev-item','js-next-item'],
1316						onTranslated: function(e){
1317							$dots.find('.js-owl-dot').attr('data-lp-selector', '.lpc-gallery-1__preview-image');
1318							$dots.find('.js-owl-dot').removeClass('active').eq(e.page.index).addClass('active').attr('data-lp-selector', '.lpc-gallery-1__preview-image.active');
1319						},
1320						onInitialized: function(e){
1321							addClasses($mainSlider, $this);
1322
1323							if ($dots.length) {
1324								var dotsLength = $mainSlider.find('.owl-dots > *').length;
1325								if (dotsLength <= 1) {
1326									$dots.html('');
1327
1328								} else {
1329									var dotItems = '',
1330											dotClass = $dots.data('dot-class');
1331
1332									for (let i = 0; i < dotsLength; i++) {
1333										dotItems += '<div class="js-owl-dot _primary-fill ' + dotClass +'" data-elem-type="container" data-lp-selector=".lpc-gallery-1__preview-image" data-has-event="1"></div>'
1334									}
1335
1336									$dots.html(dotItems);
1337									$dots.find('.js-owl-dot').eq(0).addClass('active');
1338
1339								}
1340							}
1341						}
1342					});
1343
1344					$dots.find('.js-owl-dot').on('click', function(e) {
1345						var $newDot = $(this),
1346								$owlItems = $mainSlider.find('.owl-item'),
1347								newIndex = $newDot.index(),
1348								oldIndex = $newDot.parent().find('.active').index(),
1349								scrolledItems = (newIndex - oldIndex);
1350
1351						$mainSlider.trigger('to.owl.carousel', [$(this).index()]);
1352
1353						removeClasses($mainSlider);
1354
1355						if (oldIndex < newIndex) {
1356							$owlItems.addClass('movingLeft');
1357						} else if (oldIndex > newIndex) {
1358							$owlItems.addClass('movingRight');
1359							scrolledItems *= -1;
1360						}
1361
1362						if (scrolledItems > 1500) {
1363							scrolledItems = 1500;
1364						}
1365
1366						setTimeout(function() {
1367							addClasses($mainSlider, $this);
1368						}, scrolledItems);
1369
1370						setTimeout(function () {
1371							$owlItems.removeClass('movingLeft movingRight');
1372						}, scrolledItems);
1373					});
1374
1375					function addClasses($slider, $parent) {
1376						if ($this.width() >= 1024) {
1377							$slider.find('.owl-item.active').next().addClass('next-1').next().addClass('next-2').next().addClass('next-3');
1378							$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2').prev().addClass('prev-3');
1379						} else if ($this.width() >= 768) {
1380							$slider.find('.owl-item.active').next().addClass('next-1').next().addClass('next-2');
1381							$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2');
1382						}
1383					}
1384
1385					function removeClasses($slider) {
1386						$slider.find('.owl-item').removeClass('next-1 next-2 next-3 prev-1 prev-2 prev-3');
1387					}
1388				};
1389				
1390			});
1391		}
1392	}
1393	
1394	lpc_template.queue.lpcGallery2 = function($self) {
1395		var $block = $self.hasClass('lpc-gallery-2') ? $self : $self.find('.lpc-gallery-2');
1396
1397		$block.each(function() {
1398			if ($block.length) {
1399
1400				let $thisBlock = $(this),
1401						$owlSlider = $('.lpc-gallery-2__slider'),
1402						gallerySlider = '.lpc-gallery-2__slider',
1403						dataCount = parseInt($thisBlock.find('.lpc-gallery-2__slider').attr('data-count')),
1404						dataMediaSource = $thisBlock.attr('data-media-source'),
1405						itemsCount = $thisBlock.find('.lpc-gallery-2__slider').children('.lpc-gallery-2__item').length,
1406						gridWrapper = '<div class="lpc-gallery-2__slider-grid"></div>',
1407
1408						carouselSpeed = $thisBlock.find(gallerySlider).data('speed'),
1409						infinite = !!$thisBlock.find(gallerySlider).data('infinite'),
1410						autoplay = !!$thisBlock.find(gallerySlider).data('autoplay'),
1411						pause = $thisBlock.find(gallerySlider).data('pause'),
1412						$navPrev = $thisBlock.find('.js-prev-item'),
1413						$navNext = $thisBlock.find('.js-next-item'),
1414						$dots = $thisBlock.find('.lpc-gallery-2__dots');
1415
1416				try {
1417					formGrid(dataMediaSource);
1418					$thisBlock.find('.lpc-gallery-2__slider.js-lg').lightGallery({
1419						selector: '.lpc-gallery-2__item',
1420						nextHtml: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.98528 4.32805C9.3758 3.93753 10.009 3.93753 10.3995 4.32805L17.0563 10.9849C17.4469 11.3754 17.4469 12.0086 17.0563 12.3991L10.3995 19.056C10.009 19.4465 9.3758 19.4465 8.98528 19.056C8.59475 18.6654 8.59475 18.0323 8.98528 17.6418L14.935 11.692L8.98528 5.74226C8.59475 5.35174 8.59475 4.71857 8.98528 4.32805Z" fill="white"/></svg>',
1421						prevHtml: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.8492 5.03516L8.19239 11.692L14.8492 18.3489" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'
1422					});
1423					setTimeout(function(){
1424						initOwlCarousel();
1425					},1500);
1426
1427					$(window).resize(function(){
1428						setTimeout(function(){
1429							let newDataMediaSource = $thisBlock.attr('data-media-source');
1430							if (newDataMediaSource != dataMediaSource) {
1431								if (dataCount > 4 || newDataMediaSource == 'mobile' || dataMediaSource == 'mobile') {
1432									reInitOwlCarousel(newDataMediaSource);
1433								}
1434								dataMediaSource = newDataMediaSource;
1435							}
1436						},100);
1437					});
1438				} catch(exception) {
1439					console.log(exception);
1440				}
1441
1442
1443
1444				function sliceFunc(itemsInGrid){
1445					for (var i = 0;
1445 i < itemsCount/itemsInGrid; i++) {
1446						$thisBlock.find('.lpc-gallery-2__slider>.lpc-gallery-2__item').slice(0, itemsInGrid).wrapAll(gridWrapper);
1447					}
1448					$thisBlock.find('.lpc-gallery-2__slider-grid').each(function(){
1449						$(this).addClass('_'+$(this).children().length);
1450					});
1451				};
1452
1453				function formGrid(dataMediaSource) {
1454					if (dataMediaSource == 'mobile') {
1455						sliceFunc(2)
1456					} else if (dataMediaSource == 'tablet' && dataCount > 4){
1457						sliceFunc(8);
1458					} else {
1459						sliceFunc(dataCount*2)
1460					}
1461				}
1462
1463				function initOwlCarousel() {
1464					$(gallerySlider).owlCarousel({
1465						loop: infinite,
1466						items: 1,
1467						autoplay: autoplay,
1468						autoplayTimeout: pause,
1469						autoplayHoverPause: true || 5000,
1470						smartSpeed: carouselSpeed || 250,
1471						dots: true,
1472						nav: true,
1473						margin: 0,
1474						onTranslated: function(e){
1475							$dots.find('.lpc-simple-dot-item').removeClass('active').eq(e.page.index).addClass('active');
1476						},
1477						onInitialized: function(e){
1478							addClasses($owlSlider, $thisBlock);
1479
1480							if ($dots.length) {
1481								var dotsLength = $thisBlock.find('.owl-dots > *').length;
1482								if (dotsLength <= 1) {
1483									$dots.html('');
1484
1485									$navPrev.addClass('_hide');
1486									$navNext.addClass('_hide');
1487
1488								} else {
1489									var dotItems = '',
1490											dotClass = $dots.data('dot-class');
1491
1492									for (let i = 0; i < dotsLength; i++) {
1493										dotItems += '<div class="lpc-simple-dot-item ' + dotClass +'" data-elem-type="container" data-lp-selector=".lpc-simple-dot-item" data-has-event="1"></div>'
1494									}
1495
1496									$dots.html(dotItems);
1497									$dots.find('.lpc-simple-dot-item').eq(0).addClass('active');
1498
1499								}
1500							}
1501							if(!s3LP.is_cms) {
1502								s3LP.convertImages($owlSlider);
1503							}
1504							else {
1505								if (typeof LpController !== 'undefined') {
1506									LpController.convertImages($owlSlider);
1507								}
1508							}
1509						},
1510						onResized: function() {
1511							var dotsLength = $thisBlock.find('.owl-dots > *').length;
1512
1513							if (dotsLength <= 1) {
1514								$navPrev.addClass('_hide');
1515								$navNext.addClass('_hide');
1516
1517							} else {
1518								$navPrev.removeClass('_hide');
1519								$navNext.removeClass('_hide');
1520							}
1521						}
1522					});
1523
1524					$owlSlider.trigger('refresh.owl.carousel');
1525					$owlSlider.on('changed.owl.carousel', function(event) {   
1526						if (autoplay == false) {
1527							$owlSlider.trigger('stop.owl.autoplay')
1528						}
1529					    
1530					});
1531
1532					$navPrev.off();
1533
1534					$navPrev.on('click', function(e){
1535						e.preventDefault();
1536						$owlSlider.trigger('prev.owl.carousel');
1537						removeClasses($owlSlider);
1538						addClasses($owlSlider, $thisBlock);
1539					});
1540
1541					$navNext.off();
1542
1543					$navNext.on('click', function(e){
1544						e.preventDefault();
1545						$owlSlider.trigger('next.owl.carousel');
1546						removeClasses($owlSlider);
1547						addClasses($owlSlider, $thisBlock);
1548					});
1549
1550					$dots.find('.lpc-simple-dot-item').on('click', function(e) {
1551						var $newDot = $(this),
1552								$owlItems = $owlSlider.find('.owl-item'),
1553								newIndex = $newDot.index(),
1554								oldIndex = $newDot.parent().find('.active').index(),
1555								scrolledItems = (newIndex - oldIndex) * carouselSpeed;
1556
1557						$owlSlider.trigger('to.owl.carousel', [$(this).index()]);
1558
1559						removeClasses($owlSlider);
1560
1561						if (oldIndex < newIndex) {
1562							$owlItems.addClass('movingLeft');
1563						} else if (oldIndex > newIndex) {
1564							$owlItems.addClass('movingRight');
1565							scrolledItems *= -1;
1566						}
1567
1568						if (scrolledItems > 1500) {
1569							scrolledItems = 1500;
1570						}
1571
1572						setTimeout(function() {
1573							addClasses($owlSlider, $thisBlock);
1574						}, scrolledItems);
1575
1576						setTimeout(function () {
1577							$owlItems.removeClass('movingLeft movingRight');
1578						}, scrolledItems);
1579					});
1580
1581					function addClasses($slider, $parent) {
1582						if ($thisBlock.width() >= 1024) {
1583							$slider.find('.owl-item.active').next().addClass('next-1').next().addClass('next-2').next().addClass('next-3');
1584							$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2').prev().addClass('prev-3');
1585						} else if ($thisBlock.width() >= 768) {
1586							$slider.find('.owl-item.active').next().addClass('next-1').next().addClass('next-2');
1587							$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2');
1588						}
1589					}
1590
1591					function removeClasses($slider) {
1592						$slider.find('.owl-item').removeClass('next-1 next-2 next-3 prev-1 prev-2 prev-3');
1593					}
1594				};
1595
1596				function reInitOwlCarousel(dataMediaSource) {
1597					$thisBlock.find(gallerySlider).trigger('destroy.owl.carousel');
1598					$thisBlock.find('.lpc-gallery-2__dots-wrap').append('<div class="lpc-gallery-2__dots"></div>');
1599					$thisBlock.find('.lpc-gallery-2__item').unwrap();
1600					formGrid(dataMediaSource);
1601					initOwlCarousel();
1602				};
1603			}
1604		});
1605	}
1606
1607	lpc_template.queue.lpcGallery5 = function($self) {
1608		var $block = $self.find('.js-gallery-5'),
1609				deviceTypes = ['desktop', 'tablet', 'mobile'];
1610
1611		if ($block.length) {
1612			$block.each(function() {
1613				var $this = $(this),
1614						thisItems = $this.data('items'),
1615						carouselSpeed = $this.data('speed'),
1616						pause = $this.data('pause'),
1617						infinite = !!$this.data('infinite'),
1618						autoplay = !!$this.data('autoplay'),
1619						$parent = $this.closest('[data-block-layout]'),
1620						$dots = $parent.find('.js-simple-slider-dots'),
1621						$arrows = $parent.find('.js-simple-slider-nav');
1622				
1623	            	
1624            	$(document).on('checkDeviceType', function(e, param){
1625					$this.trigger('destroy.owl.carousel');
1626						
1627					setTimeout(function(){
1628						
1629						$this.owlCarousel({
1630							items: thisItems[deviceTypes.indexOf(param)],
1631							loop: infinite || false,
1632							autoplay: autoplay || false,
1633							autoplayTimeout: pause || 5000,
1634							smartSpeed: carouselSpeed || 250,
1635							autoplayHoverPause: true,
1636							dots: true,
1637							nav: false,
1638							onTranslated: function(e){
1639								$dots.find('.lpc-simple-dot-item').removeClass('active').eq(e.page.index).addClass('active');
1640							},
1641							onInitialized: function(e){
1642								if ($dots.length) {
1643									var dotsLength = $parent.find('.owl-dots > *').length;
1644									if (dotsLength <= 1) {
1645										$dots.html('');
1646	
1647									} else {
1648										var dotItems = '',
1649												dotClass = $dots.data('dot-class');
1650	
1651										for (let i = 0; i < dotsLength; i++) {
1652											dotItems += '<div class="lpc-simple-dot-item ' + dotClass +'" data-elem-type="container" data-lp-selector=".lpc-simple-dot-item"></div>'
1653										}
1654	
1655										$dots.html(dotItems);
1656										$dots.find('.lpc-simple-dot-item').eq(0).addClass('active');
1657	
1658									}
1659								}
1660							}
1661						});
1662					}, 500);
1663				});
1664	            
1665
1666				if ($arrows.length) {
1667					$arrows.on('click', '.js-prev-item', function(e) {
1668						e.preventDefault();
1669						$this.trigger('prev.owl.carousel');
1670					});
1671
1672					$arrows.on('click', '.js-next-item', function(e) {
1673						e.preventDefault();
1674						$this.trigger('next.owl.carousel');
1675					})
1676				}
1677			});
1678		}
1679	}
1680
1681	lpc_template.queue.lpcReviews3 = function($self) {
1682		var $block = $self.hasClass('lpc-reviews-3') ? $self : $self.find('.lpc-reviews-3');
1683
1684		$block.each(function() {
1685			if ($block.length) {
1686
1687				var $parent = $(this),
1688						$this = $parent.find('.lpc-reviews-3__slider'),
1689						$arrows = !!$this.data('arrows'),
1690						$dots = !!$this.data('dots'),
1691						$autoplay = !!$this.data('autoplay'),
1692						$infinite = !!$this.data('infinite'),
1693						$repeat = !!$this.data('repeat'),
1694						$autoplaySpeed = $this.data('autoplay-speed'),
1695						$speed = $this.data('speed'),
1696						$slide = $this.find('.lp-reviews-10-slider__slide'),
1697						//list = '.lpc-reviews-3__slider',
1698						item = $parent.find('.lpc-reviews-3__item'),
1699						items = $this.children(item);
1700
1701
1702				
1703				try {
1704					
1705					initSlick();
1706					
1707					$this.on('breakpoint', function (event, slick, breakpoint) {
1708
1709						$this.slick('unslick');
1710
1711						let slides = $parent.find('.lpc-reviews-3__slider').find('.lpc-reviews-3__item');;
1712						
1713						if (slides.length > items.length) {
1714							for (let j = 0; j < slides.length - items.length; j++) {
1715								slides[slides.length - 1 - j].remove();
1716							}
1717						}
1718
1719						$parent.find('.lpc-reviews-3__controls').show();
1720						initSlick();
1721					});
1722
1723
1724				} catch(exception) {
1725					console.log(exception);
1726				}
1727
1728				function initSlick() {
1729					
1730					if(!$repeat){
1731						fillSlide();
1732					}
1733			
1734
1735					$this.slick({
1736						infinite: $infinite,
1737						autoplay: $autoplay,
1738						autoplaySpeed: $autoplaySpeed,
1739						speed: $speed,
1740						swipe: true,
1741						rows: 3,
1742						slidesPerRow: 1,
1743						focusOnSelect: true,
1744						arrows: $arrows,
1745						dots:$dots,
1746						appendArrows: $parent.find('.lpc-reviews-3__navs'),
1747						appendDots: $parent.find('.lpc-reviews-3__dots-wrap'),
1748						prevArrow:'<a href="#" data-elem-type="card_container" data-has-event="1" data-lp-selector=".lpc-reviews-3-slider__nav-button" class="lp-button lp-button--type-1 lpc-reviews-3-slider__nav-button _prev js-prev-item _v2-icon"><div class="_slider-arrows" data-elem-type="card_container" data-lp-selector="._slider-arrows-inner"><div class="_slider-arrows-inner"></div><div class="_slider-arrows-inner"></div></div></a>',
1749						nextArrow:'<a href="#" data-elem-type="card_container" data-has-event="1" data-lp-selector=".lpc-reviews-3-slider__nav-button" class="lp-button lp-button--type-1 lpc-reviews-3-slider__nav-button _next js-next-item _v2-icon"><div class="_slider-arrows reverse" data-elem-type="card_container" data-lp-selector="._slider-arrows-inner"><div class="_slider-arrows-inner"></div><div class="_slider-arrows-inner"></div></div></a>',
1750						responsive: [
1751							{
1752								breakpoint: 768,
1753								settings: {
1754									slidesPerRow: 1,
1755									rows: 1,
1756									arrows: false
1757								}
1758							}
1759						]
1760					});
1761					
1762					
1763
1764					$('.lpc-reviews-3__controls') // find the parents
1765							.not(':has(> div:not(:empty))') // select only those that have no children with content
1766							.hide() // hide them
1767					;
1768					
1769				}
1770
1771				$(window).on('resize', function(){
1772					setTimeout(function(){
1773						var $dotItem = $parent.find('.lpc-reviews-3__dots-wrap li button');
1774						if ($dotItem.hasClass('lpc-reviews-3-slider__dot')) {
1775
1776						}
1777						else {
1778							$dotItem.attr('data-elem-type', 'card_container');
1779							$dotItem.addClass('lpc-reviews-3-slider__dot');
1780							$dotItem.attr('data-lp-selector','.lpc-reviews-3-slider__dot');
1781						}
1782					},100);
1783				});
1784
1785				function fillSlide() {
1786					if (window.matchMedia('(min-width: 768px)').matches) {
1787
1788						$this.on('init', function (slick, currentSlide) {
1789							let slides = currentSlide.$slides,
1790									lastSlide = slides[slides.length - 1],
1791									lastSlideItems = lastSlide.children,
1792									emptyDivs = [];
1793
1794							if (slides.length > 1) {
1795							
1796								for (let i = 0; i < lastSlideItems.length; i++) {
1797									if (lastSlideItems[i].childNodes.length < 1) {
1798										emptyDivs.push(lastSlideItems[i]);
1799									}
1800								}
1801
1802								if (emptyDivs.length > 0) {
1803								
1804									for (let j = 0; j < emptyDivs.length; j++) {
1805										emptyDivs[j].appendChild($(items)[j].cloneNode(true));
1806									}
1807								}
1808							}
1809						});
1810					}
1811				}
1812			}
1813		});
1814	}
1815
1816	lpc_template.queue.lpcReviews5 = function($self) {
1817		var $block = $self.hasClass('lpc-reviews-5') ? $self : $self.find('.lpc-reviews-5');
1818
1819		$block.each(function() {
1820			if ($block.length) {
1821				var $parent = $(this),
1822						$this = $parent.find('.js-owl-carousel'),
1823						carouselSpeed = $this.data('speed'),
1824						infinite = !!$this.data('infinite'),
1825						autoplay = !!$this.data('autoplay'),
1826						pause = $this.data('pause'),
1827						$navPrev = $parent.find('.js-prev-slide'),
1828						$navNext = $parent.find('.js-next-slide'),
1829						$dots = $parent.find('.js-simple-slider-dots'),
1830						$item_content = $('.lpc-reviews-5__item-content'),
1831						$item_img = $('.lpc-reviews-5__item-img');
1832
1833				try {
1834					setTimeout(function () {
1835						initOwlCarousel();
1836						setImgHeight();
1837					},1500);
1838
1839					$(window).on('resize', function(){
1840						setTimeout(function () {
1841							setImgHeight();
1842						},300);
1843					});
1844
1845				} catch(exception) {
1846					console.log(exception);
1847				}
1848
1849				function setImgHeight() {
1850					if (window.matchMedia('(min-width: 768px)').matches) {
1851						$item_content.each(function () {
1852							let item_img = $(this).siblings($item_img),
1853									height = $(this).height() + parseInt($(this).css("padding-top")) + parseInt($(this).css("padding-bottom"));
1854							;
1855
1856							item_img.height('');
1857
1858							if (item_img.height() > height) {
1859								item_img.height(height);
1860							}
1861						});
1862					}
1863				}
1864
1865				function initOwlCarousel() {
1866					$this.owlCarousel({
1867						loop: infinite,
1868						autoplay: autoplay,
1869						autoplayTimeout: pause,
1870						smartSpeed: carouselSpeed,
1871						autoplayHoverPause: true,
1872						mouseDrag: false,
1873						items: 1,
1874						dots: true,
1875						nav: false,
1876						responsive: {
1877							768: {
1878								nav: true
1879							}
1880						},
1881						onTranslated: function(e){
1882							$dots.find('.lpc-simple-dot-item').removeClass('active').eq(e.page.index).addClass('active');
1883							setImgHeight();
1884						},
1885						onInitialized: function(e){
1886							addClasses($this, $parent);
1887
1888							if ($dots.length) {
1889								var dotsLength = $parent.find('.owl-dots > *').length;
1890								if (dotsLength < 1) {
1891									$dots.html('');
1892
1893								} else {
1894									var dotItems = '',
1895											dotClass = $dots.data('dot-class');
1896
1897									for (let i = 0; i < dotsLength; i++) {
1898										dotItems += '<div class="lpc-simple-dot-item ' + dotClass +'" data-elem-type="container" data-lp-selector=".lpc-simple-dot-item"></div>'
1899									}
1900
1901									$dots.html(dotItems);
1902									$dots.find('.lpc-simple-dot-item').eq(0).addClass('active');
1903
1904								}
1905							}
1906						}
1907					});
1908
1909					$navPrev.on('click', function(e){
1910						e.preventDefault();
1911						$this.trigger('prev.owl.carousel');
1912						removeClasses($this);
1913						addClasses($this, $parent);
1914					});
1915
1916					$navNext.on('click', function(e){
1917						e.preventDefault();
1918						$this.trigger('next.owl.carousel');
1919						removeClasses($this);
1920						addClasses($this, $parent);
1921					});
1922
1923					$dots.find('.lpc-simple-dot-item').on('click', function(e) {
1924						var $newDot = $(this),
1925								$owlItems = $this.find('.owl-item'),
1926								newIndex = $newDot.index(),
1927								oldIndex = $newDot.parent().find('.active').index(),
1928								scrolledItems = (newIndex - oldIndex) * carouselSpeed;
1929
1930						$this.trigger('to.owl.carousel', [$(this).index()]);
1931
1932						removeClasses($this);
1933
1934						if (oldIndex < newIndex) {
1935							$owlItems.addClass('movingLeft');
1936						} else if (oldIndex > newIndex) {
1937							$owlItems.addClass('movingRight');
1938							scrolledItems *= -1;
1939						}
1940
1941						if (scrolledItems > 1500) {
1942							scrolledItems = 1500;
1943						}
1944
1945						setTimeout(function() {
1946							addClasses($this, $parent);
1947						}, scrolledItems);
1948
1949						setTimeout(function () {
1950							$owlItems.removeClass('movingLeft movingRight');
1951						}, scrolledItems);
1952					});
1953
1954					function addClasses($slider, $parent) {
1955						if ($parent.width() >= 1024) {
1956							$slider.find('.owl-item.active').next().addClass('next-1').next().addClass('next-2').next().addClass('next-3');
1957							$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2').prev().addClass('prev-3');
1958						} else if ($parent.width() >= 768) {
1959							$slider.find('.owl-item.active').next().addClass('next-1').next().addClass('next-2');
1960							$slider.find('.owl-item.active').prev().addClass('prev-1').prev().addClass('prev-2');
1961						}
1962					}
1963
1964					function removeClasses($slider) {
1965						$slider.find('.owl-item').removeClass('next-1 next-2 next-3 prev-1 prev-2 prev-3');
1966					}
1967
1968				};
1969			}
1970		});
1971	}
1972
1973	lpc_template.queue.lpcCarousel2 = function($self) {
1974		var $block = $self.hasClass('lpc-carousels-2') ? $self : $self.find('.lpc-carousels-2');
1975
1976		$block.each(function() {
1977			if ($block.length) {
1978
1979				var $parent = $(this),
1980						$this = $parent.find('.js-owl-carousel'),
1981						carouselSpeed = $this.data('speed'),
1982						infinite = !!$this.data('infinite'),
1983						pause = $this.data('pause'),
1984						$navPrev = $parent.find('.js-lpc-carousels-2-prev-slide'),
1985						$navNext = $parent.find('.js-lpc-carousels-2-next-slide'),
1986						$dots = $parent.find('.js-simple-slider-dots');
1987
1988				try {
1989
1990					setTimeout(function(){
1991						initOwlCarousel();
1992						$(window).trigger('resize');
1993					},1500);
1994				} catch(exception) {
1995					console.log(exception);
1996				}
1997				if (carouselSpeed == 250 || (!carouselSpeed && carouselSpeed != 0)) {
1998					carouselSpeed = 2500;
1999				}
2000				function initOwlCarousel() {
2001					$this.owlCarousel({
2002						loop: infinite,
2003						autoplay: (carouselSpeed > 0),
2004						autoplayTimeout: carouselSpeed,
2005						smartSpeed: carouselSpeed,
2006						autoplayHoverPause: true,
2007						dots: true,
2008						nav: false,
2009						items: 1,
2010						responsive:{
2011							768:{
2012								autoWidth: true,
2013								center: true,
2014								items: 3,
2015								dots: true,
2016								nav: false
2017							}
2018						},
2019						onTranslated: function(e){
2020							$dots.find('.lpc-simple-dot-item').removeClass('active').eq(e.page.index).addClass('active');
2021						},
2022						onInitialized: function(e){
2023							addClasses($this, $parent);
2024
2025							if ($dots.length) {
2026								var dotsLength = $parent.find('.owl-dots > *').length;
2027								if (dotsLength < 1) {
2028									$dots.html('');
2029									$navPrev.addClass("_hide");
2030									$navNext.addClass("_hide");
2031								} else {
2032									var dotItems = '',
2033											dotClass = $dots.data('dot-class');
2034
2035									for (let i = 0; i < dotsLength; i++) {
2036										dotItems += '<div class="lpc-simple-dot-item ' + dotClass +'" data-elem-type="container" data-lp-selector=".lpc-simple-dot-item"></div>'
2037									}
2038
2039									$dots.html(dotItems);
2040									$dots.find('.lpc-simple-dot-item').eq(0).addClass('active');
2041
2042								}
2043							}
2044						},
2045						onResize: function() {
2046							var dotsLength = $parent.find('.owl-dots > *').length;
2047							if (dotsLength < 1) {
2048								$navPrev.addClass("_hide");
2049								$navNext.addClass("_hide");
2050							} else {
2051								$navPrev.removeClass("_hide");
2052								$navNext.removeClass("_hide");
2053							}
2054						}
2055					});
2056
2057					if (window.matchMedia('(min-width: 768px)').matches) {
2058						addClasses();
2059					}
2060
2061					$this.on('resized.owl.carousel', function (event) {
2062						if (window.matchMedia('(min-width: 768px)').matches) {
2063							$this.trigger('destroy.owl.carousel');
2064							initOwlCarousel();
2065						}
2066					});
2067
2068					$this.on('dragged.owl.carousel changed.owl.carousel initialized.owl.carousel', function (event) {
2069						if (window.matchMedia('(min-width: 768px)').matches) {
2070							removeClasses();
2071							addClasses();
2072						}
2073					});
2074
2075					$navPrev.on('click', function(e){
2076						e.preventDefault();
2077						$this.trigger('prev.owl.carousel');
2078						removeClasses($this);
2079						addClasses($this, $parent);
2080					});
2081
2082					$navNext.on('click', function(e){
2083						e.preventDefault();
2084						$this.trigger('next.owl.carousel');
2085						removeClasses($this);
2086						addClasses($this, $parent);
2087					});
2088
2089					$dots.find('.lpc-simple-dot-item').on('click', function(e) {
2090						var $newDot = $(this),
2091								$owlItems = $this.find('.owl-item'),
2092								newIndex = $newDot.index(),
2093								oldIndex = $newDot.parent().find('.active').index(),
2094								scrolledItems = (newIndex - oldIndex) * carouselSpeed;
2095
2096						$this.trigger('to.owl.carousel', [$(this).index()]);
2097
2098						removeClasses($this);
2099
2100						if (oldIndex < newIndex) {
2101							$owlItems.addClass('movingLeft');
2102						} else if (oldIndex > newIndex) {
2103							$owlItems.addClass('movingRight');
2104							scrolledItems *= -1;
2105						}
2106
2107						if (scrolledItems > 1500) {
2108							scrolledItems = 1500;
2109						}
2110
2111						setTimeout(function() {
2112							addClasses($this, $parent);
2113						}, scrolledItems);
2114
2115						setTimeout(function () {
2116							$owlItems.removeClass('movingLeft movingRight');
2117						}, scrolledItems);
2118					});
2119
2120					function addClasses() {
2121						let center = $this.find('.owl-item.center');
2122						center.next().addClass('next');
2123						center.prev().addClass('prev');
2124						center.find('.lpc-carousels-2__item').addClass('current-slide');
2125						center.find('.lpc-carousels-2__item').attr('data-lp-selector', '.lpc-carousels-2__item.current-slide');
2126
2127						center.siblings('.owl-item').find('.lpc-carousels-2__item').removeClass('current-slide');
2128						center.siblings('.owl-item').find('.lpc-carousels-2__item').attr('data-lp-selector', '.lpc-carousels-2__item');
2129					}
2130
2131					function removeClasses() {
2132						$this.find('.owl-item').removeClass('next prev');
2133					}
2134				}
2135			}
2136		});
2137	}
2138
2139	lpc_template.queue.lpcText7 = function($self) {
2140		var $block = $self.hasClass('lpc-text-7') ? $self : $self.find('.lpc-text-7');
2141		$block.each(function() {
2142			if ($block.length) {
2143				var $this = $(this),
2144						$content = $this.find('.lpc-text-7__content'),
2145						$imgWrap = $this.find('.lpc-text-7__img-wrap'),
2146						$imgItems = $this.find('.lpc-text-7__img-items');
2147
2148				try {
2149					let childs = $imgItems.children().length;
2150					setAutoRows(childs);
2151					$(window).on('resize', function(){
2152						setAutoRows(childs);
2153					});
2154
2155					setTimeout(function(){
2156						$(window).trigger('resize');
2157					});
2158				} catch(exception) {
2159					console.log(exception);
2160				}
2161
2162				function setAutoRows(childs) {
2163					if (window.matchMedia('(min-width: 1024px)').matches) {
2164
2165						let imgSetCount = Math.ceil(childs/3),
2166								contentHeight = $content.height() +
2167										parseInt($content.css('padding-top')) +
2168										parseInt($content.css('padding-bottom')),
2169								imgWrapHeight = contentHeight -
2170										parseInt($imgWrap.css('padding-top')) -
2171										parseInt($imgWrap.css('padding-bottom')),
2172								imgItemsMinHeigth = parseInt($imgItems.css('min-height'));
2173
2174						if (imgWrapHeight > imgItemsMinHeigth*imgSetCount) {
2175
2176							let imgSetHeight = (imgWrapHeight - 32*(imgSetCount - 1))/imgSetCount,
2177									autoRows = (imgSetHeight - 32)/2;
2178
2179							$imgItems.css('grid-auto-rows', autoRows);
2180						} else {
2181							$imgItems.css('grid-auto-rows', '');
2182						}
2183					} else {
2184						$imgItems.css('grid-auto-rows', '');
2185					}
2186				}
2187			}
2188		});
2189	}
2190
2191	lpc_template.queue.lpcText8 = function($self) {
2192		var $block = $self.find('.js-text8');
2193
2194		if ($block.length) {
2195
2196			$block.each(function(){
2197				var $this = $(this),
2198						$list = $this.find('.lpc-text-8__tabs'),
2199						$nav = $this.find('.js-simple-slider-nav'),
2200						$tabs = $this.find('.js-tab-item'),
2201						$contents = $this.find('.js-content'),
2202						activeClass = '_active';
2203
2204				$doc.on('checkDeviceType', function(e, param) {
2205					destroyOwlCarousel($list);
2206
2207					if (param === 'desktop') {
2208						initOwlCarousel($list);
2209					}
2210				});
2211
2212
2213				if ($nav.length) {
2214					$nav.on('click', '.js-prev-slide', function(e) {
2215						e.preventDefault();
2216						$list.trigger('prev.owl.carousel');
2217					});
2218
2219					$nav.on('click', '.js-next-slide', function(e) {
2220						e.preventDefault();
2221						$list.trigger('next.owl.carousel');
2222					});
2223				}
2224
2225				$list.on('click', '.js-tab-item', function() {
2226					var $this = $(this);
2227
2228					$tabs.removeClass(activeClass);
2229					$contents.removeClass(activeClass);
2230
2231					$this.addClass(activeClass);
2232					$contents.filter(function() {
2233						return $(this).data('index') === $this.data('index');
2234					}).addClass(activeClass);
2235				});
2236
2237			});
2238
2239		}
2240
2241		function initOwlCarousel($list) {
2242			$list.owlCarousel({
2243				loop: false,
2244				items: 1,
2245				autoPlay: false,
2246				autoWidth: true,
2247				dots: false,
2248				nav: false,
2249				mouseDrag:false
2250			});
2251		};
2252
2253		function destroyOwlCarousel($list) {
2254			$list.owlCarousel('destroy');
2255		}
2256	}
2257
2258	lpc_template.queue.videoPlayButton = function($self) {
2259		var $allVideoParets = $self.find('.js-lp-play-video').closest('.lp-video-block-wrappper');
2260
2261		$self.on('click', '.js-lp-play-video', function(e) {
2262			e.preventDefault();
2263
2264			var $this = $(this);
2265			var thisVideo = $this.parent('.lp-video-block-wrappper').find('video')[0];
2266
2267			$this.addClass('hide');
2268			thisVideo.play();
2269			thisVideo.setAttribute('controls', 1);
2270		});
2271
2272		$allVideoParets.find('video').each(function(){
2273			this.addEventListener('pause', function(){
2274				this.removeAttribute('controls');
2275				$(this).parent('.lp-video-block-wrappper').find('.js-lp-play-video').removeClass('hide')
2276			});
2277		});
2278	}
2279
2280	lpc_template.queue.autoplayVideo = function($self) {
2281		var $block = $self.find('[data-autoplay-video="1"]');
2282
2283		if ($block.length) {
2284		
2285			$block.on('autoplayVideo', function(e, type, nodeName) {
2286				var video = this.querySelector(nodeName);
2287
2288				if (nodeName === 'video') {
2289					if (type === 'play') {
2290						video.play();
2291					} else {
2292						video.pause();
2293					}
2294				} else if (nodeName === 'iframe') {
2295					var video = $(video).data('youtube');
2296
2297					if (type === 'play') {
2298						video.playVideo();
2299					} else {
2300						video.pauseVideo();
2301					}
2302				}
2303			});
2304		}
2305
2306		//setTimeout(function(){
2307		//	$win.trigger('scroll');
2308		//}, 1000);
2309	}
2310	
2311	
2312
2313	lpc_template.queue.lg = function($self) {
2314		var $block = $self.find('.js-lg-init');
2315
2316		if ($block.length) {
2317			setTimeout(function(){
2318				$block.lightGallery({
2319					selector: '.lg-item',
2320					toogleThumb: false,
2321					getCaptionFromTitleOrAlt: false,
2322					download: false,
2323					thumbWidth: 64,
2324					thumbHeight: '64px',
2325					addClass: '_lpc-lg',
2326					nextHtml: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path fill-rule="evenodd" clip-rule="evenodd" d="M8.98528 4.32805C9.3758 3.93753 10.009 3.93753 10.3995 4.32805L17.0563 10.9849C17.4469 11.3754 17.4469 12.0086 17.0563 12.3991L10.3995 19.056C10.009 19.4465 9.3758 19.4465 8.98528 19.056C8.59475 18.6654 8.59475 18.0323 8.98528 17.6418L14.935 11.692L8.98528 5.74226C8.59475 5.35174 8.59475 4.71857 8.98528 4.32805Z" fill="white"/></svg>',
2327					prevHtml: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"><path d="M14.8492 5.03516L8.19239 11.692L14.8492 18.3489" stroke="white" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/></svg>'
2328				});
2329			}, 500);
2330		}
2331	}
2332	
2333	
2334
2335	
2336
2337
2338	lpc_template.checkAutoplayVideo = function($blocks) {
2339		$blocks.each(function() {
2340			var $this = $(this),
2341					playStatus = $this.data('playStatus'),
2342					inViewport = isElementInViewport(this),
2343					$video = $this.find('video'),
2344					$thisVideo = $video.length ? $video : $this.find('iframe');
2345
2346			if (inViewport && playStatus !== 'play') {
2347				$this.trigger('autoplayVideo', ['play', $thisVideo[0].nodeName.toLowerCase()]);
2348				$this.data('playStatus', 'play');
2349			} else if (!inViewport && playStatus === 'play') {
2350				$this.trigger('autoplayVideo', ['pause', $thisVideo[0].nodeName.toLowerCase()]);
2351				$this.data('playStatus', 'pause');
2352			}
2353		})
2354	}
2355
2356	window.lp_init = function($block) {
2357		
2358		var initializedMaps = [];
2359
2360		var $maps = $block.find('.js-lpc-simple-map');
2361		
2362		if ($maps.length) {
2363		    $maps.each(function() {
2364		        var mapElement = this;
2365		        var id = $(mapElement).attr('id');
2366		
2367		        if (initializedMaps.includes(id)) return; 
2368		
2369		        var observer = new IntersectionObserver(function(entries, observerInstance) {
2370		            entries.forEach(function(entry) {
2371		                if (entry.isIntersecting) {
2372		                	
2373		                    lpc_template.initMaps($(mapElement)); 
2374		                    initializedMaps.push(id); 
2375		                    observerInstance.unobserve(entry.target);
2376		                }
2377		            });
2378		        }, {
2379		            root: null,
2380		            rootMargin: '0px',
2381		            threshold: 0.1
2382		        });
2383		
2384		        observer.observe(mapElement);
2385		    });
2386		}
2387		
2388	
2389	    /*if ($maps.length) {
2390	        setTimeout(function () {
2391	            lpc_template.checkMapInitialization($maps);
2392	        }, 750);
2393	
2394	        $win.on('scroll', function () {
2395	            lpc_template.checkMapInitialization($maps);
2396	        });
2397	    }*/
2398
2399		if (s3LP.is_cms) {
2400			var contentColor = $('#lpc_contructor_iframe').contents().find('.decor-wrap').css('color')
2401			$('#landing_page_site').css('color', contentColor);
2402		}
2403
2404		$win.on('resize', function() {
2405			var decorWidth = $('.decor-wrap').width();
2406			
2407			$('.lpc-block').not('.custom-lpc-block').css('max-width', decorWidth);
2408		}).trigger('resize');
2409
2410		Object.keys(lpc_template.queue).forEach(function(func) {
2411			var thisFunction = lpc_template.queue[func];
2412			if (typeof thisFunction == 'function') {
2413				thisFunction($block);
2414			}
2415		});
2416
2417		var $autoplayVideo = $doc.find('[data-autoplay-video="1"]');
2418
2419		if ($autoplayVideo.length && !s3LP.is_cms && window.self == window.top) {
2420			$win.on('scroll', function() {
2421				lpc_template.checkAutoplayVideo($autoplayVideo);
2422			});
2423		}
2424
2425		lpc_template.deviceType = null;
2426
2427		$win.on('resize', function() {
2428			lpc_template.adaptiveBlock();
2429			
2430			$('.js-proportion-height').each(function() {
2431				var $this = $(this);
2432
2433				setProportionHeight($this, $this.data('proportion') || 100);
2434			});
2435
2436
2437		}).trigger('resize');
2438
2439		if (s3LP.is_cms && typeof LpController !== 'undefined') {
2440
2441			LpController.convertImages($block);
2442
2443			setTimeout(function(){
2444				LpController.convertImages($block);
2445				LpController.afterSave(function () {
2446					$('.lpc-features-3-chart-item__number').each(function(){
2447						var $this = $(this);
2448						$this.closest('.lpc-features-3-chart-item').find('.lpc-features-3-chart-item__bar-inner').css('width', $this.text());
2449					});
2450				});
2451			}, 1000);
2452		}
2453
2454		if (document.location.hash.length > 1 && $(document.location.hash).length) {
2455			setTimeout(function() {
2456				$('html, body').scrollTop($(document.location.hash).offset().top);
2457			}, 200);
2458		}
2459	}
2460
2461	window.onYouTubeIframeAPIReady = function() {
2462		$(function(){
2463			var listYoutube = $('.js-lp-video-youtube');
2464
2465			listYoutube.each(function(){
2466				var $this = $(this),
2467						isFullFrame = $this.hasClass('_not-paused');
2468
2469				var player = new YT.Player(this.id, {
2470					iv_load_policy: 3,
2471					modestbranding: 1,
2472					rel: 0,
2473					mute: isFullFrame ? 1 : 0,
2474					playsinline: 1,
2475					showinfo: isFullFrame ? 0 : 1,
2476					events: {
2477						'onStateChange': function(event) {
2478							if (event.data == YT.PlayerState.ENDED && $(event.target.a).hasClass('_not-paused')) {
2479								event.target.playVideo();
2480							}
2481						}
2482					}
2483				});
2484
2485				$this.data('youtube', player);
2486			});
2487		});
2488	}
2489
2490	function isElementInViewport(el) {
2491		var rect = el.getBoundingClientRect();
2492		return (
2493				rect.top <= window.innerHeight-200 &&
2494				rect.bottom >= 50
2495		);
2496	}
2497
2498	function setProportionHeight ($block, proportion) {
2499		$block.height($block.width() * proportion/100);
2500	}
2501})();

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.