var ScriptFocus = {
	
	install : function(root, depth) {
		if (navigator.platform == 'MacPPC' && navigator.appName == 'Microsoft Internet Explorer') return;
		if (depth < 1) depth = 1;
		var lis = root.getElementsByTagName('LI');
		for (var j = 0; j < lis.length; j++) {
			var this_li = lis[j];
			this_li.scriptFocusDepth = ScriptFocus.findDepth(this_li, root);

			if (this_li.scriptFocusDepth <= depth) {
				// for mouseover-activated menus in IE (others covered by CSS)
				if (navigator.appName == 'Microsoft Internet Explorer') {
					this_li.onmouseover = ScriptFocus.liMouseOver;
					this_li.onmouseout = ScriptFocus.liMouseOut;
					}
				
				// for keyboard-activated menus in all browsers
				var focusHandler = ScriptFocus.makeFocusHandler(this_li);
				var blurHandler = ScriptFocus.makeBlurHandler(this_li);
				var anchors = this_li.getElementsByTagName('A');
				for(var k = 0; k < anchors.length; k++) {
					anchors[k].onfocus = focusHandler;
					anchors[k].onblur = blurHandler;
					}
				}
			}
		},
	
	findDepth : function(li, root) {
		if (!li) return 0;
		if (li == root) return 1;
		if ('scriptFocusDepth' in li) return li.scriptFocusDepth+1;
		return ScriptFocus.findDepth(li.parentNode, root);
		},
	
	liMouseOver : function(e) {
		ScriptFocus.addClassName(this, 'scriptfocus');
		},

	liMouseOut : function(e) {
		ScriptFocus.removeClassName(this,'scriptfocus');
		},
	
	makeFocusHandler : function(node) {
		node.menuTimer = null;
		return function() {
			if (node.menuTimer != null) {
				window.clearTimeout(node.menuTimer);
				node.menuTimer = null;
				}
			ScriptFocus.addClassName(node, 'scriptfocus');
			};
		},
	
	makeBlurHandler : function(node) {
		return function() {
			// defer closing the menu, otherwise the links in the menus will be skipped
			node.menuTimer = window.setTimeout(function () { ScriptFocus.removeClassName(node, 'scriptfocus') }, 0);
			};
		},

	addClassName : function(element, className) {
		ScriptFocus.removeClassName(element, className);
		element.className += ' ' + className;
		},
	
	removeClassName : function(element, className) {
		var newClassName = '';
		var a = element.className.split(' ');
		for (var i = 0; i < a.length; i++) {
			if (a[i] != className) {
			if (i > 0)
				newClassName += ' ';
				newClassName += a[i];
				}
			}
		element.className = newClassName;
		}
	
	};


window.onload = function() {
	ScriptFocus.install(document.getElementById('navlist'), 2);
	};
