function bepaal_diepte(li) {

	var root = document.getElementById('nav');

	var diepte = 0;

	while (root != li) {

		diepte++;

		if (li.parentNode.tagName == 'UL') {

			li = li.parentNode;

		} else {

			li = li.parentNode.parentNode;

		}

	}

	return diepte;

}

function li_mouseover() {

	clearTimeout(document.timer);

	var diepte = bepaal_diepte(this);

	if (diepte >= document.menu_diepte) {

		document.menu_diepte = diepte;

		// Verberg alles wat niet op het pad naar dit element zit
		// Bepaal eerst het pad
		var root = document.getElementById('nav');

		var li = this;
		var path = new Array();

		while (li.parentNode != root) {
			path[path.length] = li;
			li = li.parentNode;
		}

		var root_elements = root.getElementsByTagName('UL');

		for (var i = 0; i < root_elements.length; i++) {

			var found = false;

			for (var j = 0; j < path.length; j++) {

				if (root_elements[i] == path[j]) {
					found = true;
					break;
				}

			}

			if (found == false) {

				if (root_elements[i].tagName == 'UL') {
					root_elements[i].style.display = 'none';
					remove_class_name(root_elements[i].parentNode, 'nav_selected');
				}

			}

		}

	}

	add_class_name(this, 'nav_selected');

	// Heeft dit item een submenu?
	var li_uls = this.getElementsByTagName('ul');

	for(var i = 0; i < li_uls.length; i++) {

		if (li_uls[i].parentNode == this) {

			li_uls[i].style.display = 'block';

		}

	}

	return true;

}

function hide_ul(ul_id) {

	var ul = document.getElementById(ul_id);

	ul.style.display = 'none';
	remove_class_name(ul.parentNode, 'nav_selected');

}

function li_mouseout() {

	var diepte = bepaal_diepte(this);

	document.menu_diepte = diepte - 1;

	// Zijn er subitems?
	var li_uls = this.getElementsByTagName('ul');

	var timer_set = false;

	for (var i = 0; i < li_uls.length; i++) {

		if (li_uls[i].parentNode == this) {

			clearTimeout(document.timer);
			document.timer = setTimeout("hide_ul('" + li_uls[i].id + "')", 1000);
			timer_set = true;
		}

	}

	if (timer_set == false) {
		remove_class_name(this, 'nav_selected');
	}

	return true;

}

function li_click() {
	if (document.clicked == false) {
		document.clicked = true;
		document.location = this.link;
	}
}

function initNav() {

	document.log_entry = 0;
	document.timer = 0;
	document.menu_diepte = 0;
	document.clicked = false;

	var nav = document.getElementById('nav');

	var lis = nav.getElementsByTagName('li');

	for(var i = 0; i < lis.length; i++) {

		lis[i].onmouseover = li_mouseover;
		lis[i].onmouseout = li_mouseout;
		lis[i].onclick = li_click;

		// Bepaal de url
		var hrefs = lis[i].getElementsByTagName('A');

		// Vervang de a elementen door alleen de tekst
		for (var j = 0; j < hrefs.length; j++) {

			if (hrefs[j].parentNode == lis[i]) {
				lis[i].link = hrefs[j].href;
				var textnode = document.createTextNode(hrefs[j].innerHTML);

				// Strip het 'a' element en vervang het door een textnode.
				lis[i].removeChild(hrefs[j]);
				lis[i].appendChild(textnode);
				break;
			}

		}

	}

	var ahrefs = nav.getElementsByTagName('a');

	for (var i = 0; i < ahrefs.length; i++) {
		ahrefs[i].onmouseover = function () { return true; };
		ahrefs[i].onmouseout = function () { return true; };
	}
}

function add_class_name(element, class_name) {

	var classes = element.className.split(/ +/);

	var found = false;

	for (var i = 0; i < classes.length; i++) {

		if (classes[i] == class_name) {
			found = true;
		}

	}

	if (found == false) {

		element.className += (' ' + class_name);

	}

}

function remove_class_name(element, class_name) {

	var classes = element.className.split(/ +/);
	var new_classes = new Array();

	for (var i = 0; i < classes.length; i++) {

		if (classes[i] != class_name) {

			new_classes[new_classes.length] = classes[i];

		}

	}

	element.className = new_classes.join(" ");

}

window.onload = function() {
	initNav();
	if (window.extInit) {
		extInit();
	}
}