function inURLparams(url, key, value) {
	url = url.split('?');
	if (url.length > 0) {
		var urlQueryString 	= url[1];
		var urlSplit				= urlQueryString.split('&');
		var values;
		//alert(url)
		for(var i = 0; i < urlSplit.length; i++) {
			var seperated	= urlSplit[i].split('=');
			if (seperated.length>1) {
				if(seperated[0] == key) {
					values = seperated[1].split(',');
					break;
				}
			}
		}
		return values.inArray(value);
	}
	return false;
}


var search_fields = function(form, XMLurl, params, parent) {
	this.elements	= new Array();
	this.total		= 0;
	this.form			= form;
	this.url			= XMLurl+params;
	this.XMLurl		= XMLurl;
	this.parent		= parent;
	
	var objData		= new parse_XML(this.XMLurl + params, this.parent);
	this.data			= objData.data();
}

search_fields.prototype = {
	/********************************************
	* display_as_select( name , data )
	*	Function to create a select-field and
	*	fill it with data.
	*
	* Parameters:
	*	name	- the name (and id) of the
	*				selectbox.
	*	data	- the options.
	*
	* Returns:
	*	Nothing, but actually writes the
	*	selectbox at the place this function is
	*	called.
	******************************/
		display_as_select: function(name, key, box) {
			var obj		= this;
			var boxes	= new Array();
			var id;
			
			if(box == null) {
				id 	= random_string(15);
				document.write('<span id="' + id + '"></span>');
				
				box = id;
			}
			
			this.elements.push(Array(name, 'select', box, key));
			var parent = document.getElementById(box);
			
			/***************/
			
			var element;
			if(IE) {
				element			= document.createElement('<select style="width:160px !important;font-size:10px !important;" name="' + name + '" id="' + name + '"></select>');
			}
			else {
				element			= document.createElement('select');
				element.name	= name;
				element.setAttribute('id',		name);
				element.style.width = '160px';
				element.style.fontSize = '10px';
			}
			
			element.onchange = function() {
				obj.update();
			};
			
			parent.appendChild(element);
			
			element.options[0] = new Option("-- Kies --", "");
			
			if(this.data[key] != null && this.data[key].length > 0) {
				var count = 1;
				for(var i = 0; i < this.data[key].length; i++) {
					element.options[count] = new Option(this.data[key][i][1], (this.data[key][i][0] == "empty" ? "" : this.data[key][i][0]), false, false);
					count++;
				}
				//alert(element.options.length)
				for(var i = 0; i < element.options.length; i++) {
					if (i>0) {
						if(this.url != '' && inURLparams(this.url, name, element.options[i].value)) {
							element.options[i].selected = true;
						}
					}
				}
			}
			
			
		},
		
		display_total: function() {
			value_box1 = document.getElementById('filter_total');
			value_box2 = document.getElementById('filter_total2');
			if (this.data[4]) {
				if (value_box1) value_box1.innerHTML = this.data[4];
				if (value_box2) value_box2.innerHTML = this.data[4];
			}
		},
		
	/********************************************
	* display_as_checkbox( name , data )
	*	Function to turn data into checkboxes.
	*
	* Parameters:
	*	name	- the name (and id) prefix of the
	*				selectbox.
	*	data	- the options.
	*
	* Returns:
	*	Nothing, but actually writes the
	*	checkboxes at the place this function is
	*	called.
	******************************/
		display_as_checkbox: function(name, key, box) {
			var obj		= this;
			var boxes	= new Array();
			var id;
			
			if(box == null) {
				var id 	= random_string(15);
				document.write('<span id="' + id + '"></span>');
				
				box = id;
			}
			
			this.elements.push(Array(name, 'checkbox', box, key));
			var parent = document.getElementById(box);
			
			/***************/
			
			var element;
			if(this.data[key] != null && this.data[key].length > 0) {
				for(var i = 0; i < this.data[key].length; i++) {
					var element;
					
					if(IE) {
						element	= document.createElement('<input type="checkbox" name="' + name + '" id="' + name + this.data[key][i][0] + '" value="' + this.data[key][i][0] + '" />');
					}
					else {
						element	= document.createElement('input');
						element.name = name;
						element.setAttribute('type',	'checkbox');
						element.setAttribute('id',		name + this.data[key][i][0]);
						element.setAttribute('value',	this.data[key][i][0]);
						
					}				

					element.onclick = function() {
						obj.update();
						updateSearchVacBtn();
					};
					
					this.elements[this.elements.length] = element;
					
					var br	 	= document.createElement('br');					
					var label 	= document.createElement('label');
					label.setAttribute("style", "float:none !important;font-weight:normal");
					label.style.styleFloat='none';
					label.style.fontWeight='normal';

					label.setAttribute('for', name + this.data[key][i][0]);
					
					parent.appendChild(element);
					parent.appendChild(label);
					parent.appendChild(br);
					//alert(this.data[key][i][0] + "--" + name)
					if(this.url != '' && inURLparams(this.url, name, this.data[key][i][0])) {
						//alert(document.getElementById(name + this.data[key][i][0]))
						document.getElementById(name + this.data[key][i][0]).checked = true;
					}
					
					label.innerHTML = this.data[key][i][1];
				}
			}
		},
		
	/********************************************
	* update( )
	*	Function to update the elements attribute
	*	with the current selected items.
	*
	* Parameters:
	*	
	* Returns:
	*	
	******************************/
		update: function() {
			var obj				= this;
			var output		= '';
			var form			= document.forms[this.form];
			var elements	= this.elements;
			var object		= true;
			this.url			= '?';
			
			for(var i = 0; i < this.elements.length; i++) {
				
				if(this.elements[i]) {
					if (this.elements[i] != '[object]' && this.elements[i][0]) {
						this.url += this.elements[i][0] + '=';
					}
				}
				
				object = false;
				if(this.elements[i+1]) {
					if (this.elements[i+1] != '[object]' && this.elements[i+1][0]) {
						object = true;
					}
				}
				
				if(this.elements[i].type == 'checkbox' && this.elements[i].checked) {
					this.url += this.elements[i].value + ',';
				}
				else if(this.elements[i][1] == 'select') {
					this.url += document.getElementById(elements[i][0]).value;
				}
				
				if(object) {
					this.url += '&';
				}
			}
			
			var objData	= new parse_XML(this.XMLurl + this.url, this.parent);
			this.data	= objData.data();
			
			var name	= new Array();
			var type	= new Array();
			var box		= new Array();
			var key		= new Array();
			var number	= this.elements.length;
			
			for(var i = 0; i < number; i++) {
				if(this.elements[i][2] != null) {
					document.getElementById(this.elements[i][2]).innerHTML = '';
					
					name.push(this.elements[i][0]);
					type.push(this.elements[i][1]);
					box.push(this.elements[i][2]);
					key.push(this.elements[i][3]);
				}
			}
			
			this.elements.length = 0;
			for(var j = 0; j < number; j++) {
				if(type[j] != undefined) {
					switch(type[j]) {
						case 'select':
							obj.display_as_select(name[j], key[j], box[j]);
							break;
						case 'multiselect':
							obj.display_as_multiselect(name[j], key[j], box[j]);
							break;
						case 'checkbox':
							obj.display_as_checkbox(name[j], key[j], box[j]);
							break;
						case 'radio':
							obj.display_as_radio(name[j], key[j], box[j]);
							break;
					}
				}
			}
			obj.display_total();
			
		}
}
