var lsFilterClass = new Class({
	
	settings: function(oFilterDescriptionSelect) {
		//Берём ячейку, в которой расположен фильтр
		var oFilterColumn = $(oFilterDescriptionSelect).getParent('.filterColumn');
		
		//Прячем краткое описание текущих настроек фильтра
		oFilterColumn.getElement('.filterDescription').setStyle('display','none');
		
		//Показываем настройки фильтра
		oFilterColumn.getElement('.filterSettings').setStyle('display','');
	},
	
	add: function(oFilterButton) {
		//Берём текущий контейнер фильтра
		var oFilterContainerCurrent = $(oFilterButton).getParent('.filterContainer');
		
		//Создаём новый - клон текущего
		var oFilterContainerNew = oFilterContainerCurrent.clone();
		
		//Вставляем созданный контейнер фильтра в тело документа после текущего
		oFilterContainerCurrent.getParent().grab(oFilterContainerNew);
		
		//Утанавливаем значение фильтра "по умолчанию"
		oFilterContainerNew.getElement('select').value = 0;
		
		//Прячем кнопку "добавить фильтр", на которую нажали
		$(oFilterButton).setStyle('display','none');
		
		//Показываем кнопку "удалить фильтр" в текущем фильтре
		oFilterContainerCurrent.getElement('.remove').setStyle('display','');
		
		//В новом фильтре показываем кнопку "удалить фильтр"
		oFilterContainerNew.getElement('.remove').setStyle('display','');
		
		//В новом фильтре прячем кнопку "добавить фильтр"
		oFilterContainerNew.getElement('.add').setStyle('display','none');
	},
	
	change: function(oFilterSelect) {
		//Берём текущий контейнер фильтра
		var oFilterContainerCurrent = $(oFilterSelect).getParent('.filterContainer');
		
		if($(oFilterSelect).value==0) {
			//Прячем кнопку "добавить фильтр" в текущем фильтре
			oFilterContainerCurrent.getElement('.add').setStyle('display','none');
			
			//Удаляем все последующие фильтры после текущего
			var canRemove = 0;
			oFilterContainerCurrent.getParent().getElements('.filterContainer').each(
				function(item,i) {
					if(item==oFilterContainerCurrent) {
						canRemove = 1;
						if(i==0) {
							//Если текущий фильтр - первый (он останется единственным), прячем кнопку "удалить фильтр"
							oFilterContainerCurrent.getElement('.remove').setStyle('display','none');
						}
					} else {
						if(canRemove) {
							item.dispose();
						}
					}
				}
			);
		} else {
			//Показываем кнопку "добавить фильтр" в текущем фильтре
			oFilterContainerCurrent.getElement('.add').setStyle('display','');
		}
	}, 
	
	remove: function(oFilterButton) {
		//Берём элемент, в котором располагаются фильтры
		var oFilterContainerGlobal = $(oFilterButton).getParent('.filterContainerGlobal');
		
		//Узнаём количество оставшихся фильтров
		var sFiltersCount = oFilterContainerGlobal.getElements('.filterContainer').length;
		
		if(sFiltersCount==1) {
			//Берём ячейку, в которой расположен фильтр
			var oFilterColumn = oFilterContainerGlobal.getParent('.filterColumn');
			
			//Показываем краткое описание текущих настроек фильтра
			oFilterColumn.getElement('.filterDescription').setStyle('display','');
			
			//Прячем настройки фильтра
			oFilterColumn.getElement('.filterSettings').setStyle('display','none');
			oFilterColumn.getElement('.filterSettings').getElement('select').value=0;
			oFilterColumn.getElement('.filterSettings').getElement('.add').setStyle('display','none');
			
			oFilterColumn.getElement('.filterDescription').getElement('.all').setStyle('display','').value = 0;
			oFilterColumn.getElement('.filterDescription').getElement('.not_all').setStyle('display','none');
			
			return;
		}
		
		//Удаляем текущий фильтр
		$(oFilterButton).getParent('.filterContainer').dispose();
		
		var oFilterContainers = oFilterContainerGlobal.getElements('.filterContainer');
		if(oFilterContainers[oFilterContainers.length-1].getElement('select').value!=0) {
			//Показываем кнопку "добавить фильтр", если в последнем фильтре выбрано значение не "по умолчанию"
			oFilterContainers[oFilterContainers.length-1].getElement('.add').setStyle('display','');
		}
	},
	
	save: function() {
		//Массив переменных под фильтры
		var aFilters = new Array();
		
		//Берём все глобальные контейнеры фильтров: РУБРИКИ | СТИЛИ | СТРАНЫ
		var aFilterContainersGlobal = $$('.filterContainerGlobal');
		
		aFilterContainersGlobal.each(
			function(oFilterContainerGlobal,iFilterContainerGlobal) {
				//Создаём подмассив с именем типа фильтра: РУБРИКИ | СТИЛИ | СТРАНЫ
				aFilters[oFilterContainerGlobal.id] = new Array();
				
				//Забиваем подмассив значениями фильтров
				oFilterContainerGlobal.getElements('select').each(
					function(oFilterSelect,iFilterSelect) {
						if(oFilterSelect.value!=0) {
							aFilters[oFilterContainerGlobal.id][aFilters[oFilterContainerGlobal.id].length] = oFilterSelect.value;
						}
					}
				);
				
				aFilters[oFilterContainerGlobal.id] = aFilters[oFilterContainerGlobal.id].join(",");
			}
		);
				
		//Отправляем значения серверу
		JsHttpRequest.query(
    	DIR_WEB_ROOT+'/include/ajax/saveFilter.php',
			{aFilters:aFilters},
			function(result, errors) {
				if (!result) {
					msgErrorBox.alert('Error','Please try again later');
				}
				if (result.bStateError) {
					msgErrorBox.alert(result.sMsgTitle,result.sMsg);
				} else {            	
					msgNoticeBox.alert(result.sMsgTitle,result.sMsg);
            	
					window.location = window.location;
            	
				}
			},
			true
		);
	}
	
});

var lsFilter;

window.addEvent('domready', function() {  	
    lsFilter = new lsFilterClass();
});


