PageSourceSearch

https://rdzm.ru/local/templates/aspro-scorp-local/js/general.js

js rdzm.ru collected 2026-10-07 17:12:03 UTC 72,947 bytes, 2,460 lines download raw bytes

1var getRandomInt = function(min, max){
2	return Math.floor(Math.random() * (max - min)) + min;
3}
4
5var number_format = function(number, decimals, dec_point, thousands_sep) {
6	number = (number + '').replace(/[^0-9+\-Ee.]/g, '');
7	var n = !isFinite(+number) ? 0 : +number,
8	prec = !isFinite(+decimals) ? 0 : Math.abs(decimals),
9	sep = (typeof thousands_sep === 'undefined') ? ',' : thousands_sep,
10	dec = (typeof dec_point === 'undefined') ? '.' : dec_point,
11	s = '',
12	toFixedFix = function(n, prec){
13		var k = Math.pow(10, prec);
14		return '' + (Math.round(n*k)/k).toFixed(prec);
15	};
16
17	// Fix for IE parseFloat(0.55).toFixed(0) = 0;
18	s = (prec ? toFixedFix(n, prec) : '' + Math.round(n)).split('.');
19
20	if (s[0].length > 3) {
21		s[0] = s[0].replace(/\B(?=(?:\d{3})+(?!\d))/g, sep);
22	}
23
24	if ((s[1] || '')
25		.length < prec) {
26		s[1] = s[1] || '';
27		s[1] += new Array(prec - s[1].length + 1).join('0');
28	}
29
30	return s.join(dec);
31}
32
33var CheckTopMenuDotted = function(){
34	var menu = $('nav.mega-menu');
35	var menuMoreItem = menu.find('td.js-dropdown');
36	if(menu.parents('.collapse').css('display') == 'none'){
37		return false;
38	}
39
40	var block_w = menu.closest('div').actual('width');
41	var	menu_w = menu.find('table').actual('outerWidth');
42	var afterHide = false;
43
44	while(menu_w > block_w) {
45		menuItemOldSave = menu.find('td').not('.nosave').last();
46		if(menuItemOldSave.length){
47			menuMoreItem.show();
48			menuItemNewSave = '<li class="' + (menuItemOldSave.hasClass('dropdown') ? 'dropdown-submenu ' : '') + (menuItemOldSave.hasClass('active') ? 'active ' : '') + '" data-hidewidth="' + menu_w + '">' + menuItemOldSave.find('.wrap').html() + '</li>';
49			menuItemOldSave.remove();
50			menuMoreItem.find('> .wrap > .dropdown-menu').prepend(menuItemNewSave);
51			menu_w = menu.find('table').actual('outerWidth');
52			afterHide = true;
53		}
54		else{
55			break;
56		}
57	}
58
59	if(!afterHide) {
60		do {
61			var menuItemOldSaveCnt = menuMoreItem.find('>.wrap>.dropdown-menu>li').length;
62			if(!menuItemOldSaveCnt) {
63				menuMoreItem.hide();
64				break;
65			}
66			else {
67				menuItemOldSave = menuMoreItem.find('>.wrap>.dropdown-menu>li').first();
68				var hideWidth = menuItemOldSave.attr('data-hidewidth');
69				if(hideWidth > block_w) {
70					break
71				}
72				else {
73					menuItemNewSave = '<td class="' + (menuItemOldSave.hasClass('dropdown-submenu') ? 'dropdown ' : '') + (menuItemOldSave.hasClass('active') ? 'active ' : '') + '" data-hidewidth="' + block_w + '"><div class="wrap">' + menuItemOldSave.html() + '</div></td>';
74					menuItemOldSave.remove();
75					$(menuItemNewSave).insertBefore(menu.find('td.js-dropdown'));
76					if(!menuItemOldSaveCnt) {
77						menuMoreItem.hide();
78						break;
79					}
80				}
81			}
82			menu_w = menu.find('table').actual('outerWidth');
83		}
84		while(menu_w <= block_w);
85	}
86
87	menu.find('td').css('visibility', 'visible');
88
89	return false;
90}
91
92var CheckTopVisibleMenu = function(that) {
93	var dropdownMenu = $('.dropdown-menu:visible').last();
94	if(dropdownMenu.length){
95		dropdownMenu.find('a').css('white-space', '');
96		dropdownMenu.css('left', '');
97		dropdownMenu.css('right', '');
98		dropdownMenu.removeClass('toright');
99
100		var dropdownMenu_left = dropdownMenu.offset().left;
101		if(typeof(dropdownMenu_left) != 'undefined'){
102			var menu = dropdownMenu.parents('.mega-menu');
103			var menu_width = menu.outerWidth();
104			var menu_left = menu.offset().left;
105			var menu_right = menu_left + menu_width;
106			var isToRight = dropdownMenu.parents('.toright').length > 0;
107			var parentsDropdownMenus = dropdownMenu.parents('.dropdown-menu');
108			var isHasParentDropdownMenu = parentsDropdownMenus.length > 0;
109			if(isHasParentDropdownMenu){
110				var parentDropdownMenu_width = parentsDropdownMenus.first().outerWidth();
111				var parentDropdownMenu_left = parentsDropdownMenus.first().offset().left;
112				var parentDropdownMenu_right = parentDropdownMenu_width + parentDropdownMenu_left;
113			}
114
115			if(parentDropdownMenu_right + dropdownMenu.outerWidth() > menu_right){
116				dropdownMenu.find('a').css('white-space', 'normal');
117			}
118
119			var dropdownMenu_width = dropdownMenu.outerWidth();
120			var dropdownMenu_right = dropdownMenu_left + dropdownMenu_width;
121
122			if(dropdownMenu_right > menu_right || isToRight){
123				var addleft = 0;
124				addleft = menu_right - dropdownMenu_right;
125				if(isHasParentDropdownMenu || isToRight){
126					dropdownMenu.css('left', 'auto');
127					dropdownMenu.css('right', '100%');
128					dropdownMenu.addClass('toright');
129				}
130				else{
131					var dropdownMenu_curLeft = parseInt(dropdownMenu.css('left'));
132					dropdownMenu.css('left', (dropdownMenu_curLeft + addleft) + 'px');
133				}
134			}
135		}
136	}
137}
138
139var CheckPopupTop = function(){
140	var popup = $('.jqmWindow.show');
141	if(popup.length){
142		var windowHeight = $(window).height();
143		var popupTop = parseInt(popup.css('top'));
144		var popupHeight = popup.height();
145
146		if(windowHeight >= popupHeight){
147			// center
148			popupTop = (windowHeight - popupHeight) / 2;
149		}
150		else{
151			if(documentScrollTop > documentScrollTopLast){
152				// up
153				popupTop -= documentScrollTop - documentScrollTopLast;
154			}
155			else if(documentScrollTop < documentScrollTopLast){
156				// down
157				popupTop += documentScrollTopLast - documentScrollTop;
158			}
159
160			if(popupTop + popupHeight < windowHeight){
161				// bottom
162				popupTop = windowHeight - popupHeight;
163			}
164			else if(popupTop > 0){
165				// top
166				popupTop = 0;
167			}
168		}
169		popup.css('top', popupTop + 'px');
170	}
171}
172
173var CheckMainBannerSliderVText = function(slider){
174	if(slider.parents('.banners-big').length){
175		var sh = slider.height();
176		slider.find('.item').each(function() {
177			var curSlideTextInner = $(this).find('.text .inner');
178			if(curSlideTextInner.length){
179				var ith = curSlideTextInner.actual('height');
180				var p = (ith >= sh ? 0 : Math.floor((sh - ith) / 2));
181				curSlideTextInner.css('padding-top', p + 'px');
182			}
183		});
184	}
185}
186
187var CheckStickyFooter = function() {
188	$(window).resize(function() { //  BX.addCustomEvent('onWindowResize', function(eventdata) {
189		try{
190			var footerHeight = $('footer').outerHeight();
191			ignoreResize.push(true);
192			$('footer').css('margin-top', '-' + footerHeight + 'px');
193			$('.body').css('margin-bottom', '-' + footerHeight + 'px');
194			$('.main').css('padding-bottom', footerHeight + 25 + 'px');
195			ignoreResize.pop();
196		}
197		catch(e){}
198	});
199}
200
201var getGridSize = function(counts) {
202	var z = parseInt($('.body_media').css('top'));
203	return (z == 2 ? counts[0] : z == 1 ? counts[1] : counts[2]);
204}
205
206var CheckFlexSlider = function(){
207	$('.flexslider:not(.thmb)').each(function(){
208		var slider = $(this);
209		slider.resize();
210		var counts = slider.data('flexslider').vars.counts;
211		if(typeof(counts) != 'undefined'){
212			var cnt = getGridSize(counts);
213			var to0 = (cnt != slider.data('flexslider').vars.minItems || cnt != slider.data('flexslider').vars.maxItems || cnt != slider.data('flexslider').vars.move);
214			if(to0){
215				slider.data('flexslider').vars.minItems = cnt;
216				slider.data('flexslider').vars.maxItems = cnt;
217				slider.data('flexslider').vars.move = cnt;
218				slider.flexslider(0);
219				slider.resize();
220				slider.resize(); // twise!
221			}
222		}
223	});
224}
225
226var CheckHeaderFixed = function(){
227	var header = $('header.canfixed');
228	if(header.length){
229		var headerLogoAndMenuRow = header.find('.logo_and_menu-row');
230		if(headerLogoAndMenuRow.length){
231			var isHeaderFixed = false;
232			var headerCanFix = true;
233			var headerFixedHeight = 53;
234			var headerNormalHeight = headerLogoAndMenuRow.actual('outerHeight');
235			var headerDiffHeight = headerNormalHeight - headerFixedHeight;
236			var mobileBtnMenu = $('.btn.btn-responsive-nav');
237			$(window).scroll(function(){
238				var headerTop = $('#panel:visible').outerHeight();
239				var scrollTop = $(window).scrollTop();
240				if(!isHeaderFixed){
241					headerNormalHeight = headerLogoAndMenuRow.actual('outerHeight');
242					headerDiffHeight = headerNormalHeight - headerFixedHeight;
243				}
244
245				headerCanFix = !mobileBtnMenu.is(':visible') && !$('.dropdown-menu:visible').length;
246
247				if(!isHeaderFixed){
248					if((scrollTop > headerNormalHeight + headerTop) && headerCanFix){
249						isHeaderFixed = true;
250						var headerNext = header.next();
251						if(headerNext.length){
252							var mt = parseInt(headerNext.css('margin-top'));
253						}
254						header.css('top', '-' + headerNormalHeight + 'px');
255						header.addClass('fixed');
256						if(headerNext.length){
257							headerNext.css('margin-top', headerNormalHeight + mt + 'px');
258						}
259						header.delay(0).animate({top: '0'}, 300);
260					}
261				}
262				else if(isHeaderFixed || !headerCanFix){
263					if((scrollTop <= headerDiffHeight + headerTop) || !headerCanFix){
264						isHeaderFixed = false;
265						header.stop(true, true).css('top', '');
266						header.removeClass('fixed');
267						var headerNext = header.next();
268						if(headerNext.length){
269							headerNext.css('margin-top', '');
270						}
271						CheckTopMenuDotted();
272					}
273				}
274			});
275		}
276	}
277}
278
279var CheckObjectsSizes = function() {
280	$('.container iframe,.container object,.container video').each(function() {
281		var height_attr = $(this).attr('height');
282		var width_attr = $(this).attr('width');
283		if (height_attr && width_attr) {
284			$(this).css('height', $(this).outerWidth() * height_attr / width_attr);
285		}
286	});
287}
288
289var InitScrollToTop = function(){
290	if(arScorpOptions.THEME.SCROLLTOTOP_TYPE !== 'NONE'){
291		scrollToTopAnimateClassIn = arScorpOptions.THEME.SCROLLTOTOP_TYPE.indexOf('ROUND') !== -1 ? 'rotateIn' : 'rubberBand';
292		scrollToTopAnimateClassOut = arScorpOptions.THEME.SCROLLTOTOP_TYPE.indexOf('ROUND') !== -1 ? 'rotateOut' : 'flipOutX';
293
294		$('body').append($('<a />').addClass('scroll-to-top ' + arScorpOptions.THEME.SCROLLTOTOP_TYPE + ' ' + arScorpOptions.THEME.SCROLLTOTOP_POSITION).attr({'href': '#', 'id': 'scrollToTop'}));
295
296		$scrolltotop = $('#scrollToTop');
297
298		$scrolltotop.click(function(e){
299			e.preventDefault();
300			$('body, html').animate({scrollTop : 0}, 500);
301			return false;
302		});
303	}
304}
305
306var CheckScrollToTop = function(){
307	if($scrolltotop.length){
308		if(documentScrollTop > 150){
309			$scrolltotop.stop(true, true).addClass('visible').addClass('animated');
310			if(scrollToTopAnimateClassOut){
311				$scrolltotop.removeClass(scrollToTopAnimateClassOut);
312			}
313			if(scrollToTopAnimateClassIn){
314				$scrolltotop.addClass(scrollToTopAnimateClassIn);
315			}
316		}
317		else{
318			$scrolltotop.stop(true, true).removeClass('visible');
319			if(scrollToTopAnimateClassIn){
320				$scrolltotop.removeClass(scrollToTopAnimateClassIn);
321			}
322			if(scrollToTopAnimateClassOut){
323				$scrolltotop.addClass(scrollToTopAnimateClassOut);
324			}
325		}
326
327		var bottom = 23;
328		var scrollVal = $(window).scrollTop();
329		var windowHeight = $(window).height();
330		var footerOffset = $('footer').offset().top;
331
332		if(scrollVal + windowHeight > footerOffset){
333			$scrolltotop.css('bottom', bottom + scrollVal + windowHeight - footerOffset);
334		}
335		else if(parseInt($scrolltotop.css('bottom')) > bottom){
336			$scrolltotop.css('bottom', bottom);
337		}
338	}
339}
340
341function pauseMainBanner(){
342	$('.banners-big .flexslider').flexslider('pause');
343}
344
345function playMainBanner(){
346	$('.banners-big .flexslider').flexslider('play');
347}
348
349function startMainBannerSlideVideo($slide){
350	var slideActiveIndex = $slide.attr('data-slide_index')
351	var $slides = $slide.closest('.items').find('.item[data-slide_index="'+ slideActiveIndex +'"]') // current slide & cloned
352	var videoSource = $slide.attr('data-video_source')
353
354	if(videoSource){
355		$slides.addClass('loading')
356		pauseMainBanner()
357
358		var videoPlayerSrc = $slide.attr('data-video_src')
359		var videoSoundDisabled = $slide.attr('data-video_disable_sound')
360		var bVideoSoundDisabled = videoSoundDisabled == 1
361		var videoLoop = $slide.attr('data-video_loop')
362		var bVideoLoop = videoLoop == 1
363		var videoCover = $slide.attr('data-video_cover')
364		var bVideoCover = videoCover == 1 // && !isMobile
365		var videoUnderText = $slide.attr('data-video_under_text')
366		var bVideoUnderText = videoUnderText == 1
367		var videoPlayer = $slide.attr('data-video_player')
368		var bVideoPlayerYoutube = videoPlayer === 'YOUTUBE'
369		var bVideoPlayerVimeo = videoPlayer === 'VIMEO'
370		var bVideoPlayerRutube = videoPlayer === 'RUTUBE'
371		var bVideoPlayerHtml5 = videoPlayer === 'HTML5'
372
373		if(videoPlayerSrc && !$slide.find('.video').length){
374
375			var InitPlayer = function(){
376				$slides.each(function(i, node){
377					var $_slide = $(node);
378					var videoID = getRandomInt(100, 1000);
379					var bClone = $_slide.hasClass('clone')
380
381					if(bVideoPlayerYoutube){
382						$_slide.prepend('<iframe id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');
383					}
384					else if(bVideoPlayerVimeo){
385						$_slide.prepend('<iframe id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');
386					}
387					else if(bVideoPlayerRutube){
388						videoPlayerSrc = videoPlayerSrc + '&playerid=' + videoID;
389						$_slide.prepend('<iframe id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '" src="'+ videoPlayerSrc +'" frameborder="0" webkitallowfullscreen mozallowfullscreen allowfullscreen></iframe>');
390					}
391					else if(bVideoPlayerHtml5){
392						$_slide.prepend('<video id="player_' + videoID + '" class="video' + (bVideoCover ? ' cover' : '') + '"' + (bVideoLoop ? ' loop ' : '') + (bVideoSoundDisabled || bClone ? ' muted ' : '') + '><source src="'+ videoPlayerSrc +'" type=\'video/mp4; codecs="avc1.42E01E, mp4a.40.2"\' /><p class="vjs-no-js">To view this video please enable JavaScript, and consider upgrading to a web browser that supports HTML5 video</p></iframe>');
393					}
394
395					if(typeof(players) !== 'undefined' && players){
396						players[videoID] = {
397							id: 'player_' + videoID,
398							mute: bVideoSoundDisabled || bClone,
399							loop: bVideoLoop,
400							cover: bVideoCover,
401							videoPlayer: videoPlayer,
402							slideIndex: slideActiveIndex,
403							clone: bClone,
404							playing: false
405						};
406
407						if(bVideoPlayerYoutube){
408							window[players[videoID].id] = new YT.Player(
409								players[videoID].id, {
410									events: {
411										'onReady': function (e) {
412											//var videoID = e.target.h.id.replace('player_', '');
413											//console.log($(e.target).attr('id'));
414											if(videoID){
415												var mute = players[videoID].mute
416												var cover = players[videoID].cover
417												var clone = players[videoID].clone
418										
419												// mute sound
420												if(mute || clone){
421													window[players[videoID].id].mute()
422												}
423										
424												// cover video
425												if(cover){
426													CoverPlayer()
427												}
428										
429												// not start clone video playing
430												if(clone){
431													setTimeout(function(){
432														e.target.pauseVideo()
433													}, 100)
434												}
435												else{
436													// stop slider
437													pauseMainBanner()
438										
439													e.target.playVideo()
440												}
441										
442												// update slide class
443												var $slide = $('#player_' + videoID).closest('.item')
444												$slide.addClass('started')
445												$slide.removeClass('loading')
446											}
447										},
448										'onStateChange': function (e){
449											//var videoID = e.target.h.id.replace('player_', '');
450											//console.log(e.target);
451											//console.log(videoID);
452											if(videoID){
453												var clone = players[videoID].clone
454												var loop = players[videoID].loop
455												var slideIndex = players[videoID].slideIndex
456										
457												if(!clone){
458													if(e.data === YT.PlayerState.PLAYING){
459														players[videoID].playing = true
460										
461														// stop slider
462														pauseMainBanner()
463													}
464													else if(e.data === YT.PlayerState.PAUSED){
465														players[videoID].playing = false
466										
467														// sync time in cloned players & pause
468														var time = Math.floor(window[players[videoID].id].getCurrentTime() * 10) / 10
469														window[players[videoID].id].seekTo(time, true)
470														for(var j in players){
471															if(players[j].slideIndex == slideIndex && players[j].clone){
472																window[players[j].id].pauseVideo()
473																window[players[j].id].seekTo(time, true)
474															}
475														}
476													}
477													else if(e.data === YT.PlayerState.ENDED){
478														players[videoID].playing = false
479														if(loop){
480															e.target.playVideo()
481														}
482														else{
483															// play slider
484															playMainBanner()
485														}
486													}
487												}
488											}
489										}
490									}
491								}
492							);
493						}
494						else if(bVideoPlayerVimeo){
495						    window[players[videoID].id] = new Vimeo.Player(document.getElementById(players[videoID].id), {autopause: false, byline: false, loop: false, title: false});
496						    window[players[videoID].id].on('loaded', onVimeoPlayerReady)
497						    window[players[videoID].id].on('play', onVimeoPlayerStateChange)
498						    window[players[videoID].id].on('pause', onVimeoPlayerStateChange)
499						    window[players[videoID].id].on('ended', onVimeoPlayerStateChange)
500						}
501						else if(bVideoPlayerRutube){
502							document.getElementById(players[videoID].id).onload = function(e){
503								var videoID = this.id.replace('player_', '')
504								players[videoID].contentWindow = this.contentWindow
505								onRutubePlayerReady(videoID)
506							}
507						}
508						else if(bVideoPlayerHtml5){
509							document.getElementById(players[videoID].id).addEventListener('loadeddata', onHtml5PlayerReady)
510							document.getElementById(players[videoID].id).addEventListener('play', onHtml5PlayerStateChange)
511							document.getElementById(players[videoID].id).addEventListener('pause', onHtml5PlayerStateChange)
512							document.getElementById(players[videoID].id).addEventListener('ended', onHtml5PlayerStateChange)
513						}
514					}
515				});
516			}
517
518			if(!bVideoPlayerHtml5){
519				var obPlayerVariable = ''
520				var fnPlayerVariable = ''
521				if(typeof window['YoutubePlayerScriptLoaded'] === 'undefined'){
522					window['YoutubePlayerScriptLoaded'] = false
523				}
524				if(typeof window['VimeoPlayerScriptLoaded'] === 'undefined'){
525					window['VimeoPlayerScriptLoaded'] = false
526				}
527				if(typeof window['RutubePlayerListnersAdded'] === 'undefined'){
528					window['RutubePlayerListnersAdded'] = false
529				}
530
531				// load script
532				if(bVideoPlayerYoutube){
533					obPlayerVariable = 'YT'
534					fnPlayerVariable = 'Player'
535					if(!window['YoutubePlayerScriptLoaded']){
536						var script = document.createElement('script');
537						script.src = "https://www.youtube.com/iframe_api";
538						var firstScriptTag = document.getElementsByTagName('script')[0];
539						firstScriptTag.parentNode.insertBefore(script, firstScriptTag);
540						window['YoutubePlayerScriptLoaded'] = true;
541					}
542				}
543				else if(bVideoPlayerVimeo){
544					obPlayerVariable = 'Vimeo'
545					if(!window['VimeoPlayerScriptLoaded']){
546						var script = document.createElement('script');
547						script.src = 'https://player.vimeo.com/api/player.js';
548						(document.head || document.documentElement).appendChild(script);
549						window['VimeoPlayerScriptLoaded'] = true
550					}
551				}
552				else if(bVideoPlayerRutube){
553					if(!window['RutubePlayerListnersAdded']){
554						window.addEventListener('message', function(e){
555							if(e.origin.indexOf('rutube.ru') !== -1){
556							    var message = JSON.parse(e.data)
557							    if(typeof message === 'object' && message){
558							    	if(typeof message.type !== 'undefined' && message.type){
559							    		var videoID = false
560
561							    		for(var j in players){
562									    	if(typeof players[j].contentWindow !== 'undefined'){
563									    		if(players[j].contentWindow == e.source){
564									    			videoID = j
565									    			break
566									    		}
567									    	}
568									    }
569
570									    if(videoID){
571										    switch (message.type) {
572										        case 'player:changeState':
573										            onRutubePlayerStateChange(videoID, message.data.state)
574										            break
575										        case 'player:currentTime':
576										            onRutubePlayerCurrentTime(videoID, message.data.time)
577										            break
578										    }
579										}
580									}
581							    }
582							}
583						});
584					}
585				}
586
587				if(!obPlayerVariable.length){
588					InitPlayer()
589				}
590				else{
591					// wait player class
592					if(typeof window[obPlayerVariable] === 'object'){
593						if(!fnPlayerVariable.length || (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === 'function')){
594
595							InitPlayer()
596						}
597					}
598					else{
599						var waitPlayerInterval = setInterval(function(){
600							if(typeof window[obPlayerVariable] === 'object'){
601								if(!fnPlayerVariable.length || (fnPlayerVariable.length && typeof window[obPlayerVariable][fnPlayerVariable] === 'function')){
602
603									clearInterval(waitPlayerInterval)
604
605									InitPlayer()
606								}
607							}
608						}, 50)
609					}
610				}
611
612			}
613			else{
614				InitPlayer()
615			}
616		}
617	}
618}
619
620var CoverPlayer = function(){
621	var $videoCover = $('.video.cover')
622	if($videoCover.length){
623		var bannersHeight = $('.banners-big').height()
624		var bannersWidth = $('.banners-big').width()
625		var windowWidth = $(window).width()
626		var height = windowWidth * 9 / 16
627		$videoCover.css({'height': height + 'px', 'margin-top': ((bannersHeight - height) / 2) + 'px'})
628	}
629}
630
631/*
632function onYoutubePlayerReady(e) {
633	var videoID = e.target.h.id.replace('player_', '');
634	//console.log($(e.target).attr('id'));
635	if(videoID){
636		var mute = players[videoID].mute
637		var cover = players[videoID].cover
638    	var clone = players[videoID].clone
639
640    	// mute sound
641		if(mute || clone){
642			window[players[videoID].id].mute()
643		}
644
645    	// cover video
646		if(cover){
647	    	CoverPlayer()
648	    }
649
650    	// not start clone video playing
651    	if(clone){
652    		setTimeout(function(){
653				e.target.pauseVideo()
654    		}, 100)
655    	}
656    	else{
657		    // stop slider
658			pauseMainBanner()
659
660		    e.target.playVideo()
661    	}
662
663    	// update slide class
664		var $slide = $('#player_' + videoID).closest('.item')
665		$slide.addClass('started')
666		$slide.removeClass('loading')
667    }
668}
669
670function onYoutubePlayerStateChange(e){
671	var videoID = e.target.h.id.replace('player_', '');
672	//console.log(e.target);
673	console.log($(e.target));
674    if(videoID){
675    	var clone = players[videoID].clone
676		var loop = players[videoID].loop
677    	var slideIndex = players[videoID].slideIndex
678
679    	if(!clone){
680			if(e.data === YT.PlayerState.PLAYING){
681				players[videoID].playing = true
682
683				// stop slider
684				pauseMainBanner()
685			}
686			else if(e.data === YT.PlayerState.PAUSED){
687		    	players[videoID].playing = false
688
689		    	// sync time in cloned players & pause
690	    		var time = Math.floor(window[players[videoID].id].getCurrentTime() * 10) / 10
691				window[players[videoID].id].seekTo(time, true)
692				for(var j in players){
693					if(players[j].slideIndex == slideIndex && players[j].clone){
694						window[players[j].id].pauseVideo()
695						window[players[j].id].seekTo(time, true)
696					}
697				}
698			}
699			else if(e.data === YT.PlayerState.ENDED){
700				players[videoID].playing = false
701		    	if(loop){
702		    		e.target.playVideo()
703		    	}
704		    	else{
705		    		// play slider
706					playMainBanner()
707		    	}
708			}
709		}
710	}
711}
712*/
713
714function onVimeoPlayerReady(e){
715	var videoID = this.element.id.replace('player_', '')
716	if(videoID){
717		var mute = players[videoID].mute
718		var cover = players[videoID].cover
719    	var clone = players[videoID].clone
720
721    	// mute sound
722		if(mute || clone){
723			window[players[videoID].id].setVolume(0)
724		}
725
726    	// cover video
727		if(cover){
728	    	CoverPlayer()
729	    }
730
731    	// not start clone video playing
732    	if(clone){
733    		setTimeout(function(){
734				window[players[videoID].id].pause()
735    		}, 100)
736    	}
737    	else{
738		    // stop slider
739			pauseMainBanner()
740
741		    window[players[videoID].id].play()
742    	}
743
744    	// update slide class
745		var $slide = $('#player_' + videoID).closest('.item')
746		$slide.addClass('started')
747		$slide.removeClass('loading')
748    }
749}
750
751function onVimeoPlayerStateChange(e){
752	var videoID = this.element.id.replace('player_', '')
753	if(videoID){
754		var cover = players[videoID].cover
755    	var clone = players[videoID].clone
756		var loop = players[videoID].loop
757    	var slideIndex = players[videoID].slideIndex
758
759    	if(!clone){
760    		window[players[videoID].id].getPaused().then(function(paused){
761    			if(paused){
762			    	players[videoID].playing = false
763
764			    	// sync time in cloned players & pause
765			    	window[players[videoID].id].getCurrentTime().then(function(seconds){
766			    		var time = Math.floor(seconds * 10) / 10
767			    		window[players[videoID].id].setCurrentTime(time).then(function(seconds){
768							for(var j in players){
769								if(players[j].slideIndex == slideIndex && players[j].clone){
770									window[players[j].id].pause()
771									window[players[j].id].setCurrentTime(time).then(function(seconds){})
772								}
773							}
774			    		})
775			    	})
776    			}
777    			else{
778		    		window[players[videoID].id].getEnded().then(function(ended){
779		    			if(ended){
780							players[videoID].playing = false
781					    	if(loop){
782					    		window[players[videoID].id].play()
783					    	}
784					    	else{
785					    		// play slider
786								playMainBanner()
787					    	}
788		    			}
789		    			else{
790		    				players[videoID].playing = true
791
792		    				// stop slider
793							pauseMainBanner()
794		    			}
795		    		})
796    			}
797    		})
798		}
799	}
800}
801
802function onRutubePlayerReady(videoID){
803	if(videoID){
804		var mute = players[videoID].mute
805		var cover = players[videoID].cover
806    	var clone = players[videoID].clone
807    	var player = document.getElementById(players[videoID].id)
808
809    	// mute sound
810		if(mute || clone){
811			player.contentWindow.postMessage(JSON.stringify({
812			    type: 'player:mute',
813			    data: {}
814			}), '*')
815		}
816
817    	// cover video
818		if(cover){
819	    	CoverPlayer()
820	    }
821
822    	// not start clone video playing
823    	if(clone){
824    		setTimeout(function(){
825				player.contentWindow.postMessage(JSON.stringify({
826				    type: 'player:pause',
827				    data: {}
828				}), '*')
829    		}, 100)
830    	}
831    	else{
832		    // stop slider
833			pauseMainBanner()
834
835		    player.contentWindow.postMessage(JSON.stringify({
836			    type: 'player:play',
837			    data: {}
838			}), '*')
839    	}
840
841    	// update slide class
842		var $slide = $('#player_' + videoID).closest('.item')
843		$slide.addClass('started')
844		$slide.removeClass('loading')
845    }
846}
847
848function onRutubePlayerCurrentTime(videoID, time){
849	if(videoID){
850		players[videoID].time = time
851	}
852}
853
854function onRutubePlayerStateChange(videoID, state){
855	if(videoID){
856    	var clone = players[videoID].clone
857		var loop = players[videoID].loop
858    	var slideIndex = players[videoID].slideIndex
859    	var player = document.getElementById(players[videoID].id)
860
861    	if(!clone){
862			if(state === 'playing'){
863				players[videoID].playing = true
864
865				// stop slider
866				pauseMainBanner()
867			}
868			else if(state === 'paused'){
869		    	players[videoID].playing = false
870
871		    	// sync time in cloned players & pause
872	    		var time = Math.floor(players[videoID].time * 10) / 10
873				player.contentWindow.postMessage(JSON.stringify({
874				    type: 'player:setCurrentTime',
875				    data: {time: time}
876				}), '*')
877				for(var j in players){
878					if(players[j].slideIndex == slideIndex && players[j].clone){
879						document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({
880						    type: 'player:pause',
881						    data: {}
882						}), '*')
883						document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({
884						    type: 'player:setCurrentTime',
885						    data: {time: time}
886						}), '*')
887					}
888				}
889			}
890			else if(state === 'stopped'){
891				players[videoID].playing = false
892		    	if(loop){
893		    		player.contentWindow.postMessage(JSON.stringify({
894					    type: 'player:play',
895					    data: {}
896					}), '*')
897		    	}
898		    	else{
899		    		// play slider
900					playMainBanner()
901		    	}
902			}
903		}
904	}
905}
906
907function onHtml5PlayerReady(e){
908	var videoID = e.target.id.replace('player_', '')
909	if(videoID){
910		var mute = players[videoID].mute
911		var cover = players[videoID].cover
912    	var clone = players[videoID].clone
913
914    	// mute sound
915		if(mute || clone){
916			$('#' + players[videoID].id).prop('muted', true);
917		}
918
919    	// cover video
920		if(cover){
921	    	CoverPlayer()
922	    }
923
924    	// not start clone video playing
925    	if(clone){
926    		e.target.pause()
927    	}
928    	else{
929		    // stop slider
930			pauseMainBanner()
931
932		    e.target.play()
933    	}
934
935    	// update slide class
936		var $slide = $('#player_' + videoID).closest('.item')
937		$slide.addClass('started')
938		$slide.removeClass('loading')
939    }
940}
941
942function onHtml5PlayerStateChange(e){
943	var videoID = e.target.id.replace('player_', '')
944	if(videoID){
945    	var cover = players[videoID].cover
946    	var clone = players[videoID].clone
947		var loop = players[videoID].loop
948    	var slideIndex = players[videoID].slideIndex
949
950    	if(!clone){
951			if(e.target.paused){
952		    	players[videoID].playing = false
953
954		    	// sync time in cloned players & pause
955	    		var time = Math.floor(e.target.currentTime * 10) / 10
956				e.target.currentTime = time
957				for(var j in players){
958					if(players[j].slideIndex == slideIndex && players[j].clone){
959						document.getElementById(players[j].id).pause()
960						document.getElementById(players[j].id).currentTime = time
961					}
962				}
963			}
964			else if(e.target.ended){
965				players[videoID].playing = false
966		    	if(loop){
967		    		e.target.play()
968		    	}
969		    	else{
970		    		// play slider
971					playMainBanner()
972		    	}
973			}
974			else{
975				players[videoID].playing = true
976
977				// stop slider
978				pauseMainBanner()
979			}
980		}
981	}
982}
983
984var waitingExists = function(selector, delay, callback){
985	if(typeof(callback) !== 'undefined' && selector.length && delay > 0){
986		delay = parseInt(delay);
987		delay = (delay < 0 ? 0 : delay);
988
989		if(!$(selector).length){
990			setTimeout(function(){
991				waitingExists(selector, delay, callback);
992			}, delay);
993		}
994		else{
995			callback();
996		}
997	}
998}
999
1000var waitingNotExists = function(selectorExists, selectorNotExists, delay, callback){
1001	if(typeof(callback) !== 'undefined' && selectorExists.length && selectorNotExists.length && delay > 0){
1002		delay = parseInt(delay);
1003		delay = (delay < 0 ? 0 : delay);
1004
1005		setTimeout(function(){
1006			if(selectorExists.length && !$(selectorNotExists).length){
1007				callback();
1008			}
1009		}, delay);
1010	}
1011}
1012
1013function onLoadjqm(hash){
1014	var name = $(hash.t).data('name'),
1015		top = (($(window).height() > hash.w.height()) ? Math.floor(($(window).height() - hash.w.height()) / 2) : 0) + 'px';
1016	$.each($(hash.t).get(0).attributes, function(index, attr){
1017		if(/^data\-autoload\-(.+)$/.test(attr.nodeName)){
1018			var key = attr.nodeName.match(/^data\-autoload\-(.+)$/)[1];
1019			var el = $('input[name="'+key.toUpperCase()+'"]');
1020			el.val( $(hash.t).data('autoload-'+key) ).attr('readonly', 'readonly');
1021			el.attr('title', el.val());
1022		}
1023	});
1024	if($(hash.t).data('autohide')){
1025		$(hash.w).data('autohide', $(hash.t).data('autohide'));
1026	}
1027	if(name == 'order_product'){
1028		if($(hash.t).data('product')) {
1029			$('input[name="PRODUCT"]').val($(hash.t).data('product')).attr('readonly', 'readonly').attr('title', $('input[name="PRODUCT"]').val());
1030		}
1031	}
1032	if(name == 'question'){
1033		if($(hash.t).data('product')) {
1034			$('input[name="NEED_PRODUCT"]').val($(hash.t).data('product')).attr('readonly', 'readonly').attr('title', $('input[name="NEED_PRODUCT"]').val());
1035		}
1036	}
1037	hash.w.addClass('show').css({'margin-left': '-' + Math.floor(hash.w.width() / 2) + 'px', 'top': top, 'opacity': 1});
1038}
1039
1040function onHide(hash){
1041	if($(hash.w).data('autohide')){
1042		eval($(hash.w).data('autohide'));
1043	}
1044	hash.w.css('opacity', 0).removeClass('show');
1045	hash.o.remove();
1046	setTimeout(function(){
1047		hash.w.empty();
1048	}, 200);
1049}
1050
1051NativeActual = function(node, method, bOuter, bIncMargin){
1052	if(typeof node === 'object' && node.nodeType && (typeof method === 'string') && method.length){
1053		var r
1054		var bHidden = node.offsetParent === null
1055		if(bHidden){
1056			var styleAttr = node.getAttribute('style')
1057			node.setAttribute('style', 'visibility: hidden !important; display: block !important;')
1058		}
1059		var style = node.currentStyle || window.getComputedStyle(node)
1060		if(method === 'height'){
1061			r = node.offsetHeight - (!bOuter ? parseInt(style.paddingTop) + parseInt(style.paddingBottom) : 0) + (bIncMargin ? parseInt(style.marginTop) + parseInt(style.marginBottom) : 0)
1062		}
1063		else if(method === 'width'){
1064			r = node.offsetWidth - (!bOuter ? parseInt(style.paddingLeft) + parseInt(style.paddingRight) : 0) + (bIncMargin ? parseInt(style.marginLeft) + parseInt(style.marginRight) : 0)
1065		}
1066		if(bHidden){
1067			if(styleAttr === null){
1068				node.removeAttribute('style')
1069			}
1070			else{
1071				node.setAttribute('style', styleAttr)
1072			}
1073		}
1074		return r
1075	}
1076	return null
1077}
1078
1079$.fn.equalizeHeights = function(outer, native){
1080	var arHeight = this.map(function(i, e){
1081		if(typeof native !== 'undefined' && native){
1082			return NativeActual(e, 'height', outer);
1083		}
1084		else{
1085			return $(e).actual(outer ? 'outerHeight' : 'height');
1086		}
1087	}).get();
1088
1089	var maxHeight = ((tmp = Math.max.apply(this, arHeight)) % 2) ? --tmp : tmp;
1090
1091	return this.height(maxHeight);
1092}
1093
1094$.fn.sliceHeight = function(options){
1095	function _slice(el){
1096		el.each(function() {
1097			$(this).css({'line-height': '', 'height': ''});
1098		});
1099		if(typeof(options.autoslicecount) === 'undefined' || options.autoslicecount !== false){
1100			var elw = (el.first().hasClass('item') ? el.first().outerWidth() : el.first().parents('.item').outerWidth());
1101			var elsw = el.first().parents('.items').outerWidth();
1102			if(!elsw){
1103				elsw = el.first().parents('.row').outerWidth();
1104			}
1105			if(elsw && elw){
1106				options.slice = Math.floor(elsw / elw);
1107			}
1108		}
1109		if(options.slice){
1110			for(var i = 0, c = el.length; i < c; i += options.slice){
1111				$(el.slice(i, i + options.slice)).equalizeHeights(options.outer, options.native);
1112			}
1113		}
1114		if(options.lineheight){
1115			var lineheightAdd = parseInt(options.lineheight);
1116			if(isNaN(lineheightAdd)){
1117				lineheightAdd = 0;
1118			}
1119			el.each(function() {
1120				$(this).css('line-height', ($(this).actual('height') + lineheightAdd) + 'px');
1121			});
1122		}
1123	}
1124
1125	var options = $.extend({
1126		slice: null,
1127		outer: false,
1128		lineheight: false,
1129		autoslicecount: true,
1130		native: true
1131	}, options);
1132
1133	var el = $(this);
1134	_slice(el);
1135
1136	BX.addCustomEvent('onWindowResize', function(eventdata) {
1137		ignoreResize.push(true);
1138		_slice(el);
1139		ignoreResize.pop();
1140	});
1141}
1142
1143$.fn.jqmEx = function(){
1144	$(this).each(function(){
1145		var _this = $(this);
1146		var name = _this.data('name');
1147
1148		if(name.length){
1149			var script = arScorpOptions['SITE_DIR'] + 'ajax/form.php';
1150			var paramsStr = ''; var trigger = ''; var arTriggerAttrs = {};
1151			$.each(_this.get(0).attributes, function(index, attr){
1152				var attrName = attr.nodeName;
1153				var attrValue = _this.attr(attrName);
1154				trigger += '[' + attrName + '=\"' + attrValue + '\"]';
1155				arTriggerAttrs[attrName] = attrValue;
1156				if(/^data\-param\-(.+)$/.test(attrName)){
1157					var key = attrName.match(/^data\-param\-(.+)$/)[1];
1158					paramsStr += key + '=' + attrValue + '&';
1159				}
1160			});
1161
1162			var triggerAttrs = JSON.stringify(arTriggerAttrs);
1163			var encTriggerAttrs = encodeURIComponent(triggerAttrs);
1164			script += '?' + paramsStr + 'data-trigger=' + encTriggerAttrs;
1165
1166			if(!$('.' + name + '_frame[data-trigger="' + encTriggerAttrs + '"]').length){
1167				if(_this.attr('disabled') != 'disabled'){
1168					$('body').find('.' + name + '_frame[data-trigger="' + encTriggerAttrs + '"]').remove();
1169					$('body').append('<div class="' + name + '_frame jqmWindow" style="width:500px" data-trigger="' + encTriggerAttrs + '"></div>');
1170					$('.' + name + '_frame[data-trigger="' + encTriggerAttrs + '"]').jqm({trigger: trigger, onLoad: function(hash){onLoadjqm(hash);}, onHide: function(hash){onHide(hash);}, ajax:script});
1171				}
1172			}
1173		}
1174	});
1175}
1176
1177var InitFlexSlider = function() {
1178	$('.flexslider:not(.thmb):not(.flexslider-init)').each(function(){
1179		var slider = $(this);
1180		var options;
1181		var defaults = {
1182			animationLoop: false,
1183			controlNav: false,
1184			directionNav: true,
1185			animation: "slide"
1186		}
1187		var config = $.extend({}, defaults, options, slider.data('plugin-options'));
1188		if(typeof(config.counts) != 'undefined' && config.direction !== 'vertical'){
1189			config.maxItems =  getGridSize(config.counts);
1190			config.minItems = getGridSize(config.counts);
1191			config.move = getGridSize(config.counts);
1192			config.itemWidth = 200;
1193		}
1194
1195		config.after = config.start = function(slider){
1196			var eventdata = {slider: slider};
1197			BX.onCustomEvent('onSlide', [eventdata]);
1198		}
1199
1200		config.end = function(slider){
1201			var eventdata = {slider: slider};
1202			BX.onCustomEvent('onSlideEnd', [eventdata]);
1203		}
1204
1205		slider.flexslider(config).addClass('flexslider-init');
1206		if(config.controlNav)
1207			slider.addClass('flexslider-control-nav');
1208		if(config.directionNav)
1209			slider.addClass('flexslider-direction-nav');
1210	});
1211}
1212
1213
1214// BASKET
1215var setBasketItemsClasses = function(){
1216	if(typeof(arBasketItems) !== 'undefined' && Object.keys(arBasketItems).length){
1217		for(var key in arBasketItems){
1218			$('[data-item]').each(function(){
1219				if($(this).data('item').ID == key){
1220					$(this).find('.buy_block').addClass('in');
1221				}
1222			});
1223		}
1224	}
1225}
1226
1227var Summ = function(el, counterInputValueNew, price){
1228	if(counterInputValueNew <= 0){
1229		counterInputValueNew = 1;
1230	}
1231	var summ = number_format(counterInputValueNew*price, 0, '.', ' ');
1232	var allSumm = 0;
1233	el.closest('.items').find('.item').each(function(){
1234		var $this = $(this),
1235			price = parseFloat($this.find('input[name=PRICE]').val()),
1236			count =  parseFloat($this.find('input.count').val());
1237		if(count <= 0){
1238			count = 1;
1239		}
1240		if(!isNaN(price) && !isNaN(count)){
1241			allSumm += count*price;
1242		}
1243	});
1244	allSumm = number_format(parseFloat(allSumm), 0, '.', ' ');
1245	el.closest('.item').find('.summ .price_val').text(summ);
1246	el.closest('.basket').find('.foot .total>span').text(allSumm);
1247}
1248
1249var timerBasketUpdate = false;
1250var BasketCounter = function(el){
1251	var bClassMinus = (el.hasClass('minus')),
1252		bClassPlus = (el.hasClass('plus')),
1253		bClassCount = (el.hasClass('count')),
1254		$buyBlock = el.closest('.buy_block'),
1255		$counterInput = el.closest('.counter').find('input.count'),
1256		counterInputValue = parseFloat($.trim($counterInput.val())),
1257		price = parseFloat($buyBlock.find('input[name=PRICE]').val()),
1258		bAjax = (el.closest('.basket').length ? true : false);
1259
1260	// class minus button
1261	if(bClassMinus){
1262		var counterInputValueNew = counterInputValue - 1;
1263		if(counterInputValueNew <= 0){
1264			counterInputValueNew = 1;
1265		}
1266		$counterInput.val(counterInputValueNew);
1267		if(bAjax){
1268			Summ(el, counterInputValueNew, price);
1269			if(timerBasketUpdate){
1270				clearTimeout(timerBasketUpdate);
1271				timerBasketUpdate = false;
1272			}
1273			timerBasketUpdate = setTimeout(function(){
1274				BasketUpdate(el, counterInputValueNew);
1275				timerBasketUpdate = false;
1276			}, 700);
1277		}
1278	}
1279	// class plus button
1280	else if(bClassPlus){
1281		var counterInputValueNew = counterInputValue + 1;
1282		var counterInputMaxCount = Math.pow(10, parseInt($counterInput.attr('maxlength'))) 
1282- 1;
1283		if(counterInputValueNew > counterInputMaxCount){
1284			counterInputValueNew = counterInputMaxCount;
1285		}
1286		$counterInput.val(counterInputValueNew);
1287		if(bAjax){
1288			Summ(el, counterInputValueNew, price);
1289			if(timerBasketUpdate){
1290				clearTimeout(timerBasketUpdate);
1291				timerBasketUpdate = false;
1292			}
1293			timerBasketUpdate = setTimeout(function(){
1294				BasketUpdate(el, counterInputValueNew);
1295				timerBasketUpdate = false;
1296			}, 700);
1297		}
1298	}
1299	// class input
1300	else if(bClassCount){
1301		var counterInputValueNew = counterInputValue;
1302		if(counterInputValueNew <= 0 || isNaN(counterInputValueNew)){
1303			counterInputValueNew = 1;
1304		}
1305		el.val(counterInputValueNew);
1306		if(bAjax){
1307			BasketUpdate(el, counterInputValueNew);
1308		}
1309	}
1310
1311	var getCurUri = $.trim($('input[name=getPageUri]').val());
1312	if(!getCurUri && !el.closest('.basket.fly').length){
1313		$buyBlock.find('.to_cart').data('quantity', counterInputValueNew);
1314	}
1315}
1316
1317var BasketUpdate = function(el, counterInputValueNew){
1318	var	itemData = el.closest('[data-item]').data('item'),
1319		itemData = (typeof(arBasketItems) === 'object' && typeof(arBasketItems[itemData.ID]) === 'object' ? arBasketItems[itemData.ID] : itemData),
1320		$buyBlock = el.closest('.buy_block'),
1321		scrollTop = ($('.basket.fly').length ? $('.basket.fly .items_wrap').scrollTop() : ($('.basket_top:visible').length ? $('.basket_top .items:visible').scrollTop() : ''));
1322
1323	if(typeof(itemData) != 'undefined' && !isNaN(itemData.ID) && itemData.ID > 0 && !$buyBlock.hasClass('loading')){
1324		$.ajax({
1325			url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php',
1326			data: {itemData: itemData, quantity: counterInputValueNew},
1327			beforeSend: function(){
1328				$buyBlock.addClass('loading');
1329			},
1330			complete: function(){
1331				$buyBlock.removeClass('loading');
1332			},
1333			success: function(data){
1334				if(typeof(data) === 'object'){
1335					arBasketItems = data;
1336				}
1337
1338				var getCurUri = $.trim($('input[name=getPageUri]').val());
1339
1340				if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && arScorpOptions['THEME']['ORDER_BASKET_VIEW'] === 'HEADER' && $('.basket_top').length){
1341					$.ajax({
1342						url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php',
1343						type: 'POST',
1344						beforeSend: function(){
1345							$buyBlock.addClass('loading');
1346						},
1347						complete: function(){
1348							$buyBlock.removeClass('loading');
1349						},
1350						success: function(html){
1351							$buyBlock.removeClass('in');
1352
1353							$('.ajax_basket').html(html);
1354							$('.basket_top .items').scrollTop(scrollTop);
1355
1356							if(!getCurUri){
1357								setTimeout(function(){
1358									$('.basket_top .dropdown').addClass('expanded');
1359								}, basketShowDelay);
1360
1361								setTimeout(function(){
1362									$('.basket_top .dropdown').removeClass('expanded');
1363								}, basketHideDelay);
1364							}
1365						}
1366					});
1367				}
1368
1369				if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && arScorpOptions['THEME']['ORDER_BASKET_VIEW'] === 'FLY' && $('.basket.fly').length){
1370					$.ajax({
1371						url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php',
1372						type: 'POST',
1373						beforeSend: function(){
1374							$buyBlock.addClass('loading');
1375						},
1376						complete: function(){
1377							$buyBlock.removeClass('loading');
1378						},
1379						success: function(html){
1380							$('.ajax_basket').html(html);
1381							$('.basket.fly .items_wrap').scrollTop(scrollTop);
1382						}
1383					});
1384				}
1385
1386				if(getCurUri){
1387					$.ajax({
1388						url: getCurUri,
1389						type: 'POST',
1390						beforeSend: function(){
1391							$buyBlock.addClass('loading');
1392						},
1393						complete: function(){
1394							$buyBlock.removeClass('loading');
1395						},
1396						success: function(html){
1397							if($('.basket.default').length){
1398								$('.basket.default').html(html);
1399							}
1400						}
1401					});
1402				}
1403			}
1404		});
1405	}
1406}
1407
1408var scrollToTopAnimateClassIn = false;
1409var scrollToTopAnimateClassOut = false;
1410var players = {}
1411
1412var isMobile = jQuery.browser.mobile
1413if(isMobile){
1414	document.documentElement.className += ' mobile'
1415}
1416
1417var $body = {}
1418var $scrolltotop = {}
1419
1420$(document).ready(function(){
1421	$body = $('body')
1422
1423	InitScrollToTop();
1424	CheckStickyFooter();
1425
1426	if(!jQuery.browser.safari){
1427		CheckTopMenuDotted();
1428		CheckHeaderFixed();
1429
1430		setTimeout(function() {
1431			$(window).resize(); // need to check resize flexslider & menu
1432		}, 350);
1433
1434		$(window).scroll();
1435	}
1436	else{
1437		setTimeout(function() {
1438			$(window).resize(); // need to check resize flexslider & menu
1439			setTimeout(function(){
1440				CheckHeaderFixed();
1441				setTimeout(function(){
1442					$(window).scroll();
1443				}, 50);
1444			}, 50);
1445		}, 350);
1446	}
1447
1448	setBasketItemsClasses();
1449
1450	$('.blink img').blink();
1451
1452	waitingNotExists('#bx-composite-banner .bx-composite-btn', '#footer .col-sm-3.hidden-md.hidden-lg #bx-composite-banner .bx-composite-btn', 500, function() {
1453		$('#footer .col-sm-3.hidden-md.hidden-lg #bx-composite-banner').html($('#bx-composite-banner .bx-composite-btn').parent().html());
1454	});
1455
1456	if(arScorpOptions['THEME']['USE_DEBUG_GOALS'] === 'Y'){
1457		$.cookie('_ym_debug', 1, {path: '/',});
1458	}
1459	else{
1460		$.cookie('_ym_debug', null, {path: '/',});
1461	}
1462
1463	$.extend( $.validator.messages, {
1464		required: BX.message('JS_REQUIRED'),
1465		email: BX.message('JS_FORMAT'),
1466		equalTo: BX.message('JS_PASSWORD_COPY'),
1467		minlength: BX.message('JS_PASSWORD_LENGTH'),
1468		remote: BX.message('JS_ERROR')
1469	});
1470
1471	$.validator.addMethod(
1472		'regexp', function( value, element, regexp ){
1473			var re = new RegExp( regexp );
1474			return this.optional( element ) || re.test( value );
1475		},
1476		BX.message('JS_FORMAT')
1477	);
1478
1479	$.validator.addMethod(
1480		'filesize', function( value, element, param ){
1481			return this.optional( element ) || ( element.files[0].size <= param )
1482		},
1483		BX.message('JS_FILE_SIZE')
1484	);
1485
1486	$.validator.addMethod(
1487		'date', function( value, element, param ) {
1488			var status = false;
1489			if(!value || value.length <= 0){
1490				status = true;
1491			}
1492			else{
1493				var re = new RegExp('^([0-9]{2})(.)([0-9]{2})(.)([0-9]{4})$');
1494				var matches = re.exec(value);
1495				if(matches){
1496					var composedDate = new Date(matches[5], (matches[3] - 1), matches[1]);
1497					status = ((composedDate.getMonth() == (matches[3] - 1)) && (composedDate.getDate() == matches[1]) && (composedDate.getFullYear() == matches[5]));
1498				}
1499			}
1500			return status;
1501		}, BX.message('JS_DATE')
1502	);
1503
1504	$.validator.addMethod(
1505		'datetime', function( value, element, param ) {
1506			var status = false;
1507			if(!value || value.length <= 0){
1508				status = true;
1509			}
1510			else{
1511				var re = new RegExp('^([0-9]{2})(.)([0-9]{2})(.)([0-9]{4}) ([0-9]{1,2}):([0-9]{1,2})$');
1512				var matches = re.exec(value);
1513				if(matches){
1514					var composedDate = new Date(matches[5], (matches[3] - 1), matches[1], matches[6], matches[7]);
1515					status = ((composedDate.getMonth() == (matches[3] - 1)) && (composedDate.getDate() == matches[1]) && (composedDate.getFullYear() == matches[5]) && (composedDate.getHours() == matches[6]) && (composedDate.getMinutes() == matches[7]));
1516				}
1517			}
1518			return status;
1519		}, BX.message('JS_DATETIME')
1520	);
1521
1522	$.validator.addMethod(
1523		'extension', function(value, element, param){
1524			param = typeof param === 'string' ? param.replace(/,/g, '|') : 'png|jpe?g|gif';
1525			return this.optional(element) || value.match(new RegExp('.(' + param + ')$', 'i'));
1526		}, BX.message('JS_FILE_EXT')
1527	);
1528
1529	$.validator.addMethod(
1530		'captcha', function( value, element, params ){
1531			return $.validator.methods.remote.call(this, value, element,{
1532				url: arScorpOptions['SITE_DIR'] + 'ajax/check-captcha.php',
1533				type: 'post',
1534				data:{
1535					captcha_word: value,
1536					captcha_sid: function(){
1537						return $(element).closest('form').find('input[name="captcha_sid"]').val();
1538					}
1539				}
1540			});
1541		},
1542		BX.message('JS_ERROR')
1543    );
1544
1545	/*reload captcha*/
1546	$('body').on( 'click', '.refresh', function(e){
1547		e.preventDefault();
1548		$.ajax({
1549			url: arScorpOptions['SITE_DIR'] + 'ajax/captcha.php'
1550		}).done(function(text){
1551			$('.captcha_sid').val(text);
1552			$('.captcha_img').attr('src', '/bitrix/tools/captcha.php?captcha_sid=' + text);
1553		});
1554	});
1555
1556	$.validator.addMethod(
1557		'recaptcha', function(value, element, param){
1558			var id = $(element).closest('form').find('.g-recaptcha').attr('data-widgetid');
1559			if(typeof id !== 'undefined'){
1560				return grecaptcha.getResponse(id) != '';
1561			}
1562			else{
1563				return true;
1564			}
1565		}, BX.message('JS_RECAPTCHA_ERROR')
1566	);
1567
1568	$.validator.addMethod(
1569		'processing_approval', function(value, element, param){
1570			return $(element).is(':checked');
1571		}, BX.message('JS_PROCESSING_ERROR')
1572	);
1573
1574	$.validator.addClassRules({
1575		'phone':{
1576			regexp: arScorpOptions['THEME']['VALIDATE_PHONE_MASK']
1577		},
1578		'confirm_password':{
1579			equalTo: 'input[name="REGISTER\[PASSWORD\]"]',
1580			minlength: 6
1581		},
1582		'password':{
1583			minlength: 6
1584		},
1585		'inputfile':{
1586			extension: arScorpOptions['THEME']['VALIDATE_FILE_EXT'],
1587			filesize: 5000000
1588		},
1589		'datetime':{
1590			datetime: ''
1591		},
1592		'captcha':{
1593			captcha: ''
1594		},
1595		'recaptcha':{
1596			recaptcha: ''
1597		},
1598		'processing_approval':{
1599			processing_approval: ''
1600		}
1601	});
1602
1603	InitFlexSlider();
1604
1605	// for check flexslider bug in composite mode
1606	waitingNotExists('.detail .galery #slider', '.detail .galery #slider .flex-viewport', 
16061000, function() {
1607		InitFlexSlider();
1608		setTimeout(function() {
1609			$(window).resize();
1610		}, 350);
1611	});
1612
1613	/*check mobile device*/
1614	if(jQuery.browser.mobile){
1615		$('.style-switcher').addClass('hidden');
1616		$('.hint span').remove();
1617
1618		$(document).on("click", '*[data-event="jqm"]', function (e) {
1619			e.preventDefault();
1620			var _this = $(this);
1621			var name = _this.data('name');
1622
1623			if(name.length){
1624				var script = arScorpOptions['SITE_DIR'] + 'form/';
1625				var paramsStr = ''; var arTriggerAttrs = {};
1626				$.each(_this.get(0).attributes, function(index, attr){
1627					var attrName = attr.nodeName;
1628					var attrValue = _this.attr(attrName);
1629					arTriggerAttrs[attrName] = attrValue;
1630					if(/^data\-param\-(.+)$/.test(attrName)){
1631						var key = attrName.match(/^data\-param\-(.+)$/)[1];
1632						paramsStr += key + '=' + attrValue + '&';
1633					}
1634				});
1635
1636				var triggerAttrs = JSON.stringify(arTriggerAttrs);
1637				var encTriggerAttrs = encodeURIComponent(triggerAttrs);
1638				script += '?name=' + name + '&' + paramsStr + 'data-trigger=' + encTriggerAttrs;
1639				location.href = script;
1640			}
1641		});
1642
1643		$('.fancybox').removeClass('fancybox');
1644	}
1645	else{
1646		$(document).on('click', '*[data-event="jqm"]',  function (e) {	
1647			e.preventDefault();
1648			$(this).jqmEx();
1649			$(this).trigger('click');
1650		});
1651	}
1652
1653	$('a.fancybox:has(img)').fancybox();
1654
1655	// Responsive Menu Events
1656	var addActiveClass = false;
1657	$('#mainMenu li.dropdown > a > i, #mainMenu li.dropdown-submenu > a > i').on('click', function(e){
1658		e.preventDefault();
1659		if($(window).width() > 979) return;
1660		addActiveClass = $(this).closest('li').hasClass('resp-active');
1661		// $('#mainMenu').find('.resp-active').removeClass('resp-active');
1662		if(!addActiveClass){
1663			$(this).closest("li").addClass("resp-active");
1664		}else{
1665			$(this).closest("li").removeClass("resp-active");
1666		}
1667	});
1668
1669	if($('.styled-block .row > div.col-md-3').length){
1670		BX.addCustomEvent('onWindowResize', function(eventdata) {
1671			try{
1672				ignoreResize.push(true);
1673				$('.styled-block .row > div.col-md-3').each(function() {
1674					$(this).css({'height': '', 'line-height': ''});
1675					var z = parseInt($('.body_media').css('top'));
1676					if(z > 0){
1677						var rowHeight = $(this).parents('.row').first().actual('outerHeight');
1678						$(this).css({'height': rowHeight + 'px', 'line-height' : rowHeight + 'px'});
1679					}
1680				});
1681			}
1682			catch(e){}
1683			finally{
1684				ignoreResize.pop();
1685			}
1686		});
1687	}
1688
1689	if($('.order-block').length){
1690		BX.addCustomEvent('onWindowResize', function(eventdata) {
1691			try{
1692				ignoreResize.push(true);
1693				$('.order-block').each(function() {
1694					var cols = $(this).find('.row > div');
1695					if(cols.length){
1696						var colFirst = cols.first();
1697						var colLast = cols.last();
1698						var colText = colLast.find('.text');
1699						var bText = colText.length;
1700						var bOnlyText = cols.length === 1 && bText;
1701						var bPrice = colFirst.find('.price').length;
1702						var z = parseInt($('.body_media').css('top'));
1703
1704						cols.css({'height': '', 'padding-top': '', 'padding-bottom': ''});
1705						colText.css({'height': '', 'padding-top': '', 'padding-bottom': ''});
1706						if((!bPrice && z > 0) || (bPrice && z > 1)){
1707							var minHeight = 83;
1708
1709							if(!bOnlyText){
1710								var colFirst_height = colFirst.outerHeight();
1711								colFirst_height = colFirst_height >= minHeight ? colFirst_height : minHeight;
1712							}
1713
1714							if(bText){
1715								var colLast_height = colLast.outerHeight();
1716								colLast_height = colLast_height >= minHeight ? colLast_height : minHeight;
1717							}
1718
1719							var colMax_height = (bText ? (!bOnlyText ? (colLast_height >= colFirst_height ? colLast_height : colFirst_height) : colLast_height) : colFirst_height);
1720
1721							if(!bOnlyText){
1722								var textPadding = 22 + (colMax_height - colFirst.outerHeight()) / 2;
1723								colFirst.css({'padding-top': textPadding + 'px', 'padding-bottom': textPadding + 'px', 'height': colMax_height + 'px'});
1724							}
1725							if(bText){
1726								colLast.css({'height': colMax_height + 'px'});
1727								var textPadding = 22 + (colMax_height - colText.outerHeight()) / 2;
1728								colText.css({'padding-top': textPadding + 'px', 'padding-bottom': textPadding + 'px', 'height': colMax_height + 'px'});
1729							}
1730						}
1731					}
1732				});
1733			}
1734			catch(e){}
1735			finally{
1736				ignoreResize.pop();
1737			}
1738		});
1739	}
1740
1741	$(document).on('click', '.mega-menu .dropdown-menu', function(e){
1742		e.stopPropagation()
1743	});
1744
1745	$(document).on('click', '.mega-menu .dropdown-toggle.more-items', function(e){
1746		e.preventDefault();
1747	});
1748
1749	$(document).on('mouseenter', '.table-menu .dropdown,.table-menu .dropdown-submenu,.table-menu .dropdown-toggle',  function () {	
1750		CheckTopVisibleMenu();
1751	});
1752
1753	$(document).on('click', '.mega-menu .search-item .search-icon, .menu-row #title-search .fa-close',  function (e) {		
1754		e.preventDefault();
1755		$('.menu-row #title-search').toggleClass('hide');
1756	});
1757
1758	$(document).on('keyup', '.mega-menu ul.nav .search input',  function (e) {	
1759		var inputValue = $(this).val();
1760		$('.menu-row > .search input').val(inputValue);
1761		if(e.keyCode == 13){
1762			$('.menu-row > .search form').submit();
1763		}
1764	});
1765
1766	$(document).on('keyup', '.menu-row > .search input',  function (e) {		
1767		var inputValue = $(this).val();
1768		$('.mega-menu ul.nav .search input').val(inputValue);
1769		if(e.keyCode == 13){
1770			$('.menu-row > .search form').submit();
1771		}
1772	});
1773
1774	$(document).on('click', '.mega-menu ul.nav .search button',  function (e) {		
1775		e.preventDefault();
1776		var inputValue = $(this).parents('.search').find('input').val();
1777		$('.menu-and-search .search input').val(inputValue);
1778		$('.menu-row > .search form').submit();
1779	});
1780
1781	$(document).on('click', '.filter .calendar',  function (e) {		
1782		var button = $(this).next();
1783		if(button.hasClass('calendar-icon')){
1784			button.trigger('click');
1785		}
1786	});
1787
1788	/* toggle */
1789	var $this = this,
1790		previewParClosedHeight = 25;
1791
1792	$('section.toggle > label').prepend($('<i />').addClass('fa fa-plus'));
1793	$('section.toggle > label').prepend($('<i />').addClass('fa fa-minus'));
1794	$('section.toggle.active > p').addClass('preview-active');
1795	$('section.toggle.active > div.toggle-content').slideDown(350, function() {});
1796
1797	$('section.toggle > label').click(function(e){
1798		var parentSection = $(this).parent(),
1799			parentWrapper = $(this).parents('div.toogle'),
1800			previewPar = false,
1801			isAccordion = parentWrapper.hasClass('toogle-accordion');
1802
1803		if(isAccordion && typeof(e.originalEvent) != 'undefined') {
1804			parentWrapper.find('section.toggle.active > label').trigger('click');
1805		}
1806
1807		parentSection.toggleClass('active');
1808
1809		// Preview Paragraph
1810		if( parentSection.find('> p').get(0) ){
1811			previewPar = parentSection.find('> p');
1812			var previewParCurrentHeight = previewPar.css('height');
1813			previewPar.css('height', 'auto');
1814			var previewParAnimateHeight = previewPar.css('height');
1815			previewPar.css('height', previewParCurrentHeight);
1816		}
1817
1818		// Content
1819		var toggleContent = parentSection.find('> div.toggle-content');
1820
1821		if( parentSection.hasClass('active') ){
1822			$(previewPar).animate({
1823				height: previewParAnimateHeight
1824			}, 350, function() {
1825				$(this).addClass('preview-active');
1826			});
1827			toggleContent.slideDown(350, function() {});
1828		}
1829		else{
1830			$(previewPar).animate({
1831				height: previewParClosedHeight
1832			}, 350, function() {
1833				$(this).removeClass('preview-active');
1834			});
1835			toggleContent.slideUp(350, function() {});
1836		}
1837	});
1838
1839	/* accordion */
1840	$('.accordion-head').on('click', function(e){
1841		e.preventDefault();
1842		if(!$(this).next().hasClass('collapsing')){
1843			$(this).toggleClass('accordion-open');
1844			$(this).toggleClass('accordion-close');
1845		}
1846	});
1847
1848	/* progress bar */
1849	$('[data-appear-progress-animation]').each(function(){
1850		var $this = $(this);
1851		$this.appear(function(){
1852			var delay = ($this.attr('data-appear-animation-delay') ? $this.attr('data-appear-animation-delay') : 1);
1853			if( delay > 1 )
1854				$this.css('animation-delay', delay + 'ms');
1855			$this.addClass($this.attr('data-appear-animation'));
1856
1857			setTimeout(function(){
1858				$this.animate({
1859					width: $this.attr('data-appear-progress-animation')
1860				}, 1500, 'easeOutQuad', function() {
1861					$this.find('.progress-bar-tooltip').animate({
1862						opacity: 1
1863					}, 500, 'easeOutQuad');
1864				});
1865			}, delay);
1866		}, {accX: 0, accY: -50});
1867	});
1868
1869	$('a[rel=tooltip],a[data-toggle=tooltip],span[data-toggle=tooltip]').tooltip();
1870	$('a[rel=tooltip],a[data-toggle=tooltip],span[data-toggle=tooltip]').on('click', function(){
1871		var tooltip = $(this).next()[0];
1872		$('.tooltip-inner').closest('.tooltip').each(function(){
1873			if($(this)[0] != tooltip){
1874				$(this).prev().tooltip('hide');
1875			}
1876		});
1877	});
1878	$(document).click(function(e){
1879		if(!$(e.target).closest('.filter .bx_filter_parameters_box_title a[data-toggle="tooltip"]').length){
1880			$('.tooltip-inner').closest('.tooltip').each(function(){
1881				$(this).prev().tooltip('hide');
1882			});
1883		}
1884	});
1885
1886	$(document).on('change', 'select.sort',  function () {		
1887		location.href = $(this).val();
1888	});
1889
1890	setTimeout(function(th){
1891		$('.catalog.group.list .item').each(function(){
1892			var th = $(this);
1893			if((tmp = th.find('.image').outerHeight() - th.find('.text_info').outerHeight()) > 0){
1894				th.find('.text_info .titles').height(th.find('.text_info .titles').outerHeight() + tmp);
1895			}
1896
1897		})
1898	}, 50);
1899
1900	/*item galery*/
1901
1902	$(document).on('click', '.thumbs .item a',  function (e) {		
1903		e.preventDefault();
1904		$('.thumbs .item').removeClass('current');
1905		$(this).closest('.item').toggleClass('current');
1906		$('.slides li' + $(this).attr('href')).addClass('current').siblings().removeClass('current');
1907	});
1908
1909	$(document).on('click', 'header.fixed .btn-responsive-nav',  function () {		
1910		$('html, body').animate({scrollTop: 0}, 400);
1911	});
1912
1913	$('body').on('click', '.form .refresh-page', function(){
1914		var href = $(this).attr('data-url');
1915		if(typeof href !== 'undefined'){
1916			location.href = href;
1917		}
1918		else{
1919			location.href = location.href;
1920		}
1921	});
1922
1923	$(document).on('click', '.print', function(){
1924		window.print();
1925	});
1926
1927	// click on HTML5 video
1928	$(document).on('click', 'video.video', function(e){
1929		var videoID = e.target.id.replace('player_', '')
1930	    if(videoID){
1931	    	if(players[videoID].playing){
1932				e.target.pause()
1933	    	}
1934	    	else{
1935	    		e.target.play()
1936	    	}
1937	    }
1938	})
1939
1940	// START VIDEO BUTTON
1941	$(document).on('click', '.banners-big .item .btn-video', function(){
1942		$(this).addClass('loading');
1943		startMainBannerSlideVideo($(this).closest('.item'));
1944	});
1945
1946	// basket fly auto close
1947	$(document).on('click', function(){
1948		if($('.basket.fly').length && $('.ajax_basket').hasClass('opened')){
1949			$('.ajax_basket').removeClass('opened');
1950		}
1951	});
1952
1953	$(document).on('click', '.basket.fly', function(e){
1954		e.stopPropagation();
1955	});
1956
1957	// counter input events
1958	$(document).on('keydown', '.count', function(e){
1959		// Allow: backspace, delete, tab, escape, enter and .
1960		if($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 ||
1961			 // Allow: Ctrl+A, Command+A
1962			(e.keyCode === 65 && (e.ctrlKey === true || e.metaKey === true)) ||
1963			 // Allow: home, end, left, right, down, up
1964			(e.keyCode >= 35 && e.keyCode <= 40)) {
1965				 // let it happen, don't do anything
1966				 return;
1967		}
1968		// Ensure that it is a number and stop the keypress
1969		if((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)){
1970			e.preventDefault();
1971		}
1972	});
1973
1974	$(document).on('keyup', '.count', function(e){
1975		var $this = $(this);
1976		Summ($this, $this.val(), $this.closest('.item').find('input[name=PRICE]').val());
1977	});
1978
1979	$(document).on('blur', '.count', function(){
1980		BasketCounter($(this));
1981	});
1982
1983	$(document).on('click', '.minus, .plus', function(e){
1984		e.stopPropagation();
1985		BasketCounter($(this));
1986	});
1987
1988	var basketShowDelay = 100;
1989	var basketHideDelay = 1000;
1990
1991	// Add2Basket
1992	$(document).on('click', '.to_cart', function(e){
1993		e.stopPropagation();
1994
1995		var $item = $(this).closest('[data-item]'),
1996			$buyBlock = $item.find('.buy_block'),
1997			itemData = $item.data('item'),
1998			itemQuantity = parseFloat($buyBlock.find('.to_cart').data('quantity'));
1999
2000		if(isNaN(itemQuantity) || itemQuantity <= 0){
2001			itemQuantity = 1;
2002		}
2003
2004		if(!isNaN(itemData.ID) && parseInt(itemData.ID) > 0 && !$buyBlock.hasClass('loading')){
2005			$.ajax({
2006				url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php',
2007				type: 'POST',
2008				data: {itemData: itemData, quantity: itemQuantity},
2009				beforeSend: function(){
2010					$buyBlock.addClass('loading');
2011				},
2012				complete: function(){
2013					$buyBlock.removeClass('loading');
2014				},
2015				success: function(html){
2016					$buyBlock.addClass('in');
2017
2018					var countItem = ($('.basket').length ? parseInt($('.basket .count').text()) : parseInt($('.basket_top:visible .count').text()));
2019					++countItem;
2020					$('.basket_top .count, .basket .count').text(countItem).removeClass('empted');
2021					$('.ajax_basket').html(html);
2022
2023					if(arScorpOptions['THEME']['USE_SALE_GOALS'] !== 'N'){
2024						var eventdata = {goal: 'goal_basket_add', params: {itemData: itemData, quantity: itemQuantity}};
2025						BX.onCustomEvent('onCounterGoals', [eventdata]);
2026					}
2027
2028					if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'HEADER' && $('.basket_top').length){
2029						if(!$('.basket_top .dropdown').hasClass('expanded')){
2030							setTimeout(function(){
2031								$('.basket_top .dropdown').addClass('expanded');
2032							}, basketShowDelay);
2033							setTimeout(function(){
2034								$('.basket_top .dropdown').removeClass('expanded');
2035							}, basketHideDelay);
2036						}
2037					}
2038					else if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'FLY' && $('.basket.fly').length){
2039						setTimeout(function(){
2040							if(!$('.ajax_basket').hasClass('opened')){
2041								$('.ajax_basket').addClass('opened');
2042							}
2043						}, basketShowDelay);
2044					}
2045				}
2046			});
2047		}
2048	});
2049
2050	// remove from basket
2051	$(document).on('click', '.remove', function(){
2052		var $item = $(this).closest('[data-item]'),
2053			$buyBlock = $item.find('.buy_block'),
2054			itemData = $item.data('item'),
2055			bRemove = 'Y',
2056			bRemoveAll = ($.trim($(this).closest('[data-remove_all]').data('remove_all')) === 'Y' ? 'Y' : false);
2057			countItem = ($('.basket').length ? parseInt($('.basket .item').length) : parseInt($('.basket_top:visible .item').length)),
2058			bOneItem = (countItem - 1 <= 0),
2059			scrollTop = ($('.basket.fly').length ? $('.basket.fly .items_wrap').scrollTop() : ($('.basket_top:visible').length ? $('.basket_top .items:visible').scrollTop() : ''));
2060
2061		var _ajax = function(){
2062			$.ajax({
2063				url: arScorpOptions['SITE_DIR'] + 'ajax/basket_items.php',
2064				data: {itemData: itemData, remove: bRemove, removeAll: bRemoveAll},
2065				beforeSend: function(){
2066					$buyBlock.addClass('loading');
2067				},
2068				complete: function(){
2069					$buyBlock.removeClass('loading');
2070				},
2071				success: function(html){
2072					if(bRemoveAll){
2073						$('.buy_block').removeClass('in');
2074						$('.basket .count, .basket_top .count').text(0).addClass('empted');
2075					}
2076					else{
2077						$('[data-item]').each(function(){
2078							if($(this).data('item').ID == itemData.ID){
2079								$(this).find('.buy_block').removeClass('in');
2080							}
2081						});
2082
2083						var countItem = ($('.basket').length ? parseInt($('.basket .count').text()) : parseInt($('.basket_top:visible .count').text()));
2084						--countItem;
2085						$('.basket .count, .basket_top .count').text(countItem);
2086						if(!countItem){
2087							$('.basket .count, .basket_top .count').addClass('empted');
2088						}
2089					}
2090
2091					$('.ajax_basket').html(html);
2092
2093					if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'HEADER' && $('.basket_top').length){
2094						$('.basket_top .items').scrollTop(scrollTop);
2095					}
2096
2097					if(typeof(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) !== 'undefined' && $.trim(arScorpOptions['THEME']['ORDER_BASKET_VIEW']) === 'FLY' && $('.basket.fly').length){
2098						$('.ajax_basket').addClass('opened');
2099						$('.basket.fly .items_wrap').scrollTop(scrollTop);
2100					}
2101
2102					if(arScorpOptions['THEME']['USE_SALE_GOALS'] !== 'N'){
2103						var eventdata = {goal: 'goal_basket_remove', params: {itemData: itemData, remove: bRemove, removeAll: bRemoveAll}};
2104						BX.onCustomEvent('onCounterGoals', [eventdata]);
2105					}
2106
2107					var getCurUri = $.trim($('input[name=getPageUri]').val());
2108					if(getCurUri){
2109						$.ajax({
2110							url: getCurUri,
2111							type: 'POST',
2112							beforeSend: function(){
2113								$buyBlock.addClass('loading');
2114							},
2115							complete: function(){
2116								$buyBlock.removeClass('loading');
2117							},
2118							success: function(html){
2119								if($('.basket.default').length){
2120									$('.basket.default').html(html);
2121								}
2122							}
2123						});
2124					}
2125
2126				}
2127			});
2128		}
2129
2130		if(bRemoveAll || (typeof(itemData) !== 'undefined' && (!isNaN(itemData.ID) && itemData.ID > 0) && !$buyBlock.hasClass('loading'))){
2131			if(bRemoveAll){
2132				$('.basket_wrap').fadeOut(200, function(){
2133					$('.basket').find('.basket_empty').fadeIn(200, function(){
2134						_ajax();
2135					});
2136				});
2137			}
2138			else{
2139				if(bOneItem){
2140					if($item.closest('.basket_top').length){
2141						$item.closest('.dropdown').animate({opacity: 0}, 200, function(){
2142							_ajax();
2143						});
2144					}
2145					else{
2146						$item.closest('.basket_wrap').fadeOut(200, function(){
2147							$item.closest('.basket').find('.basket_empty').fadeIn(200, function(){
2148								_ajax();
2149							});
2150						});
2151					}
2152				}
2153				else{
2154					$item.animate({opacity: 0}, 200).slideUp(200, function(){
2155						_ajax();
2156					});
2157				}
2158			}
2159		}
2160	});
2161});
2162
2163
2164var waitCounter = function(idCounter, delay, callback){
2165	var obCounter = window['yaCounter' + idCounter];
2166	if(typeof obCounter == 'object'){
2167		if(typeof callback == 'function'){
2168			callback();
2169		}
2170	}
2171	else{
2172		setTimeout(function(){
2173			waitCounter(idCounter, delay, callback);
2174		}, delay);
2175	}
2176}
2177
2178var waitReCaptcha = function(delay, callback){
2179	if(typeof grecaptcha == 'object' && typeof grecaptcha.render === 'function'){
2180		if(typeof callback == 'function'){
2181			callback();
2182		}
2183	}
2184	else{
2185		setTimeout(function(){
2186			waitReCaptcha(delay, callback);
2187		}, delay);
2188	}
2189}
2190
2191var reCaptchaRender = function(response){
2192	if($('.g-recaptcha:not(.rendered)').length){
2193		waitReCaptcha(50, function(){
2194			$('.g-recaptcha:not(.rendered)').each(function(){
2195				$this = $(this);
2196				$this.addClass('rendered')
2197				var id = grecaptcha.render($this[0], {
2198					sitekey: $this.attr('data-sitekey'),
2199					theme: $this.attr('data-theme'),
2200					size: $this.attr('data-size'),
2201					callback: $this.attr('data-callback'),
2202				});
2203				$this.attr('data-widgetid', id);
2204			});
2205		});
2206	}
2207}
2208
2209var reCaptchaVerify = function(response){
2210	$('.g-recaptcha.rendered').each(function(){
2211		var id = $(this).attr('data-widgetid');
2212		if(typeof(id) !== 'undefined'){
2213			if(grecaptcha.getResponse(id) != ''){
2214				$(this).closest('form').find('.recaptcha').valid();
2215			}
2216		}
2217	});
2218}
2219
2220var onCaptchaVerifyinvisible = function(response){
2221	$('.g-recaptcha:last').each(function(){
2222		var id = $(this).attr('data-widgetid');
2223		if(typeof(id) !== 'undefined' && response){
2224			if(!$(this).closest('form').find('.g-recaptcha-response').val())
2225				$(this).closest('form').find('.g-recaptcha-response').val(response)
2226			if($('iframe[src*=recaptcha]').length)
2227			{
2228				$('iframe[src*=recaptcha]').each(function(){
2229					var block = $(this).parent().parent();
2230					if(!block.hasClass('grecaptcha-badge'))
2231						block.css('width', '100%');
2232				})
2233			}
2234			$(this).closest('form').submit();
2235		}
2236	})
2237}
2238
2239// var onCaptchaVerifynormal = function(response){
2240// 	$('.g-recaptcha').each(function(){
2241// 		var id = $(this).attr('data-widgetid');
2242// 		if(typeof(id) !== 'undefined'){
2243// 			if(grecaptcha.getResponse(id) != ''){
2244// 				$(this).closest('form').find('.recaptcha').valid();
2245// 			}
2246// 		}
2247// 	});
2248// }
2249
2250BX.addCustomEvent('onSubmitForm', function(eventdata){
2251	try{
2252		if(!window.renderRecaptchaById || !window.asproRecaptcha || !window.asproRecaptcha.key)
2253		{
2254			eventdata.form.submit();
2255			$(eventdata.form).closest('.form').addClass('sending');
2256			return true;
2257		}
2258
2259		if(window.asproRecaptcha.params.recaptchaSize == 'invisible' && $(eventdata.form).find('.g-recaptcha').length)
2260		{
2261			if($(eventdata.form).find('.g-recaptcha-response').val())
2262			{
2263				eventdata.form.submit();
2264				$(eventdata.form).closest('.form').addClass('sending');
2265				return true;
2266			}
2267			else
2268			{
2269				if(typeof grecaptcha != 'undefined'){
2270					grecaptcha.execute($(eventdata.form).find('.g-recaptcha').data('widgetid'));
2271				}
2272				else{
2273					return false;
2274				}
2275			}
2276		}
2277		else
2278		{
2279			eventdata.form.submit();
2280			$(eventdata.form).closest('.form').addClass('sending');
2281			return true;
2282		}
2283	}
2284	catch (e){
2285		console.error(e);
2286		return true;
2287	}
2288})
2289
2290// Events
2291var timerScroll = false, ignoreScroll = [], documentScrollTopLast = $(document).scrollTop();
2292$(window).scroll(function(){
2293	documentScrollTop = $(document).scrollTop();
2294
2295	CheckPopupTop();
2296	CheckScrollToTop();
2297
2298	if(!ignoreScroll.length){
2299		if(timerScroll){
2300			clearTimeout(timerScroll);
2301			timerScroll = false;
2302		}
2303		timerScroll = setTimeout(function(){
2304			BX.onCustomEvent('onWindowScroll', false);
2305		}, 100);
2306	}
2307
2308	documentScrollTopLast = documentScrollTop;
2309});
2310
2311var timerResize = false, ignoreResize = [];
2312$(window).resize(function(){
2313	documentScrollTop = $(document).scrollTop();
2314
2315	CheckPopupTop();
2316	CheckScrollToTop();
2317
2318	if(!ignoreResize.length){
2319		if(timerResize){
2320			clearTimeout(timerResize);
2321			timerResize = false;
2322		}
2323		timerResize = setTimeout(function(){
2324			BX.onCustomEvent('onWindowResize', false);
2325		}, 100);
2326	}
2327
2328	documentScrollTopLast = $(document).scrollTop();
2329});
2330
2331BX.addCustomEvent('onWindowScroll', function(eventdata) {
2332	try{
2333		ignoreScroll.push(true);
2334	}
2335	catch(e){}
2336	finally{
2337		ignoreScroll.pop();
2338	}
2339});
2340
2341BX.addCustomEvent('onWindowResize', function(eventdata) {
2342	try{
2343		ignoreResize.push(true);
2344		CheckTopMenuDotted();
2345		CheckTopVisibleMenu();
2346		CheckFlexSlider();
2347		CheckMainBannerSliderVText($('.banners-big .flexslider'));
2348		CheckObjectsSizes();
2349		CoverPlayer();
2350	}
2351	catch(e){}
2352	finally{
2353		ignoreResize.pop();
2354	}
2355});
2356
2357BX.addCustomEvent('onSlide', function(eventdata) {
2358	try{
2359		ignoreResize.push(true);
2360		if(eventdata){
2361			var slider = eventdata.slider;
2362			if(slider){
2363				// add classes .curent & .shown to slide
2364				slider.find('.item').removeClass('current');
2365				var curSlide = slider.find('.item.flex-active-slide');
2366				var curSlideIndex = curSlide.attr('data-slide_index');
2367				if(curSlideIndex.length){
2368					curSlide.addClass('current');
2369					slider.find('.item[data-slide_index=' + curSlideIndex + ']').addClass('shown');
2370					slider.resize();
2371
2372					// set main banners text vertical center
2373					CheckMainBannerSliderVText(slider);
2374
2375					// pause play video
2376					if(typeof(players) !== 'undefined' && players){
2377						for(var j in players){
2378							if(players[j].playing && !players[j].clone && (players[j].slideIndex != curSlideIndex)){
2379								if((typeof window[players[j].id] == 'object')){
2380									if(players[j].videoPlayer === 'YOUTUBE'){
2381										window[players[j].id].pauseVideo()
2382									}
2383									else if(players[j].videoPlayer === 'VIMEO'){
2384										window[players[j].id].pause()
2385									}
2386									else if(players[j].videoPlayer === 'RUTUBE'){
2387										document.getElementById(players[j].id).contentWindow.postMessage(JSON.stringify({
2388										    type: 'player:pause',
2389										    data: {}
2390										}), '*')
2391									}
2392									else if(players[j].videoPlayer === 'HTML5'){
2393										document.getElementById(players[j].id).pause()
2394									}
2395								}
2396							}
2397						}
2398					}
2399
2400					// autoplay video
2401					var bVideoAutoPlay = curSlide.attr('data-video_autoplay') == 1
2402					if(bVideoAutoPlay){
2403						startMainBannerSlideVideo(curSlide)
2404					}
2405				}
2406			}
2407		}
2408	}
2409	catch(e){}
2410	finally{
2411		ignoreResize.pop();
2412	}
2413});
2414
2415BX.addCustomEvent('onSlideEnd', function(eventdata) {
2416	try{
2417		ignoreResize.push(true);
2418		if(eventdata){
2419			var slider = eventdata.slider;
2420			if(slider){
2421
2422			}
2423		}
2424	}
2425	catch(e){}
2426	finally{
2427		ignoreResize.pop();
2428	}
2429});
2430
2431BX.addCustomEvent('onCounterGoals', function(eventdata){
2432	if(arScorpOptions['THEME']['USE_YA_COUNTER'] === 'Y'){
2433		var idCounter = arScorpOptions['THEME']['YA_COUNTER_ID'];
2434		idCounter = parseInt(idCounter);
2435
2436		if(typeof eventdata != 'object'){
2437			eventdata = {goal: 'undefined'};
2438		}
2439		if(typeof eventdata.goal != 'string'){
2440			eventdata.goal = 'undefined';
2441		}
2442
2443		if(idCounter){
2444			try{
2445				waitCounter(idCounter, 50, function(){
2446					var obCounter = window['yaCounter' + idCounter];
2447					if(typeof obCounter == 'object'){
2448						obCounter.reachGoal(eventdata.goal);
2449					}
2450				});
2451			}
2452			catch(e){
2453				console.error(e)
2454			}
2455		}
2456		else{
2457			console.info('Bad counter id!', idCounter);
2458		}
2459	}
2460})

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.