var firstLoad = true;

$.extend({
		getUrlVars : function () {
			var vars = new Object(),
			hash;
			if(window.location.hash != '') var windowLoactionCross = window.location.hash.slice(1);
			else var windowLoactionCross = window.location.href;
			
			if(windowLoactionCross.indexOf('?') == -1) return false;
			
			var hashes = windowLoactionCross.slice(windowLoactionCross.indexOf('?') + 1);
			if(hashes == '') return false;
			else hashes = hashes.split('&');

			
			for (var i = 0; i < hashes.length; i++) {
				hash = hashes[i].split('=');
				vars[hash[0]] = hash[1];
			}
			return vars;
		},
		getUrlVar : function (name) {
			return $.getUrlVars()[name];
		}
	});

var all = function (array) {
	var deferred = $.Deferred();
	var fulfilled = 0,
	length = array.length;
	var results = [];
	
	if (length === 0) {
		deferred.resolve(results);
	} else {
		$.each(array, function (i, promise) {
				$.when(promise()).then(function (value) {
						results[i] = value;
						fulfilled++;
						if (fulfilled === length) {
							deferred.resolve(results);
						}
					});
			});
	}
	
	return deferred.promise();
};

$(window).bind('popstate', function (e) {
		if (!firstLoad && location.pathname == '/')
			window.location.href = siteUrl;
		if (!firstLoad)
			ajaxNav();
	});
	
$(document).ready(function () {
		animateBgLoad();
		getJSONmenu();
		collapseBlocks();
		bindSearchLink();
		$('body').click(function () {
				firstLoad = false;
				$('body').unbind('click');
			});

$(window).hashchange(function() {
		if((window.location.hash == '' || window.location.href == '#/' || window.location.href == '#') && window.location.pathname == '/') window.location.href = siteUrl;
		ajaxNav();
	});
	
	//////////////////////////////////////
	
	$('.dropdown_btn').click(function(){
		var ind = $('.dropdown_btn').index(this);
		$('.dropdown:eq('+ind+')').fadeToggle();
	})
	
	//////////////////////////////////////	
});

function collapseBlocks() {
	var collBlock = [];
	var collHead = [];
	var i = 0;
	while ($('span.collapsible').length != 0) {
		var elem = $('span.collapsible:first');
		elem.removeClass('collapsible');
		collBlock.push($('<div class="cCont" />'));
		var blocksToAppend = [];
		var bParent = elem.parent();
		while (bParent.next('p').has('span.collapsible').length != 0) {
			blocksToAppend.push(bParent.next('p').has('span.collapsible').children('span').html());
			bParent.next('p').has('span.collapsible').remove();
		}
		if (elem.parent().get(0).tagName == 'H3') {
			collBlock[i].append('<div><p>' + blocksToAppend.join('</p><p>') + '</p></div>');
			elem.parent().replaceWith(collBlock[i]);
			collHead.push($('<h3/>'));
			collHead[i].append(elem.html());
			collBlock[i].before(collHead[i]);
			collBlock[i].css('overflow', 'hidden').height(0);
			collHead[i].css('cursor', 'pointer').css('color', '#00E').click(function (e) {
					var cCollBlock = $(this).next('div.cCont');
					cCollBlock.stop();
					if (cCollBlock.height() == 0)
						var newHeight = cCollBlock.children('div').height();
					else
						var newHeight = 0;
					cCollBlock.animate({
							height : newHeight + 'px'
						}, 300);
				});
		} else {
			collBlock[i].append('<div><p>' + elem.html() + '</p><p>' + blocksToAppend.join('</p><p>') + '</p></div>');
			elem.parent().replaceWith(collBlock[i]);
			collHead.push($('<a href="#">Подробнее...</a>'));
			collBlock[i].after(collHead[i]);
			collBlock[i].css('overflow', 'hidden').height(0);
			collHead[i].css('cursor', 'pointer').click(function (e) {
					e.preventDefault();
					var cCollBlock = $(this).prev('div.cCont');
					cCollBlock.stop();
					if (cCollBlock.height() == 0) {
						var newHeight = cCollBlock.children('div').height();
						$(this).text('Свернуть');
					} else {
						var newHeight = 0;
						$(this).text('Подробнее...');
					}
					cCollBlock.animate({
							height : newHeight + 'px'
						}, 300);
					return false;
				});
		}
		
		i++;
	}
}

function bindSearchLink() {
	$('.catSearchLink').unbind();
	$('.catSearchLink').click(function (e) {
			firstLoad = false;
			if (e.which != 2) {
				$('#on_off').addClass('on_off_on');
				crossPushState('catalogue/search');
				if ($.data(document.body, 'catalogue-antenny') === undefined) {
					$.getJSON('/data/catalogue/catalogues/antenny/catalogue.json')
					.success(function (jCatData) {
							$.data(document.body, 'catalogue-antenny', jCatData);
							showSearchForm();
						})
				} else
					showSearchForm();
				e.preventDefault();
				$('.catSearchLink').unbind();
				$('.catSearchLink').click(function () {
						e.preventDefault();
						window.history.back(-1);
						bindSearchLink();
						return false;
					});
				return false;
			}
		});
}

function initSlideMenu() {
	var myMenu;
	myMenu = new SDMenu("my_menu");
	myMenu.init();
	myMenu.collapseAll();
}

function getJSONmenu() {
	var retarr = null;
	$('.left_menu').html('<div class="sdmenu" id="my_menu"></div>');
	var catalogues = null;
	$.getJSON('/data/catalogue/index.json')
	.success(function (cdata) {
			$.data(document.body, 'cIndex', cdata);
			eachCatalogue(cdata);
		})
	.error(function () {
			// делаем что-нибудь если запрос провалился
		});
	return true;
}

function eachCatalogue(cdata) {
	var promises = [];
	var menuArr = [];
	$.each(cdata.catalogues, function (catId, catalogue) {
			promises.push(function () {
					return $.Deferred(function (dfd) {
							$.getJSON('/data/catalogue/catalogues/' + catalogue.alias + '/dictionary.json')
							.success(function (dictionary) {
									$.data(document.body, 'dictionary-' + catalogue.alias, dictionary);
									menuArr[catId] = '';
									
									if (dictionary !== null) {
										$.each(dictionary.categories, function (categoryId, category) {
												if (category.subcategories !== undefined) {
													menuArr[catId] += '<div id="ct' + catId + '_' + categoryId + '"><span class="menu_1"><p class="menu1itemImg category_' + catId + '_' + categoryId + '">&nbsp;</p><span class="left_menu_span2"><span class="grey" style="text-transform: uppercase;">' + category.name + '</span></span></span>';
													$.each(category.subcategories, function (subcategoryId, subcategory) {
															menuArr[catId] += '<a href="' + siteUrl + 'catalogue/' + catalogue.alias + '/' + categoryId + '/' + subcategoryId + '" class="sct sdSubmenu" alt="' + catalogue.alias + '/' + categoryId + '/' + subcategoryId + '">' + subcategory + '</a>';
														});
													menuArr[catId] += '</div>';
												} else
													menuArr[catId] += '<a class="sct" href="' + siteUrl + 'catalogue/' + catalogue.alias + '/' + categoryId + '/0" alt="' + catalogue.alias + '/' + categoryId + '/0" ><div id="ct' + catId + '_' + categoryId + '"><span class="menu_1"><p class="menu1itemImg category_' + catId + '_' + categoryId + '">&nbsp;</p><span class="left_menu_span2"><span class="grey" style="text-transform: uppercase;" >' + category.name + '</span></span></span></div	></a>';
											});
									}
									
									dfd.resolve(dictionary);
								})
							.error(function () {
									// делаем что-нибудь если запрос провалился
								});
						}).promise();
				});
		});
	var retarr = null;
	$.when(all(promises)).then(function (results) {
			$('#my_menu').append(menuArr.join(' '));
			$('.sct').click(function (e) {
					if (e.which != 2) {
						tTinkPath = $(this).attr('alt').split('/');
						runSubCat(tTinkPath[0], tTinkPath[1], tTinkPath[2]);
						return false;
					}
				});
			initSlideMenu();
			ajaxNav();
			$.data(document.body, 'popstateChanged', 'true');
			$('#bg_volna_container').stop();
		});
	
}

function runSubCat(alias, categoryId, subcategoryId) {
	getSubCat(alias, categoryId, subcategoryId);
}

function getSubCat(alias, categoryId, subcategoryId) {
	var dictionary = $.data(document.body, 'dictionary-' + alias);
	crossPushState('catalogue/' + alias + '/' + categoryId + '/' + subcategoryId);
	if ($.data(document.body, 'catalogue-' + alias) !== undefined)
		displaySubCat(alias, categoryId, subcategoryId);
	else {
		$.getJSON('/data/catalogue/catalogues/' + alias + '/catalogue.json')
		.success(function (jCatData) {
				$.data(document.body, 'catalogue-' + alias, jCatData);
				displaySubCat(alias, categoryId, subcategoryId);
			})
		.error(function () {
				// делаем что-нибудь если запрос провалился
			});
	}
}

function pathOrHash() {
	var retArr =  [null, null];
	var re = {
		//subcat: /^\/catalogue\/[a-zA-Z]*\/[0-9]*\/[0-9]*[\/]?$/,
		//subcatpaged: /^\/catalogue\/[a-zA-Z]*\/[0-9]*\/[0-9]*\/page(\/[0-9]*)?[\/]?$/,
		subcatpaged: /^\/catalogue\/[a-zA-Z]*\/[0-9]*\/(([0-9]*)|(all))(\/page(\/[0-9]*)?)?[\/]?$/,
		catitem: /^\/catalogue\/[a-zA-Z]*\/[0-9]*\/[0-9]*\/[0-9]*[\/]?$/,
		searchform: /^\/catalogue\/search[\/]?$/,
		searchresults: /^\/catalogue\/search\/results(\/page(\/[0-9]*)?)?/
	}
	$.each(re, function(caseName, regexpr) {
		if(regexpr.test(location.hash.slice(1))) { 
			retArr = [location.hash.slice(1), caseName];
			return false;
		}
	});
	if(retArr[0] == null) {
		$.each(re, function(caseName, regexpr) {	
			if(regexpr.test(location.pathname))	retArr = [location.pathname, caseName];
		});
	}
	return retArr;
}

function ajaxNav() {
	var navPath = pathOrHash();
	//catitem
	if (navPath[1] == 'catitem') {
		pathArr = navPath[0].split('/');
		if ($.data(document.body, 'catalogue-' + pathArr[2]) === undefined) {
			$.getJSON('/data/catalogue/catalogues/' + pathArr[2] + '/catalogue.json')
			.success(function (jCatData) {
					$.data(document.body, 'catalogue-' + pathArr[2], jCatData);
					showCatItem(pathArr[2], pathArr[3], pathArr[4], pathArr[5]);
				})
		} else
			showCatItem(pathArr[2], pathArr[3], pathArr[4], pathArr[5]);
	}
	//searchresults
	else if (navPath[1] == 'searchresults') {
		var paramsToMatch = $.getUrlVars();
		pathArr = navPath[0].split('/');
		var currPage = pathArr[5] == undefined ? 0 : pathArr[5];
		
		if ($.data(document.body, 'catalogue-antenny') === undefined) {
			$.getJSON('/data/catalogue/catalogues/antenny/catalogue.json')
			.success(function (jCatData) {
					$.data(document.body, 'catalogue-antenny', jCatData);
					searchByParams(paramsToMatch, currPage);
				})
		} else
			searchByParams(paramsToMatch, currPage);
	}
	//subcat
	else if (navPath[1] == 'subcat') {
		pathArr = navPath[0].split('/');
		if ($.data(document.body, 'catalogue-' + pathArr[2]) === undefined) {
			$.getJSON('/data/catalogue/catalogues/' + pathArr[2] + '/catalogue.json')
			.success(function (jCatData) {
					$.data(document.body, 'catalogue-' + pathArr[2], jCatData);
					displaySubCat(pathArr[2], pathArr[3], pathArr[4]);
				})
		} else
			displaySubCat(pathArr[2], pathArr[3], pathArr[4]);
	}
	//subcatpaged
	else if (navPath[1] == 'subcatpaged') {
		pathArr = navPath[0].split('/');
		var currPage = pathArr[6] == undefined ? 0 : pathArr[6];
		if ($.data(document.body, 'catalogue-' + pathArr[2]) === undefined) {
			$.getJSON('/data/catalogue/catalogues/' + pathArr[2] + '/catalogue.json')
			.success(function (jCatData) {
					$.data(document.body, 'catalogue-' + pathArr[2], jCatData);
					displaySubCat(pathArr[2], pathArr[3], pathArr[4], currPage);
				})
		} else
			displaySubCat(pathArr[2], pathArr[3], pathArr[4], currPage);
	}
	//searchform
	else if (navPath[1] == 'searchform') {
		if ($.data(document.body, 'catalogue-antenny') === undefined) {
			$.getJSON('/data/catalogue/catalogues/antenny/catalogue.json')
			.success(function (jCatData) {
					$.data(document.body, 'catalogue-antenny', jCatData);
					showSearchForm();
				})
		} else
			showSearchForm();
	}
	
		
}

function animateBgLoad() {
	var bgPos = $('#bg_volna_container').css('background-position');
	if (bgPos == undefined || bgPos == null)  bgPos = $('#bg_volna_container').css("background-position-x");
	bgPos = bgPos.split('px');
	bgPos = parseInt(bgPos[0]);
	var gifWidth = 2258;
	var speed = 0.3;
	var sLeft = gifWidth + bgPos;
	var time = sLeft / speed;
	$('#bg_volna_container').animate({
			backgroundPosition : '-' + gifWidth + 'px 0px'
		}, time, function () {
			$('#bg_volna_container').css('background-position', '0px 0px');
			animateBgLoad();
		});
}

function loadingDiv() {
	
	if (location.pathname != '/catalogue/search') {
		$('#on_off').removeClass('on_off_on');
		bindSearchLink();
	}
	
	var dfd = $.Deferred();
	
	dfd.done(function () {
			$('#bg_volna_container').stop();
			animateBgLoad();
		});
	$('p.zag1').animate({
			opacity : 0
		}, 100, function () {
			$(this).html('Загрузка...');
			$(this).animate({
					opacity : 1
				}, 100);
		});
	$('#page_content_div').animate({
			opacity : 0
		}, 300, dfd.resolve);
	
	return dfd.promise();
}

function displaySubCat(alias, categoryId, subcategoryId, pageNum) {
	var promises = [];
	var resultArray = [];
	var iArr = [];
	var i = 0;
	
	var cCategory = $.data(document.body, 'dictionary-' + alias).categories[categoryId];
	if (cCategory.subcategories !== undefined && subcategoryId != 'all')
		var cSubCategory = cCategory.subcategories[subcategoryId];
	else
		var cSubCategory = '';
	
	if(pageNum == undefined) var pageNum = 0;
	function pagedView(pageNum, itmid) {
		if(pageNum == undefined) return true;
		else {
			var perPage = 10;
			var pOffset = pageNum * perPage;
			var pPimit = pOffset + perPage;
			if (itmid >= pOffset && itmid < pPimit) return true;
			else return false;
		}
	}
	
	var itemsInCat = 0;
	$.each($.data(document.body, 'catalogue-' + alias), function (key, item) {
			if (((subcategoryId == 'all' && item.category == categoryId) || (item.category == categoryId && item.subcategory == subcategoryId)) && pagedView(pageNum, itemsInCat)) {
				iArr[key] = i;
				i++;
				promises.push(function () {
						return $.Deferred(function (dfd) {
								if (item.images === undefined)
									item.images = [{
											image : 'error404.png'
										}
									];
									resultArray[iArr[key]] = '<div class="item_block_new"><div class="item_b_image_small"><a href="' + siteUrl + 'catalogue/' + alias + '/' + categoryId + '/' + subcategoryId + '/' + key + '" class="cat_it_link item_b_image_small" alt="' + key + '"><img src="' + siteUrl + 'img/w130-h110/data/catalogue/files/' + item.images[0].image + '" alt="" /></a></div><div class="item_block_new_descr"><a href="' + siteUrl + 'catalogue/' + alias + '/' + categoryId + '/' + subcategoryId + '/' + key + '" alt="' + key + '"class="cat_it_link item_block_new_descr_title">' + item.title + '</a>'+uselessTable(alias, item.params)+'<p class="descr">' + item.description + '</p>';
									
									if(item.images.length > 1) {
										resultArray[iArr[key]] += '<p class="upak_vars"><br />ВАРИАНТЫ УПАКОВКИ: ';
										var imgVariants = [];
										$.each(item.images, function(imgIndex, imgObj) {
											if(imgObj.name != undefined && imgObj.name != '') imgVariants.push(imgObj.name);
											else imgVariants.push('вариант '+(imgIndex+1));
										});
										resultArray[iArr[key]] += imgVariants.join(', ')+'</p>';
									}
									
									resultArray[iArr[key]] += ' </p></div><div class="clear"></div></div>';
									
									dfd.resolve(item.images);
							}).promise();
					});
				itemsInCat++;
			}
			else if((subcategoryId == 'all' && item.category == categoryId) || (item.category == categoryId && item.subcategory == subcategoryId)) itemsInCat++;
			
			
		});
	
	$.when(all(promises), loadingDiv()).then(function (results) {
			if(pageNum != undefined) {
				var perPage = 10;
				var pagesCount = Math.ceil(itemsInCat / perPage);
				if(pagesCount === 1) var paginator = '';
				else {
					var j = 0;
					var paginator = [];
					while(j < pagesCount) {
						if(pageNum == j) var activeclass = ' active';
						else activeclass = '';
						paginator.push('<a href="' + siteUrl + 'catalogue/' + alias + '/' + categoryId + '/' + subcategoryId + '/page/' + j +'" class="subcatPageNav'+activeclass+'" alt="'+j+'">'+(j+1)+'</a>');
						j++;
					}
					paginator = paginator.join(' | ');
					paginator = '<br /><div class="line"></div><span class="subcatPager">' + paginator + '</span><div class="line"></div><br />';
				}
			}
			else var paginator = '';
	
			$('#page_content_div').html('');
			$('#page_content_div')
				.append(paginator)
				.append(resultArray.join('<br /><div class="line"></div><br />'))
				.append(paginator);
			$('p.zag1').stop().animate({
					opacity : 0
				}, 100, function () {
					if (cSubCategory != '')
						slashsh = ' / ';
					else
						slashsh = ' ';
					$(this).html(cCategory.name + slashsh + cSubCategory + uselessTable(alias, 'head') + '<div class="clear"></div>');
					$(this).animate({
							opacity : 1
						}, 100);
				});
			$('#page_content_div').animate({
					opacity : 1
				}, 500, function () {
					$('#bg_volna_container').stop();
				});
			$('.cat_it_link').click(function (e) {
					if (e.which != 2) {
						itemId = $(this).attr('alt');
						getCatItem(alias, categoryId, subcategoryId, itemId);
						e.preventDefault();
						return false;
					}
				});
				
			$('.subcatPageNav').click(function (e) {
				if (e.which != 2) {
					e.preventDefault();
					crossPushState('catalogue/' + alias + '/' + categoryId + '/' + subcategoryId + '/page/' + $(this).attr('alt'));
					displaySubCat(alias, categoryId, subcategoryId, $(this).attr('alt'));
					return false;
				}
			});
			
		});
}

function uselessTable(alias, params) {
	if(params == 'head' && alias == 'antenny') {
			var val1 = 'Коэффицент<br/>усиления, дБ';
			var val2 = 'Дальность<br/>приема, км';
		}
	else if(alias != 'antenny' || params == undefined || (params[39] == undefined && params[40] == undefined)) return '';
	else {
		var val1 = params[39] == undefined ? '—' : params[39];
		var val2 = params[40] == undefined ? '—' : params[40];
	}	
	return '<table class="useless_table"><tr><td>'+val1+'</td><td>'+val2+'</td></tr></table>';
	
}

function getCatItem(alias, categoryId, subcategoryId, itemId) {
	crossPushState('catalogue/' + alias + '/' + categoryId + '/' + subcategoryId + '/' + itemId);
	showCatItem(alias, categoryId, subcategoryId, itemId);
}

function showCatItem(alias, categoryId, subcategoryId, itemId) {
	var currCat = $.data(document.body, 'catalogue-' + alias);
	var cDictionary = $.data(document.body, 'dictionary-' + alias);
	var cCategory = cDictionary.categories[categoryId];
	if (cCategory.subcategories !== undefined)
		var cSubCategory = cCategory.subcategories[subcategoryId];
	else
		var cSubCategory = '';
	var item = currCat[itemId];
	
	$.when(loadingDiv()).then(function () {
			$('#page_content_div').html('');
			$('p.zag1').animate({
					opacity : 0
				}, 100, function () {
					$(this).html(item.title);
					$(this).animate({
							opacity : 1
						}, 100);
				});
			$.post(siteUrl + 'plugins/JSON_catalogue/ajax/check_img.php', {
					filename : item.images[0].image
				}, function (data) {
					data = $.parseJSON(data);
					$('#page_content_div').append(
						'<div class="img_tov2"><img src="' + siteUrl + 'img/w600-h190/data/catalogue/files/' + data['ufn'] + '" alt="" /></div>' +
						'<div class="grey_block2"><div class="gb_left"><p class="gb_p1">модель</p><p class="gb_p2_2">' + item.title + '</p></div><div class="gb_right"></div><div class="clear"></div></div>' +
						'<br /><div class="gb_left2"><p class="zag1"></p></div>');
					
					ftParams = [];
					if (item.params !== undefined) {
						
						$.each(item.params, function (pkey, pval) {
								if (pval == '1')
									$('div.gb_left2').children('p.zag1').append(cDictionary.params[pkey] + '<br />');
								else
									ftParams.push({
											pkey : pkey,
											pval : pval
										});
							});
						$('#page_content_div').append(
							'<div class="clear"></div><br /><div class="line"></div>');
					}
					$('#page_content_div').append(
						'<div class="text_box2"><br /><p class="tov_p1"></p><br /><div class="line"></div><br /><p class="text2">' + item.description + '</p> </div>');
					$.each(ftParams, function (ftkey, ftval) {
							$('div.text_box2').children('p.tov_p1').append(cDictionary.params[ftval.pkey] + ': ' + ftval.pval + '<br />');
						})
					$('#page_content_div').animate({
							opacity : 1
						}, 300);
				});
			$('#bg_volna_container').stop();
		});
}

function showSearchForm() {
	$('#on_off').addClass('on_off_on');
	var cDictionary = $.data(document.body, 'dictionary-antenny');
	var cCatalogue = $.data(document.body, 'catalogue-antenny');
	var cGroups = cDictionary.groups;
	var cParams = cDictionary.params;
	var output = [];
	$.each(cGroups, function (grId, group) {
			switch (group.type) {
			case 'select':
				output.push('<select class="styled" name="select' + grId + '">');
				output.push('<option selected="selected" value="">' + group.name + '</option>');
				$.each(group.params, function (pKey, paramId) {
						output.push('<option value="' + paramId + '">' + cParams[paramId] + '</option>');
					});
				output.push('</select>');
				break;
			case 'checkbox':
				output.push('<div class="checkboxGroup"><h3>' + group.name + '</h3>');
				$.each(group.params, function (pKey, paramId) {
						output.push('<p><input type="checkbox" name="checkbox' + paramId + '" value="' + paramId + '" class="styled" /> ' + cParams[paramId] + '</p>');
					});
				output.push('</div>');
				break;
			case 'slider':
				output.push('<div class="cSliderContainer" alt="' + group.params[0] + '"><h3>' + group.name + '</h3>' +
					'<input type="text" class="amount_min" name="slide' + group.params[0] + 'min"/><input type="text" class="amount_max" name="slide' + group.params[0] + 'max"/>');
				output.push('<div class="cSlider" id="slider' + grId + '" ></div></div>');
				break;
			}
		});
	output = output.join(' ');
	
	$.when(loadingDiv()).then(function () {
			$('#page_content_div').html(output).promise().done(Custom.init).done(function () {
					$('div.cSliderContainer:first').before('<div style="clear:both"></div>');
					$('input, select').change(function () {
							defCapableParams(cCatalogue);
						});
					$('span.checkbox').mouseup(function () {
							defCapableParams(cCatalogue);
						});
				});
			$('.cSlider').each(function (index) {
					////find min and max for sliders
					var min = false;
					var max = false;
					var paramId = $(this).parent().attr('alt');
					$.each(cCatalogue, function (itemId, item) {
							if (item.params[paramId] !== undefined && (min === false || parseInt(item.params[paramId]) < min))
								min = parseInt(item.params[paramId]);
							if (item.params[paramId] !== undefined && (max === false || parseInt(item.params[paramId]) > max))
								max = parseInt(item.params[paramId]);
						});
					
					///////////////////////////////
					
					$(this).slider({
							min : min,
							max : max,
							values : [min, max],
							range : true,
							animate : 'normal',
							slide : function (event, ui) {
								$(this).siblings(".amount_min").val(ui.values[0]);
								$(this).siblings(".amount_max").val(ui.values[1]);
								$(this).siblings(".amount_min").trigger('change');
							}
						});
					$(this).siblings(".amount_min").val($(this).slider("values", 0)).attr('default', $(this).slider("values", 0));
					$(this).siblings(".amount_max").val($(this).slider("values", 1)).attr('default', $(this).slider("values", 1)); ;
				});
			$('#page_content_div').append('<button id="searchParamsButton">Найти</button><div id="searchResult"></div>');
			$('#searchParamsButton').click(function (e) {
					e.preventDefault();
					getParamsToSearch(true);
					return false;
				});
			$('#page_content_div').animate({
					opacity : 1
				}, 300);
			$('p.zag1').html('Тип антенны');
			$('#bg_volna_container').stop();
		});
}

function getParamsToSearch(startsearch) {
	var cDictionary = $.data(document.body, 'dictionary-antenny');
	var cCatalogue = $.data(document.body, 'catalogue-antenny');
	var cGroups = cDictionary.groups;
	var cParams = cDictionary.params;
	var paramsToMatch = new Object();
	var getSearchString = [];
	
	$.each(cGroups, function (grId, group) {
			switch (group.type) {
			case 'select':
				var currVal = $('select[name="select' + grId + '"]').val();
				if (currVal !== "") {
					paramsToMatch[currVal] = 1;
					getSearchString.push(currVal + '=' + 1);
				}
				break;
			case 'checkbox':
				$.each(group.params, function (pKey, paramId) {
						var currVal = $('input[name="checkbox' + paramId + '"]').attr('checked');
						if (currVal !== undefined) {
							paramsToMatch[paramId] = 1;
							getSearchString.push(paramId + '=' + 1);
						}
					});
				break;
			case 'slider':
				var fieldMin = $('input[name="slide' + group.params[0] + 'min"]');
				var fieldMax = $('input[name="slide' + group.params[0] + 'max"]');
				if (fieldMin.val() != fieldMin.attr('default') || fieldMax.val() != fieldMax.attr('default')) {
					paramsToMatch[group.params[0]] = [];
					paramsToMatch[group.params[0]]['min'] = fieldMin.val();
					paramsToMatch[group.params[0]]['max'] = fieldMax.val();
					getSearchString.push(group.params[0] + 'min=' + fieldMin.val());
					getSearchString.push(group.params[0] + 'max=' + fieldMax.val());
				}
				break;
			}
		});
	if (startsearch) {
		crossPushState('catalogue/search/results?' + getSearchString.join('&'));
		searchByParams(paramsToMatch);
	} else
		return paramsToMatch;
}

function searchByParams(paramsToMatch, pageNum) {
	var cDictionary = $.data(document.body, 'dictionary-antenny');
	var cCatalogue = $.data(document.body, 'catalogue-antenny');
	var cGroups = cDictionary.groups;
	var cParams = cDictionary.params;
	
	var matchedItems = new Object();	
	$.each(cCatalogue, function (itemId, item) {
			var isMatch = true;
			if (!$.isEmptyObject(paramsToMatch)) {
				$.each(paramsToMatch, function (paramId, paramVal) {
						if (paramVal != undefined && paramVal.constructor == Array) {
							if (item.params[paramId] === undefined || parseInt(item.params[paramId]) < parseInt(paramVal['min']) || parseInt(item.params[paramId]) > parseInt(paramVal['max'])) {
								isMatch = false;
								return false;
							}
						} else {
							if (item.params[paramId] === undefined || item.params[paramId] != paramVal) {
								isMatch = false;
								return false;
							}
						}
						
					});
			}
			if (isMatch === true) {
				matchedItems[itemId] = item;
			}
		});
		
	var promises = [];
	var resultArray = [];
	var iArr = [];
	var i = 0;
	
	if(pageNum == undefined) var pageNum = 0;
	function pagedView(pageNum, itmid) {
		if(pageNum == undefined) return true;
		else {
			var perPage = 10;
			var pOffset = pageNum * perPage;
			var pPimit = pOffset + perPage;
			if (itmid >= pOffset && itmid < pPimit) return true;
			else return false;
		}
	}
	var itemsInCat = 0;	
	
	if (!$.isEmptyObject(matchedItems)) {
		$.each(matchedItems, function (key, item) {
			if (pagedView(pageNum, itemsInCat)) {	
				iArr[key] = i;
				i++;
				promises.push(function () {
						return $.Deferred(function (dfd) {
								if (item.images === undefined)
									item.images = [{
											image : 'error404.png'
										}
									];
									resultArray[iArr[key]] = '<div class="item_block_new"><div class="item_b_image_small"><a href="' + siteUrl + 'catalogue/antenny/' + item.category + '/' + item.subcategory + '/' + key + '" class="cat_it_link item_b_image_small" alt="' +  item.category+'/'+item.subcategory+'/'+key + '"><img src="' + siteUrl + 'img/w130-h110/data/catalogue/files/' + item.images[0].image + '" alt="" /></a></div><div class="item_block_new_descr">	<a href="' + siteUrl + 'catalogue/antenny/' + item.category + '/' + item.subcategory + '/' + key + '" alt="' +  item.category+'/'+item.subcategory+'/'+key + '"class="cat_it_link item_block_new_descr_title">' + item.title + '</a>'+uselessTable('antenny', item.params)+'<p class="descr">' + item.description + '</p>';
									
									if(item.images.length > 1) {
										resultArray[iArr[key]] += '<p class="upak_vars"><br />ВАРИАНТЫ УПАКОВКИ: ';
										var imgVariants = [];
										$.each(item.images, function(imgIndex, imgObj) {
											if(imgObj.name != undefined && imgObj.name != '') imgVariants.push(imgObj.name);
											else imgVariants.push('вариант '+(imgIndex+1));
										});
										resultArray[iArr[key]] += imgVariants.join(', ')+'</p>';
									}
									
									resultArray[iArr[key]] += ' </p></div><div class="clear"></div></div>';
									
									dfd.resolve(item.images);
							}).promise();
					});
				
			}
			itemsInCat++;
			});
		
		$.when(all(promises), loadingDiv()).then(function (results) {
			var getVarParams = window.location.href.split('?')[1];
			
			if(pageNum != undefined) {
				var perPage = 10;
				var pagesCount = Math.ceil(itemsInCat / perPage);
				if(pagesCount === 1) var paginator = '';
				else {
					var j = 0;
					var paginator = [];
					while(j < pagesCount) {
						if(pageNum == j) var activeclass = ' active';
						else activeclass = '';
						paginator.push('<a href="/catalogue/search/results/page/' + j +'/?'+getVarParams+'" class="subcatPageNav'+activeclass+'" alt="'+j+'">'+(j+1)+'</a>');
						j++;
					}
					paginator = paginator.join(' | ');
					paginator = '<br /><div class="line"></div><span class="subcatPager">' + paginator + '</span><div class="line"></div><br />';
				}
			}
			else var paginator = '';
			
			
				$('#page_content_div').html('');
				$('#page_content_div')
					.append(paginator)
					.append(resultArray.join('<br /><div class="line"></div><br />'))
					.append(paginator);				
				$('#page_content_div').animate({
						opacity : 1
					}, 500, function () {});
				
				$('p.zag1').stop();
				$('p.zag1').animate({
						opacity : 0
					}, 100, function () {
						$(this).html('Результаты поиска:'  + uselessTable('antenny', 'head') + '<div class="clear"></div>');
						$(this).animate({
								opacity : 1
							}, 100, function () {
								$('#bg_volna_container').stop();
							});
					});
					
				$('.cat_it_link').click(function (e) {
					if (e.which != 2) {
						e.preventDefault();
						itemId = $(this).attr('alt').split('/');
						getCatItem('antenny', itemId[0], itemId[1], itemId[2]);
						return false;
					}
				});
				
			$('.subcatPageNav').click(function (e) {
				if (e.which != 2) {
					e.preventDefault();
					crossPushState('catalogue/search/results/page/' + $(this).attr('alt') +'/?'+getVarParams);
					searchByParams(paramsToMatch, $(this).attr('alt'));
					return false;
					}
				});
				
			});
	} else {
		$('p.zag1').html('Результаты поиска:');
		$('#page_content_div').html('<h3>По вашему запросу ничего не найдено</h3>');
	}
}

function defCapableParams(catalogue) {
	var params = getParamsToSearch(false);
	if ($.isEmptyObject(params)) {
		$('span.checkbox').css('visibility', 'visible');
		$('span.checkbox').parent('p').css('opacity', '1');
		$("option").removeAttr('disabled');
		return false;
	}
	
	var capParams = $.extend({}, params);
	$.each(catalogue, function (id, item) {
			if (item.params !== undefined && !$.isEmptyObject(item.params)) {
				var hasCap = true;
				$.each(params, function (pid, pval) {
						if (item.params[pid] === undefined/*|| parseInt(item.params[pid]) !== parseInt(pval) ** строгий поик ** */)
							hasCap = false;
					});
				if (hasCap)
					$.extend(capParams, item.params);
			}
		});
	makeUnactive(capParams);
}

function makeUnactive(capParams) {
	$('span.checkbox').css('visibility', 'hidden');
	$('span.checkbox').parent('p').css('opacity', '0.3').css('position', 'relative');
	$("option").attr('disabled', 'disabled');
	$("option[value='']").removeAttr('disabled');
	$.each(capParams, function (pid, pval) {
			$("input[name='checkbox" + pid + "']").siblings('span').css('visibility', 'visible');
			$("input[name='checkbox" + pid + "']").parent('p').css('opacity', '1');
			$("option[value='" + pid + "']").removeAttr('disabled');
		});
}

function crossPushState(urlToPush) {
	if (typeof(window.history.pushState) == 'function')
		history.pushState(null, null, siteUrl + urlToPush);
	else window.location.hash = '/'+urlToPush;
}
