function priceFilter(href, categoryId, levySymbol, pravySymbol) {
	$(".filters-box .price_filter_form").append($("<input>",{type: "hidden", name: "ajax_view", "value": 1}));
	$(".filters-box .price_filter_form").append($("<input>",{type: "hidden", name: "KID", "value": categoryId}));
	var date = new Date();
	$(".filters-box .price_filter_form").append($("<input>",{type: "hidden", name: "uniqueHash", "value": date.getTime()}));
	$(".filters-box .price_filter_form").ajaxForm({
	  target: "#category_content",
	  beforeSubmit: function() {
			displayLoadingLayers();
		},
		success: function() {
			reloadFilters({ optional_fields : 1}, href, categoryId, levySymbol, pravySymbol);
			var date = new Date();
			$(".filters-box .price_filter_form input[name=uniqueHash]").attr('value',date.getTime());
			$("#filters_load").remove();
			hideLoadingLayers();
	  },
	  error: function(a,b) {
			alert(a);
		}
	});

	var step = 5;
	var minPrice = Number($(".filters-box input[name=minPrice]").val());
	var maxPrice = Number($(".filters-box input[name=maxPrice]").val());
	if (minPrice == maxPrice)
		maxPrice += step;
	var priceFrom = Number($(".filters-box .price_filter_form_from").val());
	if (priceFrom == 0 || priceFrom == '') priceFrom = minPrice;
	var priceTo = Number($(".filters-box .price_filter_form_to").val());
	if (priceTo == 0 || priceTo == '') priceTo = maxPrice;
	if (priceFrom == priceTo)
		priceTo += step;

	$(".filters-box .price_filter_form").hide();
	
	$(".filters-box .price_slider").slider({
		range: true,
		min: minPrice,
		max: maxPrice,
		values: [priceFrom,priceTo],
		animate: true,
		step : step,
		slide : function(event, ui) {
			$(".filters-box .price_slider_from").html(levySymbol + ui.values[0] + ' ' + pravySymbol);
			$(".filters-box .price_slider_to").html(levySymbol + ui.values[1] + ' ' + pravySymbol);
		},
		stop : function(event, ui) {
			$(".filters-box .price_filter_form_from").val(ui.values[0]);
			$(".filters-box .price_filter_form_to").val(ui.values[1]);
			$(".filters-box .price_filter_form").submit();
		}		
	});
	$(".filters-box .price_slider_from").html(levySymbol + $(".filters-box .price_slider").slider("values", 0) + ' ' + pravySymbol);
	$(".filters-box .price_slider_to").html(levySymbol + $(".filters-box .price_slider").slider("values", 1) + ' ' + pravySymbol);

	$(".filters-box .price_slider_box").show();
}

function optionalFieldsFilter(href, categoryId, levySymbol, pravySymbol) {
	$(".filters-box .optional_fields_filter input[type=submit]").hide();
	$(".filters-box .optional_fields_filter input[type=checkbox]").click(function() {
		$(this).closest("form").submit();
	});

	$(".filters-box .optional_fields_filter a[href].cancel").click(function() {
		$(this).parents(".optional_fields_filter_field:first").find("input[type=checkbox]").attr("checked", false);
		$(this).closest("form").submit();
		return false;
	});

	$(".filters-box .optional_fields_filter_form").append($("<input>",{type: "hidden", name: "ajax_view", "value": 1}));
	$(".filters-box .optional_fields_filter_form").append($("<input>",{type: "hidden", name: "KID", "value": categoryId}));
	var date = new Date();
	$(".filters-box .optional_fields_filter_form").append($("<input>",{type: "hidden", name: "uniqueHash", "value": date.getTime()}));
	$(".filters-box .optional_fields_filter_form").ajaxForm({
		target: "#category_content",
		beforeSubmit: function() {
			displayLoadingLayers();
		},
		success: function() {
			reloadFilters({ optional_fields : 1}, href, categoryId, levySymbol, pravySymbol);
			var date = new Date();
			$(".filters-box .optional_fields_filter_form input[name=uniqueHash]").attr('value',date.getTime());
			$("#filters_load").remove();
			hideLoadingLayers();
		},
		error: function(a,b) {
			alert(a);
		}
	});

	var step = 1;

	$(".filters-box .optional_fields_filter_field_slider").each(function() {
		var minPrice = Number($("input[name=minValue]", $(this)).val());
		var maxPrice = Number($("input[name=maxValue]", $(this)).val());

		if (minPrice == maxPrice)
			maxPrice += step;

		var priceFrom = Number($(".optional_fields_filter_from", $(this)).val());

		if (priceFrom == 0 || priceFrom == '')
			priceFrom = minPrice;

		var priceTo = Number($(".optional_fields_filter_to", $(this)).val());

		if (priceTo == 0 || priceTo == '')
			priceTo = maxPrice;

		if (priceFrom == priceTo)
			priceTo += step;

		$(".optional_fields_filter_form", $(this)).hide();

		var backElem = $(this);		
		$(".optional_fields_slider", $(this)).slider({
			range: true,
			min: minPrice,
			max: maxPrice,
			values: [priceFrom,priceTo],
			animate: true,
			step : step,
			slide : function(event, ui) {
				$(".optional_fields_slider_from", backElem).html(levySymbol + ui.values[0] + ' ' + pravySymbol);
				$(".optional_fields_slider_to", backElem).html(levySymbol + ui.values[1] + ' ' + pravySymbol);
			},
			stop : function(event, ui) {
				$(".optional_fields_filter_from", backElem).val(ui.values[0]);
				$(".optional_fields_filter_to", backElem).val(ui.values[1]);
				$(".optional_fields_filter_form", backElem).submit();
			}		
		});
		$(".optional_fields_slider_from", $(this)).html(levySymbol + priceFrom + ' ' + pravySymbol);
		$(".optional_fields_slider_to", $(this)).html(levySymbol + priceTo + ' ' + pravySymbol);
	
		$(".optional_fields_slider", $(this)).show();

	});
}

function reloadFilters(filters, href, categoryId, levySymbol, pravySymbol) {

	/* workaround - odstraneni struktury selectboxu */
	$('select').selectBox('destroy');
	$('.selectBox-dropdown-menu').remove();
	$('#meny select, #sorted select, #form_strankovani select').selectBox();

	if (filters.price) {
		if ($("#filters_load .price_filter").length > 0) {
			$(".filters-box .price_filter").replaceWith($("#filters_load .price_filter"));
		} else {
			$(".filters-box .price_filter").empty();
		}
		priceFilter(href, categoryId, levySymbol, pravySymbol);
	}
	if (filters.optional_fields) {
		if ($("#filters_load .optional_fields_filter").length > 0) {
			$(".filters-box .optional_fields_filter").replaceWith($("#filters_load .optional_fields_filter"));
		} else {
			$(".filters-box .optional_fields_filter").empty();
		}
		optionalFieldsFilter(href, categoryId, levySymbol, pravySymbol);
	}
		
}

function displayLoadingLayers()
{
	$(".filters").each(function(){
		var position = $(this).offset();
		$("<div class='loading_layer'></div>").css({
			'top': position.top,
			'left': position.left,
			'width': $(this).outerWidth(),
			'height': $(this).outerHeight(),
			'opacity': '0.5'
		}).appendTo("BODY");
	});
}

function hideLoadingLayers() {
	$(".loading_layer").remove();
}
