// Menu:hover with delay
// ---------------------

// This script will enable the :hover for the submenu's within
// the menu's. Besides enabling the :hover it will also set
// a delay on the submenu.

// Credits: Tino Zijdel (crisp), crisp(at)tweakers.net


var menu = null;

function init_menu() {
	stripeTableById('striped'); // DFD added to stripe tables with the id name 'striped'
	menu = document.getElementById('menu');
	var li = menu.getElementsByTagName('li'), i = li.length;
	while (i--) li[i].onmouseover = showMenu;
	menu.onmouseout = timeout;
	menu.onmouseover = cleartimer;
}

var timer = null;
function timeout() {
	timer = setTimeout('hideMenus(menu, null)', 1000);
}

function cleartimer() {
	if (timer) {
		clearTimeout(timer);
		timer = null;
	}
}

function showMenu()	{
	var ul = this.parentNode;
	while (ul) {
		if (ul.tagName.toLowerCase() == 'ul') {
			hideMenus(ul, this);
			break;
		}

		ul = ul.parentNode;
	}

	ul = this.firstChild;
	while (ul) {
		if (ul.nodeType == 1 && ul.tagName.toLowerCase() == 'ul') {
			ul.style.display = 'block';
			ul.style.visibility = ''; // necessary for IE
			break;
		}

		ul = ul.nextSibling;
	}
}

function hideMenus(level, skipli) {
	var stack = [level], i = 0, li, j, el, tag;
	do {
		li = stack[i].childNodes, j = li.length;
		while (j--) {
			el = li[j];
			if (el.nodeType == 1 && el != skipli) {
				tag = el.tagName.toLowerCase();
				if (tag == 'li') {
					stack[i++] = el;
				}
				else if (tag == 'ul' && el.style.display == 'block') {
					stack[i++] = el;
					el.style.display = 'none';
					el.style.visibility = 'hidden'; // necessary for IE
				}
			}
		}
	}
	while (i--);
}

//
// Toggle show/hide of CSS id block
//
function showHideItems(myItem){
	var myItem = document.getElementById(myItem);

	if (myItem.style.display != "none") {
		myItem.style.display = "none";
	}
	else {
		myItem.style.display = "block";
	}
}

//
// Add needed functions
//
function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\s)'+searchClass+'(\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      if (oldonload) {
        oldonload();
      }
      func();
    }
  }
}

//
// Alternate table row colors
//
function stripeTable(t) {
	var i, odd = true;
	for (i=0; i<t.rows.length; i++) {
		t.rows[i].className += odd ? ' odd' : ' even';
		odd = !odd;
		}
	}
function stripeTableById(id) {
	var t = document.getElementById(id);
	if (t) stripeTable(t);
	}
function stripeTableByClass() {
	var t = getElementsByClass('stripe');
	for (var i=0; i<t.length; i++) stripeTable(t[i])
	}
function stripeAllTables() {
	var t = document.getElementsByTagName('TABLE');
	for (var i=0; i<t.length; i++) stripeTable(t[i])
	}

addLoadEvent(init_menu);
addLoadEvent(stripeTableByClass);