$.uiFilter = function(jq, phrase){
	
	var new_hidden = false;
	if( this.last_phrase === phrase ) return false;
	
	var phrase_length = phrase.length;
	var words = phrase.toLowerCase().split(" ");
	
	var success = function(elem) { 
		var thumb = elem; // a > thumbtext > thumb		
		thumb.show('fast'); 
		thumb.removeClass("hidden");
	}
	var failure = function(elem) { 
		var thumb = elem; // a > thumbtext > thumb		
		thumb.hide('fast');
		thumb.addClass("hidden");
	}
	
	var index = null;
	
	var search_text = function(){
		var elem = $(this);
		$.uiFilter.has_words( elem.text(), words ) ? success(elem) : failure(elem);
    }

	
	if( (words.size > 1) && (phrase.substr(0, phrase_length - 1) === this.last_phrase) ) {
		
		if( phrase[-1] === " " )
	    { this.last_phrase = phrase; return false; }

		var words = words[-1];
		jq.find("DIV.thumbrow > DIV.thumb" ).each( search_text )
		
	} else {
		new_hidden = true;
		jq.find("DIV.thumbrow > DIV.thumb").each( search_text )
	}

	last_phrase = phrase;
	
	var check_head = function() {
			var elem = $(this);
			var thumbAll = elem.find('DIV.thumb').length;
			var thumbHidden = elem.find('DIV.hidden').length;
			
			if (thumbAll == thumbHidden ) {
				elem.hide();
				elem.addClass("Whidden");
				elem.removeClass("Wshown");
			} else {
				elem.show();
				elem.removeClass("Whidden");
				elem.addClass("Wshown");
			}
	}
	var check_wrap = function() {
			var elem = $(this);
			var error = $("#thumberror");
			var wrapAll = elem.children('#thumbwrap').length;
			var wrapHidden = elem.find('.Whidden').length;
			
//			console.info("A:" + wrapAll + " :: " + wrapHidden)
			
			if (wrapAll == wrapHidden ) {
				error.show();
			} else {
				error.hide();
			}
	}	
	
	// headlines
	$('DIV.tx-fgadslreferences-pi1').children("#thumbwrap").each(check_head);
	// gar nix gefunden
	$('DIV.tx-fgadslreferences-pi1').each(check_wrap);
	return jq;
	
	$.uiTableFilter.last_phrase = "";
}

$.uiFilter.has_words = function( str, words, caseSensitive )
{
  var text = caseSensitive ? str : str.toLowerCase();
  for (var i=0; i < words.length; i++) {
    if (text.indexOf(words[i]) === -1) return false;
  }
  return true;
}


$(document).ready(function() {

	$(function() { 
	  var theDivs = $('DIV.tx-fgadslreferences-pi1');
	  
	  $("#filter").keydown(function() { if (this.which == 13) { return; } });
	  $("#filter").keyup(function() { if (this.which != 13) { $.uiFilter( theDivs, this.value ); }} )	  
	  }).focus(); //Give focus to input field
});