var AssetsFilter  = function(param_assets , param_filters) {
		
	this._assets = param_assets;
	this.defaultFilters = { };
	this._filters = param_filters != undefined ? param_filters : this.defaultFilters;
	this._list;
		
};
		
/**************************
 * 
 * 
 *  WARNING : PLACE H0LDER REPLACEMENT NON FONCTIONNEL
 * 
 * 
 */
	
AssetsFilter.prototype = {


	getFilteredList:function() {
		var myAsset;
		this._list = [];
		var tabLength = this._assets.length;
		for (var i = 0; i < tabLength ; ++i) {
			myAsset = this._assets[i];
			myAsset.path = this.replaceMeta(myAsset.path);
			if(this.applyFilters(myAsset))
				this._list.push(myAsset);
		}
		
		return this._list;
	},
	
	
	
	addFilter:function(param_key , param_value) {
		this._filters[param_key] = param_value;
	},
	
	
	setFilters:function(param_filters) {
		this._filters = param_filters;
	},
	
	
	replaceMeta:function(param_str) {
		param_str = param_str.replace(/{[0-9a-z]*}/g ,  this.replaceFilter);
		return param_str;
	},

	
	replaceFilter:function(){
		var filterPath= '';
		var filterName = arguments[0];
		filterName = filterName.substr(1 , filterName.length - 2);
		if (this._filters.hasOwnProperty(filterName))
			filterPath = this._filters[filterName];
		else
			console.warn('AssetFilter : unknown filter ' + filterName );
		return filterPath ;
	},
	
	
	applyFilters:function(param_asset) {
		for (var i in param_asset) {
			if (this._filters.hasOwnProperty(i)) {
				if (this._filters[i] != param_asset[i]) {
					return false;
				}
			}
		}
		return true;
	}
		
		
};
