<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">var filter = new function()
{
	var self = this
	var _autoload = false
	var _autoloaded_time = 0
	var _offset   = 0

	var _is_search_page = document.location.href.indexOf('/search/') != -1;
	var _is_main_page = typeof window.is_mainPage !== 'undefined';

	var _params   = {} // РїР°СЂР°РјРµС‚СЂС‹ С„РёР»СЊС‚СЂР°С†РёРё
	var _products = [] // РѕС‚РѕР±СЂР°РЅРЅС‹Рµ С‚РѕРІР°СЂС‹
	var __products = [] // РЅР°С‡Р°Р»СЊРЅС‹Р№, РЅРµРёР·РјРµРЅРЅС‹Р№ СЃРїРёСЃРѕРє С‚РѕРІР°СЂРѕРІ
	var _limits   = [] // РїСЂРµРґРµР»СЊРЅС‹Рµ Р·РЅР°С‡РµРЅРёСЏ РїР°СЂР°РјРµС‚СЂРѕРІ
	var _sort     = 'rating-' // СЃРѕСЂС‚РёСЂРѕРІРєР°
	var _view     = 'grid'    // РѕС‚РѕР±СЂР°Р¶РµРЅРёРµ = list | grid

	var _requestUrl = '';
	var _paramsData = [];

	var _close_hint = function(){ clearTimeout(_t); $('.filter-picker').hide(500); }
	var _t, _disable_count = false

	var _timerOnStart = null
	var _timerOnLoad  = null

	this.clearOnLoad = function() { if (_timerOnLoad) clearInterval(_timerOnLoad) }

	this.wait = function (request) {
		console.log('wait started');
		if (typeof igroved_filter_datas === 'undefined' || typeof igroved_filter_datas.category === 'undefined') {
			setTimeout(function () {
				self.wait(request);
				console.log('this.wait attemp');
			}, 300);
		} else {
			self.init(request);
			setTimeout(function () {
				_offset = +$('#js-filter input[name="offset"]').val();
				console.log(_offset);
				// self.load_products();
			}, 1000);

		}
	};

	// РёРЅРёС†РёР°Р»РёР·Р°С†РёСЏ
	//------------------------------------------------------------------
	this.init = function(request)
	{
		self.add_ajax_data_init();


		setTimeout(function () {
			self.mychoice_init(request);
			self.start();
			// self.load();
		}, 1000);

		// if (request) _is_search_page = true

		if (_is_search_page)
		{
			setTimeout(function () {
				if ($_GET.sort) self.resort($_GET.sort)
			}, 1000);
		}

		// РєРЅРѕРїРєР° "РњРЅРµ РїРѕРІРµР·С‘С‚"
		$('button[name=random]').on('click', function(){
			var id = _products[Math.round(Math.random()*(_products.length-1))]
			setTimeout(function () {
				document.location = igroved_filter_datas.products[id].url
			}, 500)
			return false
		})
		if ($_GET['random'])
		{
			self.filter_products()
			$('button[name=random]').click()
			return
		}

		var v = '';

		self.onchange_init(false);

		self.submit_init();

		// self.update_mychoice();
		// self.update_url();

		// РєРЅРѕРїРєР° "РќР°Р№С‚Рё"
		$('button[name=search]').on('click', function(){
			if (_is_search_page)
			{
				$('[name=sort]').val($('#sort').val())
				$('body').animate({ scrollTop: 0 }, 500)
				return self.start()
			}
			// СЃРѕР·РґР°РЅРёРµ РѕРґРЅРѕСЃС‚СЂРѕС‡РЅРѕРіРѕ РїРѕР»СЏ tag РІРјРµСЃС‚Рѕ РјР°СЃСЃРёРІР°
			var i, st = ''
			for (i in _params.tag) st += (st?',':'')+i
			$('input[name="tag[]"]:checked').attr('checked', false)
			$('input[name="tag[]"]:first').attr('name', 'tag').val(st)
			return true // РѕС‚РїСЂР°РІРєР° С„РѕСЂРјС‹ Рё РїРµСЂРµС…РѕРґ РЅР° СЃС‚СЂР°РЅРёС†Сѓ РїРѕРёСЃРєР°
		})

		$(window).on('scroll', filter.scroll);

		// COMMENT: Р·Р°РіСЂСѓР·РєР° С‚РѕРІР°СЂРѕРІ, РєРѕРіРґР° РїСЂРёС€Р»Рё РЅР° РїРѕРёСЃРє РїРѕ СЃСЃС‹Р»РєРµ СЃ РїР°СЂР°РјРµС‚СЂР°РјРё
		var i, is_param = false; for (i in _params) { is_param = true; break; }

		self.hide_small_manufacturers()

		// COMMENT: СѓСЃС‚Р°РЅРѕРІРєР° С„РёР»СЊС‚СЂР°, РєРѕРіРґР° Р·Р°РіСЂСѓР·РёР»Рё СЃС‚СЂР°РЅРёС†Сѓ РџРѕРґРѕР±РѕСЂРєРё
		var i, x
		if (request)
		{
			// _is_search_page = true
			for (i in request)
			{
				x = $('[name="'+i+'"]')
				if (x) x.value = request[i]
			}
		}
	}

	this.onchange_init = function(param)
	{
		var v;
		var onchange = function(e)
		{

			var el = e.target, is_load = true;
			if (el.name.indexOf('[]') == -1)
			{
				var value = $(el).data('ion_value')
				// var value = $(el).val()
				if (value == undefined) value = el.value
				if (value)
				{
					if (['numPlayers', 'difficulty', 'time', 'age', 'price', 'discount'].indexOf(el.name) != -1)
					{
						_params[el.name] = value.split('-')
						// is_load = false
					}
					else _params[el.name] = value
					if ((el.type == 'checkbox') &amp;&amp; !el.checked || el.type == 'hidden') delete _params[el.name]
				}
				else delete _params[el.name]
			}
			else
			{
				var x = el.name.replace('[]', ''), v = el.value
				switch (x)
				{
					/*
					case 'category': //case 'author': case 'illustrator': case 'manufacturer':
						if (!_params[x]) _params[x] = {};
						if (el.checked) _params[x][v] = 1;
						else delete _params[x][v];
						v = 1; for (i in _params[x]) { v = 0; break } if (v) delete _params[x];
						break;
						*/
					case 'category':
						if (!_params[x]) _params[x] = {}
						if (el.checked) _params[x][v] = igroved_filter_datas.category(v)
						else { delete _params[x][v]; delete _params[x][igroved_filter_datas.category(v)] }
						break;
					case 'tag':
						if (!_params[x]) _params[x] = {}
						if (el.checked) _params[x][v] = igroved_filter_datas.tag(v)
						else { delete _params[x][v]; delete _params[x][igroved_filter_datas.tag(v)] } // COMMENT: СѓРґР°Р»СЏРµРј РґРІР° СЂР°Р·Р°, С‚.Рє. РјРѕРіСѓС‚ Р·Р°РґР°С‚СЊ С‚РµРі РєР°Рє С‡РµСЂРµР· id, С‚Р°Рє Рё С‡РµСЂРµР· РёРјСЏ
						break;
					case 'author':
						if (!_params[x]) _params[x] = {}
						if (el.checked) _params[x][v] = igroved_filter_datas.author(v)
						else { delete _params[x][v]; delete _params[x][igroved_filter_datas.author(v)] }
						break;
					case 'illustrator':
						if (!_params[x]) _params[x] = {}
						if (el.checked) _params[x][v] = igroved_filter_datas.illustrator(v)
						else { delete _params[x][v]; delete _params[x][igroved_filter_datas.illustrator(v)] }
						break;
					case 'manufacturer':
						if (!_params[x]) _params[x] = {}
						if (el.checked) _params[x][v] = igroved_filter_datas.manufacturer(v);
						else { delete _params[x][v]; delete _params[x][igroved_filter_datas.manufacturer(v)] }
						break;
				}

			}

			self.update_mychoice();
			self.update_url();

			if (_timerOnStart) clearInterval(_timerOnStart)
			_timerOnStart = setTimeout(function(){
				_offset = 0
				self.start(el)
			}, 300)
			if (is_load){
				self.load();
			}

			if (_is_search_page)
			{
				$('#podborka').fadeOut(1000)
			}
		}

		v = 'numPlayers';$('input[name='+v+']').on('change_', onchange)
		v = 'difficulty';$('input[name='+v+']').on('change_', onchange)
		v = 'time';      $('input[name='+v+']').on('change_', onchange)
		v = 'age';       $('input[name='+v+']').on('change_', onchange)
		v = 'price';     $('input[name='+v+']').on('change_', onchange)

		$.each(['tag', 'category',  'available',  'only_games', 'manufacturer', 'author', 'illustrator', 'discount'], function (i, v) {
			var elemID = '';
			switch (v) {
				case 'only_games': case 'available': case 'discount':
					elemID = 'input[name="' + v + '"]';
					break;
				default:
					elemID = 'input[name="' + v + '[]"]';
					break;
			}
			if(!param || param == v) $(elemID).on('change', onchange);
		});

	}

	this.add_ajax_data_init = function () {
		$.each(['manufacturer', 'author', 'illustrator', 'category'], function (i, param) {
			var wrap = param != 'category' ? $('.js-' + param + 's') : $('.js-categories');
			$(wrap).attr('data-param', param);
			self.loadAjaxParams(param);
			$(wrap).find('.toggle').click(function () {
				if ( $(wrap).find('.toggle-content').html() != '' ) return;
				self.writeParamsList(param, wrap);
			});
		});
	}

	this.writeParamsList = function (param, wrap)
	{
		var st = '';
		var arr = [];
		switch (param) {
			case 'manufacturer':
				arr = igroved_filter_datas.manufacturers;
				break;
			case 'author':
				arr = igroved_filter_datas.authors;
				break;
			case 'illustrator':
				arr = igroved_filter_datas.illustrators;
				break;
			case 'category':
				arr = igroved_filter_datas.categories;
				break;
		}
		
		var farr = [];
		var sfarr = [];
		
		for (i in _paramsData[param]) {
			$.each(arr, function (k, v) {
				if (v == i) {
					farr[_paramsData[param][i]['name']] = {'id' : i, 'name' : _paramsData[param][i]['name'], 'alias' : k, 'count' : _paramsData[param][i]['count']};
					sfarr.push(_paramsData[param][i]['name']);
				}
			});
			
			
			
		}
		
		sfarr.sort(function(x,y){ return x.localeCompare(y, 'ru')});
		
		$.each(sfarr, function (index, i) {
			st += '&lt;div class="checkbox"&gt;'
				+ '&lt;input type="checkbox" name="' + param + '[]" value="' + farr[i]['alias'] + '" id="checkbox_' + param + '_' + farr[i]['alias'] + '" '
				+ (_params[param] &amp;&amp; _params[param][farr[i]['alias']] ? 'checked' : '') + ' class="input" /&gt;'
				+ '&lt;label for="checkbox_' + param + '_' + farr[i]['alias'] + '" class="label"&gt;&lt;span&gt;' + farr[i]['name'] + '&lt;!-- (&lt;span rel="' + i + '" &gt;'+ farr[i]['count'] +'&lt;/span&gt;)--&gt;&lt;/span&gt;&lt;/label&gt;'
				+ '&lt;/div&gt;';
		});

		$(wrap).find('.toggle-content').html(st);
		$(wrap).find('.hidden-values').html('');
		self.onchange_init(param);
	}

	this.loadAjaxParams = function(param)
	{
		if (_paramsData[param]) return;
		$.get('/api/search/params/?param=' + param + '&amp;keys=ids&amp;active=1', function (response) {
			_paramsData[param] = response.data;
		});
	}

	// РёРЅРёС†РёР°Р»РёР·Р°С†РёСЏ Р±Р»РѕРєР° "РњРѕР№ РІС‹Р±РѕСЂ"
	this.mychoice_init = function(a)
	{
		var i, k, id
		_params = {};

		if (a[k='id']) _params[k] = a[k].split(',')
		delete a[k]

		if (a[k='query'])
		{
			_params[k] = a[k]
		}
		delete a[k]

		$.each(['tag', 'manufacturer', 'category', 'author', 'illustrator'], function (index, k) {
			if (a[k])
			{
				_params[k] = {}

				if (typeof(a[k]) == 'string') {
					if(a[k].indexOf(',') != -1) {
						a[k] = a[k].split(',');
					} else {
						a[k] = [a[k]];
					}
				}
				for (i in a[k]) {
					switch (k) {
						case 'tag':
							_params[k][a[k][i]] = igroved_filter_datas.tag(a[k][i]);
							break;
						case 'manufacturer':
							_params[k][a[k][i]] = igroved_filter_datas.manufacturer(a[k][i]);
							break;
						case 'author':
							_params[k][a[k][i]] = igroved_filter_datas.author(a[k][i]);
							break;
						case 'illustrator':
							_params[k][a[k][i]] = igroved_filter_datas.illustrator(a[k][i]);
							break;
						case 'category':
							_params[k][a[k][i]] = igroved_filter_datas.category(a[k][i]);
							break;
						default :
							_params[k][a[k][i]] = 1
							break;
					}
				}

				delete a[k];
			}

		});

		$.each(['numPlayers', 'difficulty', 'time', 'age', 'price', 'discount'], function (i, k) {
			if (a[k]) _params[k] = Array.isArray(a[k]) ? a[k] : a[k].split('-');
		});

		if (a[x = 'available']) _params[x] = a[x];

		this._params = _params;

		self.update_mychoice()
	}
	// С„СѓРЅРєС†РёСЏ СЃРєСЂС‹С‚РёСЏ РјРµР»РєРёС… РїСЂРѕРёР·РІРѕРґРёС‚РµР»РµР№
	this.hide_small_manufacturers = function()
	{
		var id
		for (id in _limits.man)
		if (_limits.man[id] &lt; 5)
			$('#checkbox_manufacturer_'+id).parents('.checkbox').hide()
		for (id in _limits.authors)
		if (_limits.authors[id] &lt; 5)
			$('#checkbox_author_'+id).parents('.checkbox').hide()
		for (id in _limits.ill)
		if (_limits.ill[id] &lt; 5)
			$('#checkbox_illustrator_'+id).parents('.checkbox').hide()

	}


	// РїСЂРѕРІРµСЂРєР° РїРѕРїР°РґР°РµС‚ Р»Рё РёРіСЂР° РІ С‚РµРєСѓС‰РёР№ С„РёР»СЊС‚СЂ РёР»Рё РЅРµС‚
	this.in_filter = function(game, ignore, ignoreId)
	{
		_params = this._params;

		var i, x;

		var multi_inc = true;

		if (_params[x='only_games'])
			if (!game.is_game) return false

		if (_params[x='id'])
			if (_params[x].indexOf(''+game.id) == -1) return false

		if (_params[x='query'])
			if (game.search.toLowerCase().indexOf(_params[x].toLowerCase()) == -1) return false

		if (_params[x='numPlayers'] &amp;&amp; ignore != x)
		{
			if (_params[x][1] &amp;&amp; _params[x][1] &lt; game.minPlayers) return false;
			if (_params[x][0] &amp;&amp; _params[x][0] &gt; game.maxPlayers) return false;
		}
		if (_params[x='difficulty'] &amp;&amp; ignore != x)
		{
			if (_params[x][1] &amp;&amp; _params[x][1] &lt; game.difficulty) return false;
			if (_params[x][0] &amp;&amp; _params[x][0] &gt; game.difficulty) return false;
		}
		if (_params[x='time'] &amp;&amp; ignore != x)
		{
			if (_params[x][1] &amp;&amp; _params[x][1] &lt; game.minTime) return false;
			if (_params[x][0] &amp;&amp; _params[x][0] &gt; game.maxTime) return false;
		}
		if (_params[x='age'] &amp;&amp; ignore != x)
		{
			if (!game.minAge) return false;
			if (_params[x][1] &amp;&amp; _params[x][1] &lt; game.minAge) return false;
			if (_params[x][0] &amp;&amp; _params[x][0] &gt; game.minAge) return false;
		}
		if (_params[x='price'] &amp;&amp; ignore != x)
		{
			if (_params[x][1] &amp;&amp; _params[x][1] &lt; game.price) return false;
			if (_params[x][0] &amp;&amp; _params[x][0] &gt; game.price) return false;
		}
		if (_params[x='discount'] &amp;&amp; ignore != x)
		{
			if (_params[x][1] &amp;&amp; _params[x][1] &lt; game.discount) return false;
			if (_params[x][0] &amp;&amp; _params[x][0] &gt; game.discount) return false;
		}

		if (_params[x='available'] &amp;&amp; ignore != x)
		if (!(game.available[_params[x]])) return false

		var manufacturer_inc = true;
		if (_params[x='manufacturer'] &amp;&amp; Object.keys(_params[x]).length &gt; 0) {
			var inc = Object.keys(_params[x]).length &lt; 1;
			for (i in _params[x])
			{
				if (ignore == x &amp;&amp; ignoreId &amp;&amp; i == ignoreId) continue;
				if (game.manufacturers[igroved_filter_datas.manufacturer(i)]) inc = true;
			}
			// return inc;
			manufacturer_inc = inc;
		}


		var tag_inc = true;
		if (_params[x='tag'] &amp;&amp; Object.keys(_params[x]).length &gt; 0) {
			var inc = Object.keys(_params[x]).length &lt; 1;
			for (i in _params[x])
			{
				if (ignore == x &amp;&amp; ignoreId &amp;&amp; i == ignoreId) continue;
				if (game.tags[igroved_filter_datas.tag(i)]) inc = true;
			}
			// return inc;
			tag_inc = inc;
		}

		if (_params[x='category'] &amp;&amp; ignore != x)
		{
			// var res = false
			for (i in _params[x])
			{
				if (ignore == x &amp;&amp; ignoreId &amp;&amp; i == ignoreId) continue
				if (game.category != igroved_filter_datas.category(i)) return false
			}
		}

		if (_params[x='author'] &amp;&amp; ignore != x)
			for (i in _params[x])
			{
				if (ignore == x &amp;&amp; ignoreId &amp;&amp; i == ignoreId) continue
				if (!game.authors[igroved_filter_datas.author(i)]) return false
			}

		if (_params[x='illustrator'] &amp;&amp; ignore != x)
			for (i in _params[x])
			{
				if (ignore == x &amp;&amp; ignoreId &amp;&amp; i == ignoreId) continue
				if (!game.illustrators[igroved_filter_datas.illustrator(i)]) return false
			}

		return manufacturer_inc &amp;&amp; tag_inc;
	}

	this.filter_products = function()
	{
		_products = []
		for (id in igroved_filter_datas.products) {
			if (self.in_filter(igroved_filter_datas.products[id])) {
				if ($.inArray(id, _products) &lt; 0) {
					_products.push(id);
					__products.push(id);
				}
			}
		}
	}

	// РѕР±РЅРѕРІР»РµРЅРёРµ РіСЂР°РЅРёС† РїРѕР»Р·СѓРЅРєРѕРІ / РєРѕР»-РІР° РёРіСЂ РїРѕ РєР°Р¶РґРѕРјСѓ С‚РµРіСѓ
	this.update_filter_options = function()
	{
		var i, j, u = undefined
		_limits = {num:[],diff:[],time:[],age:[],price:[],tags:{},man:{},cat:{},authors:{},ill:{}}

		for (id in igroved_filter_datas.products)
		{
			for (j in igroved_filter_datas.products[id].tags)
			if (self.in_filter(igroved_filter_datas.products[id], 'tag', j))
			{
				if (!_limits.tags[j]) _limits.tags[j] = 0
				_limits.tags[j]++
			}

			for (j in igroved_filter_datas.products[id].manufacturers)
			if (self.in_filter(igroved_filter_datas.products[id], 'manufacturer', j))
			{
				if (!_limits.manufacturers[j]) _limits.manufacturers[j] = 0
				_limits.manufacturers[j]++
			}

			for (j in igroved_filter_datas.products[id].authors)
			if (self.in_filter(igroved_filter_datas.products[id], 'author', j))
			{
				if (!_limits.authors[j]) _limits.authors[j] = 0
				_limits.authors[j]++
			}

			for (j in igroved_filter_datas.products[id].illustrators)
			if (self.in_filter(igroved_filter_datas.products[id], 'illustrator', j))
			{
				if (!_limits.illustrators[j]) _limits.illustrators[j] = 0
				_limits.illustrators[j]++
			}


			if (self.in_filter(igroved_filter_datas.products[id], 'category'))
			{
				j = igroved_filter_datas.products[id].category;  { if (!_limits.cat[j]) _limits.cat[j] = 0; _limits.cat[j]++ }
			}

			if (self.in_filter(igroved_filter_datas.products[id], 'numPlayers')){
			if (u==_limits.num[0]  || _limits.num[0]  &gt; igroved_filter_datas.products[id].minPlayers) _limits.num[0]  = igroved_filter_datas.products[id].minPlayers
			if (u==_limits.num[1]  || _limits.num[1]  &lt; igroved_filter_datas.products[id].maxPlayers) _limits.num[1]  = igroved_filter_datas.products[id].maxPlayers
			}

			if (self.in_filter(igroved_filter_datas.products[id], 'difficulty')){
			if (u==_limits.diff[0] || _limits.diff[0] &gt; igroved_filter_datas.products[id].difficulty)  _limits.diff[0] = igroved_filter_datas.products[id].difficulty
			if (u==_limits.diff[1] || _limits.diff[1] &lt; igroved_filter_datas.products[id].difficulty)  _limits.diff[1] = igroved_filter_datas.products[id].difficulty
			}

			if (self.in_filter(igroved_filter_datas.products[id], 'time')){
			if (u==_limits.time[0] || _limits.time[0] &gt; igroved_filter_datas.products[id].minTime) _limits.time[0] = igroved_filter_datas.products[id].minTime
			if (u==_limits.time[1] || _limits.time[1] &lt; igroved_filter_datas.products[id].maxTime) _limits.time[1] = igroved_filter_datas.products[id].maxTime
			}

			if (self.in_filter(igroved_filter_datas.products[id], 'age')){
			if (u==_limits.age[0]  || _limits.age[0]  &gt; igroved_filter_datas.products[id].minAge)  _limits.age[0]  = igroved_filter_datas.products[id].minAge
			_limits.age[1] = 99; // COMMENT: РІРµСЂС…РЅРµРіРѕ РѕРіСЂР°РЅРёС‡РµРЅРёСЏ РІРѕР·СЂР°СЃС‚Р° РІ РёРіСЂР°С… РЅРµС‚
			}

			if (self.in_filter(igroved_filter_datas.products[id], 'price')){
			if (u==_limits.price[0]|| _limits.price[0]&gt; igroved_filter_datas.products[id].price)  _limits.price[0]= igroved_filter_datas.products[id].price
			if (u==_limits.price[1]|| _limits.price[1]&lt; igroved_filter_datas.products[id].price)  _limits.price[1]= igroved_filter_datas.products[id].price
			}
		}
		$('.js-tags [rel]').each(function(i, e)
		{
			var id = e.getAttribute('rel');
			$(e).html(_limits.tags[id] || 0);
			$(e).parents('label').toggleClass('disabled', !_limits.tags[id]);
			$(e).parents('.checkbox').find(':checkbox').prop('disabled', !_limits.tags[id]);
		});
		$('.js-manufacturers [rel]').each(function(i, e)
		{
			var id = e.getAttribute('rel');
			$(e).html(_limits.manufacturers[id] || 0);
			$(e).parents('label').toggleClass('disabled', !_limits.manufacturers[id]);
			$(e).parents('.checkbox').find(':checkbox').prop('disabled', !_limits.manufacturers[id]);
		});
		$('.js-categories [rel]').each(function(i, e)
		{
			var id = e.getAttribute('rel')
			$(e).html(_limits.cat[id] || 0)
			$(e).parents('label').toggleClass('disabled', !_limits.cat[id])
			$(e).parents('.checkbox').find(':checkbox').prop('disabled', !_limits.cat[id])
		})
		$('.js-authors [rel]').each(function(i, e)
		{
			var id = e.getAttribute('rel')
			$(e).html(_limits.authors[id] || 0)
			$(e).parents('label').toggleClass('disabled', !_limits.authors[id])
			$(e).parents('.checkbox').find(':checkbox').prop('disabled', !_limits.authors[id])
		})
		$('.js-illustrators [rel]').each(function(i, e)
		{
			var id = e.getAttribute('rel')
			$(e).html(_limits.ill[id] || 0)
			$(e).parents('label').toggleClass('disabled', !_limits.ill[id])
			$(e).parents('.checkbox').find(':checkbox').prop('disabled', !_limits.ill[id])
		})

		var _ = function(x, a, max){
			var i, a
			if (!a) return x;
			if (max) // РІРѕР·РІСЂР°С‰Р°РµС‚ РЅР°РёР±Р»РёР¶Р°Р№С€РµРµ РІРµСЂС…РЅРµРµ С‡РёСЃР»Рѕ
			for (i = 0; i &lt; a.length; i++) if (a[i] &gt;= x) return i
			// РЅР°РёР±Р»РёР¶Р°Р№С€РµРµ РЅРёР¶РЅРµРµ С‡РёСЃР»Рѕ
			for (i = a.length-1; i &gt;= 0; i--) if (a[i] &lt;= x) return i
			return max ? a.length-1 : 0
		}
		var f = function(name, a)
		{
			var el = $('[name='+name+']')
			var v = el.data('input-values'); if (!v) v = el.data('values'); if (v) v = v.split(',')
			var slider = el.data('ionRangeSlider')
			if (!slider) return
			var so = slider.options, min = _(a[0], v), max = _(a[1], v, true)
			if (0
				|| so.from_min != min || so.from_max != max
				|| so.  to_min != min || so.  to_max != max
			)
			{
				var o = {
					from_min: min, from_max: max,
					  to_min: min,   to_max: max
				}
				if (so.from == so.from_min) o.from = min // СЂР°Р·РґРІРёРіР°РµРј РїРѕР»Р·СѓРЅРєРё РїРѕ РјР°РєСЃРёРјСѓРјСѓ
				if (so.to   == so.to_max)   o.to   = max // РµСЃР»Рё РѕРЅРё СЃС‚РѕСЏР»Рё РЅР° РєСЂР°СЋ
				slider.update(o)
			}
		}

		f('numPlayers', _limits.num)
		f('difficulty', _limits.diff)
		f('time',       _limits.time)
		f('age',        _limits.age)
		f('price',      _limits.price)
	}

	this.show_product_count = function(el)
	{
		return;
		if (!el) return
		var n = _products.length, href_s = '', href_e = '';
		if( !_is_search_page &amp;&amp; n &gt; 0) {
            href_s = '&lt;a href="javascript:;" onclick="$(\'#js-filter\').submit();"&gt;';
			href_e = '&lt;/a&gt;';
		}
		$('.filter-picker div').html(href_s + 'РќР°Р№РґРµРЅ'+ok(n,'Р°','Рѕ','Рѕ')+' &lt;strong&gt;'+n+'&lt;/strong&gt; РёРіСЂ'+ok(n,'Р°','С‹','') + href_e)
		if (self._t) clearTimeout(self._t)
		var top  = $(el).parent().position().top - 6
		var left = $(el).parents('.form-group').position().left + $(el).parents('.form-group').width() + 10
		$('.filter-picker').css("top",  top  + 'px')
		$('.filter-picker').css("left", left + 'px')
		$('.filter-picker').show(300)
		self._t = setTimeout(_close_hint, 10*1000)
	}

	// РїРѕРґРіСЂСѓР·РєР° С‚РѕРІР°СЂРѕРІ Рё РѕР±РЅРѕРІР»РµРЅРёРµ СЃС‚СЂР°РЅРёС†С‹
	this.load_products = function()
	{
		var qdata = {results: _products.length, query: _params['query'], request: location.search};
		if (_params['query']) $.post('/api/search/stat/', qdata);

		// console.log(qdata);
		// console.log(_offset);

		// if (!self.update_empty()) return false

		var ids = '' + _products.slice(_offset, _offset + 30);
		// if (!_is_search_page) $('.product-filter [name=id]').val(ids || 0);
		// if (_is_search_page) $('.product-filter [name=offset]').val(_offset);
		$('.product-filter [name=offset]').val(_offset);
		$('.product-filter form').ajaxSubmit({url:'/ajax/products/',
			success: function(data)
			{
				// var n = _products.length;

				// РµСЃР»Рё Р·Р°РіСЂСѓР¶Р°РµРј РЅРѕРІСѓСЋ РїРѕСЂС†РёСЋ РґР°РЅРЅС‹С… - РґРѕР±Р°РІР»СЏРµРј РІ РєРѕРЅРµС†
				if (_offset)
				{
					var tmp = $(data);
					var data = tmp.children();
					$('.products').append(data).isotope('appended', data).isotope('layout');
					$('.products').attr('data-count', parseInt(tmp.attr('data-offset')) + parseInt(tmp.attr('data-count')));
				}
				else // РёРЅР°С‡Рµ Р·Р°РјРµРЅСЏРµРј РІРµСЃСЊ Р±Р»РѕРє
				{
					$('.products').replaceWith(data)
					$('.products').hide()
					$('.products').fadeIn(1000).promise().done(function () {
						isotope_init();
					});
					// isotope_init()
				}
				// cart.updateCurrentColumn() // РїРѕРґСЃРІРµС‡РёРІР°РµРј СЃРІРѕСЋ РєРѕР»РѕРЅРєСѓ

				setTimeout(function () {
					var n = $('.products').data('total');
					if (_is_search_page) {
						$.post('/ajax/get_metas.php', {url:location.pathname + location.search}, function (metas) {
							console.log(metas);
							if (!metas.error) {
								$('.entry.search h2').html('РРіСЂРѕРІРµРґ РЅР°С€С‘Р» ' + n + ' РЅР°СЃС‚РѕР»СЊРЅ' + ok(n,'СѓСЋ','С‹Рµ','С‹С…') + ' РёРіСЂ' + ok(n,'Сѓ','С‹','') + ' РґР»СЏ РІР°СЃ!');
								if (metas.title) $('title').html(metas.title);
								if (metas.h1) $('.entry-header h1').html(metas.h1);
								if (metas.text) $('.s_text').html(metas.text);
							} else {
								$('.entry.search h2').html('РРіСЂРѕРІРµРґ РЅР°С€С‘Р» ' + n + ' РЅР°СЃС‚РѕР»СЊРЅ' + ok(n,'СѓСЋ','С‹Рµ','С‹С…') + ' РёРіСЂ' + ok(n,'Сѓ','С‹','') + ' РґР»СЏ РІР°СЃ!');
								if ($('.products').data('title')) $('title').html($('.products').data('title'));
								if ($('.products').data('h1')) $('.entry-header h1').html($('.products').data('h1'));
							}

						});
					}
					$('.entry .loader').hide();
				}, 200);


				_offset += 30;

				// РїРѕРєР°Р·Р°С‚СЊ/СЃРїСЂСЏС‚Р°С‚СЊ РєРЅРѕРїРєРё Р·Р°РіСЂСѓР·РєРё
				if (_offset &gt;= _products.length)
				{
					_autoload = false
					$('.load-more').hide();
					$('.pagination-wrap').hide();
				} else {
					$('.load-more').show();
					$('.pagination-wrap').show();
				}
			}
		})
	}

	this.setOffset = function(n) {
		_offset = n;
	}

	// РїРѕРєР°Р·Р°С‚СЊ/СЃРїСЂСЏС‚Р°С‚СЊ С‚РµРєСЃС‚ "РЅРµ РЅР°Р№РґРµРЅРѕ"
	this.update_empty = function()
	{
		var n = _products.length;
		// $('.entry.search').toggle(n&gt;0)
		// $('.entry.page.search-empty').toggle(!n)
		return n &gt; 0
	}

	// РѕР±РЅРѕРІР»РµРЅРёРµ С‚РµРєСЃС‚Р° РІ "РњРѕР№ РІС‹Р±РѕСЂ"
	this.update_mychoice = function()
	{
		_params = this._params;

		var i, x, st = ''
		var _n, _c, _= function(x)
		{
			x = _params[x]
			_n = x[1] ? x[1] : x[0]
			_c = 2
			if (x[0] == x[1]) { _c = 1; return x[0] }
			return (x[0]?'РѕС‚ ':'')+x[0]+(x[1]?' РґРѕ '+x[1]:'')
		}

		if (_params[x='available'])
			st += '&lt;li&gt;&lt;a href="#reset/available" title="СѓР±СЂР°С‚СЊ"&gt;РІ РЅР°Р»РёС‡РёРё '+$('label[for=av_'+_params[x]+']').html()+'&lt;/a&gt;&lt;/li&gt;';
		if (_params[x='id'])
			st += '&lt;li&gt;&lt;a href="#reset/id" title="СѓР±СЂР°С‚СЊ"&gt;РёРіСЂС‹ РїРѕ РёРґРµРЅС‚РёС„РёРєР°С‚РѕСЂСѓ&lt;/a&gt;&lt;/li&gt;';
		if (_params[x='query'])
		{
			st += '&lt;li&gt;&lt;a href="#reset/query" title="СѓР±СЂР°С‚СЊ"&gt;С‚РµРєСЃС‚ "'+_params[x]+'"&lt;/a&gt;&lt;/li&gt;';
		}
		if (_params[x='numPlayers'])
		{
			i = _(x)
			st += '&lt;li&gt;&lt;a href="#reset/numPlayers" title="СѓР±СЂР°С‚СЊ"&gt;'+(_c&lt;2?'РґР»СЏ '+i:i)+' РёРіСЂРѕРє'+ok(_n,'Р°','РѕРІ','РѕРІ')+'&lt;/a&gt;&lt;/li&gt;';
		}
		if (_params[x='difficulty'])
		{
			var _d = function(x)
			{
				var a = ['', 'РѕС‡РµРЅСЊ Р»С‘РіРєРёРµ', 'Р»С‘РіРєРёРµ РёРіСЂС‹', 'РЅРѕСЂРјР°Р»СЊРЅРѕР№ СЃР»РѕР¶РЅРѕСЃС‚Рё', 'СЃР»РѕР¶РЅС‹Рµ РёРіСЂС‹', 'РѕС‡РµРЅСЊ СЃР»РѕР¶РЅС‹Рµ']
				var b = ['', 'РѕС‡РµРЅСЊ Р»С‘РіРєРёС…', 'Р»С‘РіРєРёС…', 'РЅРѕСЂРјР°Р»СЊРЅС‹С…', 'СЃР»РѕР¶РЅС‹С…', 'РѕС‡РµРЅСЊ СЃР»РѕР¶РЅС‹С…']
				if (x[0] == 5) x[1] = 5; if (x[1] == 1) x[0] = 1;
				if (x[0] == x[1]) return a[x[0]]
				return (x[0]?'РѕС‚ '+b[x[0]]:'')+(x[1]?' РґРѕ '+b[x[1]]:'')
			}
			st += '&lt;li&gt;&lt;a href="#reset/difficulty" title="СѓР±СЂР°С‚СЊ"&gt;'+_d(_params[x])+'&lt;/a&gt;&lt;/li&gt;'
		}
		if (_params[x='price'])
			st += '&lt;li&gt;&lt;a href="#reset/price" title="СѓР±СЂР°С‚СЊ"&gt;С†РµРЅР° '+_(x)+' СЂСѓР±.&lt;/a&gt;&lt;/li&gt;'
		if (_params[x='discount'])
			st += '&lt;li&gt;&lt;a href="#reset/price" title="СѓР±СЂР°С‚СЊ"&gt;СЃРєРёРґРєР° '+_(x)+' СЂСѓР±.&lt;/a&gt;&lt;/li&gt;'
		if (_params[x='age'])
			st += '&lt;li&gt;&lt;a href="#reset/age" title="СѓР±СЂР°С‚СЊ"&gt;РґР»СЏ РІРѕР·СЂР°СЃС‚Р° '+_(x)+' &lt;/a&gt;&lt;/li&gt;'
		if (_params[x='time'])
			st += '&lt;li&gt;&lt;a href="#reset/time" title="СѓР±СЂР°С‚СЊ"&gt;РІСЂРµРјСЏ РёРіСЂС‹ '+_(x)+' РјРёРЅ.&lt;/a&gt;&lt;/li&gt;'
		if (_params[x='only_games'])
			st += '&lt;li&gt;&lt;a href="#reset/only_games" title="СѓР±СЂР°С‚СЊ"&gt;РёСЃРєР°С‚СЊ С‚РѕР»СЊРєРѕ РІ РёРіСЂР°С…&lt;/a&gt;&lt;/li&gt;'

		for (i in _params.tag)
		{
			x = $('label[for="checkbox_tag_'+igroved_filter_datas.tag(i)+'"]')
			if (x.data('title')) x = x.data('title')
			else
				x = (x.html()||'РєР»СЋС‡РµРІРѕРµ СЃР»РѕРІРѕ').replace(/ [&lt;(].+/, '')
			st += '&lt;li&gt;&lt;a href="#reset/tag/'+i+'" title="СѓР±СЂР°С‚СЊ"&gt;'+x+'&lt;/a&gt;&lt;/li&gt;'
		}

		$('#mychoice ul#js-postload').html('');

		$.each(['manufacturer', 'author', 'illustrator', 'category'], function (i, x) {
			var titles = {category:'СЃРµСЂРёСЏ', manufacturer:'РїСЂРѕРёР·РІРѕРґРёС‚РµР»СЊ', author:'Р°РІС‚РѕСЂ', illustrator:'РёР»Р»СЋСЃС‚СЂР°С‚РѕСЂ'};
			if(_params[x]) {
				for (id in _params[x]) {
					var oid = id;
					if (x == 'manufacturer') id = igroved_filter_datas.manufacturer(id);
					if (x == 'author') id = igroved_filter_datas.author(id);
					if (x == 'illustrator') id = igroved_filter_datas.illustrator(id);
					if (x == 'category') id = igroved_filter_datas.category(id);

					var sss = _paramsData;
					if( !$('ul#js-postload [rel="' + x + id + '"]').is('li') &amp;&amp; _paramsData[x][igroved_filter_datas[x](id)]) {
						$('#mychoice ul#js-postload').append('&lt;li rel="' + x + id + '"&gt;&lt;a href="#reset/' + x + '/' + oid + '" title="СѓР±СЂР°С‚СЊ"&gt;' + titles[x] + ' ' + _paramsData[x][id]['name'] + '&lt;/a&gt;&lt;/li&gt;');
					}
				}
			}
		});

		var show_mychoice = false;

		if (st || $('#mychoice ul#js-postload').html()) {
			show_mychoice = true;
		}

		$('#mychoice ul#js-preload').html(st);
		$('#mychoice').toggle(show_mychoice);

		if (!show_mychoice) self.clear();
	}

	this.update_url = function()
	{
		var i, a = {}, x, y
		for (i in _params)
		if (/*typeof(_params[i][1]) != 'undefined' &amp;&amp;*/ (i == 'numPlayers' || i == 'difficulty' || i == 'time' || i == 'age' || i == 'price' || i == 'discount')) {
			a[i] = _params[i][0];
			if (_params[i][1]) a[i] = _params[i][0] + '-' + _params[i][1];
		} else {
			a[i] = _params[i];
		}


		if (a[y='numPlayers'])
		{
			x = a[y].split('-')
			if (!x[0]) { delete a[y]; a.maxPlayers = x[1] }
			if (!x[1]) { delete a[y]; a.minPlayers = x[0] }
		}

		if (a[y='difficulty'])
		{
			x = a[y].split('-')
			if (!x[0]) { delete a[y]; a.maxDifficulty = x[1] }
			if (!x[1]) { delete a[y]; a.minDifficulty = x[0] }
		}

		if (a[y='time'])
		{
			x = a[y].split('-')
			if (!x[0]) { delete a[y]; a.maxTime = x[1] }
			if (!x[1]) { delete a[y]; a.minTime = x[0] }
		}

		if (a[y='age'])
		{
			x = a[y].split('-')
			if (!x[0]) { delete a[y]; a.maxAge = x[1] }
			if (!x[1]) { delete a[y]; a.minAge = x[0] }
            $('#line_age_from').val(x[0]);
            $('#line_age_to').val(x[1]);
		}

		if (a[y='price'])
		{
			x = a[y].split('-')
			if (!x[0]) { delete a[y]; a.maxPrice = x[1] }
			if (!x[1]) { delete a[y]; a.minPrice = x[0] }
		}

		if (a[y='discount'])
		{
			x = a[y].split('-')
			if (!x[0]) { delete a[y]; a.maxDiscount = x[1] }
			if (!x[1]) { delete a[y]; a.minDiscount = x[0] }
		}

		$.each(['category', 'manufacturer', 'author', 'illustrator', 'tag'] , function (index, x) {
			if (_params[x])
			{
				a[x] = [];
				for (i in _params[x]) a[x].push(i);
				if (!a[x].length) delete a[x];
			}
		});

		if (_sort != 'rating-') a.sort = _sort
		if (_view != 'grid')    a.view = _view

		if(_is_search_page){
			$_GET.setPath('/search/')
			$_GET.set(a)
		}

		_requestUrl = a;

		correctPagination();




	}

	this.start = function(el)
	{
		self.filter_products()
		if (document.location.href.indexOf('preview') != -1) return
		self.show_product_count(el)
	}

	this.load = function(is_no_pause)
	{
		if (!$('.products').is('ul') || (!_is_search_page &amp;&amp; !$('#podborka').is('div'))) return
		if (_timerOnLoad) clearInterval(_timerOnLoad)
		_timerOnLoad = setTimeout(function(){
			//self.update_filter_options()
			// self.update_mychoice()
			self.resort()
			self.load_products()
		}, is_no_pause ? 1 : 800)
		return false
	}

	this.view = function(x)
	{
		$('.toolbar nav a').removeClass('active');
		$('a[href="'+x+'"]').addClass('active');
		x = x.replace('#', '')
		_view = x
		$('[name=view]').val(x=='grid'?undefined:x)
		self.update_url()
		_offset = 0
		self.load_products()
		return false
	}

	this.loadMore = function()
	{
		self.load_products()
		return false
	}

	this.loadAll = function()
	{
		_autoload = true
		self.loadMore()
		return false
	}
	this.scroll = function()
	{
		var el = $('.load-more')
		if (!_autoload) return false

		// РґРѕРєСЂСѓС‚РёР»Рё РґРѕ РЅРёР·Р°
		if ($(window).scrollTop() + $(window).height() &gt; $(document).height() - 500 &amp;&amp; parseInt(new Date().getTime() / 1000) &gt; _autoloaded_time + 1) {
			_autoloaded_time = parseInt(new Date().getTime() / 1000);
			self.loadMore();
		}

	}

	this.resort = function(x) {
		// _products = __products;
		if (!x) x = _sort; else _sort = x
		var desc  = x.indexOf('-') != -1
		var field = x.replace('-', '')
		_products.sort(function(x, y){
			if (desc) { var t = x; x = y; y = t }
			if (field == 'id') return x - y
			if (field == 'shortName') {
				if (igroved_filter_datas.products[x][field]) return igroved_filter_datas.products[x][field].localeCompare(igroved_filter_datas.products[y][field], 'en');
			}

			var x_val = igroved_filter_datas.products[x][field];
			var y_val = igroved_filter_datas.products[y][field];
			
			

			if ((field == 'minAge' || field == 'minTime' || field == 'minPlayers' || field == 'manufacturer' || field == 'illustrator' || field == 'author' || field == 'price' || field == 'publishDate'/* || field == 'rating'*/) &amp;&amp; !x_val) x_val = 999;
			// if (data.products[x]['tags'][111]) x_val = desc ? 1 : 999;
			// if (!data.products[x]['available_anywhere']) x_val = desc ? 1 : 999;
			// if (data.products[x]['is_preorder']) x_val = desc ? 1 : 999;


			if (x_val &gt; y_val) return 1;
			if (x_val &lt; y_val) return -1;

			return igroved_filter_datas.products[x]['shortName'].localeCompare(igroved_filter_datas.products[y]['shortName'], 'en');

			// return x_val - y_val;
		})
	}
	this.sort = function(x)
	{
		$('[name=sort]').val(x)
		self.update_url()
		self.resort(x)
		_offset = 0
		self.load_products()
		self.update_url();
	}

	this.clear = function()
	{
		_params = {}
		_offset = 0
		self.start()

		self.ion_clear('numPlayers')
		self.ion_clear('difficulty')
		self.ion_clear('time')
		self.ion_clear('age')
		self.ion_clear('price')
	}

	this.reset = function(x)
	{
		delete _params[x]
		$('[name=' + x + ']').trigger('selects_reset');
		self.update_url();
		self.load();
	}

	/** РїРѕР»РЅР°СЏ СЂРµРёРЅС†РёР°Р»РёР·Р°С†РёСЏ С„РёР»СЊС‚СЂР°, РµСЃР»Рё РѕРЅ РїСѓСЃС‚РѕР№ */
	this.resetEmpty = function()
	{
		for (var i in _params) return false; // С„РёР»СЊС‚СЂ РЅРµ РїСѓСЃС‚
		self.clear();
		return true;
	}

	this.ion_clear = function(name){
		e = $('[name='+name+']');
		var slider = e.data("ionRangeSlider");
		if (slider)
		{
			filter.reset(name)
			slider.update({from: slider.options.from_min, to: slider.options.to_max})
		}
		return false;
	}

	this.submit_init = function () {
		$('#js-filter').submit(function () {
			_is_search_page = true;
			$.when(
				self.update_url()
			).then(function () {
				setTimeout(function () {
					location.replace('/search/?' + $_GET.toString(_requestUrl));
				}, 500);
			});
			return false;
		});
	}

}

$(function($){

var _reset = function(e)
{
	var a = e.target.hash.split('/')
	var field = a[1];
	if (['tag', 'author', 'illustrator', 'manufacturer', 'category', 'only_games', 'discount'].indexOf(field) != -1) {
		var dom = '#checkbox_' + field + (a[2] ? '_' + igroved_filter_datas.tag(a[2]) : '');
		$(dom).prop('checked', false);
		$(dom).trigger('change');
		if ($(dom).attr('type') == 'hidden') {
			$('input[type="hidden"]' + dom).remove();
		}

	}
	else
	if (field == 'query')
	{
		$('input[name="query"]').val('');
		filter.reset('query')
	}
	else
	if (field == 'id')
		filter.reset(field)
	else
	if (field == 'available') {
        $('input[name="available"]:first').click()
	} else {
		$('input[name="' + field + '"]').val('');
        filter.reset(field);
	}

	$(e.target).hide();
	filter.update_mychoice();
	if (!filter.resetEmpty()) {
		filter.sort();
	}

	return false
}
$('body').on('click','#mychoice a[href*="#reset/"]', _reset)
$('body').on('click','a.reset-btn', function(e){ e.preventDefault(); filter.ion_clear($(this).prop('href').replace(/.+_/, '')) })
$('body').on('click','a.reset-all', function(e){
	location.replace('/search/');
	return false;
	e.preventDefault()
	$('#mychoice ul a').each(function(i, el){ _reset({target: el}) })
	filter.resetEmpty()
})
	$(document).scroll(function () {
		// filter.scroll();
	});


})

function correctPagination() {
	var cp_search = location.search.substring(1);
	if (!cp_search) return;
	var spath = location.pathname;
	var ssearch = JSON.parse('{"' + cp_search.replace(/&amp;/g, '","').replace(/=/g,'":"') + '"}', function(key, value) { return key===""?value:decodeURIComponent(value) });

	var search_str = '';

	$.each(ssearch, function(k, v) {
		if (k != 'page') {
			if (search_str) search_str = search_str + '&amp;';
			search_str = search_str + k + '=' + v;
		}
	});

	$('.pagination .page-link').each(function(){
		var href = spath;
		if (search_str)  {
			href = href + '?' + search_str;
			var curhref = $(this).attr('href');
			if (curhref.includes('?page=') || curhref.includes('&amp;page=') ) {
				var cur_search = curhref.split('?')[1];
				var cur = JSON.parse('{"' + cur_search.replace(/&amp;/g, '","').replace(/=/g,'":"') + '"}', function(key, value) { return key===""?value:decodeURIComponent(value) });
				if (typeof cur.page !== "undefined" ) {
					href = href + '&amp;page=' + cur.page;
				}
			}
		}
		$(this).attr('href', href);
	});
}</pre></body></html>