PageSourceSearch

https://inmarin.ru/d/26909/t/images/app.js

js inmarin.ru collected 2026-10-02 21:47:26 UTC 8,573 bytes, 311 lines download raw bytes

1'use strict';
2
3
4$(document).ready(function() {
5
6	var IsMobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
7
8	/*!
9	 * АДАПТИВ
10	   ======================================= */
11
12	/*!
13	 * Headroom .mobile-header
14	 */
15	var mobileHeader = document.querySelector('.mobile-header');
16	var headroom  = new Headroom(mobileHeader, {
17		offset : 30,
18		onUnpin : function() {
19			close_toolbar_button_dropdowns()
20		}
21	});
22	headroom.init();
23
24	// внутренние классы
25	var mobile_classes = {
26		opened : 'is-opened',
27		closed : 'is-closed'
28	};
29
30	var target_toolbar_buttons = $('.me-call-trigger, .me-search-trigger, .me-contacts-trigger');
31
32	// выпадалки
33	var toolbar_button_dropdowns = $('.toolbar-button-dropdown');
34
35	/**
36	 * закрываем все выпадалки
37	 */
38	function close_toolbar_button_dropdowns() {
39		toolbar_button_dropdowns
40			.removeClass(mobile_classes.opened);
41		target_toolbar_buttons
42			.removeClass(mobile_classes.opened);
43	}
44
45	/**
46	 * предотвращаем всплытие кликов на документе от .toolbar-button-dropdown
47	 */
48
49	toolbar_button_dropdowns.on('click', function(event) {
50		event.stopPropagation();
51	});
52
53
54	/**
55	 * кнопки у которых есть выпадалки
56	 */
57	target_toolbar_buttons.on('click', function(event) {
58
59		event.stopPropagation();
60		event.preventDefault();
61
62		var $self = $(this);
63
64		if ($self.hasClass(mobile_classes.opened)) {
65
66			$self.removeClass(mobile_classes.opened);
67			close_toolbar_button_dropdowns();
68
69		} else {
70
71			close_toolbar_button_dropdowns();
72
73			if ($self.hasClass('me-search-trigger')) {
74				$('.mobile-search-form__input').focus();
75			}
76
77			$self.addClass(mobile_classes.opened);
78
79		}
80	});
81
82	/**
83	 * нажатие на ESC
84	 */
85	$(document).on('keydown', function(event) {
86
87		if (event.keyCode === 27) {
88			close_toolbar_button_dropdowns();
89		}
90
91	});
92
93	/*!
94	 * клик по документу
95	 */
96	$(document).on('click', function(event) {
97
98		close_toolbar_button_dropdowns();
99	});
100
101	/*!
102	 * Боковое меню
103	 */
104	var hamburger         = $('.me-nav-trigger');
105	var asideNav          = $('.aside-nav');
106	var asideNavContent   = $('.aside-nav__content');
107	var asideNavOverlay   = $('<div class="aside-nav__overlay"></div>');
108	var svgArr            = '<span class="title-ico"><svg fill="#fff" height="30" viewBox="0 0 24 24" width="30" xmlns="http://www.w3.org/2000/svg"		                             ><path d="M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z"/><path d="M0-.75h24v24H0z" fill                                ="none"/></svg><span>';
109
110	$('.aside-nav__scroller').on('click', function(event) {
111		event.stopPropagation();
112	});
113
114	var asideBlock = function(class_name, title) {
115		var title = typeof title == 'undefined' ? '' : '<div class="aside-nav-item__title">' + title + ' '+ svgArr +'</div>';
116		var block = $('<div class="aside-nav-item aside-nav__cats ' + class_name + '">' + title + '</div>');
117		return block;
118	};
119
120	var asideList = function($list, cloneEv) {
121
122		var style = '';
123
124		if ($list.find('.active').length) {
125			style = 'style="display:block;"';
126		}
127
128		return $('<div class="aside-nav-item__list" ' + style + '/>')
129					.append($list.clone(cloneEv));
130	};
131
132	// Обычное меню
133
134	if ( $('.nav_top menu').length>0 ) {
135
136		var mainMenuBlock = new asideBlock('app-nav');
137		var asideMainMenu = new asideList($('.nav_top menu'));
138		mainMenuBlock.append(asideMainMenu);
139		asideNavContent.append(mainMenuBlock);
140
141	}
142
143	if ( $('.lang_panel').length>0 ) {		
144
145		// Верхняя панель
146
147		var topPanel = new asideBlock('app-panel');
148		var topPaneBlock = new asideList($('.lang_panel'));
149		topPanel.append(topPaneBlock);
150		asideNavContent.append(topPanel);
151	}
152
153	if ( $('.menu-left').length>0 ) {		
154
155		// Верхняя панель
156
157		var simpleM = new asideBlock('app-menu-left');
158		var simpleMenuBlock = new asideList($('.menu-left'));
159		simpleM.append(simpleMenuBlock);
160		asideNavContent.append(simpleM);
161	}
162
163	if ( $('.un_sidebar-menu').length>0 ) {		
164
165		// Категории
166
167		var folder = new asideBlock('app-folder');
168		var folderBlock = new asideList($('.un_sidebar-menu'));
169		folder.append(folderBlock);
170		asideNavContent.append(folder);
171
172		// Кнопка
173
174		var button = new asideBlock('app-button');
175		var buttonBlock = new asideList($('.call-order-block'), true);
176		button.append(buttonBlock);
177		asideNavContent.append(button);
178
179
180	}
181
182	asideNav.append(asideNavOverlay);
183
184	function showAsideMenu() {
185
186	    var self = hamburger;
187
188	    if (self.hasClass('opened')) {
189	        self.removeClass('opened');
190	        asideNav.removeClass('animated');
191	        setTimeout(function() {
192	            asideNav.removeClass('opened');
193	        }, 200);
194
195	    } else {
196	        self.addClass('opened');
197	        asideNav.addClass('opened');
198	        asideNav.addClass('animated');
199
200	        $(document.body).trigger("sticky_kit:recalc");
201	    }
202
203	}
204
205	asideNav.on('click', function() {
206	    showAsideMenu();
207	});
208
209	hamburger.on('click', function() {
210	    showAsideMenu();
211	});
212
213	$('.aside-nav-item__title').on('click', function() {
214		$(this).toggleClass('clicked');
215		$(this).closest('.aside-nav-item').find('.aside-nav-item__list').slideToggle(500, function() {
216			$(document.body).trigger("sticky_kit:recalc");
217		});
218	});
219
220	/*
221	 * раскрывающееся боковое меню
222	 */
223
224	$('.app-nav .has-child').each(function(){
225		if ( $(this).find('>ul').length==0 ) {
226			$(this).removeClass('has-child');
227		}
228		$(this).find('>a').append('<span class="toggled-elem"><svg fill="#000" height="24" viewBox="0 0 24 24" width="24" xmlns="http://www.w3.org/2000/svg"><path d="M7.41 7.84L12 12.42l4.59-4.58L18 9.25l-6 6-6-6z"></path><path d="M0-.75h24v24H0z" fill="none"></path></svg></span>')
229	});
230	$('.aside-nav .toggled-elem').click(function(event) {
231
232		var $self = $(this);
233
234		if ($self.closest('li').hasClass('has-child')) {
235
236			event.preventDefault();
237			event.stopPropagation();
238
239			$self.closest('li').toggleClass('opened');
240		}
241
242	});
243
244	$('table[style^="width:"], table[style="text-align: center;"], table.table_mod2, table[style="background-color: #ccccff;"]').wrap('<div class="responsive_table_wrapper"></div>');
245
246	// ЛОМКА ТАБЛИЦ
247
248	var $tables       = $('[data-table-crash]');
249	var aTables       = [];
250	var iterator      = 0;
251	var elResultIndex = 0;
252	var delimiter     = true;
253
254	$.each($tables, function(index, table) {
255
256	    aTables[index] = {};
257	    aTables[index].colsCount = $(table).find('tr:first-child td').length;
258	    aTables[index].rowsInElement = $(table).data('tableCrash');
259	    aTables[index].elements = [];
260
261	    iterator = 0;
262
263	    $.each($(table).find('tr'), function(trIndex, trContent) {
264
265	    	iterator++;
266
267	        delimiter = iterator % aTables[index].rowsInElement;
268
269	        $.each($(trContent).find('td'), function(tdIndex, tdContent) {
270
271				console.log(elResultIndex);
272
273	            if (typeof aTables[index].elements[elResultIndex] === 'undefined') {
274	        	  	aTables[index].elements[elResultIndex] = $('<div class="crash-table__item"></div>');
275	    	  	}
276
277				aTables[index].elements[elResultIndex].append($('<div class="crash-table__item-content crash-table__item-content--' + elResultIndex + '">' + $(tdContent).html() + '</div>'));
278
279	            elResultIndex++;
280
281	            if (delimiter && tdIndex == (aTables[index].colsCount - 1)) {
282	            	console.info('end row');
283	                elResultIndex = elResultIndex - aTables[index].colsCount;
284	            }
285
286	        });
287
288	        if (!delimiter) {
289	        	console.warn('row end');
290	            elResultIndex = elResultIndex;
291	        }
292
293	    });
294
295		elResultIndex = 0;
296
297	    var $crashTableGrid = $('<div class="crash-table-grid crash-table-grid--' + aTables[index].colsCount + '"></div>');
298	    var $crashTableGridList = $('<div class="crash-table-grid__list"></div>');
299
300		$.each(aTables[index].elements, function(curIndex, curElement) {
301
302	    	var $crashTableGridItem = $('<div class="crash-table-grid__item"></div>');
303	    	$crashTableGridItem.append($(curElement));
304	        $crashTableGridList.append($crashTableGridItem);
305	    });
306
307	    $crashTableGrid.append($crashTableGridList);
308	    $(table).after($crashTableGrid);
309
310	});
311});

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.