var Filter = new Class({
	initialize: function(nav, items) {
		this.nav = $E(nav);
		this.items = $ES(items);

		this.nav.getElements('a').addEvent('click', this.click.bind(this));
	},

	click: function(e) {
		var el = new Event(e).stop().target;

		if (el.hasClass('all')) {
			this.items.removeClass('hidden');
		} else {
			this.items.each(function(item) {
				if (item.className != '' && item.hasClass(el.className)) {
					item.removeClass('hidden');
				} else {
					item.addClass('hidden');
				}
			});
		}

		this.nav.getElements('li').removeClass('current');
		el.getParent().addClass('current');

		this.afterUpdate();

		return false;
	},

	afterUpdate: function() {
		var visible = this.items.filter(function(el) {
			return !el.hasClass('hidden');
		});
		var cols = 3;
		var lastrow = (Math.ceil(visible.length / cols) - 1) * cols;

		this.items.removeClass('lastrow');
		this.items.removeClass('last');

		visible.each(function(el, idx) {
			var i = idx + 1;
			var cls = (i % cols == 0) ? 'last' : '';
			cls += (i > lastrow) ? ' lastrow' : '';

			el.addClass(cls);
		});
	}
});
