function search_refine_class(_level,_parent_ob,_value_id,_use_node){
	var _me=this	
	this.level=_level //0=category dropdown (either search panel or refining), 1=key criteria, 2=key criteria values
	this.parent_ob=_parent_ob //search_class or search_refine_class
	this.element_name=""
	
	this.can_refine_area=0
	this.can_refine_category=0
	
	this.refine_element_ob_arr=new Array()
	this.expanded=0
	this.selected_id=0
	this.value_id=_value_id
	
	this.has_range=0
	this.has_dimension=0
			
	this.xml_loader_ob=0
	this.xml_loader_arr=new Array()
	this.area_xml=0
	this.result_string=""
	
	switch(_me.level){
		case 1:
			this.key_criteria_node=_use_node
		break;
		case 2:

		
			var arr=_me.value_id.split("_")
	
			this.category_ID=arr[1]
			this.criteria_type_ID=arr[2]
			this.comparator=arr[3]
			
			if(this.comparator!="all"){
				switch(this.comparator.substr(0,2)){
					case "tx":
						this.value_param_name="text_value"
					break;
					case "nm":
						this.value_param_name="number_value"
					break;
					case "yn":
						this.value_param_name="yes_no_value"
					break;
					case "dt":
						this.value_param_name="date_time_value"
					break;
				}
			}
			
		break;
	}
	
	
	
	//this.value_type=_value_type
	//this.value_param_name=_value_param_name //text_value,number_value,yes_no_value,date_time_value
	this.is_radio=0
	this.list_pos=-1
	
	this.setup_interface=function(selected_value,pos){
		switch(_me.level){
			case -1:
				//DOES AREA REFINING DROPDOWN EXIST
				_me.element_name="refine_area"
				var element_ob=document.getElementById(_me.element_name)
				if(typeof element_ob!="undefined" && !!element_ob){
					_me.can_refine_area=1
					_me.load_categories()
					element_ob.onchange=_me.draw_category_menu
				}
			break;
			case 0:
				//DOES CATEGORY REFINING DROPDOWN EXIST
				_me.element_name="refine_category"
				var element_ob=document.getElementById(_me.element_name)
				if(typeof element_ob!="undefined" && !!element_ob){
					_me.can_refine_category=1
					element_ob.onchange=_me.load_key_criteria
				}
			break;
			case 1:
				_me.list_pos=pos
				_me.selected_id=_me.key_criteria_node.getAttribute("criteria_type_ID")
				_me.element_name="key_criteria_"+_me.key_criteria_node.getAttribute("category_ID")+"_"+_me.key_criteria_node.getAttribute("criteria_type_ID")
				var element_ob=document.getElementById(_me.element_name)
				//THE ELEMENT MAY ALREADY EXIST
				if(typeof element_ob!="undefined" && !!element_ob){
					var atag=element_ob.getElementsByTagName("a")[0]
					if(typeof atag!="undefined" && !!atag){
						atag.onclick=_me.toggle_key_criteria
						if(element_ob.className.indexOf(" expanded")!=-1){
							
							_me.toggle_key_criteria()
						}
					}else{
						_me.toggle_key_criteria()	
					}
				}else{
					var holder=document.getElementById("key_criteria_holder")
					
					var holder_div=document.createElement("div")
					holder_div.className="refine_search_key_holder"
					if(_me.list_pos==1){
						holder_div.className="refine_search_key_holder rsright"
					}
					
					var newdiv=document.createElement("h4")
					//newdiv.className="refine_search_key_criteria"
					newdiv.style.paddingLeft="0px"
					newdiv.id=_me.element_name
					newdiv.innerHTML=_me.key_criteria_node.getAttribute("criteria_type_name")
					//var newa=document.createElement("a")
//					newa.href="javascript:;"
//					newa.innerHTML=_me.key_criteria_node.getAttribute("criteria_type_name")
//					newa.onclick=_me.toggle_key_criteria
//					newdiv.appendChild(newa)
					
					holder_div.appendChild(newdiv)
					
					var newdiv=document.createElement("div")
					newdiv.className="row"
					newdiv.style.borderTopStyle="dotted"
					newdiv.style.borderBottome="1px dotted #CCCCCC"
					newdiv.style.display="none"
					newdiv.id=_me.element_name+"_holder"
					
					holder_div.appendChild(newdiv)
					holder.appendChild(holder_div)
					
					_me.toggle_key_criteria()
				}
			break;
			case 2:
				_me.element_name=_me.value_id
				_me.selected_id=selected_value
				var element_ob=document.getElementById(_me.element_name)
				
				if(typeof element_ob!="undefined" && !!element_ob){
					if(typeof element_ob.type!="undefined" && !!element_ob.type){
						if(element_ob.type=="radio"){
							_me.is_radio=1	
						}
					}
				}else{
					_me.is_radio=1	
				}
				
				if(_me.is_radio==0){
					element_ob.onclick=_me.prepare_results_query
					
					if(element_ob.checked==1){
						_me.prepare_xml_on_load()
					}
				}else{
					var str=""
					for(var i=0;i<document.forms["refining_criteria"].elements.length;i++){
						str+=document.forms["refining_criteria"].elements[i].name+"\n"
					}
					var element_ob=document.forms["refining_criteria"].elements[_me.element_name]
					if(typeof element_ob.length !="undefined" && !!element_ob.length){
						for(var i=0;i<element_ob.length;i++){
					
							element_ob[i].onclick=_me.prepare_results_query
							
							if(element_ob[i].checked==1){
								_me.prepare_xml_on_load()
							}
						}
					}else{
					
						element_ob.onclick=_me.prepare_results_query
					}
				}
				
			break;
		}
	}
	this.load_key_criteria=function(){
		document.getElementById("key_criteria_holder").innerHTML=""
		_me.refine_element_ob_arr=new Array()
		
		var element_ob=document.getElementById(_me.element_name)
		refine_category=element_ob.options[element_ob.selectedIndex].value
		_me.selected_id=refine_category
		
		_me.prepare_results_query()
		if(refine_category!=""){
			search_ob.load_key_criteria(refine_category)
		}
	}
	this.load_categories=function(){
	
		_me.start_load_xml("library/get_free_text_search.asp","area_xml","count_or_categories=categories&search_text="+search_text)
	}
	
	this.setup_refining_interface=function(criteria_type_ID){
		if(typeof criteria_type_ID=="undefined" || !criteria_type_ID){
			switch(_me.level){
				case 0:
					var key_criteria_nodes=search_ob.search_xml.selectNodes("//category[@category_ID="+refine_category+"]/key_criteria")
					if(key_criteria_nodes.length>0){
						for(var i=0;i<key_criteria_nodes.length;i++){
							_me.refine_element_ob_arr.push(new search_refine_class(1,_me,key_criteria_nodes[i].getAttribute("criteria_type_ID"),key_criteria_nodes[i]))
						}
						for(var i=0;i<_me.refine_element_ob_arr.length;i++){
							_me.refine_element_ob_arr[i].setup_interface(0,i)
						}
					}
				break;
				case 1:
					if(_me.refine_element_ob_arr.length==0){
						_me.setup_key_criteria_values()
					}
				break;
			}
		}else{
			
			var key_criteria_nodes=search_ob.search_xml.selectNodes("//category[@category_ID="+refine_category+"]/key_criteria[@criteria_type_ID="+criteria_type_ID+"]")
			if(key_criteria_nodes.length>0){
				for(var i=0;i<_me.refine_element_ob_arr.length;i++){
					if(_me.refine_element_ob_arr[i].key_criteria_node.getAttribute("criteria_type_ID")==criteria_type_ID){
						_me.refine_element_ob_arr[i].setup_refining_interface()
					}
				}
			}
			
		}
	}
	
	this.setup_key_criteria_nochildren=function(l4_nodes,holder_ob){
		//LISTS ALL UNIQUE VALUES FOR A CRITERIA - ANY NUMBER OF WHICH CAN BE SELECTED
		//AN ITEM CAN ONLY HAVE ONE TEXT VALUE FOR THIS CRITERIA, SO THERE'S NO POINT IN LOOKING FOR AN ITEM WHICH HAS MORE THAN ONE OF THIS CRITIERIA, SO SET THIS TO BE A RADIO BUTTON
		
		var value_nodes=_me.key_criteria_node.selectNodes("./criteria_value")
		var l4_count=0
		if(value_nodes.length>0){
			if(_me.has_range==0){
				var id="l4_"+refine_category+"_"+_me.selected_id+"_"+value_nodes[0].getAttribute("typ")+"eq"
			}else{
				var id="l4_"+refine_category+"_"+_me.selected_id+"_"+value_nodes[0].getAttribute("typ")+"lteq"
			}
				
			
			
			_me.refine_element_ob_arr.push(new search_refine_class(2,_me,id))
			_me.refine_element_ob_arr[_me.refine_element_ob_arr.length-1].setup_interface("all")
		}
	}
	
	this.setup_key_criteria_children=function(l4_nodes,holder_ob){
		//LISTS CHILDREN WHICH AREN'T RANGES OR DIMENSIONS
		var l4_count=0
	
		for(var i=0;i<l4_nodes.length;i++){
			//FIND MATCHING VALUE NODES
			var value_nodes=_me.key_criteria_node.selectNodes("./criteria_value[@criteria_type_ID="+l4_nodes[i].getAttribute("criteria_type_ID")+"]")
			if(value_nodes.length>0){
				
				l4_count++
			
				var id="l4_"+refine_category+"_"+l4_nodes[i].getAttribute("criteria_type_ID")+"_"+value_nodes[0].getAttribute("typ")+"eq"
				
				
				
	
				_me.refine_element_ob_arr.push(new search_refine_class(2,_me,id))
				_me.refine_element_ob_arr[_me.refine_element_ob_arr.length-1].setup_interface(value_nodes[0].getAttribute("value"))

			}
		}	
		//ADD ALL OPTION
		var id="l4_"+refine_category+"_"+_me.key_criteria_node.getAttribute("criteria_type_ID")+"_all"
		
		

		_me.refine_element_ob_arr.push(new search_refine_class(2,_me,id))
		_me.refine_element_ob_arr[_me.refine_element_ob_arr.length-1].setup_interface("all")
	}
	
	
	this.setup_key_criteria_child_values=function(l4_nodes,holder_ob){
		//LISTS ALL UNIQUE VALUES FOR A CRITERIA - ANY NUMBER OF WHICH CAN BE SELECTED
		//AN ITEM CAN ONLY HAVE ONE TEXT VALUE FOR THIS CRITERIA, SO THERE'S NO POINT IN LOOKING FOR AN ITEM WHICH HAS MORE THAN ONE OF THIS CRITIERIA, SO SET THIS TO BE A RADIO BUTTON
		var l4_count=0
		
		for(var i=0;i<l4_nodes.length;i++){
			//FIND MATCHING VALUE NODES
			var value_nodes=_me.key_criteria_node.selectNodes("./criteria_value[@criteria_type_ID="+l4_nodes[i].getAttribute("criteria_type_ID")+"]")
			
			if(value_nodes.length>0){
				var id="l4_"+refine_category+"_"+l4_nodes[i].getAttribute("criteria_type_ID")+"_"+value_nodes[0].getAttribute("typ")+"eq"
					
				
				
				_me.refine_element_ob_arr.push(new search_refine_class(2,_me,id))
				_me.refine_element_ob_arr[_me.refine_element_ob_arr.length-1].setup_interface("all")
			}
		}
	}
	
	this.setup_key_criteria_range=function(l4_nodes,holder_ob){
		//LISTS ALL UNIQUE MIN AND AND MAX. ONE MIN AND ONE MAX CAN BE SELECTED TO CREATE A RANGE WITHING WHICH TO SEARCH
		var l4_count=0
		
		for(var i=0;i<l4_nodes.length;i++){
			//FIND MATCHING VALUE NODES
			var value_nodes=_me.key_criteria_node.selectNodes("./criteria_value[@criteria_type_ID="+l4_nodes[i].getAttribute("criteria_type_ID")+"]")
			if(value_nodes.length>0){
				l4_count++
				if(l4_nodes[i].getAttribute("criteria_type_name").toLowerCase().indexOf("maximum")!=-1){
					var range_type="max"
					var comp="lteq"
				}else{
					var range_type="min"
					var comp="gteq"
				}
				
			
				var id="l4_"+refine_category+"_"+l4_nodes[i].getAttribute("criteria_type_ID")+"_"+value_nodes[0].getAttribute("typ")+comp
				
				//ADD 'ALL' OPTION	
				
				
				_me.refine_element_ob_arr.push(new search_refine_class(2,_me,id))
				_me.refine_element_ob_arr[_me.refine_element_ob_arr.length-1].setup_interface("all")
				
				
			}
		}	
	}
	
	this.setup_key_criteria_range_bracketing=function(l4_nodes,holder_ob){
		//LISTS ALL UNIQUE MIN AND AND MAX. ONE MIN AND ONE MAX CAN BE SELECTED TO CREATE A RANGE WITHING WHICH TO SEARCH
		var l4_count=0
		
		for(var i=0;i<l4_nodes.length;i++){
			//FIND MATCHING VALUE NODES
			var value_nodes=_me.key_criteria_node.selectNodes("./criteria_value[@criteria_type_ID="+l4_nodes[i].getAttribute("criteria_type_ID")+"]")
			if(value_nodes.length>0){

				var id="l4_"+refine_category+"_"+l4_nodes[i].getAttribute("criteria_type_ID")+"_"+value_nodes[0].getAttribute("typ")+"bt"
				
				//ADD 'ALL' OPTION	
				
				
				_me.refine_element_ob_arr.push(new search_refine_class(2,_me,id))
				_me.refine_element_ob_arr[_me.refine_element_ob_arr.length-1].setup_interface("all")
				
				
			}
		}	
	}
	
	this.setup_key_criteria_dimensions=function(l4_nodes,holder_ob){
		//LIST ALL UNIQUE WIDTH AND LENGTH/HEIGHT. ONE WIDTH AND ONE LENGTH/HEIGHT CAN BE SELECTED, TO RETURN MATCHES UP TO THAT SIZE
		//LISTS ALL UNIQUE MIN AND AND MAX. ONE MIN AND ONE MAX CAN BE SELECTED TO CREATE A RANGE WITHING WHICH TO SEARCH
		var l4_count=0
		for(var i=0;i<l4_nodes.length;i++){
			//FIND MATCHING VALUE NODES
			var value_nodes=_me.key_criteria_node.selectNodes("./criteria_value[@criteria_type_ID="+l4_nodes[i].getAttribute("criteria_type_ID")+"]")
			if(value_nodes.length>0){
				l4_count++
				if(l4_nodes[i].getAttribute("criteria_type_name").toLowerCase().indexOf("width")!=-1){
					var range_type="width"
					
				}else{
					if(l4_nodes[i].getAttribute("criteria_type_name").toLowerCase().indexOf("length")!=-1){
						var range_type="length"
					}else{
						var range_type="height"
					}
					
				}
				
			
				var id="l4_"+refine_category+"_"+l4_nodes[i].getAttribute("criteria_type_ID")+"_"+value_nodes[0].getAttribute("typ")+"lteq"
				
				//ADD 'ALL' OPTION	
				
	
				
				_me.refine_element_ob_arr.push(new search_refine_class(2,_me,id))
				_me.refine_element_ob_arr[_me.refine_element_ob_arr.length-1].setup_interface("all")
			}
		}	
	}
	
	this.setup_key_criteria_range_dimensions=function(){
		//FOR WITH AND LENGTH/HEIGHT, LISTS ALL UNIQUE MIN AND MAX. ONE MIN AND MAX CAN BE SELECTED IN EACH DIMENSION	
	}
	this.setup_key_criteria_values=function(){
		var l4_nodes=_me.key_criteria_node.selectNodes("./criteria_type")
		var holder_ob=document.getElementById(_me.element_name+"_holder")
		
		var l4_count=0
		
		
		if(l4_nodes.length>0){
			//THIS DRAWS THE MULTIPLE INPUT INTERFACE
			//ATTEMPT TO CHECK IF IT'S CHILDREN CONTAINS 'RANGES' IE, MAX AND MIN QUANTITIES OR DIMENSIONS
			var nm=l4_nodes[0].getAttribute("criteria_type_name")
			_me.has_bracketing=0
			_me.has_range=0
			_me.has_dimension=0
			
			if(l4_nodes[0].getAttribute("data_is_number")=="1"){
				if(typeof l4_nodes[0].getAttribute("bracketing")!="undefined" && !!l4_nodes[0].getAttribute("bracketing")){
					if(l4_nodes[0].getAttribute("bracketing")!=""){
						_me.has_bracketing=1
					}
				}
				var range_str="minimum,maximum"
				var range_arr=range_str.split(",")
				
				var dimension_str="width,height,length"
				var dimension_arr=dimension_str.split(",")
				
				
				
				for(var i=0;i<range_arr.length;i++){
					if(nm.toLowerCase().indexOf(range_arr[i])!=-1){
						//A RANGE HAS BEEN FOUND IN THE NAME
						_me.has_range=1
						
					}
				}
				for(var j=0;j<dimension_arr.length;j++){
					if(nm.toLowerCase().indexOf(dimension_arr[j])!=-1){
						//A DIMENSION HAS BEEN FOUND IN THE NAME	
						_me.has_dimension=1
			
					}
				}
			}
			if(_me.has_bracketing==1){
				_me.setup_key_criteria_range_bracketing(l4_nodes,holder_ob)
			}else{
				if(typeof l4_nodes[0].getAttribute("parent_ID")=="undefined" || !l4_nodes[0].getAttribute("parent_ID")){
					//THE KEY CRITERIA TYPE IS NOT A PARENT, SO LIST ALL UNIQUE VALUES	
					_me.setup_key_criteria_nochildren(l4_nodes,holder_ob)
	
				}else{
					//THE KEY CRITERIA TYPE IS A PARENT
					if(_me.has_range==0 && _me.has_dimension==0){
						_me.setup_key_criteria_children(l4_nodes,holder_ob)
					}else{
						_me.setup_key_criteria_child_values(l4_nodes,holder_ob)
					}
					//if(_me.has_range==0 && _me.has_dimension==0){
//						_me.setup_key_criteria_children(l4_nodes,holder_ob)
//					}else{
//					
//						if(_me.has_range==1 && _me.has_dimension==1){
//							
//						
//							_me.setup_key_criteria_range(l4_nodes,holder_ob)
//							
//						}else{
//							if(_me.has_range==1){
//								
//								_me.setup_key_criteria_range(l4_nodes,holder_ob)
//							
//							}else{
//								_me.setup_key_criteria_dimensions(l4_nodes,holder_ob)
//							}
//						}
//					}
				}
			}
		}
	}
	
	this.toggle_key_criteria=function(){
		var element_ob=document.getElementById(_me.element_name)
		var holder_ob=document.getElementById(_me.element_name+"_holder")
		if(_me.expanded==1){
			_me.expanded=0
			holder_ob.style.display="none"
			element_ob.className=element_ob.className.split(" expanded")[0]
		}else{
			_me.expanded=1
			holder_ob.style.display="block"
			element_ob.className=element_ob.className.split(" expanded")[0]+" expanded"
			
			_me.load_criteria_values(_me.key_criteria_node.getAttribute("category_ID"),_me.key_criteria_node.getAttribute("criteria_type_ID"))
		}
	}
	
	
	
	this.verify_checkbox_children=function(is_all,is_checked){

		if(is_all==1){
			for(var i=0;i<_me.refine_element_ob_arr.length;i++){
				if(_me.refine_element_ob_arr[i].selected_id!="all"){
					var element_ob=document.getElementById(_me.refine_element_ob_arr[i].element_name)
					if(is_checked==1){
						
						if(element_ob.checked==1){
							
							element_ob.checked=0
							search_ob.remove_criteria_result_params_xml(_me.refine_element_ob_arr[i].category_ID,_me.refine_element_ob_arr[i].criteria_type_ID,0)
						}
					}else{
						if(element_ob.checked==0){	
							element_ob.checked=1
							search_ob.set_criteria_result_params_xml(_me.refine_element_ob_arr[i].category_ID,_me.refine_element_ob_arr[i].criteria_type_ID,element_ob.value,_me.refine_element_ob_arr[i].comparator,_me.refine_element_ob_arr[i].value_param_name,1)
						}
					}
				}
			}
		}else{
			var non_all_count=0
			var all_pos=-1
			for(var i=0;i<_me.refine_element_ob_arr.length;i++){
				if(is_checked==1){
					if(_me.refine_element_ob_arr[i].selected_id=="all"){
						var element_ob=document.getElementById(_me.refine_element_ob_arr[i].element_name)
						if(element_ob.checked==1){
							element_ob.checked=0
						}
					}
				}else{
					if(_me.refine_element_ob_arr[i].selected_id!="all"){
						var element_ob=document.getElementById(_me.refine_element_ob_arr[i].element_name)
						if(element_ob.checked==1){
							non_all_count++
						}
					}else{
						all_pos=i
					}
				}
			}
			
			if(is_checked==0){
				
				if(non_all_count==0){
					var element_ob=document.getElementById(_me.refine_element_ob_arr[all_pos].element_name)
					if(element_ob.checked==0){
						element_ob.checked=1
					}
				}
			}
		}
		
	}
	
	this.prepare_xml_on_load=function(){
		var element_ob=document.getElementById(_me.element_name)

		
		switch(_me.level){
			case 0:
			
				//search_ob.result_summary_search_or_refine="refine"
				//search_ob.set_result_category_ID(_me.selected_id)
			break;

			case 2:
				search_ob.result_summary_search_or_refine="refine"
				var category_ID=_me.parent_ob.key_criteria_node.getAttribute("category_ID")
				if(_me.is_radio==0){
					if(element_ob.value!="all"){
						if(element_ob.checked==1){
							search_ob.set_criteria_result_params_xml(_me.category_ID,_me.criteria_type_ID,element_ob.value,_me.comparator,_me.value_param_name,0)
				
						}
					}
				}else{
					
					var element_ob=document.forms["refining_criteria"].elements[_me.element_name]
					var val=""
					if(typeof element_ob.length !="undefined" && !!element_ob.length){
						for(var i=0;i<element_ob.length;i++){
					
					
							
							if(element_ob[i].checked==1){
								val=element_ob[i].value
							}
							
						}
					}else{
						if(element_ob.checked==1){
							val=element_ob.value
						}
					}
					
					
					if(val!="all"){
						search_ob.set_criteria_result_params_xml(_me.category_ID,_me.criteria_type_ID,val,_me.comparator,_me.value_param_name,0)
					}
					
					
				}
			break;
			
		}
	}
	
	this.prepare_results_query=function(){
		var element_ob=document.getElementById(_me.element_name)

		
		switch(_me.level){
			case 0:
			
				search_ob.result_summary_search_or_refine="refine"
				search_ob.set_result_category_ID(_me.selected_id)
			break;

			case 2:
				search_ob.result_summary_search_or_refine="refine"
				var category_ID=_me.parent_ob.key_criteria_node.getAttribute("category_ID")
				if(_me.is_radio==0){
					if(_me.selected_id=="all"){
						if(element_ob.checked==1){
							//MAKE SURE ALL THE OTHER CHECKBOXES ARE DESELECTED
							_me.parent_ob.verify_checkbox_children(1,1)
						}else{
							//MAKE SURE ALL THE OTHER CHECKBOXES ARE SELECTED
							_me.parent_ob.verify_checkbox_children(1,0)
						}
					}else{
						if(element_ob.checked==1){
							//MAKE SURE THE ALL-BOX IS DESELECTED
							_me.parent_ob.verify_checkbox_children(0,1)
						}else{
							//SEE IF ANY OTHER BOXES ARE SELECTED, AND IF NOT, SELECT THE ALL BOX
							_me.parent_ob.verify_checkbox_children(0,0)
						}
					}
					
					if(element_ob.value=="all"){
						search_ob.get_result_summary()
					}else{
						if(element_ob.checked==1){
							search_ob.set_criteria_result_params_xml(_me.category_ID,_me.criteria_type_ID,element_ob.value,_me.comparator,_me.value_param_name,1)
						}else{
							search_ob.remove_criteria_result_params_xml(_me.category_ID,_me.criteria_type_ID,1)
						}
					}
				}else{
					
					var element_ob=document.forms["refining_criteria"].elements[_me.element_name]
					var val=""
					if(typeof element_ob.length !="undefined" && !!element_ob.length){
						for(var i=0;i<element_ob.length;i++){
					
					
							
							if(element_ob[i].checked==1){
								val=element_ob[i].value
							}
							
						}
					}else{
						if(element_ob.checked==1){
							val=element_ob.value
						}
					}
					
					search_ob.remove_criteria_result_params_xml(_me.category_ID,_me.criteria_type_ID,1)
					if(val!="all"){
						search_ob.set_criteria_result_params_xml(_me.category_ID,_me.criteria_type_ID,val,_me.comparator,_me.value_param_name,1)
					}
					
					
				}
			break;
			
		}
	}
	
	this.return_radio_value=function(){
		var element_ob=document.forms["refining_criteria"].elements[_me.element_name]
		var val=""
		for(var i=0;i<element_ob.length;i++){
	
	
			
			if(element_ob[i].checked==1){
				var val=element_ob[i].value
			}
			
		}
		return val;
	}
	
	this.load_criteria_values=function(category_ID,criteria_type_ID){
		//CHECK TO SEE IF THE CRITERIA VALUES HAVE ALREADY BEEN LOADED
		var value_nodes=search_ob.search_xml.selectNodes("//key_criteria[@criteria_type_ID="+criteria_type_ID+"]/criteria_type")
		
		if(value_nodes.length==0){
			//CRITERIA VALUES HAVEN'T BEEN LOADED FOR THIS NODE YET
			_me.start_load_xml("library/get_category_search.asp","criteria_values_xml","category_ID="+category_ID+"&criteria_type_ID="+criteria_type_ID+"&item_ID_xml="+escape(search_ob.free_text_item_xml))
		
		}else{
			search_ob.refine_ob.setup_refining_interface(criteria_type_ID)
		}
	}
	
	this.draw_category_menu=function(){
		var element_ob=document.getElementById(_me.element_name)
		if(element_ob.selectedIndex==0){
			_me.selected_id=""
			_me.result_string=""
			search_ob.refine_ob.clear_menu()	
		}else{
			_me.selected_id=element_ob.options[element_ob.selectedIndex].value
			_me.result_string=""
			_me.start_load_xml("library/get_free_text_search.asp","item_list_xml","count_or_categories=categories&category_ID="+_me.selected_id+"&search_text="+search_text)
			search_ob.refine_ob.populate_menu()	
		}
	}
	
	this.clear_menu=function(){
		var element_ob=document.getElementById(_me.element_name)
		element_ob.innerHTML=""
		element_ob.options[element_ob.options.length]=new Option("Select category...","");
		element_ob.disabled=1	
		_me.load_key_criteria()
	}
	this.populate_menu=function(){
		var element_ob=document.getElementById(_me.element_name)
		
		
		//GET SECOND AND BEYOND LEVEL CATEGORY NODES
		
		element_ob.disabled=0
		selected_pos=0
		var l2_nodes=search_ob.refine_area_ob.area_xml.selectNodes("//data/categories[@category_parent_ID="+search_ob.refine_area_ob.selected_id+"]")
		if(l2_nodes.length>0){
			for(var i=0;i<l2_nodes.length;i++){
				var l3_nodes=search_ob.refine_area_ob.area_xml.selectNodes("//categories[@category_parent_ID="+l2_nodes[i].getAttribute("category_ID")+" and @item_count>0]")
				
				if(l3_nodes.length==0){
					if(parseInt(l2_nodes[i].getAttribute("item_count"))>0){
						var option=document.createElement("option")
						option.value=l2_nodes[i].getAttribute("category_ID")
						option.innerHTML=l2_nodes[i].getAttribute("category_name")
						element_ob.appendChild(option)
						
					}
				}else{
				
					var optgroup=document.createElement("optgroup")
					optgroup.label=l2_nodes[i].getAttribute("category_name")
					element_ob.appendChild(optgroup)

					for(var j=0;j<l3_nodes.length;j++){
						var option=document.createElement("option")
						option.value=l3_nodes[j].getAttribute("category_ID")
						option.innerHTML=l3_nodes[j].getAttribute("category_name")
						optgroup.appendChild(option)
						
					}
				}
				
				
			}
			if(selected_pos>0){
				element_ob.options[selected_pos].selected=1
				_me.menu_change()
			}
		
		}	
		
		
			
			
	}
	
	this.start_load_xml=function(thispath,thisname,params){
	
		if(thispath.indexOf(pthstr)==-1){
			xmlpth=pthstr+thispath
		}else{
			xmlpth=thispath
		}
		if(typeof params=="undefined" || !params){
			params=""
		}
		
	//window.open(xmlpth+"?"+params)
		xml_mode="ie"
		
		/*@cc_on @*/
		/*@if (@_jscript_version >= 5)
			// JScript gives us Conditional compilation, we can cope with old IE versions.
			// and security blocked creation of the objects.
	
			try {
				_me.xml_loader_arr[thisname] = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				try {
					_me.xml_loader_arr[thisname] = new ActiveXObject("Microsoft.XMLHTTP");
				} catch (E) {
					_me.xml_loader_arr[thisname] = false;
				}
			}
	
		/*@end @*/
		
		
		if (!_me.xml_loader_arr[thisname] && typeof XMLHttpRequest!='undefined') {
			_me.xml_loader_arr[thisname] = new XMLHttpRequest();
			xml_mode="moz"
		}
		
		if(params==""){
			_me.xml_loader_arr[thisname].open("GET", xmlpth,true);
		}else{
			_me.xml_loader_arr[thisname].open("POST", xmlpth,true);
			_me.xml_loader_arr[thisname].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
		}
		
		_me.xml_loader_arr[thisname].setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
		
		
		switch(thisname){
			case "area_xml":
				_me.xml_loader_arr[thisname].onreadystatechange=_me.parse_areas_xml
			break;
			case "item_list_xml":
				_me.xml_loader_arr[thisname].onreadystatechange=_me.parse_item_list_xml
			break;
			case "criteria_values_xml":
				_me.xml_loader_arr[thisname].onreadystatechange=_me.parse_criteria_values_xml
			break;
		
		}

		xmlob_loaded_arr[thisname]=0
		
		if(params==""){
		
			__me.xml_loader_arr[thisname].send(null)
		}else{
			
			_me.xml_loader_arr[thisname].send(params)
		}
	
	}
	
	this.parse_areas_xml=function(){
	

		var xml_name="area_xml"
		if(_me.xml_loader_arr[xml_name].readyState==4){
			
			if(browser.isIE){
				var xml_doc_ob=new ActiveXObject('Microsoft.XMLDOM')
				xml_doc_ob.loadXML(_me.xml_loader_arr[xml_name].responseText)
			}else{
				var xml_doc_ob=new DOMParser().parseFromString(_me.xml_loader_arr[xml_name].responseText, 'text/xml')
			}
			
			test_nodes=xml_doc_ob.selectNodes("//categories")
			


			
			if(test_nodes.length>0){
				_me.area_xml=xml_doc_ob
			}
	
	
		}
	}
	
	this.parse_item_list_xml=function(){
	

		var xml_name="item_list_xml"
		if(_me.xml_loader_arr[xml_name].readyState==4){
			
			if(browser.isIE){
				var xml_doc_ob=new ActiveXObject('Microsoft.XMLDOM')
				xml_doc_ob.loadXML(_me.xml_loader_arr[xml_name].responseText)
			}else{
				var xml_doc_ob=new DOMParser().parseFromString(_me.xml_loader_arr[xml_name].responseText, 'text/xml')
			}
			
			test_nodes=xml_doc_ob.selectNodes("//result_list/results")
			


			
			if(test_nodes.length>0){

				_me.result_string=test_nodes[0].parentNode.xml
			}
	
	
		}
	}
	
	this.parse_criteria_values_xml=function(){
	

		var xml_name="criteria_values_xml"
		if(_me.xml_loader_arr[xml_name].readyState==4){
			
			if(browser.isIE){
				var xml_doc_ob=new ActiveXObject('Microsoft.XMLDOM')
				xml_doc_ob.loadXML(_me.xml_loader_arr[xml_name].responseText)
			}else{
				var xml_doc_ob=new DOMParser().parseFromString(_me.xml_loader_arr[xml_name].responseText, 'text/xml')
			}
			
			test_nodes=xml_doc_ob.selectNodes("//criteria_type")
			


			
			if(test_nodes.length>0){
				if(typeof test_nodes[0].getAttribute("parent_ID")=="undefined" || !test_nodes[0].getAttribute("parent_ID")){
					var parent_node=search_ob.search_xml.selectSingleNode("//key_criteria[@criteria_type_ID="+test_nodes[0].getAttribute("criteria_type_ID")+"]")
				}else{
					var parent_nodes=search_ob.search_xml.selectNodes("//key_criteria[@criteria_type_ID="+test_nodes[0].getAttribute("parent_ID")+"]")
					if(parent_nodes.length==0){
						var parent_node=search_ob.search_xml.selectSingleNode("//key_criteria[@criteria_type_ID="+test_nodes[0].getAttribute("criteria_type_ID")+"]")
					}else{
						var parent_node=parent_nodes[0]
					}
				}
				
				
				for(var i=0;i<test_nodes.length;i++){
					parent_node.appendChild(test_nodes[i].cloneNode(1))
				}
				var value_nodes=xml_doc_ob.selectNodes("//criteria_value")
				if(value_nodes.length>0){
					for(var i=0;i<value_nodes.length;i++){
						parent_node.appendChild(value_nodes[i].cloneNode(1))
					}
				}
				var item_nodes=xml_doc_ob.selectNodes("//criteria_item")
				if(item_nodes.length>0){
					for(var i=0;i<item_nodes.length;i++){
						parent_node.appendChild(item_nodes[i].cloneNode(1))
					}
				}
				search_ob.refine_ob.setup_refining_interface(parent_node.getAttribute("criteria_type_ID"))
				//if(typeof test_nodes[0].getAttribute("parent_ID")=="undefined" || !test_nodes[0].getAttribute("parent_ID")){
//					
//					search_ob.refine_ob.setup_refining_interface(test_nodes[0].getAttribute("criteria_type_ID"))
//				}else{
//				
//					search_ob.refine_ob.setup_refining_interface(test_nodes[0].getAttribute("parent_ID"))
//				}
			}
	
	
		}
	}
	
}