PageSourceSearch

https://megumi.ru/local/templates/2018/js/main.js?167764502220023

js megumi.ru collected 2026-10-09 03:26:35 UTC 20,023 bytes, 730 lines download raw bytes

1$(document).ready(function () {
2/*
3	// замена символа рубля символом fontawesome в старых версиях Windows
4	var vers={
5		"5.0":2000,
6		"5.1":"XP",
7		"5.2":"Server 2003",
8		"6.0":"Vista",
9		"6.1":7,
10//		"6.2":8,
11//		"6.3":"8.1",
12//		"10.0":10
13	};
14	navigator.userAgent.replace(/windows nt (\d+\.\d+)/gi,function(str,ver){
15		if (vers[ver] != undefined) {
16			document.body.innerHTML = document.body.innerHTML.replace(/₽/g, '<i class="fa fa-rub" aria-hidden="true"></i>');
17		}
18		return str
19	})
20*/
21
22	$(".nano").nanoScroller();
23
24	jcf.setOptions('Select', {
25		wrapNative: true,
26		wrapNativeOnMobile: true,
27		maxVisibleItems: 10
28	});
29
30	jcf.replaceAll();
31
32	$('.day > div').arctext({
33		radius: 300
34	});
35
36	headerLinks();
37	hovers();
38	showFilters();
39//	catalogView();
40	timer();
41	openInfo();
42
43	$('.top-slider').slick({
44		infinite: true,
45		dots: true,
46		arrows: false,
47		slidesToShow: 1,
48		slidesToScroll: 1,
49		adaptiveHeight: true,
50		autoplay: true,
51		autoplaySpeed: 4000
52	});
53	$('.catalog-slider-four').slick({
54		infinite: true,
55		slidesToShow: 4,
56		slidesToScroll: 4,
57		prevArrow: '<button class="slick-prev" aria-label="Previous" type="button"><span class="fa fa-arrow-left"></span></button>',
58		nextArrow: '<button class="slick-next" aria-label="Next" type="button"><span class="fa fa-arrow-right"></span></button>',
59		responsive: [{
60			breakpoint: 1024,
61			settings: {
62				slidesToShow: 1,
63				slidesToScroll: 1
64			}
65		}]
66	});
67	$('.catalog-slider-three').slick({
68		infinite: true,
69		slidesToShow: 4,
70		slidesToScroll: 4,
71		prevArrow: '<button class="slick-prev" aria-label="Previous" type="button"><span class="fa fa-arrow-left"></span></button>',
72		nextArrow: '<button class="slick-next" aria-label="Next" type="button"><span class="fa fa-arrow-right"></span></button>',
73		responsive: [{
74			breakpoint: 1024,
75			settings: {
76				slidesToShow: 1,
77				slidesToScroll: 1
78			}
79		}]
80	});
81
82	$('.brands-slider').slick({
83		infinite: false,
84		slidesToShow: 4,
85		slidesToScroll: 4,
86		prevArrow: '<button class="slick-prev" aria-label="Previous" type="button"><span class="fa fa-arrow-left"></span></button>',
87		nextArrow: '<button class="slick-next" aria-label="Next" type="button"><span class="fa fa-arrow-right"></span></button>',
88		responsive: [
89			{
90				breakpoint: 1024,
91				settings: {
92					slidesToShow: 3,
93					slidesToScroll: 3
94				}
95			},
96			{
97				breakpoint: 680,
98				settings: {
99					slidesToShow: 2,
100					slidesToScroll: 2
101				}
102			},
103			{
104				breakpoint: 480,
105				settings: {
106					slidesToShow: 1,
107					slidesToScroll: 1
108				}
109			},
110		]
111	});
112
113	$(window).scroll(topNavFixed);
114	$(window).resize(topNavFixed);
115	$('#bx-panel-expander').click(topNavFixed);
116	$('#bx-panel-hider').click(topNavFixed);
117	function topNavFixed() {
118		if ($("#bx-panel.bx-panel-fixed").length > 0) {
119			$(".topline").css('top', $("#bx-panel").height());
120			$(".bx-aside-nav-control").css('top', $("#bx-panel").height());
121			$(".bx-aside-nav").css('top', 43 + $("#bx-panel").height());
122			if ($(".topline").css('display') == 'block') {
123				if ($('.topline .link.show-mob').css('display') == 'block') {
124					$('#search').css('top', 65 + $("#bx-panel").height())
125				}
126				else {
127					$('#search').css('top', 8 + $("#bx-panel").height())
128				}
129			}
130			else {
131				$('#search').css('top', 0)
132			}
133
134		}
135		else if ( ($("#bx-panel").length > 0) && ($(window).scrollTop() < $("#bx-panel").height()) ) {
136			$(".topline").css('top', $("#bx-panel").height() - $(window).scrollTop());
137			$(".bx-aside-nav-control").css('top', $("#bx-panel").height() - $(window).scrollTop());
138			$(".bx-aside-nav").css('top', 43 + $("#bx-panel").height() - $(window).scrollTop());
139			if ($(".topline").css('display') == 'block') {
140				if ($('.topline .link.show-mob').css('display') == 'block') {
141					$('#search').css('top', 65 + $("#bx-panel").height() - $(window).scrollTop())
142				}
143				else {
144					$('#search').css('top', 8 + $("#bx-panel").height() - $(window).scrollTop())
145				}
146			}
147			else {
148				$('#search').css('top', 0)
149			}
150		}
151		else {
152			$(".topline").css('top', 0);
153			$(".bx-aside-nav-control").css('top', 0);
154			$(".bx-aside-nav").css('top', 43);
155			if ($(".topline").css('display') == 'block') {
156				if ($('.topline .link.show-mob').css('display') == 'block') {
157					$('#search').css('top', 65)
158				}
159				else {
160					$('#search').css('top', 8)
161				}
162			}
163			else {
164				$('#search').css('top', 0)
165			}
166		}
167	}
168	topNavFixed();
169
170	$('#search').click(function(event) {
171//		event.preventDefault();
172		event.stopPropagation();
173	})
174
175	$('.item-gallery').each(function () {
176		var hold = $(this);
177		var big = hold.find('.big');
178		var small = hold.find('.small');
179
180		big.slick({
181			slidesToShow: 1,
182			slidesToScroll: 1,
183			arrows: false,
184			fade: true,
185			asNavFor: small,
186			infinite: false
187		});
188		small.slick({
189			vertical: true,
190			verticalSwiping: true,
191			slidesToShow: 5,
192			slidesToScroll: 1,
193			asNavFor: big,
194			focusOnSelect: true,
195			prevArrow: '<button class="slick-prev" aria-label="Previous" type="button"><span class="fa fa-angle-up"></span></button>',
196			nextArrow: '<button class="slick-next" aria-label="Next" type="button"><span class="fa fa-angle-down"></span></button>',
197			infinite: false,
198			responsive: [{
199				breakpoint: 681,
200				settings: {
201					vertical: false,
202					variableWidth: true,
203					slidesToShow: 3,
204					slidesToScroll: 1,
205					centerMode: true,
206					verticalSwiping: false
207				}
208			}]
209		});
210	});
211
212
213
214	// asd.favorite begin
215	var bGuestAlert = false,
216		sButton = false;
217	if (typeof(asd_fav_afterload)!='undefined' && asd_fav_afterload == 'Y') {
218		asd_fav_afterload = 'N';
219		$.get('/bitrix/tools/asd_favorite.php', {
220			id : asd_fav_IDs,
221			action : 'getlike',
222			type : sType
223		},
224		function(data){
225			for(i in data.ELEMENTS) {
226				if (data.ELEMENTS[i].FAVED) {
227					$('#asd_fav_' + i).addClass('asd_'+sButton+'ed');
228					$('#asd_fav_' + i).attr('title', sTitleDelFav);
229					$('#asd_fav_' + i).find('a.link-bookmark').text(sTitleDelFav);
230				}
231				sSessId = data.OPTIONS.SESSID;
232				bGuest = data.OPTIONS.BGUEST;
233			}
234		});
235	}
236	if (sButton) {
237		$('.asd_' + sButton + '_button').on('click',function(){
238			if (bGuest) {
239				if (!bGuestAlert) {
240					alert(sMessDeniedGuest);
241				}
242				bGuestAlert = true;
243				return false;
244			}
245
246			var id = $(this).attr('id').substr(8);
247			var curBtn = $(this);
248
249			if ($(this).hasClass('asd_'+sButton +'ed')) {
250				$.get('/bitrix/tools/asd_favorite.php', {
251					id : id,
252					action : 'unlike',
253					sessid : sSessId,
254					type : sType,
255					key : $(this).attr('data-skey')
256				}, function(data) {
257					$(curBtn).removeClass('asd_'+sButton+'ed');
258					$(curBtn).attr('title', sTitleAddFav);
259					$(curBtn).find('a.link-bookmark').text(sTitleAddFav);
260				}, 'json');
261			}
262			else
263			{
264				$.get('/bitrix/tools/asd_favorite.php', {
265					id : id,
266					action : 'like',
267					sessid : sSessId,
268					type : sType,
269					key : $(this).attr('data-skey')
270				}, function(data) {
271					$(curBtn).addClass('asd_'+sButton+'ed');
272					$(curBtn).attr('title', sTitleDelFav);
273					$(curBtn).find('a.link-bookmark').text(sTitleDelFav);
274				}, 'json');
275			}
276		});
277	}
278	// asd.favorite end
279
280});
281
282function openInfo() {
283	$('.info-pic').each(function () {
284		var hold = $(this);
285		var link = hold.find('.info-toggle');
286
287		link.click(function () {
288			hold.toggleClass('open');
289		});
290
291		hold.hover(function () {
292			hold.addClass('hovering');
293		}, function () {
294			hold.removeClass('hovering');
295		});
296
297		$('body').click(function () {
298			if (!hold.hasClass('hovering')) {
299				hold.removeClass('open');
300			}
301		});
302
303		$(document).keyup(function (e) {
304			if (e.keyCode === 27) {
305				hold.removeClass('open');
306			}
307		});
308
309	});
310}
311
312function headerLinks() {
313	$('.topline').each(function () {
314		var hold = $(this);
315
316//		var classUser = 'show-user';
317		var classPlace = 'show-place';
318		var classSearch = 'show-search';
319//		var classBag = 'show-bag';
320
321//		var linkUser = hold.find('.link-user');
322		var linkPlace = hold.find('.link-place');
323		var linkSearch = hold.find('.link-search');
324//		var linkBag = hold.find('.link-bag');
325
326		hold.hover(function () {
327			hold.addClass('hovering');
328		}, function () {
329			hold.removeClass('hovering');
330		});
331
332		$('body').click(function () {
333			if (!hold.hasClass('hovering')) {
334//				hold.removeClass(classUser);
335				hold.removeClass(classPlace);
336				hold.removeClass(classSearch);
337//				hold.removeClass(classBag);
338				$('.header').removeClass('show-search-line');
339			}
340		});
341
342//		linkUser.click(function () {
343//			if (hold.hasClass(classUser)) {
344//				hold.removeClass(classUser);
345//			} else {
346//				hold.removeClass(classPlace);
347//				hold.removeClass(classSearch);
348//				hold.removeClass(classBag);
349//				hold.addClass(classUser);
350//			}
351//		});
352
353		linkPlace.click(function () {
354
355			if (hold.hasClass(classPlace)) {
356				hold.removeClass(classPlace);
357			} else {
358//				hold.removeClass(classUser);
359				hold.removeClass(classSearch);
360//				hold.removeClass(classBag);
361				hold.addClass(classPlace);
362				$('#search').css('display','none');
363			}
364		});
365
366		linkSearch.click(function () {
367			if (hold.hasClass(classSearch)) {
368				hold.removeClass(classSearch);
369				$('.header').removeClass('show-search-line');
370				$('#search').css('display','none');
371				
372			} else {
373//				hold.removeClass(classUser);
374				hold.removeClass(classPlace);
375//				hold.removeClass(classBag);
376				hold.addClass(classSearch);
377				$('.header').addClass('show-search-line');
378				$('#search').css('display','flex');
379				
380			}
381		});
382
383//		linkBag.click(function () {
384//			if (hold.hasClass(classBag)) {
385//				hold.removeClass(classBag);
386//			} else {
387//				hold.removeClass(classUser);
388//				hold.removeClass(classPlace);
389//				hold.removeClass(classSearch);
390//				hold.addClass(classBag);
391//			}
392//		});
393	});
394}
395
396function hovers() {
397	$('.checkover').each(function () {
398		var hold = $(this);
399		var par = hold.parent();
400		var all = par.children();
401		var sub = hold.find('.sub');
402
403		// Присваиваем координаты для предыдущей позиции курсора
404		var x2 = 0;
405		var y2 = 0;
406
407		// Известные координаты нижних углов треугольника
408		var x1 = 0;
409		var y1 = par.outerHeight();
410		var x3 = par.outerWidth();
411		var y3 = par.outerHeight();
412
413		// Присваиваем зничение вспомогательной переменной
414		var in_delta = false;
415
416		if (par.hasClass('main')) {
417			var menu_mode = false;
418		}
419
420		// При наведении на меню так же присваиваем ей false
421		sub.mouseenter(function () {
422			in_delta = false;
423		});
424
425		hold.hover(
426			function () {
427				if (par.hasClass('main')) {
428					menu_mode = false;
429				}
430			},
431			function () {}
432		);
433
434		// Ну и теперь самое главное событие
435		hold.mousemove(function (e) {
436			var parentOffset = $(this).parent().offset();
437
438			// Берем текущие координаты курсора
439			var x0 = (e.pageX - parentOffset.left);
440			var y0 = (e.pageY - parentOffset.top);
441
442			if (par.hasClass('main')) {
443				if (!menu_mode) {
444					len = Math.sqrt( Math.pow(x2 - x0, 2) + Math.pow(y2 - y0, 2) );
445					if (len < 4) {
446						menu_mode = true;
447
448						all.removeClass('active');
449						hold.addClass("active");
450						in_delta = false;
451					}
452				}			
453			}
454
455			// Ну и теперь простая формула для определения находится ли курсор в треугольнике
456			var z1 = (x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0);
457			var z2 = (x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0);
458			var z3 = (x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0);
459			if ((z1 > 0 && z2 > 0 && z3 > 0) || (z1 < 0 && z2 < 0 && z3 < 0)) {
460				in_delta = true;
461			} else {
462				if (!par.hasClass('main') || (par.hasClass('main') && menu_mode) ) {
463					// Здесь непосредственно нужный нам код для показа меню
464					all.removeClass('active');
465					hold.addClass("active");
466				}
467
468				// И сразу же присваиваем значение нашей переменной
469				in_delta = false;
470			}
471
472			// Ну и обязательно присваиваем значения координатам для "предыдущего значения положения" для следущего события
473			x2 = x0;
474			y2 = y0;
475
476		}).mouseleave(function () {
477			if (!in_delta) {
478				// Здесь код для скрытия меню
479				hold.removeClass("active");
480			}
481		});
482	});
483	$('.lvl2 > li').each(function () {
484		var hold = $(this);
485		var par = hold.parent();
486		var all = par.children();
487		var sub = hold.find('.lvl3');
488
489		// Присваиваем координаты для предыдущей позиции курсора
490		var x2 = 0;
491		var y2 = 0;
492
493		// Известные координаты нижних углов треугольника
494		var x1 = hold.outerWidth();
495		var y1 = sub.position().top;
496		var x3 = hold.outerWidth();
497		var y3 = (sub.position().top + sub.outerHeight());
498
499		// Присваиваем зничение вспомогательной переменной
500		var in_delta = false;
501
502		// При наведении на меню так же присваиваем ей false
503		sub.mouseenter(function () {
504			in_delta = false;
505		});
506
507		// Ну и теперь самое главное событие
508		hold.mousemove(function (e) {
509			var parentOffset = $(this).parent().offset();
510
511			// Берем текущие координаты курсора
512			var x0 = (e.pageX - parentOffset.left);
513			var y0 = (e.pageY - parentOffset.top);
514
515			// Ну и теперь простая формула для определения находится ли курсор в треугольнике
516			var z1 = (x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0);
517			var z2 = (x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0);
518			var z3 = (x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0);
519			if ((z1 > 0 && z2 > 0 && z3 > 0) || (z1 < 0 && z2 < 0 && z3 < 0)) {
520				in_delta = true;
521			} else {
522				// Здесь непосредственно нужный нам код для показа меню
523				all.removeClass('active');
524				hold.addClass("active");
525
526				// И сразу же присваиваем значение нашей переменной
527				in_delta = false;
528			}
529
530			// Ну и обязательно присваиваем значения координатам для "предыдущего значения положения" для следущего события
531			x2 = (e.pageX - parentOffset.left);
532			y2 = (e.pageY - parentOffset.top);
533
534		});
535	});
536
537/*
538	$('.lvl3 > .ind > .list > ul > li').each(function () {
539		var hold = $(this);
540		var par = hold.parent();
541		var all = par.children();
542		var sub = hold.find('.lvl4');
543
544		// Присваиваем координаты для предыдущей позиции курсора
545		var x2 = 0;
546		var y2 = 0;
547
548		// Известные координаты нижних углов треугольника
549		var x1 = hold.outerWidth();
550		var y1 = sub.position().top;
551		var x3 = hold.outerWidth();
552		var y3 = (sub.position().top + sub.outerHeight());
553
554		// Присваиваем зничение вспомогательной переменной
555		var in_delta = false;
556
557		// При наведении на меню так же присваиваем ей false
558		sub.mouseenter(function () {
559			in_delta = false;
560		});
561
562		// Ну и теперь самое главное событие
563		hold.mousemove(function (e) {
564			var parentOffset = $(this).parent().offset();
565
566			// Берем текущие координаты курсора
567			var x0 = (e.pageX - parentOffset.left);
568			var y0 = (e.pageY - parentOffset.top);
569
570			// Ну и теперь простая формула для определения находится ли курсор в треугольнике
571			var z1 = (x1 - x0) * (y2 - y1) - (x2 - x1) * (y1 - y0);
572			var z2 = (x2 - x0) * (y3 - y2) - (x3 - x2) * (y2 - y0);
573			var z3 = (x3 - x0) * (y1 - y3) - (x1 - x3) * (y3 - y0);
574			if ((z1 > 0 && z2 > 0 && z3 > 0) || (z1 < 0 && z2 < 0 && z3 < 0)) {
575				in_delta = true;
576			} else {
577				// Здесь непосредственно нужный нам код для показа меню
578				all.removeClass('active');
579				hold.addClass("active");
580
581				// И сразу же присваиваем значение нашей переменной
582				in_delta = false;
583			}
584
585			// Ну и обязательно присваиваем значения координатам для "предыдущего значения положения" для следущего события
586			x2 = (e.pageX - parentOffset.left);
587			y2 = (e.pageY - parentOffset.top);
588
589		});
590	});
591*/
592}
593
594function showFilters() {
595	$('.filters').each(function () {
596		var hold = $(this);
597		var link = $('body').find('.toggle-filter');
598		var close = hold.find('.close');
599
600		var _toggle = function () {
601			hold.toggleClass('open');
602		};
603
604		link.click(function () {
605			_toggle();
606		});
607
608		close.click(function () {
609			_toggle();
610		});
611
612		hold.hover(function () {
613			hold.addClass('hovering');
614		}, function () {
615			hold.removeClass('hovering');
616		});
617
618		link.hover(function () {
619			link.addClass('hovering');
620		}, function () {
621			link.removeClass('hovering');
622		});
623
624		$('body').click(function () {
625			if ((!hold.hasClass('hovering')) && (!link.hasClass('hovering'))) {
626				hold.removeClass('open');
627			}
628		});
629
630		$(document).keyup(function (e) {
631			if (e.keyCode === 27) {
632				hold.removeClass('open');
633			}
634		});
635
636		$('window').resize(function () {
637			if (!link.is(':visible')) {
638				hold.removeClass('open');
639			}
640		});
641	});
642}
643
644/*
645function catalogView() {
646	$('.catalog-view').each(function () {
647		var links = $(this).find('input');
648		var link = $(this).find('input#catalog-with-description');
649
650		var catalog = $('body').find('#catalog-grid');
651
652		var _check = function () {
653			if (!link.is(':checked')) {
654				catalog.removeClass('with-description');
655			} else {
656				catalog.addClass('with-description');
657			}
658		};
659
660		_check();
661		links.on('change', function () {
662			_check();
663		});
664	});
665}
666*/
667
668function timer() {
669    $('.timer').each(function () {
670        var hold = $(this);
671        var timerText = hold.find('.big');
672        var endDate = hold.data('end-date').split(',');
673        try {
674            var end = new Date(endDate[0], endDate[1]-1, endDate[2], endDate[3], endDate[4], endDate[5]);
675        } catch (e) {
676            timerText.html('00:00:00');
677            return;
678        }
679        var seconds = (end - new Date()) / 1000;
680        var minutes, hours;
681
682        if (seconds > 0) {
683            minutes = seconds / 60;
684            hours = minutes / 60;
685            minutes = (hours - Math.floor(hours)) * 60;
686            seconds = Math.floor((minutes - Math.floor(minutes)) * 60);
687            hours = Math.floor(hours);
688            minutes = Math.floor(minutes);
689        } else {
690            timerText.html('00:00:00');
691            return;
692        }
693
694        setTimePage(hours, minutes, seconds, timerText);
695        var timerId = setInterval(function () {
696            secOut();
697        }, 1000);
698
699        function secOut() {
700            if (seconds == 0) {
701                if (minutes == 0) {
702                    if (hours == 0) {
703                        setTimePage(0, 0, 0, timerText);
704                        clearInterval(timerId);
705                    }
706                    else {
707                        hours--;
708                        minutes = 59;
709                        seconds = 59;
710                    }
711                }
712                else {
713                    minutes--;
714                    seconds = 59;
715                }
716            }
717            else {
718                seconds--;
719            }
720            setTimePage(hours, minutes, seconds, timerText);
721        }
722    });
723
724    function setTimePage(h, m, s, timerText) {
725        s = ('0' + s).substr(-2);
726        m = ('0' + m).substr(-2);
727        h = ('0' + h).substr(-2);
728        timerText.html(h + ":" + m + ":" + s);
729    }
730}

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.