function DetailSearch()
{
	this.subject = Array();
	this.target = Array();
	this.area = Array();
	this.region = Array();
	this.request = Array();
	this.collapse = true;
	
	this.addSubject = function(id,name,isSelected)
	{
		this.subject[this.subject.length] = Array(id,name,isSelected);
	}
	
	this.addTarget = function(id,name,isSelected)
	{
		this.target[this.target.length] = Array(id,name,isSelected);
	}
	
	this.addArea = function(id,name,isSelected)
	{
		this.area[this.area.length] = Array(id,name,isSelected);
	}
	
	this.addRegion = function(id,name,isSelected)
	{
		this.region[this.region.length] = Array(id,name,isSelected);
	}
	
	this.addRequest = function(id,name,isSelected)
	{
		this.request[this.request.length] = Array(id,name,isSelected);
	}
	
	this.processSubmit = function()
	{
		// Subject
		var value = "";
		var items = $$("input.subject_checkbox");
		for( var i = 0; i < items.length; i++ )
		{
			if( items[i].checked )
			{
				if( value.length > 0 )
				{
					value += ",";
				}
				value += items[i].getAttribute("itemid");
			}
		}
		$("subject_input").value = value;
		
		// Target
		value = "";
		items = $$("input.target_checkbox");
		for( var i = 0; i < items.length; i++ )
		{
			if( items[i].checked )
			{
				if( value.length > 0 )
				{
					value += ",";
				}
				value += items[i].getAttribute("itemid");
			}
		}
		$("target_input").value = value;
		
		// Area
		value = "";
		items = $$("input.area_checkbox");
		for( var i = 0; i < items.length; i++ )
		{
			if( items[i].checked )
			{
				if( value.length > 0 )
				{
					value += ",";
				}
				value += items[i].getAttribute("itemid");
			}
		}
		$("area_input").value = value;
		
		// Region
		value = "";
		items = $$("input.region_checkbox");
		for( var i = 0; i < items.length; i++ )
		{
			if( items[i].checked )
			{
				if( value.length > 0 )
				{
					value += ",";
				}
				value += items[i].getAttribute("itemid");
			}
		}
		$("region_input").value = value;
		
		// Request
		value = "";
		items = $$("input.request_checkbox");
		for( var i = 0; i < items.length; i++ )
		{
			if( items[i].checked )
			{
				if( value.length > 0 )
				{
					value += ",";
				}
				value += items[i].getAttribute("itemid");
			}
		}
		$("request_input").value = value;
		
		
		return true;
	}
	
	this.showDetailSelect = function(selector)
	{
		if( this.collapse == false )
		{
			return;
		}
		
		var items = $$(selector);
		
		for( var i = 0; i < items.length; i++ )
		{
			if( items[i].fx == null )
			{
				items[i].fx = new Fx.Slide(items[i].getParent(),{wait:false});
			}
			items[i].fx.slideIn();
		}
	}
	
	this.hideDetailSelect = function(selector,quick)
	{
		if( this.collapse == false )
		{
			return;
		}
		
		var items = $$(selector);
		
		var numActive = 0;
		for( var i = 0; i < items.length; i++ )
		{
			if(( items[i].checked ) || ( items[i].getAttribute("initialcheck") == "true" ))
			{
				numActive++;
			}
		}

		for( i = 0; i < items.length; i++ )
		{
			if( items[i].fx == null )
			{
				items[i].fx = new Fx.Slide(items[i].getParent(),{wait:false});
			}
			if( items[i].checked )
			{
				items[i].fx.slideIn();
			}
			else if( items[i].getAttribute("initialcheck") != "true" )
			{
				if( numActive < 4 )
				{
					items[i].fx.slideIn();
					numActive++;
				}
				else
				{
					if( quick == true )
					{
						items[i].fx.hide();
					}
					else
					{
						items[i].fx.slideOut();
					}
				}
			}
		}
	}
	
	this.getSelectedDetailSelect = function(selector)
	{
		var items = $$(selector);
		
		var selectedItems = Array();
		
		for( var i = 0; i < items.length; i++ )
		{
			if( items[i].checked == true )
			{
				selectedItems[selectedItems.length] = items[i].getAttribute("itemid");
			}
		}
		
		return selectedItems;
	}
	
	this.init = function()
	{
		// Subject
		var items = $$("span.subject_caption");
		for( var i = 0; i < items.length; i++ )
		{
			items[i].addEvent("click",function(){
				
				var el = $("subject_checkbox_" + this.getAttribute("itemid"));
				
				if( el.checked )
				{
					el.checked = false;
				}
				else
				{
					el.checked = true;
				}
			});
		}
		
		// Target
		items = $$("span.target_caption");
		for( i = 0; i < items.length; i++ )
		{
			items[i].addEvent("click",function(){
				
				var el = $("target_checkbox_" + this.getAttribute("itemid"));
				
				if( el.checked )
				{
					el.checked = false;
				}
				else
				{
					el.checked = true;
				}
			});
		}
		
		// Area
		items = $$("span.area_caption");
		for( i = 0; i < items.length; i++ )
		{
			items[i].addEvent("click",function(){
				
				var el = $("area_checkbox_" + this.getAttribute("itemid"));
				
				if( el.checked )
				{
					el.checked = false;
				}
				else
				{
					el.checked = true;
				}
			});
		}
		
		// Region
		items = $$("span.region_caption");
		for( i = 0; i < items.length; i++ )
		{
			items[i].addEvent("click",function(){
				
				var el = $("region_checkbox_" + this.getAttribute("itemid"));
				
				if( el.checked )
				{
					el.checked = false;
				}
				else
				{
					el.checked = true;
				}
			});
		}
		
		// Request
		items = $$("span.request_caption");
		for( i = 0; i < items.length; i++ )
		{
			items[i].addEvent("click",function(){
				
				var el = $("request_checkbox_" + this.getAttribute("itemid"));
				
				if( el.checked )
				{
					el.checked = false;
				}
				else
				{
					el.checked = true;
				}
			});
		}
		
		// Subject
		if(( $("subject_items_firstfour") != null ) && ( $("subject_items_remaining") != null ) && ( $("subject_items") != null ))
		{
			$("subject_items_remaining").fx = new Fx.Slide("subject_items_remaining",{ wait:false });
			$("subject_items_remaining").fx.hide();
			
			$("subject_items").addEvent("mouseenter",function(e){
				$("subject_items_remaining").fx.slideIn();
			});
			
			$("subject_items").addEvent("mouseleave",function(e){
				$("subject_items_remaining").fx.slideOut();
			});
		}
		
		if( $("subject_items") != null )
		{
			$("subject_items").addEvent("mouseenter",function(e){
				search.showDetailSelect("input.subject_checkbox");
			});
			
			$("subject_items").addEvent("mouseleave",function(e){
				search.hideDetailSelect("input.subject_checkbox");
			});
			
			this.hideDetailSelect("input.subject_checkbox",true);
		}
		
		if( $("target_items") != null )
		{
			$("target_items").addEvent("mouseenter",function(e){
				search.showDetailSelect("input.target_checkbox");
			});
			
			$("target_items").addEvent("mouseleave",function(e){
				search.hideDetailSelect("input.target_checkbox");
			});
			
			this.hideDetailSelect("input.target_checkbox",true);
		}
		
		if( $("area_items") != null )
		{
			$("area_items").addEvent("mouseenter",function(e){
				search.showDetailSelect("input.area_checkbox");
			});
			
			$("area_items").addEvent("mouseleave",function(e){
				search.hideDetailSelect("input.area_checkbox");
			});
			
			this.hideDetailSelect("input.area_checkbox",true);
		}
		
		if( $("region_items") != null )
		{
			$("region_items").addEvent("mouseenter",function(e){
				search.showDetailSelect("input.region_checkbox");
			});
			
			$("region_items").addEvent("mouseleave",function(e){
				search.hideDetailSelect("input.region_checkbox");
			});
			
			this.hideDetailSelect("input.region_checkbox",true);
		}
		
		if( $("request_items") != null )
		{
			$("request_items").addEvent("mouseenter",function(e){
				search.showDetailSelect("input.request_checkbox");
			});
			
			$("request_items").addEvent("mouseleave",function(e){
				search.hideDetailSelect("input.request_checkbox");
			});
			
			this.hideDetailSelect("input.request_checkbox",true);
		}
		
		if( $("searchnotification") != null )
		{
			$("searchnotification").addEvent("change",function(){
				
				$("searchnotification_result").innerHTML = "";
				
				// jsonurl="/{$authority}/zoeken?s={$subject|@SO_ToCSV}&t={$target|@SO_ToCSV}&a={$area|@SO_ToCSV}&r={$region|@SO_ToCSV}&q={$request|@SO_ToCSV}&v={$valuta_selected}&k={$keywordsurl}&e={$eurl}"
				
				var jsonURL = this.getAttribute("jsonurlbase");
				
				jsonURL += "s=" + escape(search.getSelectedDetailSelect("input.subject_checkbox").join(","));
				jsonURL += "&t=" + escape(search.getSelectedDetailSelect("input.target_checkbox").join(","));
				jsonURL += "&a=" + escape(search.getSelectedDetailSelect("input.area_checkbox").join(","));
				jsonURL += "&r=" + escape(search.getSelectedDetailSelect("input.region_checkbox").join(","));
				jsonURL += "&q=" + escape(search.getSelectedDetailSelect("input.request_checkbox").join(","));
				jsonURL += "&v=" + escape($("valutaselect").value);
				jsonURL += "&k=" + escape($("keywordsinput").value);
				if( $("searchexpiredsubsidies").checked == true )
				{
					jsonURL += "&e=1";
				} 
				
				var request = new Request.JSON({
					url: jsonURL,
					onSuccess: function(json){
						if( json.result == "ADDED" )
						{
							$("searchnotification_result").innerHTML = "De notificatie is ingeschakeld.";
						}
						else if( json.result == "CHANGED" )
						{
							$("searchnotification_result").innerHTML = "De notificatie is gewijzigd.";
						}
						else if( json.result == "DELETED" )
						{
							$("searchnotification_result").innerHTML = "De notificatie is uitgeschakeld.";
						}
						else
						{
							alert("De notificatie kon niet worden gewijzigd. Probeer het aub opnieuw (onSuccess): " + json.result);
						}
					},
					onFailure: function(instance){
						alert("De notificatie kon niet worden gewijzigd. Probeer het aub opnieuw (onFailure)");
					},
					onException: function(headerName,value){
						alert("De notificatie kon niet worden gewijzigd. Probeer het aub opnieuw (onException)");
					}
				});
			
				var sendArg = new Object();
				sendArg.interval = this.value;
				request.send("data=" + JSON.encode(sendArg));
				
			});
		}
	}
	
	this.enableCollapse = function(value)
	{
		this.collapse = value;
	}
	
	this.selectAll = function(selector)
	{
		var items = $$("input." + selector + "_checkbox");
		for( var i = 0; i < items.length; i++ )
		{
			items[i].checked = true;
		}
	}
	
	this.deselectAll = function(selector)
	{
		var items = $$("input." + selector + "_checkbox");
		for( var i = 0; i < items.length; i++ )
		{
			items[i].checked = false;
		}
	}
	
}