var R_C_undefined=void(0);
var R_C_propertyCss='myCriteriaProperty';
var R_C_valueCss='myCriteriaValue';
function SearchCriteria(r_domElementId){
	this.R_P_container=r_domElementId;
}
SearchCriteria.prototype.update=function(r_options){
	var r_this=this;
	var r_criteria=r_this.criteria;
	var r_key=r_options.key.toLowerCase();
	var r_value=r_options.value;
	var r_displayName=r_options.displayName;
	var r_displayValue=r_options.displayValue;
	var r_currentPropertyValue;
	var r_currentDisplayValue;
	var r_newPropertyValue='';
	var r_newDisplayValue='';
	if(!r_criteria)r_this.criteria={};
	if(r_value&&r_value.length>0){
		var r_keyObject=eval('r_this.criteria.'+r_key);
		if(r_keyObject&&typeof(r_keyObject)=='object'){
			if(r_options.multiple){
				var r_i;
				r_currentPropertyValue=eval('r_keyObject.value');
				var r_addPropertyValue=true;
				for(r_i=0;r_i<r_currentPropertyValue.length;r_i++){
					if(r_currentPropertyValue[r_i]==r_value){
						r_addPropertyValue=false;
						if(r_options.object.checked!=R_C_undefined){
							if(r_options.object.checked==false){
								r_currentPropertyValue.splice(r_i,1);
								break;
							}
						}else{
							break;
						}
					}
				}
				if(r_addPropertyValue)r_currentPropertyValue.push(r_value);
				r_currentPropertyValue.sort();
				for(r_i=0;r_i<r_currentPropertyValue.length;r_i++){
					//r_newPropertyValue+='\''+r_currentPropertyValue[r_i]+'\'';
					r_newPropertyValue+='"'+r_currentPropertyValue[r_i]+'"';
					if(r_i<r_currentPropertyValue.length-1)r_newPropertyValue+=',';
				}
				if(r_displayName){
					r_currentDisplayValue=eval('r_keyObject.displayValue');
					var r_addDisplayValue=true;
					for(r_i=0;r_i<r_currentDisplayValue.length;r_i++){
						if(r_currentDisplayValue[r_i]==r_displayValue){
							r_addDisplayValue=false;
							if(r_options.object.checked!=R_C_undefined){
								if(r_options.object.checked==false){
									r_currentDisplayValue.splice(r_i,1);
									break;
								}
							}else{
								break;
							}
						}
					}
					if(r_addDisplayValue)r_currentDisplayValue.push(r_displayValue);
					r_currentDisplayValue.sort();
					for(r_i=0;r_i<r_currentDisplayValue.length;r_i++){
						//r_newDisplayValue+='\''+r_currentDisplayValue[r_i]+'\'';
						r_newDisplayValue+='"'+r_currentDisplayValue[r_i]+'"';
						if(r_i<r_currentDisplayValue.length-1)r_newDisplayValue+=',';
					}
				}
			}else{
				if(typeof(r_value)=='object'){
					r_newPropertyValue='['+r_value+']';
					if(r_displayName)r_newDisplayValue='['+r_displayValue+']';
				}else{
					//r_newPropertyValue='\''+r_value+'\'';
					//if(r_displayName)r_newDisplayValue='\''+r_displayValue+'\'';
					r_newPropertyValue='"'+r_value+'"';
					if(r_displayName)r_newDisplayValue='"'+r_displayValue+'"';
				}
				r_this.R_M_evaluateProperty(r_key,r_newPropertyValue,r_displayName,r_newDisplayValue);
			}
		}else{
			if((r_options.object.checked!=R_C_undefined&&r_options.object.checked)||r_options.object.checked==R_C_undefined){
				//r_newPropertyValue='\''+r_value+'\'';
				//if(r_displayName)r_newDisplayValue='\''+r_displayValue+'\'';
				r_newPropertyValue='"'+r_value+'"';
				if(r_displayName)r_newDisplayValue='"'+r_displayValue+'"';
				if(r_options.multiple){
					r_newPropertyValue='['+r_newPropertyValue+']';
					if(r_displayName)r_newDisplayValue='['+r_newDisplayValue+']';
				}
				r_this.R_M_evaluateProperty(r_key,r_newPropertyValue,r_displayName,r_newDisplayValue);
			}
		}
		if(eval('r_this.criteria.'+r_key)&&eval('r_this.criteria.'+r_key+'.value').length==0){
			r_this.R_M_removeProperty(r_key);
		}
	}else{
		if(r_key){
			r_this.R_M_removeProperty(r_key);
		}
	}
	if(r_this.writeOnUpdate!=false&&r_this.R_P_container!=null)r_this.write();
}
SearchCriteria.prototype.getKey=function(r_key){
	return eval('this.criteria.'+r_key.toLowerCase());
}
SearchCriteria.prototype.getCriteria=function(r_includeDisplayValues){
	var r_this=this;
	var r_criteria=r_this.criteria;
	var r_criteriaString='';
	var r_key;
	for(r_key in r_criteria){
		var r_property=r_criteria[r_key];
		if(r_property){
			var r_value=r_property.value;
			var r_i;
			r_criteriaString+=(r_key+'=');
			if(typeof(r_value)=='object'){
				for(r_i=0;r_i<r_value.length;r_i++){
					r_criteriaString+=r_value[r_i];
					if(r_i<r_value.length-1)r_criteriaString+='|';
				}
			}else{
				r_criteriaString+=r_value;
			}
			if(r_includeDisplayValues==true&&r_property.displayName){
				var r_displayValue=r_property.displayValue;
				r_criteriaString+=('^'+r_property.displayName+'^');
				if(typeof(r_displayValue)=='object'){
					for(r_i=0;r_i<r_displayValue.length;r_i++){
						r_criteriaString+=r_displayValue[r_i];
						if(r_i<r_displayValue.length-1)r_criteriaString+='|';
					}
				}else{
					r_criteriaString+=r_displayValue;
				}
			}
			r_criteriaString+='&';
		}
	}
	r_criteriaString=r_criteriaString.substring(0,r_criteriaString.length-1);
	return r_criteriaString;
}
SearchCriteria.prototype.write=function(){
	var r_this=this;
	var r_criteria=r_this.criteria;
	var r_container=document.getElementById(r_this.R_P_container);
	var r_createDisplayNode=r_this.R_M_createDisplayNode;
	if(r_container){
		var r_i;
		var r_key;
		for(r_i=0;r_i<r_container.childNodes.length;r_i++){
			r_container.removeChild(r_container.childNodes[0]);
		}
		var r_wrapper=document.createElement('div');
		for(r_key in r_criteria){
			var r_property=r_criteria[r_key];
			if(r_property&&r_property.isSearchField!=false){
				var r_displayName=r_property.displayName;
				if(r_displayName){
					r_wrapper.appendChild(r_createDisplayNode(r_displayName,R_C_propertyCss));
					var r_values=r_property.displayValue;
					if(typeof(r_values)=='object'){
						for(r_i=0;r_i<r_values.length;r_i++){
							r_wrapper.appendChild(r_createDisplayNode(r_values[r_i],R_C_valueCss));
						}
					}else{
						r_wrapper.appendChild(r_createDisplayNode(r_values,R_C_valueCss));
					}
				}
			}
		}
		r_container.appendChild(r_wrapper);
	}
}
SearchCriteria.prototype.R_M_evaluateProperty=function(r_key,r_value,r_displayName,r_displayValue){
	eval('this.criteria.'+r_key+'={value:'+r_value+(r_displayName?',displayName:\''+r_displayName+'\',displayValue:'+r_displayValue:'')+'}');
}
SearchCriteria.prototype.R_M_removeProperty=function(r_key){
	eval('this.criteria.'+r_key+'=null');
}
SearchCriteria.prototype.R_M_createDisplayNode=function(r_text,r_cssClass){
	var r_div=document.createElement('div');
	r_div.appendChild(document.createTextNode(r_text));
	r_div.className=r_cssClass;
	return r_div;
}
SearchCriteria.prototype.flush=function(){
	var r_this=this;
	r_this.criteria={};
	if(r_this.writeOnUpdate!=false&&r_this.R_P_container!=null)r_this.write();
}