/**
*	Permet de filtrer des élements en fonction de son contenu
*	@author Stéphane
*	@date 20/05/2010
*	@project Club AEF
*
*
*
*/

$.fn.filtrify=function(options){
	searchElement=$(this);
	var defaults = {
		globalFilter: '#liste_membres',
		dataFilter:'li span.membreRecherche',
		elementFilter:'li',
		noResultElement:'#liste_membres .noResult',
		onComplete:function(){}
	};
	var options = $.extend(defaults, options);
	
	var globalFilter=$(options.globalFilter);
	var dataFilter=globalFilter.find(options.dataFilter);
	
	
	
	function search(value){
		
		var globalFilter=$(options.globalFilter);
		var dataFilter=globalFilter.find(options.dataFilter);
		var value=new String(value);
		value=trim(value.toLowerCase());
		if(value!=''){
			value=value.split(' ');
			var filters='';
			for(word in value){
				if(filters!=''){
					filters=filters+',';
				}
				var filters=filters+':contains('+value[word]+')';
			}
			dataFilter.parents(options.elementFilter).hide();
			
			dataFilter.parents(options.elementFilter).addClass('filtrify_hidden').hide();
			var datas=dataFilter.filter(filters);
			datas.parents(options.elementFilter).removeClass('filtrify_hidden').show();
		}else{
			dataFilter.parents(options.elementFilter).removeClass('filtrify_hidden').show();
		}
	}
	
	searchElement.keyup(function(){
		var globalFilter=$(options.globalFilter);
		$(options.noResultElement).hide();
		search($(this).val());
		if(dataFilter.parents(options.elementFilter).filter(':not(.filtrify_hidden)').length==0){
			$(options.noResultElement).show();
		}
		options.onComplete();
	});
	
}

/**
*	Dependancies
*/
function trim(str, chars) {	return ltrim(rtrim(str, chars), chars);}
function ltrim(str, chars) {	chars = chars || "\\s";	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");}
function rtrim(str, chars) {	chars = chars || "\\s";	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");}



