/****************************** 
 * Author: ken
 * Data model for filter. 
 *****************************/

/** 
* @constructor
*/
function FilterModel() {
	this.m_obMetadata = null;
	this.m_obFilterParams = null;	//Media_TypeID, categoryid, min_price, max_price, rating_count, rating, include_artist, product_ids, date_published_after, date_published_before,include_artist
	this.m_obDefaultParams = null;
}
/*************************************************************************/
FilterModel.prototype.init = function(filterString){
	if(filterString!=""){
		this.m_obFilterParams = new Object();
		var arrFilter = filterString.split("*(*)");
		var len = arrFilter.length;
		for(var i=0;i<len;i++){
			var arr = arrFilter[i].split("=");
			this.m_obFilterParams[arr[0].toLowerCase()] = arr[1];
		}
	}
	this.m_obDefaultParams = {	
							filters:'false',
							keyword:'',
							is_all_keywords:'ALL',
							media_typeid:'',
							date_published_after:'null',
							date_published_before:'null',
							bundleid:'0',
							categoryid:'',
							exclude_artist:'null',
							exclude_keywords:'null',
							file_type:'',
							include_artist:'null',
							include_artist_ids:'null',
							is_game_ready:'0',
							certified:'0',
							max_price:'',
							min_price:'0',
							page_num:'1',
							page_size:'50',
							rating:'0',
							rating_count:'-1',
							show_mature:'0',
							sort_column:'null',
							sort_order:'null',
							sort:'0',
							affiliateid:'',
							search_type:'null',
							display_format:'tile',
							display_size:'small',
							certification_mode:'0',
							product_ids:'',
							application_ids:'',
							squid_level:''
						};
}

FilterModel.prototype.updateFilter = function(key,value,isDelete){
	if(this.m_obFilterParams==null)
		this.m_obFilterParams = new Object();
	switch(key){
		case "all":
			for (key in this.m_obFilterParams) {
				this.m_obFilterParams[key] = this.m_obDefaultParams[key];
			}
			break;
		case "Media_TypeID":
			if(isDelete==true){
				if(this.m_obFilterParams[key]==value || this.m_obFilterParams[key]==undefined || this.m_obFilterParams[key]==""){
					this.m_obFilterParams[key] = "";
				}
				else{
					var arr = this.m_obFilterParams[key].split(",");
					var arr2 = [];
					var len = arr.length;
					for(var i=0;i<len;i++){
						if(arr[i]!=value){
							arr2.push(arr[i]);
						}
					}
					this.m_obFilterParams[key] = arr2.join(",");
				}
			}
			else{
				this.m_obFilterParams[key] = value;
			}
			break;
		case "categoryid":
			if(isDelete==true){
				if(this.m_obFilterParams[key]==value || this.m_obFilterParams[key]==undefined || this.m_obFilterParams[key]==""){
					this.m_obFilterParams[key] = "";
				}
				else{
					var arr = this.m_obFilterParams[key].split(",");
					var arrValue = value.split(",");
					var arr2 = [];
					var len = arr.length;
					var lenValue = arrValue.length;
					var found = false;
					for(var i=0;i<len;i++){
						found = false;
						for(var j=0;j<lenValue;j++){
							if(arr[i]==arrValue[j]){
								found = true;
								break;
							}
						}
						if (found == false) {
							arr2.push(arr[i]);
						}
					}
					this.m_obFilterParams[key] = arr2.join(",");
				}
			}
			else{
				this.m_obFilterParams[key] = value;
			}
			break;
		case "file_type":
			if(isDelete==true){
				if(this.m_obFilterParams[key]==value || this.m_obFilterParams[key]==undefined || this.m_obFilterParams[key]==""){
					this.m_obFilterParams[key] = "";
				}
				else{
					var arr = this.m_obFilterParams[key].split(",");
					var arr2 = [];
					var len = arr.length;
					var arrValue = value.split(",");
					var lenValue = arrValue.length;
					var found = false;
					for(var i=0;i<len;i++){
						found = false;
						for(var j=0;j<lenValue;j++){
							if(arr[i]==arrValue[j]){
								found = true;
								break;
							}
						}
						if (found == false) {
							arr2.push(arr[i]);
						}
					}
					this.m_obFilterParams[key] = arr2.join(",");
				}
			}
			else{
				this.m_obFilterParams[key] = value;
			}
			break;
		case "include_artist_ids":
			if(isDelete==true){
				if(this.m_obFilterParams[key]==value || this.m_obFilterParams[key]==undefined || this.m_obFilterParams[key]=="null"){
					this.m_obFilterParams[key] = "null";
				}
				else{
					var artList = this.m_obFilterParams[key] + ",";
					artList = artList.replace(value+",","");
					if(artList.substr(artList.length-1,1)==","){
						artList = artList.substr(0,artList.length-1);
					}
					this.m_obFilterParams[key] = artList;
				}
				this.m_obFilterParams["include_artist"] = 'null';
			}
			else{
				this.m_obFilterParams[key] = value;
				if(value=='null'){
					this.m_obFilterParams["include_artist"] = 'null';
				}
			}
			break;
		default:
			this.m_obFilterParams[key] = value;
			break;		
	}	
}
