function init() {
	var uls = document.getElementsByTagName('ul');
	for (var u = 0; u < uls.length; u++) {
		if (uls[u].className.search(/\bslidingmenu\b/) == -1) continue;
		var lis = uls[u].getElementsByTagName('li');
		for (var i = 0; i < lis.length; i++) {
			var node = lis[i];
			if (node.nodeName.toLowerCase() == 'li' && node.getElementsByTagName('ul').length > 0) {
				addEvent(node, 'mouseover', getMoverFor(node), false);
				addEvent(node, 'mouseout', getMoutFor(node), false);
				node.getElementsByTagName('a')[0].className += ' subheader';
			}
		}
	}
}

function getMoverFor(node) {
	return function(e) { mover(e, node);};
}
function getMoutFor(node) {
	return function(e) { mout(e, node);};
}

function mover(e, targetElement) {
	
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if (!el) return;
	clearTimeout(el.outTimeout);
	for (var i = 0; i < el.childNodes.length; i++) {
		var node = el.childNodes[i];
		if (node.nodeName.toLowerCase() == 'ul') {
			node.style.display = 'block';
		}
	}
}

function mout(e, targetElement) {
	var el = window.event ? targetElement : e ? e.currentTarget : null;
	if (!el) return;
	el.outTimeout = setTimeout(function() { mout2(el); },100);
}

function mout2(el) {
	for (var i = 0; i < el.childNodes.length; i++) {
		var node = el.childNodes[i];
		
		if (node.nodeName.toLowerCase() == 'ul') {
			node.style.display = 'none';
		}
	}
}
function addEvent(elm, evType, fn, useCapture) {
		// cross browser event handling IE+, NS6, Mozilla
		// by Scot Andrew
		if (elm.addEventListener) {
			elm.addEventListener(evType, fn, useCapture);
			return true;
		} else if (elm.attachEvent) {
			var r = elm.attachEvent('on' + evType, fn);
			EventCache.add(elm, evType, fn);
			return r;
		} else {
			elm['on' + evType] = fn;
		}
	}

addEvent(window, 'load', init, false);
addEvent(window, 'unload', EventCache.flush, false);