Your IP : 18.219.217.5


Current Path : /home/bitrix/ext_www/home-comfort.in.ua/local/templates/.default/js/
Upload File :
Current File : /home/bitrix/ext_www/home-comfort.in.ua/local/templates/.default/js/blocks.js

// comments
$(function () {
    $('.accordion-steps').livequery(function () {
        var $context = $(this);
    });
});

$(window).load(function(){
    $('.accordion-steps .form-standart').each(function(){
        // Не нужна нам эта штука тут
        $(this).find('.form-standart__node').remove();
    });
});
// Сетка преимуществ
	$(function () {
		$('.advantages-grid').livequery(function () {
			var $context = $(this);

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

// comments
	$(function () {
		// code here...
	});

$(function () {
	/*
	$('#auth.auth-block form').submit(function() {
		var form = $(this);
		var msg   = form.serialize();
		$.ajax({
			type: 'POST',
			url: window.location.href,
			data: msg,
			dataType: "json",
			success: function(data) {
				if(data.MESSAGE == true) {
					location.reload();
				} else {
					form.find(".error-text").text(data.MESSAGE);
				}
			},
			error:  function(xhr, str){
				form.find(".form-standart__fields-list").prepend('Возникла ошибка: ' + xhr.responseCode);
			}
		});

		setTimeout(function(){form.find(".error-text").text("")}, 3000);
		return false;
	});
	*/
	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 () {
		$('.block-name').livequery(function () {
			var $context = $(this);

			// code here...
		})
	});

// comments
	$(function () {
		// code here...
	});

// 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',

					beforeShow: function () {
						$('html').addClass('fancybox-margin fancybox-lock');
					}
				}
			);
		}

		e.preventDefault();
	});
});
// Список буклетов
	$(function () {
	});

// comments
	$(function () {
		// code here...
	});

// Список сертификатов
	$(function () {
		$('.brands-tiles').livequery(function () {
			var $context = $(this);
		});
	});

$(function() {

});
// comments
	$(function () {
		$('.cart-items').livequery(function () {
			var $context = $(this);
			
			$(document).on('click', '.cart-items__sku-selected-link', function(e){
				e.preventDefault();
				$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');
			});
		});
	});

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

			// code here...
		})
	});

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

			// code here...
		})
	});

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

			// code here...
		})
	});

// Древовидное меню
	$(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');
				console.log($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();
					console.log($contextHeight);
					$(".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();


    $('.catalog-compare-button').livequery(function () {
        var $context = $(this);


    })
});

// comments
	$(function () {
		$('.catalog-favor-button').livequery(function () {
			var $context = $(this);

			// code here...
		})
	});

// Каталог товаров плиткой
	$(function () {
		$('.catalog-items').livequery(function () {
		//	console.log('.catalog-items');

			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] === undefined) {
							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');

				isResizeCatalogItem = false;
			}

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


				if($plates.length == 0) return;
				$('.catalog-plate', $context).css('height', '');



				if($context.hasClass('is-slide-to-mobile')){



					if($(window).width()< widthPhone && isSlic && $cols.length){
					//	console.log('slick is-slide-to-mobile');
						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;
						// console.info('slick');
						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){
							//	console.log('unslick');
							mobslik.slick('unslick');
						}
						$plates.css("height", "auto");
						//setTimeout( ResizeCatalogItem , 400);


					}
				}

			}

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

			/* $context.adaptBlock({
				maxWidth: {
					1040: 'is-3cols',
					790: 'is-2cols',
					510: 'is-1cols'
				},
				minWidth: {
				}
			}); */
		});
	});

// Плитка товара в каталоге
$(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);
	});
});

// comments
	$(function () {
		// code here...
	});

// Плитка товара в каталоге
	$(function () {
		$('.catalog-plate').each(function () {
			var $context = $(this);
			var $favor = $('.catalog-plate__favor', $context);
			var $preview = $('.catalog-plate__preview', $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 (current, previous) {
							var $content = $(current.content);

							// $content.addClass('_ajax-append');
							// current.content = $('<div>').append($content.clone()).html();
							$.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);
		});
	});

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

			// code here...
		})
	});

//.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 () {
		// code here...
	});

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

// Список сертификатов
	$(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);
		});
	});

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

// comments
	$(function () {
		// code here...
	});

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

			// code here...
		})
	});


// comments
	$(function () {
		// code here...
	});

$(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.click(
                function(e){
                    e.preventDefault();
                    e.stopPropagation();
                    var $th = $(this);
                    var html_to_print ='<img src="'+$th.attr('href')+'"/>';

                    var doc = $('#print_frame')[0].contentDocument || $('#print_frame')[0].contentWindow.document;
                    var win = $('#print_frame')[0].contentWindow || $('#print_frame')[0];
                    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'
				}
			});
		});
	});

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

			// code here...
		})
	});

// Вкладки, переключение табов
$(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 $links = $('.contacts-tabs__link', $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);
		}
	});	

/*
	$('.counter-input').each(function () {
		var $context = $(this);
		var $up = $('.counter-input__up', $context);
		var $down = $('.counter-input__down', $context);
		var $input = $('.counter-input__input', $context);

		(function init() {
			initCounter();
		})();

		function initCounter () {
			$up.add($down).on('click', function () {
				var $this = $(this);
				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;
			});

			$input.on('change', function () {
				var $this = $(this);
				var val = parseFloat($this.val());
				if(isNaN(val)) {
					$this.val(1);
				} else {
					$this.val(val);
				}
			});
		}
	});
*/

});
// comments
	$(function () {
		// code here...
	});

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

			// code here...
		})
	});

// 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(index, domElement) {
        var self = $(this),
            title = $('.js-faq-simple__title', $(this)),
            desc = $('.js-faq-simple__desc', $(this));

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

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

        });
    });
});
// Блок преимуществ
$(function () {
	$('.favorites-title').each(function () {
		var $context = $(this);

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

// comments
	$(function () {
		$(document).on('click', '.feedback-wall__readmore', function(e){
			$parent = $(this).parents('.feedback-wall__item');
			$parent.addClass('is-expanded');
			e.preventDefault();
		});
		$(document).on('click', '.feedback-wall__readless', function(e){
			$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 $fields = $('.filter-hor__field', $context);
			var $fieldCaptions = $('.filter-hor__field-header', $context);
			var $contentHolders = $('.filter-hor__field-content', $context);
			var $fieldResets = $('.filter-hor__field-reset', $context);
			var $fullReset = $('.filter-hor__full-reset', $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
					}
					console.log(delItemId);
					$curValue.remove();
					if($lastValue) {
						$curField.remove();
					}

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

					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;
					}

					$valuesCount = $(".filter-hor__selected-value", $curField).length;
					$form.submit();
				});
			}
			
			function putFieldsListHeight() {
				$fieldsList.each(function () {
					$thisList = $(this);
					$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(index) {
					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 () {
		$('.filter-scale').livequery(function () {
			var $context = $(this);
			var $scale = $('.filter-scale__scale', $context);
			var $minInput = $('.filter-scale__input.js-min', $context);
			var $minHiddenInput = $('.js-hidden-min', $context);
			var $maxInput = $('.filter-scale__input.js-max', $context);
			var $maxHiddenInput = $('.js-hidden-max', $context);
			var $maxText = $('.filter-scale__max-val', $context);
			var $minText = $('.filter-scale__min-val', $context);

			var scaleMin = parseFloat($context.data('min')) || 0;
			var scaleMax = parseFloat($context.data('max')) || 100;
			var scaleStep = parseFloat($context.data('step')) || 0.01;

			var currMin = scaleMin;
			var currMax = scaleMax;

			var log = ($context.data('log') == '1');
			var realfield_min = $('input[name="' + $minInput.data('name') + '"]');
			var realfield_max = $('input[name="' + $maxInput.data('name') + '"]');
			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
			if(parseInt(scaleMin) == 0 && log) scaleMin = 1; // Logaryphmic slider can't handle values < 1
			if(parseInt(scaleMax) == 0) return;

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

			if(log){
				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])];
			}

			// console.log("range slider", options);

			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){
				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 parts = x.toString().split(".");
				var digits = significant_digits - parts[0].length;
				if(digits < 0){
					digits = 0;
				}

				x = x.toFixed(digits);
				var parts = x.toString().split(".");

				var 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);
				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 = Math.round(x * convert_factor);

				var digits = x.toString().length;
				var divider = 1;
				if(digits > significant_digits){
					divider = Math.pow(10, digits - significant_digits);
				}

				if(significant_digits > 0) x = x - (x % divider);
				return numberWithSpaces(x);
			}

			function updateRealFields(){
				realfield_min.val($minInput.val().toString().replace(/[^\d.]/g, '') / convert_factor);
				realfield_max.val($maxInput.val().toString().replace(/[^\d.]/g, '') / convert_factor);
				realfield_min.change();
				realfield_max.change();
			}

			function updateFields(values){
				if(log){
					var min = Math.exp(values[0]);
					var max = Math.exp(values[1]);
	
					min = bound(min, scaleMin, scaleMax);
					max = bound(max, scaleMin, scaleMax);
					if(min <= scaleMin){
						$minInput.val(format(min, true));
						$minHiddenInput.val(format(min, true).replace(/\s+/g, '')).trigger('change');
					} else {
						$minInput.val(format(min));
						$minHiddenInput.val(format(min).replace(/\s+/g, '')).trigger('change');
					}
					if(max >= scaleMax){
						$maxInput.val(format(max, true));
						$maxHiddenInput.val(format(max, true).replace(/\s+/g, '')).trigger('change');
					} else {
						$maxInput.val(format(max));
						$maxHiddenInput.val(format(max).replace(/\s+/g, '')).trigger('change');
					}

				} else {

					var min = bound(values[0], options.min, options.max);
					var max = bound(values[1], options.min, options.max);
					$minInput.val(format(min));
					$minHiddenInput.val(min).trigger('change');
					$maxInput.val(format(max));
					$maxHiddenInput.val(max).trigger('change');
				}
				updateRealFields();
			}

			function updateSlider(onchange){
				var min = $minInput.val().toString().replace(/[^\d.]/g, '') / convert_factor;
				var max = $maxInput.val().toString().replace(/[^\d.]/g, '') / convert_factor;

				min = parseFloat(min);
				max = parseFloat(max);

				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);

				}

				$minInput.val(numberWithSpaces(min * convert_factor));
				$minHiddenInput.val(min).trigger('change');
				$maxInput.val(numberWithSpaces(max * convert_factor));
				$maxHiddenInput.val(max).trigger('change');

				updateRealFields();

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

			$scale.slider(options);

			updateFields(options.values);

			$minInput.add($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(e){
					updateSlider(true);
				});

		});
	});


// Обработка стандартной формы
	$(function () {
		// Функция проверки соответствия значения инпута регулярке
			var checkVal = function($input, regExp) {
				var	result = regExp.test($input.val());
				console.log(result);
				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') == undefined) 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;
        		break;
	    	}

	    	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;
					var result = 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') == undefined) 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, options) {
						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') == undefined) 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) {
						//  console.warn('success', message);

						// console.warn('$successMessage.length', $successMessage.length);
						$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 (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 () {
		$('.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(e){
			if(isMenuOpened){
				$('.header-mobile__cart-button, .header-mobile__cart-holder').addClass('is-active');
			}
		});
		$(document).on('fancybox-before-show', function(){
			closeActiveMenus();
		});
	});
});
// comments
	$(function () {
		$('.block-name').livequery(function () {
			var $context = $(this);

			// code here...
		})
	});

// comments
	$(function () {
		$('.loader-link').livequery(function () {
			var $context = $(this);
			$context.children('a').on('click', function() {
				$('body').addClass('loading');
			});
		})
	});

// logo-slider block
$(function () {
	// .logo-slider js
	$('.logo-slider').livequery(function () {

		var $context = $(this);
		var $slider = $('.logo-slider__slider', $context);
		var slidesToShow = $slider.attr('data-slides') || 7;
		var slidesToShowXs = $slider.attr('data-slides-xs') || slidesToShow;
		var slidesToShowXxs = $slider.attr('data-slides-xxs') || slidesToShowXs;

		function getSlidesToShow(){
			var ww = $(window).width();
			if(ww < 480) return slidesToShowXxs;
			if(ww < 768) return slidesToShowXs;
			return slidesToShow;
		}

		function initSlider(){
			var slidesToShow = getSlidesToShow();
			var slidesToScroll = $context.attr('data-slides-to-scroll') || slidesToShow;
			var slide_count = $slider.find('.logo-slider__slide').length;

			if (slide_count > slidesToShow) {
				$context.removeClass("noslider");
				$slider.slick({
					dots: false,
					infinite: true,
					slidesToShow: slidesToShow,
					slidesToScroll: slidesToScroll,
					prevArrow: "<span class='logo-slider__arrows logo-slider__arrow-left'></span>",
					nextArrow: "<span class='logo-slider__arrows logo-slider__arrow-right'></span>"
				});
			} else {
				$context.addClass("noslider");
			}
		}
		initSlider();

		$(window).on('resize orientationchange', function(e){
			$slider.slick('unslick');
			initSlider();
		});
	});
});
// comments
	$(function () {
		$('.menu-aside').livequery(function () {
			var $context = $(this);
			var $menuHolders = $('.menu-aside__first-holder, .menu-aside__second-holder, .menu-aside__third-holder', $context);
			var $menuLevels = $('.menu-aside__first-level, .menu-aside__second-level, .menu-aside__third-level', $context);
			var $menuItems = $('.menu-aside__first-item, .menu-aside__second-item, .menu-aside__third-item', $context);
			var $menuItemsContain = $menuItems.filter('.is-contain');
			var $menuLinks = $('.menu-aside__first-link, .menu-aside__second-link, .menu-aside__third-link', $context);
			var isMobile = $context.is('.is-mobile');
			var $chevrons;

			// Инициализация блока
			(function init(){
				$context.removeClass('no-js');
				initShowMore();
				initMenuOptimizer();
				if(isMobile) {
					addRealChevrons();
				}
			})();

			function addRealChevrons(){
				$menuItemsContain.each(function(){
					$(this).append('<span class="menu-aside__chevron"></span>');
				});
				$chevrons = $('.menu-aside__chevron', $context);
				$chevrons.on('click', function(e){
					$(this).closest('.is-contain').toggleClass('is-opened').siblings('.is-contain').removeClass('is-opened');
					$level = $(this).parents('.is-opened').length;
					$context.removeClass('is-level0 is-level1 is-level2').addClass('is-level' + $level);
				});
			}

			// Раскрытие списка доп.пунктов
			function initShowMore() {
				var $moreLink = $('.menu-aside__first-link.js-show-more', $context);
				var $moreHolder = $('.menu-aside__additional-holder', $context);

				$moreLink.on('click', function () {
					$moreHolder.addClass('is-opened');
					$moreLink.addClass('is-hide');
					return false;
				});
			}

			// Оптимизатор менюшек
			function initMenuOptimizer() {
				var stateChangeTimeout, timeoutLength;
				var isTouch = $('html').hasClass('touch');
				isTouch ? timeoutLength = 0 : timeoutLength = 300;

				function changeState() {
					if(stateChangeTimeout !== undefined) window.clearTimeout(stateChangeTimeout);
					stateChangeTimeout = window.setTimeout(function () {
						$menuItems.removeClass('is-opened').filter(function() { return $(this).is(":hover"); }).addClass('is-opened');
					}, timeoutLength);
				}

				/* function touchHandler () {
					var $link = $(this);
					var $item = $link.closest($menuItems);
					if($item.hasClass('is-touched') || $item.find($menuItems).length == 0) return true;

					$menuItems
						.removeClass('is-touched')
						.filter(function() { return $(this).is(":hover"); })
						.addClass('is-touched');

					return false;
				} */
				// if(isTouch) $menuLinks.on('click', touchHandler);

				if(!isTouch) $menuItems.on('mouseenter mouseleave', changeState);
				
			}

		});
	});

// Древовидное меню
	$(function () {
		// Инициализация только для состояния И
		$('.menu-bottom').livequery(function () {

		});
	});

// 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;
            });
        }
    });
});
// Древовидное меню
	$(function () {
		// Инициализация только для состояния И
		$('.menu-top').livequery(function () {
			var $context = $(this);
			var $firstHolders = $('.menu-top__first-holder', $context);
			var $firstItems = $('.menu-top__first-item', $context);
			var $firstLinks = $('.menu-top__first-link', $context);

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

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

			var $fourthHolders = $('.menu-top__fourth-holder', $context);
			var $fourthItems = $('.menu-top__fourth-item', $context);
			var $fourthLinks = $('.menu-top__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);

			var $moreLinks = $('.menu-top__more-link', $context);

			function initMoreLinks () {
				$moreLinks.each(function () {
					var $link = $(this);
					var $list = $link.closest('.menu-top__third-level');
					var $items = $list.find('.menu-top__third-item');
					var $less = $list.find('.menu-top__less-link');
					var qtty = $link.data('hide-qtty');

					$less.on('click', function () {
						$items.slice($items.length - (qtty + 1), $items.length - 1).addClass('is-hide');
						$less.removeClass('is-active');
						$link.addClass('is-active');
					});

					$link.on('click', function () {
						$items.removeClass('is-hide');
						$less.addClass('is-active');
						$link.removeClass('is-active');
					});
				});
			}

			initMoreLinks();
		});
	});

// Древовидное меню
	$(function () {
		// Инициализация только для варианта с разворачивающимися пунктами
		$('.menu-tree.is-expandable').livequery(function () {
			var $context = $(this);
            var id = $context.attr('id');
			var $firstHolders = $('.menu-tree__first-holder', $context);
			var $firstItems = $('.menu-tree__first-item', $context);
			var $firstLinks = $('.menu-tree__first-link', $context);

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

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

			var $fourthHolders = $('.menu-tree__fourth-holder', $context);
			var $fourthItems = $('.menu-tree__fourth-item', $context);
			var $fourthLinks = $('.menu-tree__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.parent().hasClass('is-opened')) {
						$this.slideUp(0);
						//return ;
					}
				});
			}

			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 (e) {
				var $item = $(this);

				// click on the actual link, not on pseudo-arrow
				if(e.target != this) return true;

				if(!$item.hasClass('is-contain')) return false;

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

			function addShowAllLink(id) {
				if(typeof window.obShowLevelParams !== "undefined") {
					var params = window.obShowLevelParams[id];
					for(var level in params) {
						$('.menu-tree__'+level+'-item:nth-child(n+'+(params[level]+1)+')', $context).css("display","none");
						$('.menu-tree__'+level+'-level', $context).each(function () {
							if($(this).find('.menu-tree__'+level+'-item').length > params[level]) {
								$(this).find('.menu-tree__'+level+'-item:nth-child(n+'+(params[level])+'):not(".is-active")').css("display", "none");
								$(this).append("<li class='menu-tree__show-all-item'><a class='menu-tree__show-all-link' data-level='"+level+"'>Показать все</a></li>");
							}
						});
					}

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

						if($(this).hasClass("is-active")) {
							$(this).removeClass("is-active");
							$(this).text("Показать все");
							$('.menu-tree__'+level+'-item:nth-child(n+'+(params[level])+'):not(".is-active")', listItems).slideUp();
						} else {
							$(this).addClass("is-active");
							$(this).text("Скрыть лишние");
							$('.menu-tree__'+level+'-item:nth-child(n+'+(params[level])+')', listItems).slideDown(400);
						}
					});
				}
			}

			addShowAllLink(id);
			initHoldersFlip();
			$allItems.on('click', linkClickHandler);
		});
	});
// Календарь
	$(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, calendar) {
				$input.val(date);
			}

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

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

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

// comments
	$(function () {
		// code here...
	});

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

			// code here...
		})
	});

// comments
	$(function () {
		// code here...
	});

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

// comments
	$(function () {
		// code here...
	});

// comments
	$(function () {
		// code here...
	});

// comments
	$(function () {
		// code here...
	});

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

			// code here...
		})
	});

// comments
	$(function () {
		// code here...
	});

// Слайдер фотографий
	$(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);

			var mainSlider;
			var thumbSlider;

			$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
						var rendered = Mustache.render(template, {title: this.title, description: desc});
						this.title = rendered;
					}
				});
			}
		});
	});

// Slider settings
$(function () {
	$('.photogallery-sections-slider').livequery(function () {
		var $context = $(this);
		var $slider = $('.photogallery-sections-slider__slider', $context);
		var $sliderMeta = $('.photogallery-sections-slider__meta', $context);
		var $sliderDots = $('.photogallery-sections-slider__pagination', $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 $mainImages = $('.photogallery-with-thumbs__image', $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();
				/*
				mainSlider.slick('checkResponsive');
				mainSlider.slick('setPosition');
				thumbSlider.slick('checkResponsive');
				thumbSlider.slick('setPosition'); */
				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 () {
		$('.photogallery-sections').each(function () {
			var $context = $(this);

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

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

			// code here...
		})
	});

$(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 productId = $context.data('product-id');
			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');
						var propValueEnum = $(this).find('a.is-active').data('xml-id');
						selectedVariants[propID] = propValueEnum;
					});
					// Запускаем проверку на доступность свойств
					$(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');
					console.log(resultImg);
					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 (current, previous) {

							$.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 () {
				//  console.log( 'catalogPlate.changeSelect');
				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(); // формируем массив дла нахождения торгового предложения
					}
					//console.log(checkProp);
					SerchOfers(checkProp, $thsel);
				}

			};

			/**
			 * Ищем подходящее товарное предложение
			 * @param checkProp Обьект вида {COLOR_REF: "red", SIZES_CLOTHES: "XS", SIZES_SHOES: "36"} для поиска соответствующего ТП
			 * @param $thsel Текущий измененный инпут
			 * @constructor
			 */
			var SerchOfers = function (checkProp, $thsel) {
				//   console.log('catalogPlate.SerchOfers');

				/** Ищем ТП полностью удавлитворяющее по всем полям */
				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;
				//	console.log('setStatus',offer);

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

				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();
					} else {
					//	console.warn('Не найден input[name="' + selectsProperty[i] + '"]')
					}
				}
				flagCh = true;

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

			/**
			 * Ищем самое дешевое Торговое Предложение
			 * */
			var setMinOffer = function () {
				// console.log('catalogPlate.setMinOffer');
				var min = 9007199254740992; //Number.MAX_SAFE_INTEGER;
				var OfreVariant = new Array();
				$.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


	$.fn.ProductAddToBuy = function (conf) {
		var def_config = {
			continue_shopping :"Продолжить покупки",
			go_to_cart: "Перейти в корзину",
			price: "Цена",
			order: "Оформить заказ",
			cart_url: "/cart/",
			order_url: "/cart/order/",
			title: '',
			img_src: false,
			link_src: "#"
		};
		var config = $.extend({}, def_config, conf);

		return this.each(function () {
			var $th = $(this);
			var $buyButton = $th.find('.js-buy-button, .js-buy, [data-action=add-to-basket]').first();
			var $subscribeButton = $th.find('.js-subscribe-button').first();
			var $img = $th.find('.js-img');
			var $oldPrice = $th.find('.js-old-price');
			var $price = $th.find('.js-price');
			var $optionsItem = $th.find('.js-options-item'); // js-label js-val

			var checkSubscribe = function (button) {
				if (button.data('id')) {
					console.log('checkSubscribe ' + button.data('id'));
					var href = '/bitrix/components/bitrix/catalog.product.subscribe/ajax.php';
					$.ajax({
						method: 'POST',
						url: href,
						dataType: "json",
						data: {
							sessid: BX.bitrix_sessid(),
							checkSubscribe: 'Y',
							itemId: button.data('id')
						}
					}).done(function (result) {
						console.log(result);
						if (result.subscribe) {
							button.hide();
						} else {
							button.show();
						}
					});
				}
			};

			var init = function () {
				$buyButton.on('click', buyButtonClick );
				//console.info('init '+ $th.attr('id'));
				checkSubscribe($subscribeButton);
				$subscribeButton.on('click', subscribeButtonClick );
			};

			var popupTemplate = $(
					'<div class="cart-modal bem">' +
					'<div class="cart-modal__holder">' +
						'<div class="cart-modal__head">' +
							'<div class="cart-modal__head-content">' +
								'<div class="cart-modal__head-title">' +
									'<span class="cart-modal__heading">{{messages.item_added_to_cart}}</span>' +
								'</div>' +
								'<div class="cart-modal__head-shopping">' +
									'<a href="#" class="cart-modal__shopping-link">'+ config.continue_shopping +'</a> ' +
								'</div>' +
							'</div>' +
						'</div>' +
						'<div class="cart-modal__product">' +
							'<div class="cart-modal__product-content">' +
								'<div class="cart-modal__thumb">' +
									'<a href="'+ config.link_src +'" class="cart-modal__thumb-link"><img src="'+ config.img_src +'" class="cart-modal__thumb-img"></a> ' +
								'</div>' +
								'<div class="cart-modal__detail">' +
									'<div class="cart-modal__name">' +
										'<a href="'+ config.link_src +'" class="cart-modal__name-link">'+ config.title +'</a> ' +
									'</div>' +
									'<div class="cart-modal__options">#</div> ' +
								'</div>' +
								'<div class="cart-modal__checkout">' +
									'<div class="cart-modal__price">' +
										'<div class="cart-modal__price-old"></div>' +
										'<div class="cart-modal__price-actual">' +
											'<div class="cart-modal__actual-title">' +
												'<span class="cart-modal__actual-label">'+ config.price +'</span> ' +
											'</div>' +
											'<div class="cart-modal__actual-value"></div>' +
										'</div>' +
									'</div>' +
									'<div class="cart-modal__purchase">' +
										'<a href="'+ config.cart_url +'" class="cart-modal__order-btn button">'+ config.go_to_cart +'</a>'+
										'<a href="'+ config.order_url +'" class="cart-modal__order-btn button-primary">'+ config.order +'</a>'+
									'</div>' +
								'</div>' +
							'</div>' +
						'</div>' +
						'</div>' +
					'</div>');
			var prepare = function(resp){

				popupTemplate.find('.cart-modal__heading').html(resp.MESSAGE);

				if($img.length){
					popupTemplate.find('.cart-modal__thumb-img').attr('src', $img.attr('src'));
				}

				if($price.length){
					popupTemplate.find('.cart-modal__actual-value').html($price.html());
				}

				if($oldPrice.length){
					popupTemplate.find('.cart-modal__price-old').html($oldPrice.html());
				}



				var option_list = '';

				if($optionsItem.length){
					$optionsItem.each(function(){
						var $th = $(this);
						var value = "";
						var $value = $th.find('[value="'+$th.find('.js-val').val()+'"]');
						if( !$value.hasClass('js-val') ){
							value = $value.html();
						}else{
							value = $th.find('[data-val="'+$th.find('.js-val').val()+'"]').text();

						}

						// js-label js-val
						//console.info(value);
						option_list += '<div class="cart-modal__option"><span class="cart-modal__option-label">'+$th.find('.js-label').html()+'</span> <span class="cart-modal__option-value">'+value+'</span></div>'
					});
				}
				popupTemplate.find('.cart-modal__options').html(option_list);
			};

			var buyButtonClick = function(e){
			//	console.info('buyButtonClick '+$th.attr('id'));
				e.preventDefault();
				e.stopPropagation();
				var $this = $(this);
				var element = $th;
				var quantity = element.find('.e_quantity');
				var href = $this.attr('href') + '&ajax_basket=Y';

				if (quantity.length) {
					href += '&quantity=' + quantity.val();
				}

				$.ajax({
					url: href,
					dataType: "text"
				}).done(function (resp) {
					var response = jQuery.parseJSON(resp.replace(/'/g, '"'));

					if (response.STATUS == 'OK') {
							BX.onCustomEvent('OnBasketChange');
							prepare(response);
							$.fancybox( popupTemplate, {
								afterLoad: function(){
									popupTemplate.find('.cart-modal__shopping-link').on('click', function(){ $.fancybox.close(); return false; })
								},
								padding: '0',
								autoCenter: false,
								fitToView: false
							} );

					} else {
						$.fancybox( '<b>Ошибка:</b><br>'+response.MESSAGE );
					}
				});
				return false;
			};

			var subscribeButtonClick = function(e) {
				e.preventDefault();
				e.stopPropagation();

				var $this = $(this),
					href = '/bitrix/components/bitrix/catalog.product.subscribe/ajax.php';

				$.ajax({
					method: 'POST',
					url: href,
					dataType: "json",
					data: {
						sessid: BX.bitrix_sessid(),
						subscribe: 'Y',
						itemId: $this.data('id'),
						siteId: BX.message('SITE_ID')
					}
				}).done(function (result) {
					console.log(result);
					if (result.success) {
						$this.hide();
						$.fancybox( '<b>' + result.message + '</b>');
					} else {
						$.fancybox( '<b>Ошибка:</b><br>' + result.message );
					}
				});
				return false;
			};

			init();

		}); // return 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;
		});
	})
});

// comments
	$(function () {
		$('.product-detail-modal').livequery(function () {
			var $context = $(this);
			$context.find('.js-select').selectOffers();
			// code here...
		})
	});

// comments
	$(function () {
		// code here...
	});

// description
	$(function () {
		//...
	});

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

		$slider.slick({
			dots: true,
			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 () {
	initPromoSliders();
});
// promo-tiles block
$(function () {
	// .promo-tiles js
});
// Чек-бокс
	$(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);
		});
	});

// comments
	$(function () {
		// code here...
	});

// Обработка стандартной формы
$(function () {
		// Функция проверки соответствия значения инпута регулярке
		var checkVal = function ($input, regExp) {
			var result = regExp.test($input.val());
			console.log(result);
			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') == undefined) 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;
					break;
			}

			return true;
		}

		$('.registration-form').each(function () {
			var $context = $(this);
			var $form = (!$context.hasClass("js-ajax") && !$('form', $context).hasClass("js-ajax")) ? $('form', $context) : $("");
			//var $ajaxForm = $('form.js-ajax', $context);
			var $ajaxForm = ($context.hasClass("js-ajax") || $('form', $context).hasClass("js-ajax")) ? $('form', $context) : $("");
			console.log($ajaxForm);


			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;
				var result = 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') == undefined) 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, options) {
					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') == undefined) 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 **/
							console.log(message.error);
						} 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;
			});
		});
	});
// Slider settings
$(function () {
	/* $('.related-carousel').livequery(function () {
		var $context = $(this);
		var $slider = $('.related-carousel__slider', $context);

		$slider.slick({
			infinite: true,
			slidesToShow: 3,
			slidesToScroll: 3,
			draggable: false,
			centerPadding: '100px',
			prevArrow: "<span class='related-carousel__arrows related-carousel__arrow-left'></span>",
			nextArrow: "<span class='related-carousel__arrows related-carousel__arrow-right'></span>"
		});
	}); */
});

// comments
	$(function () {
		// code here...
	});

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

			// code here...
		})
	});

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

			// code here...
		})
	});

// Обработка стандартной формы
$(function () {
	// Функция проверки соответствия значения инпута регулярке
	var checkVal = function($input, regExp) {
		var	result = regExp.test($input.val());
		console.log(result);
		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') == undefined) 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;
				break;
		}

		return true;
	}

	$('.sale-interview').livequery(function () {
		var $context = $(this);
		var $form = (!$context.hasClass("js-ajax") && !$('form', $context).hasClass("js-ajax")) ? $('form', $context) : $("");
		//var $ajaxForm = $('form.js-ajax', $context);
		var $ajaxForm =  ($context.hasClass("js-ajax") || $('form', $context).hasClass("js-ajax")) ? $('form', $context) : $("");
		console.log($ajaxForm);


		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;
			var result = 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') == undefined) 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, options) {
				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') == undefined) 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 **/
						console.log(message.error);
					}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;
		});
	});
});

// comments
	$(function () {
		// code here...
	});

// Строка поиска
	$(function () {
		$('.search-b2b-title').livequery(function () {

		});
	});

// comments
	$(function () {
		// code here...
	});

// Строка поиска
	$(function () {
		$('.search-title').each(function() {
			var self = $(this);
			self.livequery(function () {
				var $context = $(this);
				var $form = $('.search-title__form', self);
				var $input = $('.search-title__input', $context);
				var $resultsHolder = $('.search-title__results-holder', $context);
				var $submit = $('.search-title__submit', $context);
				var isNotInteractive = $context.is('.is-not-interactive');

				function showResultLightbox(event) {
					var val = $(this).val();
					// console.log('showResultLightbox');

					if(val !== '') {
						$resultsHolder.addClass('is-active');
					} else {
						$resultsHolder.removeClass('is-active');
					}
				}
				function submitClick(event){
					if($context.hasClass('is-hide-input')){
						$context.removeClass('is-hide-input');
					}else{
						$form.submit();
					}
					return false;
				}

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

				$submit.on('click', submitClick);

				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");
				    });
				}

			});
		});

	});

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

// comments
	$(function () {
		// code here...
	});

// Древовидное меню
	$(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);
		});
	});

// comments
$(function () {
	// sitemap block code here...
});
// Умный фильтр
	$(function () {
		$('.smart-filter').livequery(function () {
			var $context = $(this);
			var $fields = $('.smart-filter__field', $context);
			var $fieldCaptions = $('.smart-filter__field-header', $context);
			var $contentHolders = $('.smart-filter__field-content', $context);
			var $fieldResets = $('.smart-filter__field-reset', $context);
			var $fullReset = $('.smart-filter__full-reset', $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);
		});
	});

// Умный фильтр
	$(function () {
	$('.smart-filter-dropdown').livequery(function () {
		var $context = $(this);
		var $fields = $('.smart-filter-dropdown__field', $context);
		var $main = $('.smart-filter-dropdown__main', $context);
		var $itemsSet = $('.smart-filter-dropdown__items-set', $context);
		var $fieldCaptions = $('.smart-filter-dropdown__field-header', $context);
		var $contentHolders = $('.smart-filter-dropdown__field-content', $context);
		var $fieldResets = $('.smart-filter-dropdown__field-reset', $context);
		var $fullReset = $('.smart-filter-dropdown__full-reset', $context);
		var $fieldApply = $('.smart-filter-dropdown__field-btn', $context);
		var $allTags = $('.smart-filter-dropdown__tag', $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();
				//$itemsSet.toggle();
			});

		})();

		function initTags() {
			$('.smart-filter-dropdown__tag').on('click', function(){
				$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');
			var $container = $('.smart-filter-dropdown__field-content', $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);
		}
	});
});

// comments
	$(function () {
		$('.smart-tiles').livequery(function () {
			var $context = $(this);
			
		});
	});

// comments
	$(function () {
		// code here...
	});

// comments
	$(function () {
		// code here...
	});

// comments
	$(function () {
		// code here...
	});

// Вкладки, переключение табов
	function tabsBlockInit() {
		var $context = $('.tabs-block');
		var $linkHolders = $('.tabs-block__link-holder', $context);
		var $links = $('.tabs-block__link', $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 $links = $('.tabs-section__link', $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();
		});
	});

// comments
	$(function () {
		// code here...
	});

// 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,
						tid;

					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;
						tid = setTimeout( function(){ me.countDown(); }, 1000);
					} else {
						this.elem.innerHTML = this.expireMessage;
						return;
					}
				};

				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(parseFloat($qtty.val())) || 0;

				console.log('getCurrentCost', price, qtty);
				return price * qtty;
			}

			function getOldCost () {
				var price = parseFloat($oldPrice.data('old-price')) || 0;
				var qtty = parseFloat(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 filename;

		    if (str.lastIndexOf('\\')){
	        var i = str.lastIndexOf('\\')+1;
		    } else{
	        var 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.click(function () {
                    $detail.slideToggle();
                });

            });
			// code here...
		})
	});

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

			// code here...
		})
	});

// Плитка видео
	$(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);
			}
		});
	});

// comments
	$(function () {
		// code here...
	});

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

			//var placemarks = [];
			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
					}
				);

				//placemarks.push(placemark);
				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());
							// $('body').on('click', $.proxy(this.closeOnBlur, this));
							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 (e) {
			  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 != undefined) map.container.fitToViewport(true);}, 200);
					event.stopPropagation();
				});

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

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

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

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

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

			// code here...
		})
	});

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