AjaxSolr.ParameterStore=AjaxSolr.Class.extend({exposed:[],params:{},manager:null,init:function(){},isMultiple:function(name){return name.match(/^(?:bf|bq|facet\.date|facet\.date\.other|facet\.date\.include|facet\.field|facet\.pivot|facet\.range|facet\.range\.other|facet\.range\.include|facet\.query|fq|group\.field|group\.func|group\.query|pf|qf)$/);},get:function(name){if(this.params[name]===undefined){var param=new AjaxSolr.Parameter({name:name});if(this.isMultiple(name)){this.params[name]=[param];}
else{this.params[name]=param;}}
return this.params[name];},values:function(name){if(this.params[name]!==undefined){if(this.isMultiple(name)){var values=[];for(var i=0,l=this.params[name].length;i<l;i++){values.push(this.params[name][i].val());}
return values;}
else{return[this.params[name].val()];}}
return[];},add:function(name,param){if(param===undefined){param=new AjaxSolr.Parameter({name:name});}
if(this.isMultiple(name)){if(this.params[name]===undefined){this.params[name]=[param];}
else{if(AjaxSolr.inArray(param.val(),this.values(name))==-1){this.params[name].push(param);}
else{return false;}}}
else{this.params[name]=param;}
return param;},remove:function(name,index){if(index===undefined){delete this.params[name];}
else{this.params[name].splice(index,1);if(this.params[name].length==0){delete this.params[name];}}},find:function(name,value){if(this.params[name]!==undefined){if(this.isMultiple(name)){var indices=[];for(var i=0,l=this.params[name].length;i<l;i++){if(AjaxSolr.equals(this.params[name][i].val(),value)){indices.push(i);}}
return indices.length?indices:false;}
else{if(AjaxSolr.equals(this.params[name].val(),value)){return name;}}}
return false;},addByValue:function(name,value){if(this.isMultiple(name)&&AjaxSolr.isArray(value)){var ret=[];for(var i=0,l=value.length;i<l;i++){ret.push(this.add(name,new AjaxSolr.Parameter({name:name,value:value[i]})));}
return ret;}
else{return this.add(name,new AjaxSolr.Parameter({name:name,value:value}))}},removeByValue:function(name,value){var indices=this.find(name,value);if(indices){if(AjaxSolr.isArray(indices)){for(var i=indices.length-1;i>=0;i--){this.remove(name,indices[i]);}}
else{this.remove(indices);}}
return indices;},string:function(){var params=[];for(var name in this.params){if(this.isMultiple(name)){for(var i=0,l=this.params[name].length;i<l;i++){params.push(this.params[name][i].string());}}
else{params.push(this.params[name].string());}}
return AjaxSolr.compact(params).join('&');},parseString:function(str){var pairs=str.split('&');for(var i=0,l=pairs.length;i<l;i++){if(pairs[i]){var param=new AjaxSolr.Parameter();param.parseString(pairs[i]);this.add(param.name,param);}}},exposedString:function(){var params=[];for(var i=0,l=this.exposed.length;i<l;i++){if(this.params[this.exposed[i]]!==undefined){if(this.isMultiple(this.exposed[i])){for(var j=0,m=this.params[this.exposed[i]].length;j<m;j++){params.push(this.params[this.exposed[i]][j].string());}}
else{params.push(this.params[this.exposed[i]].string());}}}
return AjaxSolr.compact(params).join('&');},exposedReset:function(){for(var i=0,l=this.exposed.length;i<l;i++){this.remove(this.exposed[i]);}},load:function(reset){if(reset===undefined){reset=true;}
if(reset){this.exposedReset();}
this.parseString(this.storedString());},save:function(){},storedString:function(){return'';}});
