(function($) {

	var filtering_interval;
	
	$.filtering = function(element, options) {
		var settings = {};

		element.data('filtering', this);
		
		var el = element;
		var $el = $(el);
		
		///var $wall;
		
		var current_index = 0;
		var last_index = 0;
		var total_slides = 0;
		var filters = [];
		var active_filter;
		
		init = function(element, options) {
		     
			settings = $.extend({}, $.filtering.defaultOptions, options, $.fn.filtering.notify); 
			
//log('filtering');
			
			buildFilterNav();
			
			reset();
		};

		buildFilterNav = function() {

//log('buildFilterNav ' );
			//
			var 	filters = getFilters();
			var 	html = '<ul class=""><li><a href="#" rel="all">All</a></li><li><a href="#" rel="red">Red</a></li><li><a href="#" rel="white">White</a></li>';
			$.each( filters, function(i){
				var filter = this;
				html += '<li><a href="#" rel="'+filter+'">'+ filter.replace("-", " ") +'</a></li>';
			});
			html += '</ul>';

//log('buildFilterNav '+html );


			$('#filter-nav-container').append( $(html) );
	
			$('#filter-nav-container').delegate('a','click', function(){
					
				addFilter( $(this).attr('rel') );
				
				return false;
			});
			
////log('buildFilterNav '+$('#'+settings.filter_list_id).find('li').length );
			/*$('#'+settings.filter_list_id).find('li').each(function(i){
			
				filters[i] = $(this).attr('rel');
				
				$(this).find('a').bind('click', function(){
					
					var tmp_filter = $(this).attr('rel');
					addFilter(tmp_filter);
					
					return false;
				});
			});*/
			
/*			$('#'+settings.button_clear_id).find('a').bind('click',function(){
				//reset();
				
				addFilter('all');
				
				return false;	
			});*/
		};
		
		
		getFilters = function(){
			
			//return array with keywords
//log('getFilters ');
			var keyword_list = [];
			
			$('.wines-grid > div').each( function() {
				
				var node_classes = [];
				node_classes = $(this).attr('class').split(' ');

				$.each( node_classes, function(i) {

					var  found = false,
						keyword = node_classes[i];
				
					//add to list, if not already in list
					$.each( keyword_list, function(j) {
					//for (var i = 0; i < keyword_list.length; i++){
	
						if (keyword_list[j] === keyword){ found = true; }
						
					});
					if (!found){ 
						if (	keyword != "" && keyword != "col15" && keyword != "col2" &&keyword != "end-nav" && keyword != "inner-nav" &&keyword != "item" && keyword != "wine-item" && keyword != "library" && keyword != "pull-left" && keyword != "red" && keyword != "white" ){
							keyword_list.push(keyword); log(keyword);
						}
					}
				});
			});
//log('getFilters '+keyword_list);

			keyword_list.sort();

			return keyword_list;
		};
		
		log = function (s) {
			if (typeof console != "undefined" && typeof console.debug != "undefined") {
				//console.log(s);
			} else {
				//alert(s);
			}
		};
		
		addFilter = function(new_filter) {
			
//try{ console.log('addFilter	'+new_filter ); }catch(e){}
			
			//var total = $el.find('div.'+new_filter).length;
			
			active_filter = new_filter;
			
			/*$el.find('div.item').each(function(){
				
				if ($(this).hasClass(new_filter) ){
					$(this).fadeIn('200')
				} else {
					$(this).fadeOut('200')
				}
			});*/
			
			var filter_name = '.' + new_filter;
				
			if (filter_name=='.all') {
				// show all hidden boxes
				$el.children('.invis')
					.toggleClass('invis').fadeIn();
			} else {  
				// hide visible boxes 
				$el.children().not(filter_name).not('.invis,#filter-nav,.end-nav')
					.toggleClass('invis').fadeOut();//.hide("scale", {}, 1000);//
					
				// show hidden boxes
				$el.children(filter_name+'.invis')
					.toggleClass('invis').fadeIn();//.hide("scale", {}, 1000);//
			}

			setHighlight(new_filter); 
		};
		
		setHighlight = function(active_filter){
			
			$('#'+settings.filter_list_id).find('li a').each(function(){
				
				var $this = $(this);
				
				if ($this.attr('rel') == active_filter){
					$this.addClass('active');
				} else {
					$this.removeClass('active');
				}
			});
		};

		reset = function() {
			
//log('filtering reset  ');
			//clear all filters
			active_filter = "";

			$el.find('section').fadeIn(200);

			setHighlight('all');
		};

		init(element, options);
	};

	$.fn.filtering = function(options) {                   
		return this.each( function() {
			(new $.filtering($(this), options));              
		});        
	};

	$.filtering.defaultOptions = {
		button_clear_id:'clear-filters',
		filter_list_id:'filter-list'
	};

})(jQuery);
