window.addEvent('domready', domLoaded);
function domLoaded() {
	
	var mySmoothScroll = new Fx.SmoothScroll();
	
	
	if ($('filter_form')) {
		$('filter_form').getElements('input[type=button]').addEvent('click', function(e) {
			new Event(e).stop();
			
			for (var i = 0; i < $('filter_form').elements.length; i++) {
				var el = $('filter_form').elements[i];
				if (el.type == 'text' || el.type == 'textarea') {
					el.value = '';
				}
				if (el.type == 'select-one') {
					el.selectedIndex = null;
				}
			}
		});
		$('filter_form').getElements('input.reset').addEvent('click', function(e) {
			new Event(e).stop();
			
			for (var i = 0; i < $('filter_form').elements.length; i++) {
				var el = $('filter_form').elements[i];
				if (el.type == 'text' || el.type == 'textarea') {
					el.value = '';
				}
				if (el.type == 'select-one') {
					el.selectedIndex = null;
				}
			}
		});
	}
	
	if ($('footer').getElement('a[href$=disclaimer]')) {
		var link = $('footer').getElement('a[href$=disclaimer]');
		link.addEvent('click', function(event) {
			event.stop();
			
			var disclaimer = $('disclaimer');
			
			if (disclaimer) {
				disclaimer = disclaimer.dispose();
				return;
			}
			
			if (!disclaimer) {
				var disclaimer = new Element('div', {
					'events': {
						'click': function(){
							disclaimer.dispose();
						}
					},
					'id': 'disclaimer'
				});
				var url = this.href;
				var attempts = 0;
				var getDisclaimer = function() {
					attempts++;
					if (attempts > 3) {
						return;
					}
					new Request.HTML({
						'url': url,
						method: 'get',
						data: 'area=root',
						update: disclaimer,
						onFailure: getDisclaimer
						}).send();
					
				}
				getDisclaimer();
			}			
			disclaimer.inject('footer');			
		});
	}
	
	if ($('wie_team')) {
		var links = $('wie_team').getElements('a');
		for (var i = 0; i < links.length; i++) {
			var link = links[i];
			link.addEvent('click', function(event) {
				
				event.stop();
				$('wie_team').getElements('a').removeClass('selected');
				var url = this.href;			
				var attempts = 0;
				var getPerson = function() {
					attempts++;
					if (attempts > 3) {
						return;
					}
					new Request.HTML({
						'url': url,
						method: 'get',
						data: 'area=wie_details',
						update: 'wie_details',
						onFailure: getPerson
						}).send();
				}
				getPerson();
				this.addClass('selected');
			});	
		}	
	}
	
	if ($$('.uitklappers').length > 0) {
		$$('.uitklappers').each(function(item){
			var togglers = item.getElements('.toggler');
			var klappers = item.getElements('.uitklap');
			var acc = new Fx.Accordion(togglers,klappers,{
				'alwaysHide': true,
				'display': -1
			});
			togglers.setStyle('cursor','pointer');
			togglers.addEvent('click',function(event){
				event.preventDefault();
			});
		});
	}
	
	// Replaces all checkbox lists in FormHandler forms with selectbox equivalents
	if (document.forms['FormHandler']) {
		// Get all FormHandler form elements
		var els = document.forms['FormHandler'].elements;
		// Create empty options object
		var options = {};
		
		for (var i = 0;i < els.length;i++) {
			// Only consider checkboxes in FormHandler forms, so skip the rest
			if (els[i].type != "checkbox" || els[i].name.indexOf('[]') == -1) {
				continue;
			}
			// Create new options array entry if not present
			if (!options[els[i].name]) {
				options[els[i].name] = [];
			}
			
			// Add each checkbox to its corresponding array
			var option = els[i];
			option.text = document.getElement('label[for=' + els[i].id + ']').innerHTML;
			options[els[i].name].push(option);

		}
		
		// Walk all checkbox collections and create select lists
		for (var i in options) {
			// Create an empty select list
			var sel = new Element('select');
		//	alert(sel.options.length);
			
			sel.fieldname = i;
			sel.checkboxes = options[i];
			// Walk all options for current checkbox add UNchecked options to select list
			var k = 1;
			for (var j = 0; j < options[i].length;j++) {			
				if (options[i][j].checked != true) {
					var option = new Option(options[i][j].text,options[i][j].value);
					sel.options[k] = option;
					k++;
				}
			}
			
			// Add base option and set as selected
			sel.options[0] = new Option('[kies]','new');
			sel.selectedIndex = 0;
			
		//	alert(sel.options.length);
		//	alert(i.substring(0,i.length-2));
		
			// Bind addCheckBox function with event onChange
			sel.addEvent('change',addCheckBox.bindWithEvent(sel));
		
			// Inject selectlist after checkboxes and prepend plus sign
			sel.inject(document.getElement('input[name^=' + i.substring(0,i.length-2) + ']').getParent());
			new Element('span').set('text',' + ').inject(sel,'before');
			
			// Finally, remove all unchecked boxes from DOM
			removeUncheckedBoxes(sel.checkboxes);
			
		}	

	}
/*
	if ($('menu')) {
		$$('#menu ul>li>ul>li').addEvent('mouseenter',function(e) {
			var sub = $(this).getElement('ul');
			if (!sub) {
				//this.setText('blaaa');
				return;
			}
			sub.effect('height').start(0,100);
			//var slider = new Fx.Slide(sub);
			//slider.show();
		});
		$$('#menu ul ul li').addEvent('mouseleave',function(e) {
			var sub = $(this).getElement('ul');
			if (!sub) {
				return;
			}
			//var slider = new Fx.Slide(sub);
			//slider.hide();
		});
	}
*/
	
	// Function for foldout elements
	// First element inside is treated as click handler, all other elements show/hide on click
	if ($('content').getElements('[class=foldout]')) {
		var foldouts = $('content').getElements('[class=foldout]');
		// Walk all foldout-classed elements
		for (var i = 0; i < foldouts.length; i++) {
			var el = foldouts[i];
			// Use first child as click handler
			var handler = el.getFirst();
		//	handler.setText('[+] ' + handler.getText());
		
			// Set cursor style to act as link pointer
			handler.setStyle('cursor','pointer');
			
			// Add click event to handler
			handler.addEvent('click', function(e) {
			//	alert('geklikt');
				// Select item next to clicked item as foldout item
				var temp = this.getNext();
				if (temp) {
					// Create kids array with all elements after clicked handler
					this.kids = new Array();
					// Walk each element
					while (temp) {
					//	temp.setStyle('display','none');
						// Remove element from DOM and add to kids array	
						this.kids.push(temp.dispose());
						// Select next element
						temp = this.getNext();			
					}
				}
				else {
					// If no elements after click handler, then they should be activated back into DOM
					// Adopt child elements stored in kids array into the clicked element
					this.getParent().adopt(this.kids);
				}
							
			});
			
			// Immediately fire the click event to hide all foldout elements and to fill kids array
			handler.fireEvent('click');
			
		};
	}

}

function addCheckBox() {
//	alert(this.value);
	for (var i = 0;i < this.checkboxes.length;i++) {
		var cur = this.checkboxes[i];
		if (cur.value == this.value) {
		//	alert(cur.text);
			var box = new Element('input',{'type' : 'checkbox','name' : this.fieldname, 'checked' : true});

			box.value = cur.value;
			box.inject(this.getPrevious(),'before');
			var label = new Element('label').set('text',cur.text).inject(box,'after');
			new Element('br').inject(label,'after');
			
			// Remove selected option from list and rest select list
			this.options[this.selectedIndex] = null;
			this.selectedIndex = 0;
			break;
		}
	}
}	

function removeUncheckedBoxes(els) {
	for (var i = 0;i < els.length;i++) {
		if (els[i].checked != true) {
			while (els[i].getNext() != null && (els[i].getNext().nodeName == 'LABEL' || els[i].getNext().nodeName == 'BR')) {
				els[i].getNext().dispose();
			}
			els[i].dispose();
		}
	}
}

