Your IP : 18.117.12.247


Current Path : /home/bitrix/ext_www/teplo.home-comfort.in.ua/conv_files/
Upload File :
Current File : /home/bitrix/ext_www/teplo.home-comfort.in.ua/conv_files/blocks.js

// Сетка преимуществ
$(function () {
	$('.advantages-grid').livequery(function () {
		var $context = $(this);

		$context.adaptBlock({
			maxWidth: {
				960: 'is-3cols',
				700: 'is-2cols',
				400: 'is-flat',
			}
		})
	});
});

function $_GET(string, key) {
	var p = string.match(new RegExp(key + '=([^&=]+)'));
	return p ? p[1] : false;
}

$(function () {
	if(!window['captcha-handler-ready']){
		$(document).on('click', '.is-captcha-field a', function () {
			var captchaFieldWrapper = $(this).parents('.is-captcha-field');
			var blockName = captchaFieldWrapper.data('block-name');
			$.ajax({
				url: '/local/php_interface/ajax/captcha.php',
				type: 'post',
				data: 'captcha=yes',
				success: function(data){
					captchaFieldWrapper.find('.'+blockName+'__captcha-img img').attr('src', '/bitrix/tools/captcha.php?captcha_sid=' + data);
					captchaFieldWrapper.find('.'+blockName+'__inputs').children('input[name=captcha_sid]').val(data);
				}
			});

			return false;
		});
		window['captcha-handler-ready'] = true;
	}
});

// comments
$(function () {
	$('body').on('click', '.js-b2b-info-link', function (e) {
		var $target = $(this).parents('td').find('.js-b2b-info-modal');

		if($.fancybox.isOpen) {
			$.fancybox.close(true);
			setTimeout(function() {b2bopen();}, 250);
		} else {
			b2bopen();
		}

		function b2bopen() {
			$.fancybox.open(
				$target, {
					padding: 0,
					margin: 20,
					closeEffect: 'none',
					wrapCSS: 'is-default',
					closeSpeed: 0,
					openSpeed: 0,
					openEffect: 'none',
					openOpacity: false,
					closeOpacity: false,
					fitToView: true,
					scrolling: 'visible',
				}
			);
		}

		e.preventDefault();
	});
});

$(function () {
	/**
	 * Если нужно перетащить хлебные крошки в другое место, можно использовать такой метод
	 * @type {*}
	 */
	var $needReplace = $("#changeBreadcrumbs");
	var $placeToBreadcrumbs = $("#blockToCrumbs");
	var $breadcrumbs = $(".layout__page-header");

	if($needReplace.length > 0 && $placeToBreadcrumbs.length > 0){
		$placeToBreadcrumbs.prepend($breadcrumbs);
	}
});

// comments
$(function () {
	$('.cart-items').livequery(function () {
		var $context = $(this);

		$(document).on('click', '.cart-items__sku-selected-link', function(e) {
			e.preventDefault();

			var $parent = $(this).closest('.cart-items__table-item');
			$parent.find('.cart-items__sku-selected', $context).toggleClass('is-hidden');
			$parent.find('.cart-items__sku-holder', $context).toggleClass('is-visible');
		});
	});
});

$(function () {
	$('.catalog-advantages__items').slick({
		dots: true,
		dotsClass: "promo-slider__pagination",
		prevArrow: "<span class='catalog-advantages__arrows catalog-advantages__arrow-left'></span>",
		nextArrow: "<span class='catalog-advantages__arrows catalog-advantages__arrow-right'></span>"
	});
});

// Древовидное меню
$(function () {
	// Инициализация только для состояния И
	$('.catalog-aside').livequery(function () {
		var $context = $(this);
		var  $openingLink =$('.is-opening', $context);
		var  $additionalLink =$('.is-additional', $context);
		var  $linkImgLink =$('.catalog-aside__link-img', $context);
		var $firstItems = $('.catalog-aside__first-item', $context);
		var $firstLinks = $('.catalog-aside__first-link', $context);
		var  $containMarker =$('.catalog-aside__contain-marker', $firstLinks);

		addShowAllLink();
		setHolderHeight();

		/**
		 * Отображаем подписи к меню
		 */
		$containMarker.on('click',function(){
			var $th =  $(this);
			var $item = $th.closest('.catalog-aside__first-item');
			if($item.hasClass('is-contain') &&
				$context.hasClass('is-x-state')) {
				if(!$item.hasClass('is-hover')) {
					$item.addClass('is-hover');
					$item.find('.catalog-aside__second-holder').slideDown(400);
				} else {
					$item.removeClass('is-hover');
					$item.find('.catalog-aside__second-holder').slideUp(400);
				}
				return false;
			}

			return false;
		});

		/**
		 * Отображаем подписи к меню
		 */
		$openingLink.on('click',function(){
			$context.toggleClass('is-opened');
			return false;
		});

		$linkImgLink.on('click',function(){
			if(! $context.hasClass('is-opened') ){
				$context.toggleClass('is-opened');
				return false;
			}
		});

		/**
		 * Расскрываем подкатегории если есть
		 */
		$firstLinks.on( 'click',function(){
			var $th =  $(this);
			var $item = $th.closest('.catalog-aside__first-item');
			if($item.hasClass('is-contain') &&
				$context.hasClass('is-x-state')){
				$item.addClass('is-hover');
				$item.find('.catalog-aside__second-holder').slideDown(400);

				return false;
			}

			return true;
		});

		/**
		 * Отображаем скрытые ссылки
		 */
		$additionalLink.on('click',function() {
			$firstItems.each(function() {
				$(this).removeClass('is-hide');
			});
			$additionalLink.remove();

			return false;
		});

		function setHolderHeight() {
			if($context.hasClass("is-t-state")) {
				var $contextHeight = $context.height();
				$(".catalog-aside__second-holder", $context).css("height",$contextHeight);
			}
		}

		function addShowAllLink() {
			// json obShowLevelParams задается в menu/aside/result_modifier.php
			if(window.obShowLevelParams!==undefined) {
				for(var level in obShowLevelParams) {
					$('.catalog-aside__'+level+'-item:nth-child(n+'+(obShowLevelParams[level].count+1)+')', $context).css("display","none");
					$('.catalog-aside__'+level+'-level').each(function () {
						if($(this).find('.catalog-aside__'+level+'-item').length > obShowLevelParams[level].count) {
							$(this).find('.catalog-aside__'+level+'-item:nth-child(n+'+(obShowLevelParams[level].count)+'):not(".show-all-item")').css("display", "none");
							$(this)
								.append("<li class='catalog-aside__"+level+"-item show-all-item'><a class='catalog-aside__"+level+"-link show-all-link' data-level='"+level+"'>"+obShowLevelParams[level].showText+"</a></li>");
						}
					});
				}

				$(".show-all-link", $context).on("click", function() {
					var level = $(this).data("level");
					var listItems = $(this).parents('.catalog-aside__'+level+'-level');

					if($(this).hasClass("is-active")) {
						$(this).removeClass("is-active");
						$(this).text(obShowLevelParams[level].showText);
						$('.catalog-aside__'+level+'-item:nth-child(n+'+(obShowLevelParams[level].count)+'):not(".show-all-item")', listItems).slideUp();
					} else {
						$(this).addClass("is-active");
						$(this).text(obShowLevelParams[level].hideText);
						$('.catalog-aside__'+level+'-item:nth-child(n+'+(obShowLevelParams[level].count)+')', listItems).slideDown(400);
					}

					setTimeout(function() {setHolderHeight();}, 500);
				});
			}
		}
	});
});

// comments
function initCompare() {
	$('.js-compare-button').each(function () {
		var $th = $(this);

		$th.removeClass('added');

		if ($th.data('add-title')){
			$th.find('span').html($th.data('add-title'));
		}
	});

	/** @var global  COMPARE_VARIANT \catalog.compare.list\.default\template.php */
	if(window.COMPARE_VARIANT){
		$.each(window.COMPARE_VARIANT, function (i, v) {
			if (v !== '') {
				var $button = $('.js-compare-button[href$=' + v + ']');

				if ($button.length) {
					$button.addClass('added');
					if ($button.data('active-title')) {
						$button.find('span').html($button.data('active-title'));
					}
				}
			}
		});
	}

	return false;
}

$(function () {
	initCompare();
});

// Каталог товаров плиткой
$(function () {
	$('.catalog-items').livequery(function () {
		var widthPhone = 460;
		var $context = $(this);
		var $cols = $('.catalog-items__cols', $context);
		var $items = $('.catalog-items__col', $context);
		var contextWidth;
		var  mobslik;
		var isSlic = true;

		/**
		 * Пересчитываем высоту карточек и делаем их одинаковыми в ряду
		 * @constructor
		 */
		function ResizeCatalogItem() {
			var $plates = $('.catalog-items__col', $context);
			var _tmp ;
			var heights = [];
			var iterations;
			contextWidth = $cols.width();
			if(contextWidth === 0) return;

			var plateWidth = $items.eq(0).outerWidth();
			_tmp = Math.round(contextWidth/plateWidth); // Кол-во плиток в ряду

			iterations = $plates.length / _tmp; // Кол-во рядов

			// Собираем наибольшую высоту элемента в ряду и в массив heights[номер_ряда]
			for(var r = 0; r < iterations; r++) {
				for(var i = 0; i < _tmp; i++) {
					if (!heights[r]) {
						heights[r] = $plates.eq(r*_tmp + i).find('.catalog-plate').outerHeight();
					} else {
						heights[r] = Math.max($plates.eq(r*_tmp + i).find('.catalog-plate').outerHeight(), heights[r]);
					}
				}
			}

			// Применяем наибольшую высоту ряда к каждому элементу
			for(var r = 0; r < iterations; r++) {
				for(var i = 0; i<_tmp; i++) {
					$plates.eq(r*_tmp + i).find('.catalog-plate').css('height', heights[r]);
				}
			}

			$('.catalog-plate', $context).addClass('is-initiated');
		}

		function equalizer() {
			var $plates = $('.catalog-items__col', $context);

			if (!$plates.length) return;

			$('.catalog-plate', $context).css('height', '');

			if($context.hasClass('is-slide-to-mobile')) {
				if($(window).width() < widthPhone && isSlic && $cols.length) {
					var max_h = 0

					$plates.each(function() {
						if (max_h < $(this).height()) {
							max_h = $(this).height();
						}
					});

					$plates.height(max_h + 20);
					$cols.height(300);
					isSlic = false;
					mobslik =  $cols.slick({
						slidesToShow: 1,
						prevArrow: '<div class="catalog-items__arrows catalog-items__arrows-right"></div>',
						nextArrow:'<div class="catalog-items__arrows catalog-items__arrows-left"></div>',
						variableWidth: true,
						infinite: true,
						centerMode: true
					});
				} else {
					if(typeof mobslik != 'undefined' && $(window).width() > widthPhone){
						mobslik.slick('unslick');
					}

					$plates.css("height", "auto");
				}
			}
		}

		equalizer();

		$(window).on('resize orientationchange', equalizer);
		$context.on('resize.block', equalizer);
	});
});

// Плитка товара в каталоге
$(function () {
	$('.catalog-largelist').each(function () {
		var $context = $(this);
		var $favor = $('.catalog-largelist__favor-link', $context);

		function toggleFavor () {
			var $link = $(this);

			$link.toggleClass('is-active');
			$.get($link.attr('href'));
			return false;
		}

		$favor.on('click', toggleFavor);
	});
});

// Плитка товара в каталоге
$(function () {
	$('.catalog-plate').each(function () {
		var $context = $(this);
		var $preview = $('.catalog-plate__preview', $context);
		var $energyButton = $('.catalog-plate__energy-link', $context);

		function showPreview () {
			$.fancybox.open({
					href: $(this).attr('href')
				}, {
					wrapCSS: 'is-product-preview is-ajax',
					type: 'ajax',
					fitToView: true,
					autoResize: true,
					padding: 20,
					margin: 20,
					maxWidth: 1000,
					afterLoad: function () {
						$.fancybox.showLoading()
					},
					afterShow: function () {
						$('.fancybox-wrap').livequery();
						setTimeout(function () {
							$('.fancybox-wrap .bem').trigger('resize.block');
							$.fancybox .hideLoading();
							$('.fancybox-wrap').removeClass('is-ajax');
							if (typeof modalShowAfter == 'function'){
								modalShowAfter();
							}
						}, 600);
					}
				}
			);

			return false;
		}

		$preview.on('click', showPreview);

		$energyButton.each(function () {
			$(this).attr('href', '/local/templates/home-comfort/files/EnergyLabel_EOB53434AX.pdf');
		});
	});

	$('.catalog-plate__top-wrap').matchHeight();

	$('.catalog-plate__img-holder').matchHeight();
});

//.catalog-sorter
$(function () {
	$('.catalog-sorter').livequery(function () {
		var sorter = $(this);
		var form = sorter.find("form");
		var hiddenParam = $("input[name='sorter-param']", form);
		var hiddenValue = $("input[name='sorter-value']", form);
		var hiddenOrder = $("input[name='sorter-order']", form);

		$("a", sorter).on("click", function() {
			var link = $(this);
			var param = link.parents("ul").data("sorter-param");
			var value = link.data("sorter-value");
			var order = link.data("sorter-order");

			hiddenParam.val(param);
			hiddenValue.val(value);

			if (order) {
				hiddenOrder.val(order);
			}

			form.submit();
		});

	});
});

// comments
$(function () {
	$('.catalog-table').livequery(function () {
		var $context = $(this);
		$('.catalog-table__header-text.is-sortable', $context).on('click', function(){
			if($(this).is('.is-sorted-up')){
				document.location = $(this).attr('data-sort-down');
			} else {
				document.location = $(this).attr('data-sort-up');
			}
		});
	});
});

$(function () {
	$('.catalog-text-block__link').on('click', function () {
		var $this = $(this),
			description = $('.catalog-text-block__description');

		description.toggle();

		if(description.is(':visible')) {
			$this.text('Скрыть');
		} else {
			$this.text('Подробнее');
		}
	});
});

// Список сертификатов
$(function () {
	$('.cert-list').livequery(function () {
		var $context = $(this);
		var $certLinks = $('.cert-list__cert-link', $context);

		if($(window).width() < 768){
			$certLinks.mobilezoom({backlink: 'Вернуться'});
		} else {
			$certLinks.fancybox({
				type: 'image',
				padding: 0,
				margin: 20,
				closeEffect: 'none',
				closeSpeed: 0,
				openSpeed: 0,
				openEffect: 'none',
				openOpacity: false,
				closeOpacity: false,
				fitToView: true,
				scrolling: 'visible',

				beforeShow: function () {
					$('html').addClass('fancybox-margin fancybox-lock');
				}
			});
		}
	});
});
// Чек-бокс
$(function () {
	$('.checkbox').livequery(function () {
		var $context = $(this);
		var $input = $('input[type="checkbox"]', $context);

		function changeState () {
			if($input.prop('checked')) {
				$context.addClass('_checked')
			} else {
				$context.removeClass('_checked');
			}
		}

		changeState();

		$input.on('change', changeState);
	});
});

// Список чекбоксов
$(function () {
	$('.checkbox-cols').livequery(function () {
		var $context = $(this);
		var $moreBtn = $('.checkbox-cols__btn', $context)
		var $moreContainer = $('.checkbox-cols__more-container', $context)

		function toggleMoreContainer() {
			$moreBtn.toggleClass('is-opened');
			$moreContainer.toggleClass('is-opened');
			return false;
		}

		$moreBtn.on('click', toggleMoreContainer);
	});
});

// FAQ
$(function () {
	$('.faq-list').each(function () {
		var $context = $(this);
		var $questions = $('.faq-list__question', $context);
		var $answers = $('.faq-list__answer', $context);

		(function init() {
			$context.removeClass('no-js');

			initAnswerSliders();
		})();

		function initAnswerSliders () {
			$answers.filter(':not(.is-expanded)').slideUp(0);

			$questions.on('click', function () {
				var $link = $(this);
				var $answer = $link.siblings('.faq-list__answer');
				var isActive = $answer.hasClass('is-expanded')

				if(isActive) {
					$answer.slideUp(400, function () {$answer.removeClass('is-expanded');});
				} else {
					$answer.slideDown(400, function () {$answer.addClass('is-expanded');});
				}
			});
		}
	});
});

$(function(){
	var faqItemsEls = $('.js-faq-simple__item');

	faqItemsEls.each(function() {
		var self = $(this),
			title = $('.js-faq-simple__title', self);

		title.on('click', function(e) {
			e.preventDefault();

			$(this).parent().hasClass('is-show') ?
				$(this).parent().removeClass('is-show') :
				$(this).parent().addClass('is-show');
		});
	});
});

// Блок преимуществ
$(function () {
	$('.features-block').each(function () {
		var $context = $(this);
		$context.adaptBlock({
			maxWidth: {
				700: 'is-2cols',
				470: 'is-flat'
			}
		})
	});
});

$(function () {
	$('.contacts-detail').livequery(function () {
		var $context = $(this);
		var $photoLinks = $('.contacts-detail__img-link', $context);

		if($(window).width() < 768) {
			$photoLinks.mobilezoom({backbutton: 'Вернуться'});
		} else {
			$photoLinks.fancybox({
				type: 'image'
			});
		}
	});
});

// Плитка разделов каталога
$(function () {
	$('.contacts-list').each(function () {
		var $context = $(this);
		var $printLinks = $('.contacts-list__link.is-print', $context);

		if($printLinks.length) {
			console.info('print_frame');

			if($('#print_frame').length === 0) {
				var iframe = $('<iframe id="print_frame">');

				$('body').append(iframe);
				iframe.hide();
			}
		}

		$printLinks.on('click', function(e) {
			e.preventDefault();
			e.stopPropagation();

			var $th = $(this);
			var html_to_print ='<img src="'+$th.attr('href')+'" alt=""/>';
			var printIframe = $('#print_frame')[0];
			var doc = printIframe.contentDocument || printIframe.contentWindow.document;
			var win = printIframe.contentWindow || printIframe;

			doc.getElementsByTagName('body')[0].innerHTML = html_to_print;

			$(html_to_print).load(function(){
				win.print();
			});

			return false;
		});

		$context.adaptBlock({
			maxWidth: {
				900: 'is-3cols',
				600: 'is-2cols',
				400: 'is-flat'
			}
		});
	});
});

// Вкладки, переключение табов
$(function () {
	$('.contacts-tabs').livequery(function () {
		var $context = $(this);
		var $photoLinks = $('.contacts-tabs__img-link', $context);

		$photoLinks.fancybox({
			type: 'image'
		});

		var $linkHolders = $('.contacts-tabs__link-holder', $context);
		var $tabs = $('.contacts-tabs__tab', $context);

		if($tabs.filter('.is-active').length === 0) {
			$linkHolders.filter('.is-active').removeClass('is-active');
			$tabs.eq(0).addClass('is-active');
			$linkHolders.eq(0).addClass('is-active');
		}

		// Set corresponding tabs indexes
		for(var i = 0; i < $linkHolders.length; i++) {
			$linkHolders.eq(i).attr('data-index', i);
		}

		// Copy link-holders before corresponding tabs for mobile version
		for(i = 0; i < $linkHolders.length; i++) {
			$linkHolders
				.eq(i)
				.clone()
				.addClass('is-hide-desktop')
				.insertBefore($tabs.eq(i));
		}

		var $mobileLinkHolders = $('.contacts-tabs__tabs .contacts-tabs__link-holder', $context);

		$(document).on('click', '.contacts-tabs__link-holder', function () {
			var $this = $(this);
			var index = $this.attr('data-index');

			if($this.hasClass('is-active')) return false;

			$linkHolders
				.add($tabs)
				.filter('.is-active')
				.removeClass('is-active');

			$mobileLinkHolders.filter('.is-active').removeClass('is-active');

			$linkHolders.eq(index).addClass('is-active');
			$mobileLinkHolders.eq(index).addClass('is-active');
			$tabs.eq(index).addClass('is-active');

			return false;
		});
	});
});

// Счетчик
$(function() {
	$(document).on('click', '.counter-input__up, .counter-input__down', function() {
		var $this = $(this);
		var $input = $this.parents('.counter-input').find('.counter-input__input');
		var stepInc = 1;
		var stepInput =  $input.attr('step');

		if (typeof stepInput != "undefined") {
			stepInc = Number(stepInput);
		}

		var direction = $this.is('.counter-input__up') ? stepInc : -stepInc;
		var val = parseFloat($input.val());
		var newVal = Math.max(val+direction, 1);

		if ((newVal == 1) && (typeof stepInput != "undefined")) {
			newVal = Number(stepInput);
		}

		$input
			.val(newVal)
			.trigger('change');

		return false;
	});

	$(document).on('change', '.counter-input__input', function() {
		var $this = $(this);
		var val = parseFloat($this.val());

		if(isNaN(val) || (val <= 0)) {
			$this.val(1);
		} else {
			$this.val(val);
		}
	});
});

$(window).load(function(){
	$('.accordion-steps .form-standart').each(function(){
		// Не нужна нам эта штука тут
		$(this).find('.form-standart__node').remove();
	});
});

// comments
$(function () {
	$(document).on('click', '.feedback-wall__readmore', function(e) {
		var $parent = $(this).parents('.feedback-wall__item');

		$parent.addClass('is-expanded');
		e.preventDefault();
	});

	$(document).on('click', '.feedback-wall__readless', function(e) {
		var $parent = $(this).parents('.feedback-wall__item');
		$parent.removeClass('is-expanded');

		e.preventDefault();
	});
});

// Умный фильтр - горизонтальный
$(function () {
	$('.filter-hor').livequery(function () {
		var $context = $(this);
		var $fieldsList = $('.filter-hor__fields', $context);
		var $showFilterLink = $(".filter-hor__show-filter-link", $context);
		var $moreBtn = $('.checkbox-cols__btn', $context);
		var $form = $context.find('form');

		if($(".filter-hor__selected-value-del", $context).length) {
			$(".filter-hor__selected-value-del", $context).on("click", function() {
				var $this = $(this);
				var delItemId = $this.data("value-id");
				var $curField = $this.parents(".filter-hor__selected-field");
				var $curValue = $this.parents(".filter-hor__selected-value");
				var $valuesCount = $(".filter-hor__selected-value", $curField).length;
				var $lastValue = false;

				if($valuesCount <= 1) {
					$lastValue = true
				}

				$curValue.remove();

				if($lastValue) {
					$curField.remove();
				}

				var $filterFieldValue = $("#" + delItemId);
				var $filterFieldValueTag = $filterFieldValue.get(0).tagName.toLowerCase();
				var $filterFieldValueType = $filterFieldValue.attr("type");

				switch($filterFieldValueTag) {
					case "input":
						if ($filterFieldValueType === "checkbox") {
							$filterFieldValue.parents("label").click();
						}

						if ($filterFieldValueType === "hidden") {
							var $scaleMax = $filterFieldValue.parents(".filter-scale").data("max");
							var $scaleMin = $filterFieldValue.parents(".filter-scale").data("min");

							$filterFieldValue.parents(".filter-scale").find(".js-min").val($scaleMin);
							$filterFieldValue.parents(".filter-scale").find(".js-max").val($scaleMax).focus().blur();
						}

						break;
					case "option":
						$filterFieldValue.parent("select").select2("val", "");

						break;
				}

				$form.submit();
			});
		}

		function putFieldsListHeight() {
			$fieldsList.each(function () {
				var $thisList = $(this);
				var $thisFields = $('.filter-hor__field', $thisList);

				$thisFields.removeClass("is-full-height");

				var maxFieldList = 0;

				$thisFields.each(function() {
					maxFieldList = $(this).outerHeight(true) > maxFieldList ? $(this).outerHeight(true) : maxFieldList;
				});

				$thisList.height(maxFieldList);
				$thisFields.addClass("is-full-height");
			});
		}

		function toggleFilterHorizontal() {
			var filterBody = $(".filter-hor__main", $context);
			var filterFooter = $(".filter-hor__footer", $context);

			if($showFilterLink.hasClass("is-active")) {
				$showFilterLink.removeClass("is-active");
				$showFilterLink.text("Показать фильтр");
				filterFooter.removeClass("is-open");
				filterBody.removeClass("is-open");
			} else {
				$showFilterLink.addClass("is-active");
				$showFilterLink.text("Скрыть фильтр");
				filterFooter.addClass("is-open");
				filterBody.addClass("is-open");

				addScrollToCheckbox();
				putFieldsListHeight();
			}
		}

		//скроллер для блока с чекбоксами
		function addScrollToCheckbox() {
			var count = (typeof  smartFilterObj !== "undefined") ? smartFilterObj.checkboxCount : 10;
			var lists = $(".filter-hor__items", $context);

			$(lists, $context).each(function() {
				var thisList = $(this);
				var withScroller = thisList.hasClass("with-scroller");
				var container = thisList.parent();

				if(!withScroller && container.is(":visible")) {
					thisList.addClass("with-scroller");

					var items = $(".filter-hor__item", container);
					var itemsCount = items.length;

					if(itemsCount > count) {
						var listWrapperHtml = "<div class='filter-hor__list-wrapper'></div>";

						thisList.wrap(listWrapperHtml);

						var scrollContainerHeight = 0;

						for(var i=0; i<count; i++) {
							scrollContainerHeight = scrollContainerHeight + items.eq(i).addClass("counted").outerHeight(true);
						}

						var listHeight = 0;

						items.each(function() {
							listHeight = listHeight + $(this).outerHeight(true);
						});

						thisList
							.parent()
							.height(scrollContainerHeight);

						$(".filter-hor__vertical-scroll", container).height(scrollContainerHeight-20);

					}
				}
			});
		}

		$showFilterLink.on('click', toggleFilterHorizontal);
		$moreBtn.on("click", putFieldsListHeight);

		addScrollToCheckbox();
	});
});

// Шкала в фильтре
$(function () {
	$("#smart-filter-form").on('submit', function () {
		$('.filter-scale').each(function () {
			setInputHiddenVal($(this));
		});
	});

	function getScaleFields($context) {
		var $minInput = $('.filter-scale__input.js-min', $context);
		var $maxInput = $('.filter-scale__input.js-max', $context);

		return {
			$minHiddenInput: $('.js-hidden-min', $context),
			$maxHiddenInput: $('.js-hidden-max', $context),
			$minInput: $minInput,
			$maxInput: $maxInput,
			logaryphmic: ($context.data('log') == 1 && $context.data('min') > 1),
			inputMin: stringToFloat($context.data('min').toString()),
			inputMax: stringToFloat($context.data('max').toString()),
			settingMinVal: stringToFloat($minInput.val().toString()),
			settingMaxVal: stringToFloat($maxInput.val().toString())
		}
	}

	function setInputHiddenVal($context) {
		var fields = getScaleFields($context);

		fields.inputMin = fields.inputMin ? fields.inputMin : 0;
		fields.settingMinVal === fields.inputMin ? fields.$minHiddenInput.remove() : fields.$minHiddenInput.val(fields.settingMinVal);
		fields.settingMaxVal === fields.inputMax ? fields.$maxHiddenInput.remove() : fields.$maxHiddenInput.val(fields.settingMaxVal);

	}

	function stringToFloat(str) {
		if(typeof(str) != 'string') {
			str = str.toString();
		}

		return parseFloat(str.replace(',', '.').replace(/[^\d.-]/g, ''));
	}

	$('.filter-scale').each(function () {
		var $context = $(this);
		var fields = getScaleFields($context);
		var $scale = $('.filter-scale__scale', $context);
		var scaleMin = parseFloat($context.data('min')) || 0;
		var scaleMax = parseFloat($context.data('max')) || 100;
		var scaleStep = parseFloat($context.data('step')) || 0.01;
		var significant_digits = $context.data('significant-digits') || 3;
		var convert_factor = typeof ($context.data('convert-factor') !== 'undefined') ? $context.data('convert-factor') : 1;
		var isPrice = $context.data('format') === "price";

		if (scaleMin == scaleMax)
			return; // No slider for 1

		var options = {
			range: true,
			max: scaleMax,
			min: scaleMin,
			values: [$context.data('left'), $context.data('right')],
			step: scaleStep,
			slide: function (e, ui) {
				updateFields(ui.values);
			},
			snap: true
		}

		if (fields.logaryphmic) {
			options.step = 0.00001;
			options.max = Math.log(options.max) + options.step;
			options.min = Math.log(options.min);
			options.values = [Math.log(options.values[0]), Math.log(options.values[1])];
		}

		function format(x, dontRound) {
			if (!dontRound) {
				if (isPrice) {
					return formatPrice(x, significant_digits, convert_factor);
				} else {
					return formatNumber(x, significant_digits);
				}
			} else {
				if (isPrice) {
					return formatPrice(x, 0, convert_factor);
				} else {
					return formatNumber(x, 0);
				}
			}
		}

		function bound(_number, _min, _max) {
			if (options.snap) {
				if (_number * 1.01 >= _max) {
					return _max;
				} else if (_number * 0.99 <= _min) {
					return _min;
				} else {
					return _number;
				}
			} else {
				return Math.max(Math.min(_number, _max), _min);
			}
		}

		function numberWithSpaces(x) {
			return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
		}

		function formatNumber(x, significant_digits) {
			if (typeof (x) == 'string')
				x = parseFloat(x);

			var negative = 1;

			if(x < 0)
				negative = -1;

			x*=negative;

			var parts = x.toString().split(".");
			var digits = significant_digits - parts[0].length;

			if (digits < 0)
				digits = 0;

			if (significant_digits != 0) {
				x = x.toFixed(digits);
				parts = x.toString().split(".");

				digits = parts[0].length;

				var divider = 1;

				if (digits > significant_digits && significant_digits != 0) {
					divider = Math.pow(10, digits - significant_digits);
				}

				parts[0] = parseInt(parts[0]) - (parseInt(parts[0]) % divider);
			}

			parts[0] *= negative;

			if (parts.length > 1) {
				return parts[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ") + "." + parts[1];
			} else {
				return parts[0].toString().replace(/\B(?=(\d{3})+(?!\d))/g, " ");
			}
		}

		function formatPrice(x, significant_digits, convert_factor) {
			if (!convert_factor) {
				convert_factor = 1;
			}

			x = x * convert_factor;

			return formatNumber(x, significant_digits);
		}

		function updateRealFields() {
			fields.$minHiddenInput.val(stringToFloat(fields.$minInput.val()) / convert_factor);
			fields.$maxHiddenInput.val(stringToFloat(fields.$maxInput.val()) / convert_factor);
			fields.$minHiddenInput.change();
			fields.$maxHiddenInput.change();
			$("#smart-filter-form").trigger('change', [fields.$minInput.get(0)]);
		}

		function updateFields(values) {
			var min,
				max;

			if (fields.logaryphmic) {
				min = bound(Math.exp(values[0]), scaleMin, scaleMax);
				max = bound(Math.exp(values[1]), scaleMin, scaleMax);

				if (min <= scaleMin) {
					fields.$minInput.val(format(min, true));
					fields.$minHiddenInput.val(format(min, true).replace(/\s+/g, ''));
				} else {
					fields.$minInput.val(format(min));
					fields.$minHiddenInput.val(format(min).replace(/\s+/g, ''));
				}
				if (max >= scaleMax) {
					fields.$maxInput.val(format(max, true));
					fields.$maxHiddenInput.val(format(max, true).replace(/\s+/g, ''));
				} else {
					fields.$maxInput.val(format(max));
					fields.$maxHiddenInput.val(format(max).replace(/\s+/g, ''));
				}

			} else {
				min = bound(values[0], options.min, options.max);
				max = bound(values[1], options.min, options.max);

				fields.$minInput.val(format(min, (min <= options.min))); // Do not round on edges
				fields.$minHiddenInput.val(min);
				fields.$maxInput.val(format(max, (max >= options.max))); // Do not round on edges
				fields.$minHiddenInput.val(max);
			}

			updateRealFields();
		}

		function updateSlider(onchange) {
			var min = parseFloat(stringToFloat(fields.$minInput.val()) / convert_factor);
			var max = parseFloat(stringToFloat(fields.$maxInput.val())/ convert_factor) ;

			if (isNaN(min) || isNaN(max))
				return;

			if (onchange) {
				if (max < min) {
					max = Math.round(min * 1.1);
				}

				min = bound(min, scaleMin, scaleMax);
				max = bound(max, scaleMin, scaleMax);

			}

			fields.$minInput.val(numberWithSpaces(min * convert_factor));
			fields.$minHiddenInput.val(min);
			fields.$maxInput.val(numberWithSpaces(max * convert_factor));
			fields.$maxHiddenInput.val(max);

			updateRealFields();

			if (fields.logaryphmic) {
				$scale.slider("values", [Math.log(min), Math.log(max)]);
			} else {
				$scale.slider("values", [min, max]);
			}
		}

		$scale.slider(options);

		updateFields(options.values);

		fields.$minInput.add(fields.$maxInput).on('keyup', function (e) {
			if (e.which > 47 || e.which == 8) {
				// store current positions in variables
				var start = this.selectionStart;
				var l = this.value.length;

				updateSlider();

				if (this.value.length != l) {
					start += (this.value.length - l);
				}

				this.setSelectionRange(start, start);
			}
		}).on('change blur', function () {
			updateSlider(true);
		});
	});
});

$(function () {
	$('.footer__arrow-up').on('click', function () {
		var top = $('body').offset().top;

		$('html, body').animate({
			scrollTop: top
		}, 500);
	});
});

$(function () {
	var $context = $(".footer-mobile__catalog-item");

	$context.on("click", function (e) {
		var $title   = $(this).find(".footer-mobile__catalog-title");
		var $subMenu = $(this).find(".footer-mobile__catalog-list");

		if(e.target.className !== "footer-mobile__catalog-sub-link"){
			$title.toggleClass("active");
			$subMenu.toggle("medium");
		}
	});
});

// Обработка стандартной формы
$(function () {
	// Функция проверки соответствия значения инпута регулярке
	var checkVal = function($input, regExp) {
		var	result = regExp.test($input.val());

		if(result) {
			$input.closest('.forgotpasswd-form__field').removeClass('is-error');
		} else {
			$input.closest('.forgotpasswd-form__field').addClass('is-error');
		}

		return result;
	}

	// Функция проверки обязательных полей формы
	function inputChecker($input) {
		var $field = $input.closest('.forgotpasswd-form__field');

		if($field.hasClass('is-error, is-none')) return false;
		if(!$input.data('necessary')) return true;

		var type = $input.attr('type');

		switch (type) {
			case 'checkbox':
				if(!$input.prop('checked')) {
					$field.addClass('is-none');
					return false;
				}

				break;
			default:
				if($input.val() === '' || $input.hasClass('ui-placeholder')) {
					$field.addClass('is-none');
					return false;
				}

				return true;
		}

		return true;
	}

	$('.forgotpasswd-form').each(function () {
		var $context = $(this);
		var $form = $('form:not(.js-ajax)', $context);
		var $ajaxForm = $('form.js-ajax', $context);
		var $successMessage = $('.success-message-modal', $context);
		var $nodesMessage = $('.forgotpasswd-form__node', $context);

		if($nodesMessage.length === 0){
			$context.prepend('<div class="forgotpasswd-form__node"></div>');
			$nodesMessage = $('.forgotpasswd-form__node', $context);
		}
		// Сброс error при активности
		$('input[data-necessary], textarea[data-necessary], select', $context).on('click keydown change', function() {
			$(this).closest('.forgotpasswd-form__field').removeClass('is-none is-error');
		});

		// Устанавливаем маски ввода
		$('[data-mask="phone"]', $context).each(function(){
			$(this).mask('+7 (000) 000-00-00');
		});

		$('[data-mask="email"]', $context).change(function () {
			var regExp = /^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*\.[a-z]{2,6}$/g;

			checkVal($(this), regExp);

			return true;
		});

		// Обработка формы без Ajax
		$form.on('submit', function () {
			var isValidate = true;
			var radioNames = [];

			$nodesMessage.html('').removeClass().addClass('forgotpasswd-form__node');
			$('input[type="text"], input[type="email"], input[type="password"], input[type="checkbox"], select, textarea', $form).each(function() {
				isValidate = inputChecker($(this)) && isValidate;
			});

			$('input[type="radio"]', $form).each(function() {
				var $this = $(this);

				if(!$this.data('necessary')) return true;

				var name = $this.attr('name');

				if($.inArray(name, radioNames) == -1) radioNames.push(name);
			});


			for(var i=0;i<radioNames.length; i++) {
				var isChecked = $('input:checked[name='+radioNames[i]+']', $form).length > 0;

				if(!isChecked) {
					$('input[type="radio"][name="'+radioNames[i]+'"]', $form).eq(0).closest('.forgotpasswd-form__field').addClass('is-none');
				} else {
					$('input[type="radio"][name="'+radioNames[i]+'"]', $form).eq(0).closest('.forgotpasswd-form__field').addClass('_ok');
				}
				isValidate = isChecked && isValidate;
			}

			return isValidate;
		});

		// Обработка формы с Ajax
		$ajaxForm.ajaxForm({
			beforeSubmit: function (arr, $form) {
				var isValidate = true;
				var radioNames = [];

				$('input[type="text"], input[type="email"], input[type="password"], input[type="checkbox"], select, textarea', $form).each(function() {
					isValidate = inputChecker($(this)) && isValidate;
				});

				$('input[type="radio"]', $form).each(function() {
					var $this = $(this);

					if(!$this.data('necessary')) return true;

					var name = $this.attr('name');

					if($.inArray(name, radioNames) == -1) radioNames.push(name);
				});

				for(var i=0;i<radioNames.length; i++) {
					var isChecked = $('input:checked[name='+radioNames[i]+']', $form).length > 0;

					if(!isChecked) {
						$('input[type="radio"][name="'+radioNames[i]+'"]', $form).eq(0).closest('.forgotpasswd-form__field').addClass('is-none');
					}
					isValidate = isChecked && isValidate;
				}

				return isValidate;
			},

			success: function (message) {
				$nodesMessage.removeClass('success error');

				if (message.status === 'success') {
					if ($successMessage.length) {
						$.fancybox($successMessage,{
							afterClose: function(){
								if($successMessage.hasClass('js-reload-page')){
									window.location = window.location;
								}
							},
							wrapCSS: 'modal-theme',
							autoCenter: false,
							padding: 0,
							fitToView: false
						});
					} else {
						if ($nodesMessage.length) {
							$nodesMessage.addClass(message.status).html(message.info);
						} else {
							console.warn(message);
						}
					}
				} else if(message.status === 'error') {
					if ($nodesMessage.length) {
						$nodesMessage.addClass(message.status).html((message.info) ? message.info : message.error);
						/** Суда то приходит сообщение в message.error то message.error хранит true а текст сообщения message.info **/
					} else {
						console.warn(message);
					}
				} else {
					if ($nodesMessage.length) {
						$nodesMessage.addClass(message.status).html(message.info);
					} else {
						console.warn(message);
					}
				}

			},

			error: function () {
				$.fancybox($successMessage, {
					wrapCSS: 'modal-theme',
					autoCenter: false,
					padding: 0,
					fitToView: false
				});
			}
		});

		// Появление полей для смены пароля
		$('.js-pass-link', $context).on('click', function () {
			$('.js-pass-change', $context).css({
				display: 'table-row'
			});

			$(this).closest('.forgotpasswd-form__field').hide();

			return false;
		});

		$('.js-pass-cancel', $context).on('click', function () {
			$('.js-pass-change', $context).removeAttr('style');
			$('.js-pass-link', $context)
			.closest('.forgotpasswd-form__field')
			.css({
				display: 'table-row'
			});

			return false;
		});
	});
});

// Обработка стандартной формы
$(function () {
	$('.form-standart').livequery(function () {
		var $context = $(this);
		var $form = $('form', $context);

		$form.initWebForm('form-standart');

		$('[data-mask="phone"]', $context).each(function(){
			$(this).mask('+7 (999) 999-99-99', {clearIfNotMatch: true});
		});

		// Появление полей для смены пароля
		$('.js-pass-link', $context).on('click', function () {
			$context.find('[name=changepassword]').val('1');
			$('.js-pass-change', $context).addClass('is-visible');

			$(this).closest('.form-standart__field').addClass('is-hidden');

			return false;
		});

		$('.js-pass-cancel', $context).on('click', function () {
			$context.find('[name=changepassword]').val('');
			$('.js-pass-change', $context).removeClass('is-visible');
			$('.js-pass-link', $context).closest('.form-standart__field').removeClass('is-hidden');

			return false;
		});
	});
});

// Галерея
$(function () {
	$('.gallery-list').each(function () {
		var $context = $(this);
		$context.adaptBlock({
			maxWidth: {
				600: '_mx600',
				470: '_mx470',
				300: '_mx300'
			}
		})
	});
});

$(function(){
	$('.header-mobile').livequery(function(){
		var $context = $(this);
		var $buttons = $('a[data-action="mobile-menu"]', $context);
		var isMenuOpened = false;

		function closeActiveMenus(isSwitch){
			$buttons = $('a[data-action="mobile-menu"]', $context); // dom changes, so buttons must be set again
			$buttons.filter('.is-active').each(function(){
				$(this).removeClass('is-active');
				$($(this).attr('href')).removeClass('is-active');
			});

			if(!isSwitch){
				$context.removeClass('is-menu-opened');
				isMenuOpened = false;
				window.endPreventBodyScroll();
			}
		}

		$(document).on('click', 'a[data-action="mobile-menu"]', function(e){
			var $button = $(this);
			var $plate = $($button.attr('href'));

			e.preventDefault();

			if($button.is('.is-active')) {
				closeActiveMenus();
			} else {
				closeActiveMenus(true);

				$button.addClass('is-active');
				$plate.addClass('is-active');

				if($plate.height() >= $(window).height()*0.8) {
					$plate.addClass('is-fullscreen');
				} else {
					$plate.removeClass('is-fullscreen');
				}

				$context.addClass('is-menu-opened');
				isMenuOpened = true;

				window.startPreventBodyScroll();
			}
		});

		$(document).on('touchstart', function(e){
			if(isMenuOpened && $(e.target).closest('.header-mobile').length === 0){
				closeActiveMenus();
			}
		});

		$(document).on('cartDataAvailable', function(){
			if(isMenuOpened){
				$('.header-mobile__cart-button, .header-mobile__cart-holder').addClass('is-active');
			}
		});

		$(document).on('fancybox-before-show', function(){
			closeActiveMenus();
		});
	});
});

/**
 *	Автовысота
 */
$.fn.equivalent = function () {
	var $blocks = $(this), //запишем значение jQuery выборки к которой будет применена эта функция
		maxH = $blocks.eq(0).height(); //примем за максимальную высоту - высоту первого блока в выборке

	$blocks.each(function(){
		//делаем сравнение высоты каждого блока с максимальной
		maxH = ( $(this).height() > maxH ) ? $(this).height() : maxH;
	});

	$blocks.height(maxH); //устанавливаем найденное максимальное значение высоты для каждого блока jQuery выборки
}
// logo-slider block
$(function () {
	// .logo-slider js
	$('.logo-slider').livequery(function () {
		var $context = $(this);
		var $slider = $('.logo-slider__slider', $context);

		function initSlider() {
			$slider.slick({
				dots: false,
				infinite: true,
				slidesToShow: 8,
				slidesToScroll: 1,
				responsive: [
					{
						breakpoint: 1580,
						settings: {
							slidesToShow: 7,
							slidesToScroll: 1
						}
					},
					{
						breakpoint: 1367,
						settings: {
							slidesToShow: 6,
							slidesToScroll: 1
						}
					},
					{
						breakpoint: 1280,
						settings: {
							slidesToShow: 5,
							slidesToScroll: 1
						}
					},
					{
						breakpoint: 1024,
						settings: {
							slidesToShow: 4,
							slidesToScroll: 1
						}
					},
					{
						breakpoint: 769,
						settings:  {
							slidesToShow: 3,
							slidesToScroll: 1
						}
					}
					,
					{
						breakpoint: 680,
						settings: "unslick"
					}
				]
			});
		}

		initSlider();

		var $slideImg = $slider.find('.logo-slider__image');

		$slideImg.matchHeight();
	});
});

// Строка поиска
$(function () {
	$('.map-search').each(function () {
		var $context = $(this);
		var $clearbutton = $('.map-search__clear-field', $context);

		var $input = $('.map-search__input', $context);


		$input.on('keydown',function (event) {
			if(event.target.value !== '') {
				$clearbutton.removeClass('is-hide');
			} else {
				$clearbutton.addClass('is-hide');
			}
		});

		$clearbutton.on('click', function () {
			$input.val('');
			$clearbutton.addClass('is-hide');
		});
	});
});

if(window.matchMedia('(max-width: 767px)').matches){
	$(function () {
		$('.map-search').each(function () {
			var $context = $(this);
			var $link = $('.map-search__path-link', $context);

			$link.on('click', function () {
				$('html, body').scrollTo('.map-search__maps');
			});
		});
	});
}

// menu-footer
$(function () {
	$('.menu-footer').livequery(function () {
		var $context = $(this);

		// Инициализация блока
		(function init(){
			initPseudoAll();
		})();

		// Раскрытие списка доп.пунктов
		function initPseudoAll() {
			var $pseudo_all_link = $('.js-show a', $context),
				$hide_all_link = $('.js-hide a', $context);

			$pseudo_all_link.on('click', function () {
				var $item = $(this).closest(".menu-footer__item");

				$item.hide().siblings(".more").show();

				return false;
			});

			$hide_all_link.on('click', function () {
				var $item = $(this).closest(".menu-footer__item");

				$item.hide().siblings(".more").hide();
				$item.siblings(".js-show").show();

				return false;
			});
		}
	});
});

// comments
$(function () {
	$('.loader-link').livequery(function () {
		var $context = $(this);

		$context.children('a').on('click', function() {
			$('body').addClass('loading');
		});
	})
});

// Новость в списке
$(function () {
	$('.news-item').each(function () {
		var $context = $(this);

		$context.adaptBlock({
			maxWidth: {
				460: '_mx460'
			}
		});
	});
});

var isLocalBuild = true;

// Обработка стандартной формы
$(function () {
	$('.form-standart').livequery(function () {
		var $context = $(this);
		var $form = $('form', $context);

		$form.initWebForm('form-standart');

		$('[data-mask="phone"]', $context).each(function(){
			$(this).mask('+7 (000) 000-00-00');
		});

		// Появление полей для смены пароля
		$('.js-pass-link', $context).on('click', function () {
			$context.find('[name=changepassword]').val('1');
			$('.js-pass-change', $context).addClass('is-visible');

			$(this).closest('.form-standart__field').addClass('is-hidden');
			return false;
		});

		$('.js-pass-cancel', $context).on('click', function () {
			$context.find('[name=changepassword]').val('');
			$('.js-pass-change', $context).removeClass('is-visible');
			$('.js-pass-link', $context).closest('.form-standart__field').removeClass('is-hidden');
			return false;
		});
	});
});

// Обработка стандартной формы
$(function () {
	$('.form-standart').livequery(function () {
		var $context = $(this);
		var $form = $('form', $context);

		$form.initWebForm('form-standart');

		$('[data-mask="phone"]', $context).each(function(){
			$(this).mask('+7 (000) 000-00-00');
		});

		// Появление полей для смены пароля
		$('.js-pass-link', $context).on('click', function () {
			$context.find('[name=changepassword]').val('1');
			$('.js-pass-change', $context).addClass('is-visible');

			$(this).closest('.form-standart__field').addClass('is-hidden');

			return false;
		});

		$('.js-pass-cancel', $context).on('click', function () {
			$context.find('[name=changepassword]').val('');

			$('.js-pass-change', $context).removeClass('is-visible');
			$('.js-pass-link', $context).closest('.form-standart__field').removeClass('is-hidden');

			return false;
		});
	});
});

// comments
$(function () {
	//Стандартная печать
	$('.order-detail__print').on('click', function () {
		window.print();
	});
});

// Календарь
$(function () {
	$('.news-calendar').livequery(function () {
		var $context = $(this);
		var $calendar = $('.news-calendar__calendar', $context);
		var $input = $('.news-calendar__input', $context);
		var minDate = $context.data('min') || '-5d'; //http://api.jqueryui.com/datepicker/#option-minDate
		var maxDate = $context.data('max') || '+5d'; //http://api.jqueryui.com/datepicker/#option-maxDate

		function changeDate(date) {
			$input.val(date);
		}

		$calendar.datepicker({
			firstDay: 1,
			dayNames: [ "Воскресенье", "Понедельник", "Вторник", "Среда", "Четверг", "Пятница", "Суббота" ],
			dayNamesMin: [ "Вс", "Пн", "Вт", "Ср", "Чт", "Пт", "Сб" ],
			monthNames: ["Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"],
			monthNamesShort: [ "Янв", "Фев", "Мар", "Апр", "Май", "Июн", "Июл", "Авг", "Сен", "Окт", "Ноя", "Дек" ],
			dateFormat: 'dd.mm.yy',
			showOtherMonths: true,
			minDate: minDate,
			maxDate: maxDate,
			onSelect: changeDate
		});
	});
});

// Слайдер фотографий
$(function () {
	$('.photoalbums-slider').each(function () {
		var $context = $(this);
		var $slider = $('.photoalbums-slider__items', $context);
		var $mainPrev = $('.photoalbums-slider__main-prev', $context);
		var $mainNext = $('.photoalbums-slider__main-next', $context);

		$slider.slick({
			slidesToShow: 1,
			slidesToScroll: 1,
			prevArrow: $mainPrev,
			nextArrow: $mainNext
		});
	});
});

// Fancybox settings
$(function () {
	$('.photogallery-plates').livequery(function () {
		var $context = $(this);
		var $photoLinks = $('.photogallery-plates__img-link', $context);

		if($(window).width() < 768) {
			$photoLinks.mobilezoom({backbutton: 'Вернуться'});
		} else {
			$photoLinks.fancybox({
				type: 'image',
				helpers: {
					title: {
						type: 'outside'
					}
				},
				beforeLoad: function () {
					//Шаблон задан в верстке
					var template = $(".photogallery-plates__template").html();
					var desc = $(this.element).data("text");

					Mustache.parse(template);   // optional, speeds up future uses
					this.title = Mustache.render(template, {title: this.title, description: desc});
				}
			});
		}
	});
});

// Slider settings
$(function () {
	$('.photogallery-sections-slider').livequery(function () {
		var $context = $(this);
		var $slider = $('.photogallery-sections-slider__slider', $context);
		var $photoContainer = $('.photogallery-plates');

		$slider.slick({
			dots: true,
			adaptiveHeight: true,
			dotsClass: "photogallery-sections-slider__pagination",
			prevArrow: "<span class='photogallery-sections-slider__arrows photogallery-sections-slider__arrow-left'></span>",
			nextArrow: "<span class='photogallery-sections-slider__arrows photogallery-sections-slider__arrow-right'></span>"
		});

		if($context.is('.is-with-photo')){
			//После смены слайда загруза фотографий в контейнер
			$($slider).on('afterChange', function (event, slick, currentSlide) {
				var url = $(slick.$slides.get(currentSlide)).attr('data-url');
				var id = $(slick.$slides.get(currentSlide)).attr('id');

				history.pushState({id: id}, 'Section', url);

				if (typeof url != 'undefined') {
					$photoContainer.animate({opacity: 0},500);
					$photoContainer.load(url + ' .photogallery-plates');
					$photoContainer.animate({opacity: 1},1000);
				}
			});
		}
	});
});

// Слайдер фотографий
$(window).on('load', function () {
	$('.photogallery-with-thumbs').livequery(function () {
		var $context = $(this);
		var $slider = $('.photogallery-with-thumbs__items', $context);
		var $mainPrev = $('.photogallery-with-thumbs__main-prev', $context);
		var $mainNext = $('.photogallery-with-thumbs__main-next', $context);
		var $thumbsPrev = $('.photogallery-with-thumbs__thumbs-prev', $context);
		var $thumbsNext =  $('.photogallery-with-thumbs__thumbs-next', $context);
		var $thumbnails = $('.photogallery-with-thumbs__thumbnails-items', $context);
		var $galleryLinks = $('.photogallery-with-thumbs__gallery-link', $context);

		var slidesToShow = parseInt($context.data('thumbs-qtty')) || 5;
		var mainSlider;
		var thumbSlider;

		function fixWidth() {
			// slick slider somehow breaks on relative width
			$slider.width('auto');
			$thumbnails.width('auto');
			$slider.width($slider.width());
			$thumbnails.width($slider.width());
		}

		function initMainSlider() {
			mainSlider = $slider.slick({
				fade: true,
				adaptiveHeight: true,
				slidesToShow: 1,
				slidesToScroll: 1,
				prevArrow: $mainPrev,
				nextArrow: $mainNext
			});
		}

		function initThumbsSlider () {
			thumbSlider = $thumbnails.slick({
				slidesToShow: slidesToShow,
				slidesToScroll: 1,
				infinite: false,
				prevArrow: $thumbsPrev,
				nextArrow: $thumbsNext
			});
		}

		function handleThumbClick () {
			var index = $(this).data('index');

			$slider.slick('slickGoTo', index);
		}

		function initGallery () {
			$galleryLinks.fancybox({
				type: 'image'
			});
		}

		function resizeBlock () {
			mainSlider.slick('unslick');
			thumbSlider.slick('unslick');
			fixWidth();
			initMainSlider();
			initThumbsSlider();
		}

		(function init () {
			fixWidth();
			initMainSlider();
			initThumbsSlider();
			initGallery();
			$(window).on('resize', resizeBlock);
			$thumbnails.on('click', '.photogallery-with-thumbs__thumbnails-item',handleThumbClick);
			$context.on('resize.block', resizeBlock);
		})();
	});
});

$(function () {
	$('.plate-advantages__items').slick({
		dots: true,
		dotsClass: "plate-advantages__pagination",
		prevArrow: "<span class='plate-advantages__arrows plate-advantages__arrow-left'></span>",
		nextArrow: "<span class='plate-advantages__arrows plate-advantages__arrow-right'></span>"
	});
});

$(function() {
	var div = document.createElement('div');

	div.style.overflowY = 'scroll';
	div.style.width = '50px';
	div.style.height = '50px';
	div.style.visibility = 'hidden';

	document.body.appendChild(div);

	var scrollWidth = div.offsetWidth - div.clientWidth;

	document.body.removeChild(div);

	$(window).on('load', function() {
		$('.js-product-compare__products-options-titles')
			.height($('.js-product-compare__products-scroll').height() - scrollWidth);
	})
});

// comments
$(function () {
	$('.product-constructor').livequery(function () {
		var $context = $(this);
		var zoomClassName = 'product-variant__zoom';
		var constructorResultWrapper = $('.product-constructor__result-section');
		var properties = $('.js-property');
		var firstProp = $(document).find('.js-property').eq(0);

		// Изменение свойств
		var propVariant = '.product-variant__link';

		$(document).on('click', propVariant, function(e) {
			e.preventDefault();

			if(!$(e.target).hasClass(zoomClassName) && !$(this).hasClass('is-muted')) {
				var currentVariant = $(e.currentTarget);
				var currentPropertyWrap = currentVariant.parents('.product-constructor__filter-item');

				currentPropertyWrap.removeClass('is-empty'); // Свойтво выбранно, не пустое

				var currentProp = currentPropertyWrap.find('.js-property');
				var currentActiveVariant = currentVariant.parents('ul').find('a.is-active');
				// Помечаем выбранный элемент
				var currentClick = false;

				currentActiveVariant.removeClass('is-active');

				if(currentActiveVariant.data('xml-id') != currentVariant.data('xml-id')){
					currentVariant.addClass('is-active');
				} else {
					currentClick = true;
				}

				var allSelected = true;
				var nextProp;
				var selectedVariants = []; // Выбранные свойства

				properties.each(function () {
					var propID = $(this).find('a.is-active').parents('ul').data('prop-id');
					var propValueEnum = $(this).find('a.is-active').data('xml-id');

					selectedVariants[propID] = propValueEnum;

					if(typeof propValueEnum == 'undefined' && allSelected) {
						allSelected = false;

						if(!currentClick) {
							nextProp = currentPropertyWrap.next(); // Следующее свойство для заполнения
							// Если следующего свойства нет, то идем к первому не заполненному свойству
							if (nextProp.length === 0) {
								nextProp = $('.product-constructor__filter-item.is-empty');
							}
						} else {
							nextProp = false;
						}
					}
				});

				var resultVisible = constructorResultWrapper.is(":visible");

				constructorResultWrapper.fadeOut();

				// Если не все свойства выбраны, то чистим все следующие выбранные свойства
				var currentPropertyIndex = currentPropertyWrap.index();

				$('.product-constructor__filter-item').each(function() {
					if($(this).index() > currentPropertyIndex) {
						$(this).addClass('is-empty');
						$(this).find('a').removeClass('is-muted').removeClass('is-active');
					}
				});
				// Обновляем массив свойств без активности всех нижестоящих
				var selectedVariantsTmp = selectedVariants;

				selectedVariants = [];
				properties.each(function () {
					var propID = $(this).find('a.is-active').parents('ul').data('prop-id');

					selectedVariants[propID] = $(this).find('a.is-active').data('xml-id');
				});
				// Запускаем проверку на доступность свойств
				$(document).trigger(
					'constructor_calculate_variants',
					[
						selectedVariants,
						selectedVariantsTmp,
						nextProp,
						currentProp,
						resultVisible,
						constructor_calculate_variants_callback
					]
				);
			}
		});

		/**
		 * Callback события constructor_calculate_result
		 * Заполняет и показывает результат выбора опираясь на данные компонента Битрикс
		 * @param result
		 */
		var constructor_calculate_result_callback = function callback(result) {
			$('.result-detail.is-price .result-detail__price').html(result.price);

			jQuery.each(result.variants, function(i, val) {
				var activeVariant = $("a[data-xml-id='"+val+"']");
				var activeValue = activeVariant.find('.js-prop-value').html();

				$(".result-detail[data-prop-id='"+i+"'] .result-detail__value").html(activeValue);

				var resultImg = activeVariant.find('img').data('result-picture');

				if(resultImg) $('.product-constructor__result-image img').attr('src', resultImg);
			});

			constructorResultWrapper.fadeIn();
			$('html, body').animate({ scrollTop: constructorResultWrapper.offset().top }, 500);
		};

		/**
		 * Callback события constructor_calculate_variants
		 * Перестраиваем возможные варианты свойтв исходя из заданных
		 * @param result
		 */
		var constructor_calculate_variants_callback = function callback(result) {
			// Чистим недоступные варианты выбора
			// Иначе мы не сможем вернуться к выбору других предложений после первого выбора
			var selectedVariants = []; // Собираем значения свойств повторно
			var allSelected = true;

			$('.js-property').each(function() {
				var currentProp = $(this);
				var propID = $(this).data('prop-id');

				$(this).find('.product-variant__link').each(function() {
					var xmlId = $(this).data('xml-id');
					var isActive = $(this).hasClass('is-active');
					var propVariants = result.availableVariants[propID];

					// Если это не текущее свойство, то сначала зачишаем заблокированные.
					// Чтобы текущее свойство сохранило свои доступные на предыдущем шаге варианты
					// При этом, если был виден результат, значит при предыдущем нажатии были выделены все.
					// В таком случае зачищаем и текущее свойство
					if(result.currentProp.data('prop-id') != propID || result.resultVisible) {
						$(this).removeClass('is-muted');
					}

					if(jQuery.inArray(xmlId+"", propVariants) === -1 &&
						currentProp.data('prop-id') != firstProp.data('prop-id') &&
						(result.currentProp.data('prop-id') != propID || result.resultVisible) ) {
						if(isActive) $(this).removeClass('is-active');
						$(this).addClass('is-muted'); // Блокируем вариант
					}

					// Добавляем класс активности, который стоял до пересчета, если вариант не заблокирован
					if(!$(this).hasClass('is-muted') &&
						result.selectedVariantsTmp[propID] == $(this).data('xml-id')) {
						$(this).addClass('is-active');
					}
				});

				var propValueEnum = $(this).find('a.is-active').data('xml-id');

				selectedVariants[propID] = propValueEnum;

				if(typeof propValueEnum == 'undefined' && allSelected) {
					allSelected = false;
				}
			});

			if(allSelected) {
				// Если после обновления все свойства снова активные, запускаем генерацию результата
				$(document).trigger('constructor_calculate_result', [selectedVariants, allSelected, constructor_calculate_result_callback]);
			} else if(result.nextProp) {
				// Если не все заполнены, то скролим к следующему пустому
				$('html, body').animate({ scrollTop: result.nextProp.offset().top }, 500);
			}
		};

		// Увеличение изображения
		$(".product-variant__image-holder").each(function() {
			if(typeof($(this).children('img').data('detail')) !== "undefined"){
				$(this).append('<span class="'+zoomClassName+'"></span>');
			}
		});

		// Увеличение изображения
		$(document).on('click', "."+zoomClassName, function(e) {
			e.preventDefault();

			var detailLink = $(e.target).prev('img').data('detail');

			if(typeof detailLink != "undefined"){
				showPreview(detailLink);
			}
		});

		/**
		 * Show Detail image
		 * @param link
		 * @returns {boolean}
		 */
		function showPreview (link) {
			$.fancybox.open({
					href: link
				}, {
					wrapCSS: '_product-preview _ajax-appended',
					type: 'image',
					fitToView: true,
					autoResize: true,
					padding: 20,
					margin: 20,
					maxWidth: 1200,
					afterLoad: function () {
						$.fancybox .showLoading()
					},
					afterShow: function () {
						$(window).trigger('resize');
						setTimeout(function () {
							$.fancybox .hideLoading();
							$('.fancybox-wrap._ajax-appended').removeClass('_ajax-appended');
							$('.fancybox-wrap ._ajax-append').removeClass('_ajax-append');
						}, 400);
					}
				}
			);
			return false;
		}
	})
});

// comments
(function($){
	/** Плагин по торговым предложениям */
	$.fn.catalogPlate = function (conf) {
		var def_config = {
			propertyView:{}, // свойства ТП отброжаемые на карточке ПРИМЕР {"ARTICLE": "js-article"}
			selectsProperty:[], // свойства на которые есть input c соответствующем name ПРИМЕР ["COLOR_REF", "SIZES_CLOTHES", "SIZES_SHOES"]
			offers:{} /**
			 JSON самих ТП ПРИМЕР
			 {
                 "608": {
                         "ID": 608,
                         "CATALOG_WEIGHT": "0",
                         "BUY_URL": "?region=msk&amp;action=BUY&amp;id=608",
                         "ADD_URL": "?region=msk&amp;action=ADD2BASKET&amp;id=608",
                         "COMPARE_URL": null,
                         "PROPERTIES": {
                             "COLOR_REF": "red",
                             "SIZES_SHOES": "36",
                             "SIZES_CLOTHES": "S"
                         },
                         "RATIO_PRICE": {
                             "VALUE": 2000,
                             "DISCOUNT_VALUE": 2000,
                             "PRINT_VALUE": "<span>2 000<\/span> \u0440\u0443\u0431.",
                             "PRINT_DISCOUNT_VALUE": "<span>2 000<\/span> \u0440\u0443\u0431.",
                             "DISCOUNT_DIFF": 0,
                             "PRINT_DISCOUNT_DIFF": "<span>0<\/span> \u0440\u0443\u0431.",
                             "DISCOUNT_DIFF_PERCENT": 0,
                             "CURRENCY": "RUB"
                            },
                 },
                 "607": { ...
                 ....
              }
			 */
		};

		var config = $.extend({}, def_config, conf);

		return this.each(function () {
			var $th = $(this);
			var $buyButton = $th.find('.js-buy-button');
			var $subscribeButton = $th.find('.js-subscribe-button');
			var $FastBuyButton = $th.find('.js-fast-buy-button');
			var $CompareButton = $th.find('.js-compare-button');
			var $Price = $th.find('.js-price');
			var $OldPrice = $th.find('.js-old-price');

			var offers,
				selectsProperty,
				propertyView,
				$sel = $th.find('input.e_quantity, select.js-select, .js-select input, .js-val');

			/**
			 * При смене значений инпута делаем или не делаем запрос на поиск соответствующего ТП
			 */
			var flagCh = true; /* выключатель changeSelect */
			var changeSelect = function () {
				var $thsel = $(this);
				var $_sel;
				var checkProp = {};

				/*
				 * Если надо подобрать ТП
				 */
				if (flagCh) {
					for (var i = 0; i < selectsProperty.length; i++) {
						$_sel = $th.find('input[name="' + selectsProperty[i] + '"]');

						if($_sel.length === 0){
							$_sel = $th.find('select[name="' + selectsProperty[i] + '"]');
						}

						checkProp[selectsProperty[i]] = $_sel.val(); // формируем массив дла нахождения торгового предложения
					}

					SerchOfers(checkProp, $thsel);
				}

			};

			/**
			 * Ищем подходящее товарное предложение
			 * @param checkProp Обьект вида {COLOR_REF: "red", SIZES_CLOTHES: "XS", SIZES_SHOES: "36"} для поиска соответствующего ТП
			 * @param $thsel Текущий измененный инпут
			 * @constructor
			 */
			var SerchOfers = function (checkProp, $thsel) {
				/** Ищем ТП полностью удавлитворяющее по всем полям */
				var obg = undefined;
				$.each(offers, function (index, value) {
					var isch = true;
					$.each(checkProp, function (chindex, chvalue) {
						if (value['PROPERTIES'][chindex] != chvalue) {
							isch = false;
						}
					});
					if (isch) {
						obg = value;
					}
				});

				/**
				 * НЕ нашел подходящее торговое предложение так что придется
				 *  сбросить пару второстепенных свойств
				 *  **/
				if (typeof obg == "undefined") {
					var min = 9007199254740992; //Number.MAX_SAFE_INTEGER;
					$.each(offers, function (index, value) {
						/** Проверяем только те ТП что подходят по свойству что мы только что проставили */
						if (value['PROPERTIES'][$thsel.attr('name')] == $thsel.val()) {
							if (min > value['RATIO_PRICE']['VALUE']) {
								min = value['RATIO_PRICE']['VALUE'];
								obg = value;
							}
						}
					});
				}

				setStatus(obg);
			};

			var setStatus = function (offer) {
				/** @var COMPARE_VARIANT */
				var $_sel;

				/**
				 *  Проставляю цены и  др поля под соответстыующее торговое предложение
				 * */

				flagCh = false; // чтоб не срабатывал changeSelect

				$buyButton.attr('href', offer['ADD_URL'].replace(/&amp;/g, '&'));

				if ($FastBuyButton.length)
					$FastBuyButton.attr('href', offer['BUY_URL'].replace(/&amp;/g, '&'));

				if ($CompareButton.length){
					$CompareButton.attr('href', offer['COMPARE_URL'].replace(/&amp;/g, '&'));
					if($CompareButton.data('add')){

						$CompareButton.data('add', $CompareButton.data('add').replace(/id=\d+/g, 'id='+offer['ID']));

					}
					if($CompareButton.data('remove')){
						$CompareButton.data('remove', $CompareButton.data('remove').replace(/id=\d+/g, 'id='+offer['ID']));
					}
				}

				/**
				 * Показывем другие свойства данного ТП
				 */
				if(propertyView){
					$.each(propertyView, function (index, value){
						var $el =  $th.find('.'+ value);

						if($el.length){
							$el.html(offer['PROPERTIES'][index]);
						} else {
							console.warn('Не нашел '+ '.'+ value);
							console.warn('Не могу показать '+ offer['PROPERTIES'][index]);
						}

					});
				}

				if (offer['RATIO_PRICE']['DISCOUNT_DIFF'] > 0) {
					$OldPrice.html('<span>' + offer['RATIO_PRICE']['VALUE'] + '</span>');
					$Price.html(offer['RATIO_PRICE']['PRINT_DISCOUNT_VALUE']);
				} else {
					if(offer.hasOwnProperty('PROPERTIES')){
						if (typeof offer['PROPERTIES']['OLD_PRICE'] != "undefined" && offer['PROPERTIES']['OLD_PRICE']) {
							$OldPrice.html('<span>' + offer['RATIO_PRICE']['PRINT_VALUE'] + '</span>');
						}
					}
					$Price.html(offer['RATIO_PRICE']['PRINT_VALUE']);
				}

				for (var i = 0; i < selectsProperty.length; i++) {
					$_sel = $th.find('input[name="' + selectsProperty[i] + '"]');

					if($_sel.length === 0){
						$_sel = $th.find('select[name="' + selectsProperty[i] + '"]');
					}

					if ($_sel.length) {
						$_sel.val(offer['PROPERTIES'][selectsProperty[i]]).change();
					}
				}
				flagCh = true;

				if (typeof initCompare == 'function') {
					initCompare();
				}
			};

			/**
			 * Ищем самое дешевое Торговое Предложение
			 * */
			var setMinOffer = function () {
				var min = 9007199254740992; //Number.MAX_SAFE_INTEGER;
				var OfreVariant = [];

				$.each(offers, function (index, value) {
					if (min > value['RATIO_PRICE']['VALUE']) {
						min = value['RATIO_PRICE']['VALUE'];
						OfreVariant = value;
					}
				});

				setStatus(OfreVariant);
			};

			var init = function () {
				//console.log('catalogPlate.init');
				offers = config.offers;
				selectsProperty = config.selectsProperty;

				if (offers){
					setMinOffer();
				}

				$sel.on('change', changeSelect);
			}

			init();

		}); // return catalogPlate
	};

	$.fn.selectOffers = function (conf) {
		var config = $.extend({}, {}, conf);

		return this.each(function () {
			var $th = $(this);
			var $inp = $th.find('input');
			var $point = $th.find('[data-val]');
			var changeSelect = function () {
				$point.each(function () {
					var $th = $(this);

					if ($th.data('val') == $inp.val()) {
						$th.find('span').addClass('is-active');
					} else {
						$th.find('span').removeClass('is-active');
					}
				});
			}

			var clickPoint = function () {
				var $th = $(this);

				$inp.val($th.data('val')).change();

				return false;
			};

			var init = function () {
				$inp.on('change', changeSelect);
				$point.on('click', clickPoint);

				changeSelect();
			};

			init();

		}); // return selectOffers
	}; // #END selectOffers

})(jQuery);

$(function () {
	$('.product-detail').livequery(function () {
		var $context = $(this);

		$context.find('.js-select').selectOffers();

		var $moreButton = $context.find('.js-more-button').first(),
			$moreProps = $context.find('.js-more-props');

		$moreButton.on('click', function () {
			$moreProps.toggle();

			return false;
		});
	})
});

// Список разделов фотогалереи
$(function () {
	$('.photogallery-sections').each(function () {
		var $context = $(this);

		$context.adaptBlock({
			maxWidth: {
				800: 'is-3cols',
				600: 'is-2cols',
				400: 'is-1cols'
			}
		})
	});
});

// Slider settings (вынесено в функцию, для вызова вне блока)
function initPromoSliders ($reinit) {
	$('.promo-slider').each(function() {
		var $context = $(this);
		var $slider = $('.promo-slider__slider', $context);
		var slidesCount = $('.promo-slider__slide', $slider).length;

		if($context.hasClass("home-big-slider")) {
			$slider.slick({
				dots: false,
				autoplay: false,
				speed: 900,
				arrows: false,
				infinite: true

			});
		} else {
			$slider.slick({
				dots: (slidesCount > 1),
				dotsClass: "promo-slider__pagination",
				prevArrow: "<span class='promo-slider__arrows promo-slider__arrow-left'></span>",
				nextArrow: "<span class='promo-slider__arrows promo-slider__arrow-right'></span>"
			});
		}

		if(!$reinit) {
			// Перенос фона из img в background
			if($context.hasClass('is-adaptive-bg')) {
				$('.promo-slider__bg-holder', $context).each(function() {
					var $bgHolder = $(this);
					var $img = $bgHolder.children('img');

					$bgHolder.css('background-image','url('+$img.attr('src')+')');
					$img.remove();
				});
			}
		}
	});
}

$(function () {
	var percentTime;
	var tick;
	var time = 1;
	var progressBarIndex = 0;

	$('.promo-slider__slide').each(function(index) {
		var progress = '<div class="inProgress inProgress' + index + '"></div>';

		progress = '<span data-slick-index="'+ index +'" class="progressBar">' + progress + '</span>';
		progress = '<span class="HomepageCarousel-tab-title">'+ $(this).find('.promo-slider__title').text() +'</span>' + progress;
		progress = '<div class="glide__bullet glide__bullet--active">' + progress + '</div>';

		$('.progressBarContainer').append(progress);
	});

	initPromoSliders();

	function startProgressbar() {
		resetProgressbar();
		percentTime = 0;
		tick = setInterval(interval, 10);
	}

	function interval() {
		if ($('.promo-slider__slider .slick-track div[data-slick-index="' + progressBarIndex + '"]')
			.attr("aria-hidden") === "true") {
			progressBarIndex = $('.promo-slider__slider .slick-track div[aria-hidden="false"]').data("slickIndex");

			startProgressbar();
		} else {
			percentTime += 1 / (time + 5);

			$('.inProgress' + progressBarIndex).css({
				width: percentTime + "%"
			});

			if (percentTime >= 100) {
				var promoSliderSlideBullet = $('.promo-slider__slide-bullet');

				$('.promo-slider__slider').slick('slickNext');

				progressBarIndex++;

				if (progressBarIndex > promoSliderSlideBullet.length - 1) {
					progressBarIndex = 0;
				}

				promoSliderSlideBullet.removeClass('active');
				promoSliderSlideBullet.eq(progressBarIndex).addClass('active');

				startProgressbar();
			}
		}
	}
	function resetProgressbar() {
		$('.inProgress').css({
			width: 0 + '%'
		});

		clearInterval(tick);
	}

	startProgressbar();
	// End ticking machine
	$('.progressBarContainer div').on('click', function () {
		clearInterval(tick);

		var goToThisIndex = $(this).find(".progressBar").data('slickIndex');
		var promoSliderSlideBullet = $('.promo-slider__slide-bullet');

		$('.promo-slider__slider').slick('slickGoTo', goToThisIndex, false);

		promoSliderSlideBullet.removeClass('active');
		promoSliderSlideBullet.eq(goToThisIndex).addClass('active');

		startProgressbar();
	});
});

// Чек-бокс
$(function () {
	$('.checkbox').livequery(function () {
		var $context = $(this);
		var $input = $('input[type="checkbox"]', $context);

		function changeState () {
			if($input.prop('checked')) {
				$context.addClass('_checked')
			} else {
				$context.removeClass('_checked');
			}
		}

		changeState();
		$input.on('change', changeState);
	});
});

// Обработка стандартной формы
$(function () {
	// Функция проверки соответствия значения инпута регулярке
	var checkVal = function ($input, regExp) {
		var result = regExp.test($input.val());

		if (result) {
			$input.closest('.registration-form__field').removeClass('is-error');
		} else {
			$input.closest('.registration-form__field').addClass('is-error');
		}

		return result;
	};

	// Функция проверки обязательных полей формы
	function inputChecker($input) {
		var $field = $input.closest('.registration-form__field');

		if ($field.hasClass('is-error, is-none')) return false;
		if (!$input.data('necessary')) return true;

		var type = $input.attr('type');

		switch (type) {
			case 'checkbox':
				if (!$input.prop('checked')) {
					$field.addClass('is-none');
					return false;
				}

				break;
			default:
				if ($input.val() === '' || $input.hasClass('ui-placeholder')) {
					$field.addClass('is-none');
					return false;
				}

				return true;
		}

		return true;
	}

	$('.registration-form').each(function () {
		var $context = $(this);
		var $form = (!$context.hasClass("js-ajax") && !$('form', $context).hasClass("js-ajax")) ? $('form', $context) : $('');
		var $ajaxForm = ($context.hasClass("js-ajax") || $('form', $context).hasClass("js-ajax")) ? $('form', $context) : $('');
		var $successMessage = $('.success-message-modal', $context);
		var $nodesMessage = $('.registration-form__node', $context);
		var $capthaButton = $('.registration-form__captcha-link', $context);

		if ($nodesMessage.length === 0) {
			$context.prepend('<div class="registration-form__node"></div>');
			$nodesMessage = $('.registration-form__node', $context);
		}
		// Сброс error при активности
		$('input[data-necessary], textarea[data-necessary], select', $context).on('click keydown change', function () {
			$(this).closest('.registration-form__field').removeClass('is-none is-error');
		});

		// Устанавливаем маски ввода
		$('[data-mask="phone"]', $context).each(function(){
			$(this).mask('+7 (000) 000-00-00');
		});

		$('[data-mask="email"]', $context).change(function () {
			var regExp = /^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*\.[a-z]{2,6}$/g;

			checkVal($(this), regExp);

			return true;
		});

		// Обработка формы без Ajax
		$form.on('submit', function () {
			var isValidate = true;
			var radioNames = [];

			$nodesMessage.html('').removeClass().addClass('registration-form__node');
			$('input[type="text"], input[type="email"], input[type="password"], input[type="checkbox"], select, textarea', $form).each(function () {
				isValidate = inputChecker($(this)) && isValidate;
			});

			$('input[type="radio"]', $form).each(function () {
				var $this = $(this);

				if (!$this.data('necessary')) return true;

				var name = $this.attr('name');

				if ($.inArray(name, radioNames) == -1) radioNames.push(name);
			});

			for (var i = 0; i < radioNames.length; i++) {
				var isChecked = $('input:checked[name=' + radioNames[i] + ']', $form).length > 0;

				if (!isChecked) {
					$('input[type="radio"][name="' + radioNames[i] + '"]', $form)
						.eq(0)
						.closest('.registration-form__field')
						.addClass('is-none');
				} else {
					$('input[type="radio"][name="' + radioNames[i] + '"]', $form)
						.eq(0)
						.closest('.registration-form__field')
						.addClass('_ok');
				}

				isValidate = isChecked && isValidate;
			}

			return isValidate;
		});

		// Обработка формы с Ajax
		$ajaxForm.ajaxForm({
			dataType: "json",
			beforeSerialize: function(){
				$ajaxForm.find('input[name="confirm"]').remove();
			},
			beforeSubmit: function (arr, $form) {
				var isValidate = true;
				var radioNames = [];

				$('input[type="text"], input[type="email"], input[type="password"], input[type="checkbox"], select, textarea', $form).each(function () {
					isValidate = inputChecker($(this)) && isValidate;
				});

				$('input[type="radio"]', $form).each(function () {
					var $this = $(this);

					if (!$this.data('necessary')) return true;

					var name = $this.attr('name');

					if ($.inArray(name, radioNames) == -1) radioNames.push(name);
				});

				for (var i = 0; i < radioNames.length; i++) {
					var isChecked = $('input:checked[name=' + radioNames[i] + ']', $form).length > 0;

					if (!isChecked) {
						$('input[type="radio"][name="' + radioNames[i] + '"]', $form).eq(0).closest('.registration-form__field').addClass('is-none');
					}

					isValidate = isChecked && isValidate;
				}

				if ($("input[type='hidden'][name='confirm']", $form).length) {
					$("input[type='hidden'][name='confirm']", $form).val(0);
				}

				return isValidate;
			},

			success: function (message) {
				if (message.status === 'success') {
					if ($successMessage.length) {
						$successMessage.find('.js-fancybox-close').on('click', function(){
							$.fancybox.close();
							return false;
						});

						$.fancybox($successMessage, {
							afterClose: function () {
								if ($successMessage.hasClass('js-reload-page')) {
									window.location = window.location;
								}
							},
							wrapCSS: 'modal-theme',
							autoCenter: false,
							padding: 0,
							fitToView: false
						});
					} else {
						if ($nodesMessage.length) {
							$nodesMessage.addClass(message.status).html(message.info);
						} else {
							console.warn(message);
						}
					}
				} else if (message.status === 'error') {
					if ($capthaButton.length){$capthaButton.click()}

					if ($nodesMessage.length) {
						$nodesMessage.addClass(message.status).html((message.error === true) ? message.info : message.error);
						/** Суда то приходит сообщение в message.error то message.error хранит true а текст сообщения message.info **/
					} else {
						console.warn(message);
					}
				} else {
					if ($capthaButton.length) $capthaButton.click()

					if ($nodesMessage.length) {
						$nodesMessage.addClass(message.status).html(message.info);
					} else {
						console.warn(message);
					}
				}

			},

			error: function () {
				$.fancybox($successMessage, {
					wrapCSS: 'modal-theme',
					autoCenter: false,
					padding: 0,
					fitToView: false
				});
			}
		});

		// Появление полей для смены пароля
		$('.js-pass-link', $context).on('click', function () {
			$context.find('[name=changepassword]').val('1');
			$('.js-pass-change', $context).css({
				display: 'table-row'
			});

			$(this).closest('.registration-form__field').hide();

			return false;
		});

		$('.js-pass-cancel', $context).on('click', function () {
			$context.find('[name=changepassword]').val('');
			$('.js-pass-change', $context).removeAttr('style');
			$('.js-pass-link', $context)
				.closest('.registration-form__field')
				.css({
					display: 'table-row'
				});

			return false;
		});
	});
});

// Обработка стандартной формы
$(function () {
	// Функция проверки соответствия значения инпута регулярке
	var checkVal = function($input, regExp) {
		var	result = regExp.test($input.val());

		if(result) {
			$input.closest('.sale-interview__field').removeClass('is-error');
		} else {
			$input.closest('.sale-interview__field').addClass('is-error');
		}

		return result;
	};

	// Функция проверки обязательных полей формы
	function inputChecker($input) {
		var $field = $input.closest('.sale-interview__field');

		if($field.hasClass('is-error, is-none')) return false;
		if(!$input.data('necessary')) return true;

		var type = $input.attr('type');

		switch (type) {
			case 'checkbox':
				if(!$input.prop('checked')) {
					$field.addClass('is-none');
					return false;
				}

				break;
			default:
				if($input.val() === '' || $input.hasClass('ui-placeholder')) {
					$field.addClass('is-none');

					return false;
				}

				return true;
		}

		return true;
	}

	$('.sale-interview').livequery(function () {
		var $context = $(this);
		var $form = (!$context.hasClass("js-ajax") && !$('form', $context).hasClass("js-ajax")) ? $('form', $context) : $('');
		var $ajaxForm =  ($context.hasClass("js-ajax") || $('form', $context).hasClass("js-ajax")) ? $('form', $context) : $('');
		var $successMessage = $('.success-message-modal', $context);
		var $capthaButton = $('.sale-interview__captcha-link', $context);
		var $nodesMessage = $('.sale-interview__node', $context);

		if ($nodesMessage.length === 0){
			$context.prepend('<div class="auth-form__node"></div>');
			$nodesMessage = $('.sale-interview__node', $context);
		}
		// Сброс error при активности
		$('input[data-necessary], textarea[data-necessary], select', $context).on('click keydown change', function() {
			$(this).closest('.sale-interview__field').removeClass('is-none is-error');
		});

		// Устанавливаем маски ввода
		$('[data-mask="phone"]', $context).each(function(){
			$(this).mask('+7 (000) 000-00-00');
		});

		$('[data-mask="email"]', $context).change(function () {
			var regExp = /^([A-Za-z0-9_-]+\.)*[A-Za-z0-9_-]+@[A-Za-z0-9_-]+(\.[A-Za-z0-9_-]+)*\.[a-z]{2,6}$/g;

			checkVal($(this), regExp);

			return true;
		});

		// Обработка формы без Ajax
		$form.on('submit', function () {
			var isValidate = true;
			var radioNames = [];

			$nodesMessage.html('').removeClass().addClass('auth-form__node');
			$('input[type="text"], input[type="email"], input[type="password"], input[type="checkbox"], select, textarea', $form).each(function() {
				isValidate = inputChecker($(this)) && isValidate;
			});

			$('input[type="radio"]', $form).each(function() {
				var $this = $(this);

				if(!$this.data('necessary')) return true;

				var name = $this.attr('name');

				if($.inArray(name, radioNames) == -1) radioNames.push(name);
			});

			for(var i=0;i<radioNames.length; i++) {
				var isChecked = $('input:checked[name='+radioNames[i]+']', $form).length > 0;

				if(!isChecked) {
					$('input[type="radio"][name="'+radioNames[i]+'"]', $form).eq(0).closest('.sale-interview__field').addClass('is-none');
				} else {
					$('input[type="radio"][name="'+radioNames[i]+'"]', $form).eq(0).closest('.sale-interview__field').addClass('_ok');
				}

				isValidate = isChecked && isValidate;
			}

			if($("input[type='hidden'][name='confirm']", $(this)).length) {
				$("input[type='hidden'][name='confirm']", $(this)).val(0);
			}

			return isValidate;
		});

		// Обработка формы с Ajax
		$ajaxForm.ajaxForm({
			dataType: "json",
			beforeSubmit: function (arr, $form) {
				var isValidate = true;
				var radioNames = [];

				$('input[type="text"], input[type="email"], input[type="password"], input[type="checkbox"], select, textarea', $form).each(function() {
					isValidate = inputChecker($(this)) && isValidate;
				});

				$('input[type="radio"]', $form).each(function() {
					var $this = $(this);

					if(!$this.data('necessary')) return true;

					var name = $this.attr('name');

					if($.inArray(name, radioNames) == -1) radioNames.push(name);
				});

				for(var i=0;i<radioNames.length; i++) {
					var isChecked = $('input:checked[name='+radioNames[i]+']', $form).length > 0;

					if(!isChecked) {
						$('input[type="radio"][name="'+radioNames[i]+'"]', $form).eq(0).closest('.sale-interview__field').addClass('is-none');
					}

					isValidate = isChecked && isValidate;
				}

				if($("input[type='hidden'][name='confirm']", $form).length) {
					$("input[type='hidden'][name='confirm']", $form).val(0);
				}

				return isValidate;
			},

			success: function (message) {
				if (message.status === 'success') {
					if ($successMessage.length) {
						$.fancybox($successMessage, {
							afterClose: function(){
								if($successMessage.hasClass('js-reload-page')){
									window.location = window.location;
								}
							},
							wrapCSS: 'modal-theme',
							autoCenter: false,
							padding: 0,
							fitToView: false
						});
					} else {
						if ($nodesMessage.length) {
							$nodesMessage.addClass(message.status).html(message.info);
						} else {
							console.warn(message);
						}
					}
				} else if(message.status === 'error') {
					if ($capthaButton.length) $capthaButton.click()

					if ($nodesMessage.length) {
						$nodesMessage.addClass(message.status).html((message.error === true)? message.info : message.error);
						/** Суда то приходит сообщение в message.error то message.error хранит true а текст сообщения message.info **/
					} else {
						console.warn(message);
					}
				} else {
					if ($capthaButton.length) $capthaButton.click()

					if ($nodesMessage.length) {
						$nodesMessage.addClass(message.status).html(message.info);
					} else {
						console.warn(message);
					}
				}
			},

			error: function () {
				$.fancybox($successMessage, {
					wrapCSS: 'modal-theme',
					autoCenter: false,
					padding: 0,
					fitToView: false
				});
			}
		});

		// Появление полей для смены пароля
		$('.js-pass-link', $context).on('click', function () {
			$context.find('[name=changepassword]').val('1');
			$('.js-pass-change', $context).css({
				display: 'table-row'
			});

			$(this).closest('.sale-interview__field').hide();

			return false;
		});

		$('.js-pass-cancel', $context).on('click', function () {
			$context.find('[name=changepassword]').val('');
			$('.js-pass-change', $context).removeAttr('style');
			$('.js-pass-link', $context)
				.closest('.sale-interview__field')
				.css({
					display: 'table-row'
				});

			return false;
		});
	});
});

// Строка поиска
$(function () {
	$('.search-cities').each(function() {
		var self = $(this);

		self.livequery(function () {
			var $context = $(this);
			var $input = $('.search-cities__input', $context);
			var $resultsHolder = $('.search-cities__results-holder', $context);
			var isNotInteractive = $context.is('.is-not-interactive');
			var $icon = $('.search-cities__icon', $context);
			var $close = $('.search-cities__close', $context);

			function showResultLightbox() {
				var val = $(this).val();

				if(val !== '') {
					$resultsHolder.addClass('is-active');
				} else {
					$resultsHolder.removeClass('is-active');
				}
			}

			$icon.on('click', function(e){
				e.preventDefault();

				$context.removeClass('is-hide-input').addClass('is-visible');
				$input.focus();
			});
			$close.on('click', function(e){
				e.preventDefault();
				$context.addClass('is-hide-input').removeClass('is-visible');
			});

			if(!isNotInteractive){
				$input.on('keyup', showResultLightbox);
			}

			if(self.hasClass("is-b2b")) {
				$(".search-cities__b2b-explain").mouseenter(function(e) {
					e.stopPropagation();

					$(".search-cities__b2b-tooltip", self).addClass("is-visible");
				}).mouseleave(function(e) {
					e.stopPropagation();

					$(".search-cities__b2b-tooltip", self).removeClass("is-visible");
				});
			}
		});
	});
});

/**
 *	Функция замены значения поля submit
 */
function media400px(){
	var $sumbitButton = $(".search-title__submit");
	var $sumbitPlate = $sumbitButton.closest('.search-title');

	if(!$sumbitPlate.hasClass('no-change')) {
		if (window.matchMedia('(max-width: 400px)').matches) {
			$sumbitButton.addClass("fa").val("\uf002");
		} else {
			$sumbitButton.removeClass("fa").val("Найти");
		}
	}
}

// Строка поиска

$(document).ready(function() {
	$('body').on('click','.js-show-search', function(e){
		e.preventDefault();

		$('.header__bottom .search-title')
			.toggleClass('is-hide-input')
			.toggleClass('is-visible');
		$('body').toggleClass('no-scroll');

	});

	$(document).on('click', function(e) {
		if (!$(e.target).closest("#title-search-input").length &&
			!$(e.target).closest(".js-show-search").length) {
			$('.header__bottom .search-title')
				.addClass('is-hide-input')
				.removeClass('is-visible');
			$('body').removeClass('no-scroll');
		}

		e.stopPropagation();
	});
});

$(function () {
	$('.search-title').each(function() {
		var self = $(this);

		self.livequery(function () {
			var $context = $(this);
			var $input = $('.search-title__input', $context);
			var $resultsHolder = $('.search-title__results-holder', $context);
			var isNotInteractive = $context.is('.is-not-interactive');
			var $icon = $('.search-title__icon', $context);
			var $close = $('.search-title__close', $context);
			var $clear = $('.search-title__clearfield', $context);

			function showResultLightbox() {
				var val = $(this).val();

				if(val !== '') {
					$resultsHolder.addClass('is-active');
				} else {
					$resultsHolder.removeClass('is-active');
				}
			}

			$icon.on('click', function(e){
				e.preventDefault();

				$context.removeClass('is-hide-input').addClass('is-visible');
				$('#title-search-input').focus();
			});
			$close.on('click', function(e){
				e.preventDefault();

				$context.addClass('is-hide-input').removeClass('is-visible');
			});
			$clear.on('click', function (e) {
				e.preventDefault();

				$input.val('');
			});

			if(!isNotInteractive){
				$input.on('keyup', showResultLightbox);
			}

			if(self.hasClass("is-b2b")) {
				$(".search-title__b2b-explain").mouseenter(function(e) {
					e.stopPropagation();

					$(".search-title__b2b-tooltip", self).addClass("is-visible");
				}).mouseleave(function(e) {
					e.stopPropagation();

					$(".search-title__b2b-tooltip", self).removeClass("is-visible");
				});
			}
		});
	});

	/**
	 * Убираем слово "найти" в поле submit
	 */
	media400px();
});

$(window).on('resize', function(){
	media400px();
});
$(window).on('orientationchange', function(){
	media400px();
});

// comments
$(function () {
	$('.product-detail-modal').livequery(function () {
		var $context = $(this);

		$context.find('.js-select').selectOffers();
	})
});

$(function () {
	var section = $('.section-modal .section-tiles__title-text');

	section.on('click', function (e) {
		e.preventDefault();

		var $this = $(this),
			dataNum = $this.data('menu-num');

		$('.section-modal').hide();
		$('.section-modal__open-' + dataNum).show();
	});

	$('.header__modal').mouseleave(function () {
		$('.section-modal').hide();
	});
});

// Древовидное меню
$(function () {
	$('.sidebar-menu').livequery(function () {
		var $context = $(this);
		var $firstHolders = $('.sidebar-menu__first-holder', $context);
		var $firstItems = $('.sidebar-menu__first-item', $context);
		var $firstLinks = $('.sidebar-menu__first-link', $context);

		var $secondHolders = $('.sidebar-menu__second-holder', $context);
		var $secondItems = $('.sidebar-menu__second-item', $context);
		var $secondLinks = $('.sidebar-menu__second-link', $context);

		var $thirdHolders = $('.sidebar-menu__third-holder', $context);
		var $thirdItems = $('.sidebar-menu__third-item', $context);
		var $thirdLinks = $('.sidebar-menu__third-link', $context);

		var $fourthHolders = $('.sidebar-menu__fourth-holder', $context);
		var $fourthItems = $('.sidebar-menu__fourth-item', $context);
		var $fourthLinks = $('.sidebar-menu__fourth-link', $context);

		var $allHolders = $firstHolders.add($secondHolders).add($thirdHolders).add($fourthHolders);
		var $allLinks = $firstLinks.add($secondLinks).add($thirdLinks).add($fourthLinks);
		var $allItems = $firstItems.add($secondItems).add($thirdItems).add($fourthItems);

		function initHoldersFlip () {
			$allHolders.each(function () {
				var $this = $(this);

				if($this.hasClass('sidebar-menu__second-holder') && !$this.hasClass('is-opened')) $this.slideUp(0);
			});
		}

		function openSubHolder ($item) {
			var $holder = $item.find('> *').filter($allHolders);

			$item.addClass('is-opened');
			$holder.slideDown(400);
		}

		function closeSubHolder ($item) {
			var $holder = $item.find('> *').filter($allHolders);

			$item.removeClass('is-opened');
			$holder.slideUp(400);
		}

		function linkClickHandler () {
			var $link = $(this);
			var $item = $link.closest($allItems);

			if(!$link.hasClass('is-contain')) return true;

			$item.hasClass('is-opened') ? closeSubHolder($item) : openSubHolder($item);

			return false;
		}

		initHoldersFlip();

		$allLinks.on('click', linkClickHandler);
	});
});

// Умный фильтр
$(function () {
	$('.smart-filter').livequery(function () {
		var $context = $(this);
		var $fieldCaptions = $('.smart-filter__field-header', $context);
		var $contentHolders = $('.smart-filter__field-content', $context);

		function toggleContentHolder() {
			var $field = $(this).closest('.smart-filter__field');
			var $container = $('.smart-filter__field-content', $field);

			if($field.hasClass('is-open')) {
				$container.slideUp(400);
				$field.removeClass('is-open');
			} else {
				$container.slideDown(400);
				$field.addClass('is-open');
			}
		}

		function initContentHolders () {
			var $container = $(this);
			var $field = $(this).closest('.smart-filter__field');

			if($field.hasClass('is-open')) {
				$container.slideDown(0);
			} else {
				$container.slideUp(0);
			}
		}

		$contentHolders.each(initContentHolders);
		$fieldCaptions.on('click', toggleContentHolder);
	});

	$("#filter-toggle").on('click', function (e) {
		e.preventDefault();

		var mobileWidth = 768;
		var $filterBody = $(".product-table__left");

		if($(window).width() < mobileWidth) {
			$filterBody.slideToggle("medium");
		}
	});

});

// Умный фильтр
$(function () {
	$('.smart-filter-dropdown').livequery(function () {
		var $context = $(this);
		var $main = $('.smart-filter-dropdown__main', $context);
		var $fieldCaptions = $('.smart-filter-dropdown__field-header', $context);
		var $activeField = $();

		$('.smart-filter-dropdown__fields', $context)
			.last()
			.find('.smart-filter-dropdown__field-content')
			.addClass('is-drop-left');

		(function init() {
			$(window).on('load resize', mainFixer);

			$context.on('resize.block', function (e) {
				mainFixer ();
				e.stopPropagation();
			});

			$fieldCaptions.on('click', toggleContentHolder);

			initTags();

			$('.smart-filter-dropdown__header-mobile').on('click', function(e){
				e.preventDefault();

				$(this).toggleClass('is-active');

				$main.toggle();
			});
		})();

		function initTags() {
			$('.smart-filter-dropdown__tag').on('click', function() {
				var $valueName = $(this).attr('data-value-name');

				if($valueName){
					// Uncheck checkbox
					$(this).closest('.smart-filter-dropdown__field')
						.find('input[name="'+ $valueName +'"]')
						.prop("checked", false);
					// Unselect select
					$(this).closest('.smart-filter-dropdown__field').find('select').val('');
					$(this).closest('form').submit();
				} else {
					// Range slider
					var slider = $(this).closest('.smart-filter-dropdown__field').find('.filter-scale');
					var sliderMin = slider.attr('data-min');
					var sliderMax = slider.attr('data-max');

					slider.find('.js-min').val(sliderMin);
					slider.find('.js-hidden-min').val(sliderMin);
					slider.find('.js-max').val(sliderMax);
					slider.find('.js-hidden-max').val(sliderMax);

					$(this).closest('form').submit();
				}
			});
		}

		function toggleContentHolder() {
			var $field = $(this).closest('.smart-filter-dropdown__field');

			if($field.hasClass('is-open')) {
				$field.removeClass('is-open');
			} else {
				if($activeField.length === 0) {
					$('body').on('click', function (e) {
						var $target = $(e.target);

						if($target.is($activeField) || $target.closest($activeField).length) return;

						$activeField.removeClass('is-open');
					});
				}
				$activeField.removeClass('is-open');
				$activeField = $field;
				$field.addClass('is-open');
			}
		}

		function mainFixer () {
			$main.css('height', '');

			setTimeout(function () {
				$main.css('height', $main.height());
			}, 20);
		}
	});
});

// Плитка разделов каталога
$(function () {
	$('.section-tiles').each(function () {
		var $context = $(this);
		$context.adaptBlock({
			maxWidth: {
				900: 'is-3cols',
				600: 'is-2cols',
				400: 'is-flat'
			}
		});
	});
});

$.fn.equivalent = function () {
	var $blocks = $(this), //запишем значение jQuery выборки к которой будет применена эта функция
		maxH = $blocks.eq(0).height(); //примем за максимальную высоту - высоту первого блока в выборке

	$blocks.each(function(){
		//делаем сравнение высоты каждого блока с максимальной
		maxH = ( $(this).height() > maxH ) ? $(this).height() : maxH;
	});

	$blocks.height(maxH); //устанавливаем найденное максимальное значение высоты для каждого блока jQuery выборки
}

$(function () {
	/**
	 * Подгоняем размер блоков сравнения
	 * @type {*}
	 */
	var $contentSection = $(".section-tiles__top");

	if($contentSection.length > 0) {
		$contentSection.equivalent();
	}

	/**
	 * Фильтры
	 */
	$(".section-tiles__filter-button").on("click", function () {
		var $button = $(this);

		$button.find(".section-tiles__filter-icon").toggleClass('active');

		var $menu = $button.parent(".section-tiles__filter-group").find(".section-tiles__filter-menu");

		$menu.slideToggle();
	});

});

$(window).on("resize", function () {
	var $contentSection = $(".section-tiles__top");

	if($contentSection.length > 0){
		$contentSection.equivalent();
	}
});

$(window).on("orientationchange", function () {
	var $contentSection = $(".section-tiles__top");

	if($contentSection.length > 0){
		$contentSection.equivalent();
	}
});

// Вкладки, переключение табов
function tabsBlockInit() {
	var $context = $('.tabs-block');
	var $linkHolders = $('.tabs-block__link-holder', $context);
	var $tabs = $('.tabs-block__tab', $context);

	if($tabs.filter('.is-active').length === 0) {
		$linkHolders.filter('.is-active').removeClass('is-active');
		$tabs.eq(0).addClass('is-active');
		$linkHolders.eq(0).addClass('is-active');
	}

	// Set corresponding tabs indexes
	for(var i = 0; i < $linkHolders.length; i++) {
		$linkHolders.eq(i).attr('data-index', i);
	}

	// Copy link-holders before corresponding tabs for mobile version
	for(i = 0; i < $linkHolders.length; i++) {
		$linkHolders
			.eq(i)
			.clone()
			.addClass('is-hide-desktop')
			.insertBefore($tabs.eq(i));
	}

	var $mobileLinkHolders = $('.tabs-block__tabs .tabs-block__link-holder', $context);

	$(document).on('click', '.tabs-block__link-holder', function () {
		var $this = $(this);
		var index = $this.attr('data-index');

		if($this.hasClass('is-active')) return false;

		$linkHolders.add($tabs)
			.filter('.is-active')
			.removeClass('is-active');

		$mobileLinkHolders.filter('.is-active').removeClass('is-active');

		$linkHolders.eq(index).addClass('is-active');
		$mobileLinkHolders.eq(index).addClass('is-active');
		$tabs.eq(index).addClass('is-active');

		return false;
	});
}

$(function () {
	$('.tabs-block').livequery(function () {
		tabsBlockInit();
	});
});

// Вкладки, переключение табов
function tabsSectionInit() {
	var $context = $('.tabs-section');
	var $linkHolders = $('.tabs-section__link-holder', $context);
	var $tabs = $('.tabs-section__tab', $context);

	if($tabs.filter('.is-active').length === 0) {
		$linkHolders.filter('.is-active').removeClass('is-active');
		$tabs.eq(0).addClass('is-active');
		$linkHolders.eq(0).addClass('is-active');
	}

	// Set corresponding tabs indexes
	for(var i = 0; i < $linkHolders.length; i++) {
		$linkHolders.eq(i).attr('data-index', i);
	}

	// Copy link-holders before corresponding tabs for mobile version
	for(i = 0; i < $linkHolders.length; i++) {
		$linkHolders.eq(i).clone().addClass('is-hide-desktop').insertBefore($tabs.eq(i));
	}
	var $mobileLinkHolders = $('.tabs-section__tabs .tabs-section__link-holder', $context);

	$(document).on('click', '.tabs-section__link-holder', function () {
		var $this = $(this);
		var index = $this.attr('data-index');

		if($this.hasClass('is-active')) return false;

		$linkHolders.add($tabs)
			.filter('.is-active')
			.removeClass('is-active');

		$mobileLinkHolders.filter('.is-active').removeClass('is-active');

		$linkHolders.eq(index).addClass('is-active');
		$mobileLinkHolders.eq(index).addClass('is-active');
		$tabs.eq(index).addClass('is-active');

		return false;
	});
}
$(function () {
	$('.tabs-section').livequery(function () {
		tabsSectionInit();
	});
});

// Actions timer
$(function () {
	$('.timer-counter').livequery(function () {
		var $context = $(this);
		var expireDate = new Date('2016/09/17 00:00:00');
		var expireMessage = '<span class="promo-offer__expired">Время вышло!</span>';

		// Конструктор таймера
		function CountdownTimer(element, expireTime, expireMessage) {
			this.elem = element;
			this.expireTime = expireTime;
			this.expireMessage = expireMessage;

			this.countDown = function() {
				var timer='',
					today = new Date(),
					day = Math.floor((this.expireTime-today)/(24*60*60*1000)),
					hour = Math.floor(((this.expireTime-today)%(24*60*60*1000))/(60*60*1000)),
					min = Math.floor(((this.expireTime-today)%(24*60*60*1000))/(60*1000))%60,
					sec = Math.floor(((this.expireTime-today)%(24*60*60*1000))/1000)%60%60,
					me = this;

				if( ( this.expireTime - today ) > 0 ) {
					timer += '<div class="timer-counter__item timer-counter__item--days"><span class="timer-counter__number">'+day+'</span><span class="timer-counter__value">Дней</span></div> ';
					timer += '<div class="timer-counter__item timer-counter__item--hours"><span class="timer-counter__number">'+this.addZero(hour)+'</span><span class="timer-counter__value">Часов</span></div> ';
					timer += '<div class="timer-counter__item timer-counter__item--minuts"><span class="timer-counter__number">'+this.addZero(min)+'</span><span class="timer-counter__value">Минут</span></div> ' +
						'<div class="timer-counter__item timer-counter__item--seconds"><span class="timer-counter__number">'+this.addZero(sec)+'</span><span class="timer-counter__value">Секунд</span></div>';

					this.elem.innerHTML = timer;

					setTimeout( function(){ me.countDown(); }, 1000);
				} else {
					this.elem.innerHTML = this.expireMessage;

					return false;
				}
			};

			this.addZero = function(num){
				return ('0'+num).slice(-2);
			};

			return this;
		}

		// Запуск таймера
		(new CountdownTimer($context.get(0),expireDate,expireMessage)).countDown();
	});
});

// comments
$(function () {
	$('.units-calc').livequery(function () {
		var $context = $(this);
		var $syncedInputs = $('[data-sync-factor]', $context);
		var $qttyItems = $('.units-calc__qtty-item', $context);
		var $price = $('[data-current-price]', $context);
		var $qtty = $('[data-current-qtty]', $context);
		var $total = $('.units-calc__current-total-val', $context);
		var $oldPrice = $('[data-old-price]', $context);
		var $oldTotal = $('.units-calc__old-total-val', $context);

		(function () {
			initSyncInputs();
		})();

		function initSyncInputs () {
			$syncedInputs.on('change', function () {
				var $this = $(this);
				var syncFactor = parseFloat($this.data('sync-factor')) || 1;
				var val = parseFloat($this.val()) * syncFactor;

				$syncedInputs.each(function () {
					var $otherInput = $(this);
					var $counter = $otherInput.closest('.counter-input');
					var $equivalent = $counter.find('.counter-input__equivalent-val');
					var $changeMeasure = $('.counter-input__change-measure', $counter);
					var $changeUnit = $('.counter-input__unit', $counter);
					var syncFactor = $otherInput.data('sync-factor') || 1;
					var convertFactor = $otherInput.data('convert-factor') || 1;
					var isFloor = $otherInput.data('floor');
					var result;
					var equivalent;

					!isFloor ? result = Math.ceil(val/syncFactor) : result = Math.floor(val/syncFactor)
					equivalent = Math.ceil(result * convertFactor);

					$otherInput.val(result);
					$changeUnit.text(plural(result, $changeUnit.data('plural').split(',')));
					$equivalent.text(equivalent);
					$changeMeasure.text(plural(equivalent, $changeMeasure.data('plural').split(',')));
				});

				if(getOldCost()){
					$oldTotal.text(accounting.formatNumber(getOldCost(), 0, ''));
				}

				$total.text(accounting.formatNumber(getCurrentCost(), 0, ' '));
			});

			$('.counter-input__change-measure').on('click', function () {
				var $target = $qttyItems.not('.is-active');

				$qttyItems.removeClass('is-active');
				$target.addClass('is-active');
			});
		}

		function getCurrentCost () {
			var price = parseFloat($price.data('current-price')) || 0;
			var qtty = parseFloat($qtty.val()) || 0;

			return price * qtty;
		}

		function getOldCost () {
			var price = parseFloat($oldPrice.data('old-price')) || 0;
			var qtty = parseFloat($qtty.val()) || 0;

			return price * qtty;
		}
	})
});

$(function () {
	$('.upload-input').each(function () {
		var $context = $(this);
		var $input = $('input[type="file"]', $context);
		var $text = $('.upload-input__text', $context);

		function getName(str) {
			var i;

			if (str.lastIndexOf('\\')) {
				i = str.lastIndexOf('\\') + 1;
			} else {
				i = str.lastIndexOf('/') + 1;
			}

			return str.slice(i);
		}

		$input.on('change', function () {
			$text.text(getName($(this).val()));
		});
	});
});

// comments
$(function () {
	$('.vacancy-accordion').livequery(function () {
		var $context = $(this);
		var $items = $('.vacancy-accordion__item', $context);

		$items.each(function () {
			var $item = $(this);
			var $title = $('.vacancy-accordion__title', $item);
			var $detail = $('.vacancy-accordion__detail', $item);

			$title.on('click', function () {
				$detail.slideToggle();
			});

		});
	})
});

// Плитка видео
$(function () {
	$('.video-tiles').livequery(function () {
		var $context = $(this);
		var $playElems = $('.video-tiles__play-btn', $context);

		$playElems.fancybox({
			type: 'iframe',
			openEffect  : 'none',
			closeEffect : 'none',
			wrapCSS: 'is-video',
			padding: 0,
			helpers : {
				media : {}
			}
		});
	})
});

// Выбор рейтинга
$(function () {
	$('.vote-stars').livequery(function () {
		var $context = $(this);
		var $items = $('.vote-stars__item', $context);
		var $input = $('.vote-stars__input input', $context);
		var isInit = false;
		var isUnchanged = $context.hasClass('is-unchanged');

		function changeValueByClick () {
			var $currItem = $(this);
			var index = $items.index($currItem);
			var value = 5 - index;

			$input.val(value);

			$items.removeClass('is-active');
			$currItem.find('~ .vote-stars__item').addClass('is-active');
			$currItem.addClass('is-active');

			if(isInit){
				$(document).trigger('vote_stars_set_value', [value]);
			}
		}

		function changeValueByInput () {
			var value = parseFloat($input.val());

			changeValueByClick.apply($items.eq(5 - value));
		}

		changeValueByInput();

		isInit = true;

		if(!isUnchanged) {
			$items.on('click', changeValueByClick);
			$input.on('change.block', changeValueByInput);
		}
	});
});

// Блок с картой
$(function () {
	$('.ymap').livequery(function () {
		var $context = $(this);
		var $mapHolder = $('.ymap__map', $context);
		var $marks = $('.ymap__point', $context);
		var map;
		var collection ;

		(function init() {
			// ymapAPIready == true если был загужен api карт, иначе ждем события загрузки.
			// определяется в script.js
			if(!ymapAPIready) {
				$(document).on('ymapAPIready', init);

				return;
			}

			createMap();
			defaultPlacemarking($marks);
			initBlockAPI();

			$context.triggerHandler('mapReady.block'); // without bubble up
		})();

		function createMap () {
			map = new ymaps.Map($mapHolder.get(0), {
				center: $mapHolder.data('center').split(','),
				zoom: ($mapHolder.data('zoom'))? $mapHolder.data('zoom'): 6,
				controls: ['default']
			});

			map.behaviors.disable('scrollZoom');
			collection = new ymaps.GeoObjectCollection();
		}

		function defaultPlacemarking($marks) {
			$marks.each(function () {
				var $this = $(this);

				setPlacemark({
					address: $('.ymap__point-address', $this).html(),
					phone: $('.ymap__point-phone', $this).html(),
					hours: $('.ymap__point-hours', $this).html(),
					type: $('.ymap__point-type', $this).html(),
					coords: $this.data('coords').split(','),
					details: ($this.data('detail') === undefined),
					link: $this.data('link') || '/',
					markTemplate: $this.data('mark-template') || 'default',
					balloonTemplate: $this.data('balloon-template') || 'default',
					layoutTemplate: $this.data('layout-template') || 'default'
				});
			});

			map.geoObjects.add(collection);

			if(!$mapHolder.data('center') || !$mapHolder.data('zoom')) {
				// Устанавливаем карте центр и масштаб так, чтобы охватить коллекцию целиком.
				map.setBounds(collection.getBounds());
			}
		}

		function setPlacemark(mark) {
			var placemark;
			var iconTemplate = getMarkTemplate(mark.markTemplate);

			placemark = new ymaps.Placemark(
				[parseFloat(mark.coords[0]), parseFloat(mark.coords[1])],
				$.extend({
					address: mark.address,
					phone: mark.phone,
					hours: mark.hours,
					link: mark.link,
					iconContent: mark.type,
					details: mark.details
				}, mark.data),
				{
					// Изображение метки
					iconLayout: iconTemplate.template,
					iconShape: iconTemplate.shape,
					iconOffset: iconTemplate.offset,
					hideIconOnBalloonOpen: true,

					// Свойства балуна
					balloonShadow: false,
					balloonContentLayout: getBalloonTemplate(mark.balloonTemplate),
					balloonLayout: getLayoutTemplate(mark.layoutTemplate, mark.buildCallback),
					balloonPanelMaxMapArea: 0
				}
			);
			collection.add(placemark);
		}

		function resetPlacemarks() {
			for(var i = 0; i < placemarks.length; i++) {
				map.geoObjects.remove(placemarks[i]);
			}
		}

		function getBalloonTemplate (name) {
			// Шаблонизация https://tech.yandex.ru/maps/doc/jsapi/2.1/ref/reference/Template-docpage
			var template;
			name = name || 'default';

			switch (name) {
				default:
					template =
						'<div class="ymap__balloon-inner">' +
						'<div class="ymap__balloon-header">' +
						'<div class="ymap__balloon-address">{{properties.address|raw}}</div>' +
						'</div>' +
						'<div class="ymap__balloon-content">' +
						'<div class="ymap__balloon-phone">{{properties.phone|raw}}</div>' +
						'<div class="ymap__balloon-hours">{{properties.hours|raw}}</div>' +
						'{% if !properties.details %}' +
						'<a href="{{properties.link|raw}}" class="ymap__balloon-details button js-shop-info">Подробнее</a>' +
						'{% endif %}' +
						'</div>' +
						'</div>'
			}

			return ymaps.templateLayoutFactory.createClass(template);
		}

		function getMarkTemplate (name) {
			var template;

			name = name || 'default';

			switch (name) {
				case 'small':
					template = {
							template: ymaps.templateLayoutFactory.createClass(
								'<div class="ymap__placemark-small"></div>'
							),
							shape: {
									type: 'Rectangle',
									coordinates: [[0, 20], [20, 0]]
								},
							offset: [-10, -20]
						}

					break;
				case 'green':
					template = {
							template: ymaps.templateLayoutFactory.createClass(
								'<div class="ymap__placemark-small is-green"></div>'
							),
							shape: {
									type: 'Rectangle',
									coordinates: [[0, 20], [20, 0]]
								},
							offset: [-10, -20]
					}

					break;
				case 'yellow':
					template = {
							template: ymaps.templateLayoutFactory.createClass(
								'<div class="ymap__placemark-small is-yellow"></div>'
							),
							shape: {
									type: 'Rectangle',
									coordinates: [[0, 20], [20, 0]]
								},
							offset: [-10, -20]
					}

					break;
				default:
					template = {
							template: ymaps.templateLayoutFactory.createClass(
								'<div class="ymap__placemark">' +
								'<div class="ymap__placemark-round"></div>' +
								'<div class="ymap__placemark-text">' +
								'{{ properties.iconContent }}' +
								'</div>' +
								'</div>'
							),
							shape: {
									type: 'Rectangle',
									coordinates: [[0, -46], [178, 0]]
								},
							offset: [0, 0]
					}
			}

			return template
		}

		function getLayoutTemplate (name, buildCallback) {
			var template;

			name = name || 'default';

			switch (name) {
				default:
					template =
						'<div class="ymap__balloon-outer">' +
						'<span class="ymap__balloon-close"></span>'+
						'<div class="ymap__balloon-outer-holder">' +
						'$[[options.contentLayout]]' +
						'</div>' +
						'</div>';

					break;
			}

			return ymaps.templateLayoutFactory.createClass(template, {
					build: function () {
						this.constructor.superclass.build.call(this);
						this._$element = $('.ymap__balloon-outer', this.getParentElement());
						this._$element.find('.ymap__balloon-close').on('click', $.proxy(this.closeOnClick, this));

						if(buildCallback !== undefined) buildCallback.apply(this);

						this.applyElementOffset();
					},

					clear: function () {
						$('body').off('click', this.closeOnBlur);
						this.constructor.superclass.clear.call(this);
					},

					onSublayoutSizeChange: function () {
						MyBalloonLayout.superclass.onSublayoutSizeChange.apply(this, arguments);

						if(!this._isElement(this._$element)) return;

						this.applyElementOffset();
						this.events.fire('shapechange');
					},

					applyElementOffset: function () {
						this._$element.css({
							left: -(this._$element[0].offsetWidth / 2),
							top: -(this._$element[0].offsetHeight)
						});
					},

					closeOnBlur: function (e) {
						var $target = $(e.target);

						if($target.is(this._$element) || $target.closest(this._$element).length) {
							return true;
						} else {
							this.events.fire('userclose');
						}
					},

					closeOnClick: function () {
						this.events.fire('userclose');
					},

					getShape: function () {
						if(!this._isElement(this._$element)) return MyBalloonLayout.superclass.getShape.call(this);

						var position = this._$element.position();

						return new ymaps.shape.Rectangle(
							new ymaps.geometry.pixel.Rectangle([
								[position.left, position.top],
								[
									position.left + this._$element[0].offsetWidth,
									position.top + this._$element[0].offsetHeight
								]
							])
						);
					},

					onCloseClick: function (e) {
						e.preventDefault();
						this.events.fire('userclose');
					},

					_isElement: function (element) {
						return element && element[0];
					}
				}
			);
		}

		function initBlockAPI() {
			$context.on('resize.block', function (event) {
				setTimeout(function () {
					if(map) {
						map.container.fitToViewport(true);
					}
				}, 200);

				event.stopPropagation();
			});

			$context.on('setPlacemark.block', function (event, mark) {
				setPlacemark(mark);
				event.stopPropagation();
			});

			$context.on('resetPlacemarks.block', function (event) {
				resetPlacemarks();
				event.stopPropagation();
			});

			$context.on('setCenter.block', function (event, center, zoom) {
				map.setCenter(center, zoom, {
					duration: 600
				});
				event.stopPropagation();
			});

			$context.on('destroy.block', function (event) {
				if(map) map.destroy();
				event.stopPropagation();
			});
		}
	});
});

$(function () {
	$(document).trigger('blocksReady');
})

$(document).ready(function() {
	// Форма подписки
	$(document).on('click', '.js-show-mail-form', function() {
		$('.mail-modal_main').addClass('active');
	});

	$(document).on('click', '.mail-modal__close', function() {
		$(this).parents('.mail-modal').removeClass('active');
	});

	$(document).on('click', function(event) {
		if(($(event.target).closest(".mail-modal__block").length)||($(event.target).closest(".js-show-mail-form").length))
			return;
		$(".mail-modal").removeClass('active');

		event.stopPropagation();
	});

	$(".sub_form").submit(function() {
		var name = $('input[name="SUB_NAME"]').val();
		var email = $('input[name="SUB_EMAIL"]').val();
		var phone = $('input[name="SUB_PHONE"]').val();

		if($('input[name="SUB_AGREE"]').is(':checked')) {
			$(".mail-modal__input_agree").css("border","0");

			$.post('/ajax/subscribe.php', {NAME: name, EMAIL: email, PHONE: phone}).done(function(data) {
				if(data === "ok") {
					$('.mail-modal_main').removeClass('active');
					$('.mail-modal_success').addClass('active');

					setCookie('mailFormCookie', 5, {expires: 60*60*24*365, path:"/"})

					mindbox("async", {
						operation: "customerSubscribedInPopup",
						data: {
							customer: {
								firstName: name,
								mobilePhone: phone,
								email: email,
								subscriptions: [{
										pointOfContact: "Email",
										topic: "homeComfort"
								}]
							}
						},
					});
				} else {
					$(".sub_error").html("Ошибка: " + data);
				}
			});
		} else {
			$(".mail-modal__input_agree").css("border","1px dotted red");
		}

		return false;
	});
	// END: Форма подписки

	// запуск через 40-40-40 сек , 7 дней
	setTimeout(function() {
		checkMailFormCookie();
	}, 40000);

	setTimeout(function() {
		checkMailFormCookie();
	}, 80000);

	setTimeout(function() {
		checkMailFormCookie();
	}, 120000);
});

// запуск через 40-40-40 сек , 7 дней
function checkMailFormCookie() {
	if( window.location.href.indexOf("/cart/order/") > -1)
		return false;

	var mailFormCookie = getCookie('mailFormCookie');

	switch (mailFormCookie) {
		case undefined:
			setCookie('mailFormCookie', 2, {expires: 60*60*24*7, path:"/"});
			showMailForm(2);
			break;
		case "2":
			setCookie('mailFormCookie', 3, {expires: 60*60*24*7, path:"/"});
			break;
		case "3":
			setCookie('mailFormCookie', 4, {expires: 60*60*24*7, path:"/"});
			break;
		case "4":
			break;
		case "5":
			break;
		default:
			break;
	}
}

function showMailForm(time) {
	setTimeout(function() {
		$('.mail-modal_main').addClass('active');
	}, time * 1000);
}

function setCookie(name, value, options) {
	options = options || {};

	var expires = options.expires;

	if (typeof expires == "number" && expires) {
		var d = new Date();

		d.setTime(d.getTime() + expires * 1000);
		expires = options.expires = d;
	}

	if (expires && expires.toUTCString) {
		options.expires = expires.toUTCString();
	}

	value = encodeURIComponent(value);

	var updatedCookie = name + "=" + value;

	for (var propName in options) {
		updatedCookie += "; " + propName;

		var propValue = options[propName];

		if (propValue !== true) {
			updatedCookie += "=" + propValue;
		}
	}

	document.cookie = updatedCookie;
}

function getCookie(name) {
	var matches = document.cookie.match(new RegExp(
		"(?:^|; )" + name.replace(/([\.$?*|{}\(\)\[\]\\\/\+^])/g, '\\$1') + "=([^;]*)"
	));

	return matches ? decodeURIComponent(matches[1]) : undefined;
}

function deleteCookie(name) {
	setCookie(name, "", {
		expires: -1
	});
}

$(document).ready(function(){
	$('.js-model-btn .btn-ul').on('click', function() {
		$(this).next(".model-list-items").toggleClass("active");
	});
})