//=====  General  =====//
	var W3CDOM = document.createElement && document.getElementsByTagName;
	
	if (W3CDOM) {
		document.write("<link rel='stylesheet' type='text/css' href='dropdown.css' />");
	}
	
	function addEvent(obj, evt, fn) {
		if (obj.addEventListener) {
			obj.addEventListener(evt, fn, false);
		} else if (obj.attachEvent) {
			obj.attachEvent('on'+evt, fn);
		}
	}

//=====  Dropdown Functionality  =====//
	function initNavigation() {
		if (!W3CDOM) return;
		
		var lists = document.getElementsByTagName('ul');
		
		for (var i = 0; i < lists.length; i++) {
			if (lists[i].className != 'menutree') continue;
			
			lists[i].onmouseover = navMouseOver;
			lists[i].onmouseout = navMouseOut;
			
			var listItems = lists[i].getElementsByTagName('li');
			
			for (var j = 0; j < listItems.length; j++) {
				var nestedList = listItems[j].getElementsByTagName('ul')[0];
				
				if(nestedList) {
					listItems[j].relatedItem = nestedList;
				}
			}
		}
	}
	
	var currentlyOpenedMenus = new Array();

	function navMouseOver(e) {
		var evt = e || window.event;
		var evtTarget = evt.target || evt.srcElement;
		
		if (evtTarget.nodeName == 'UL') return;
		
		while(evtTarget.nodeName != 'LI') {
			evtTarget = evtTarget.parentNode;
		}
		
		foldMenuIn(evtTarget);
		
		if (evtTarget.relatedItem && !evtTarget.relatedItem.opened) {
			evtTarget.className = 'highlight';
			evtTarget.relatedItem.className = 'foldOut';
			evtTarget.relatedItem.opened = true;
			currentlyOpenedMenus.push(evtTarget.relatedItem);
		}
	}

	function navMouseOut(e) {
		var evt = e || window.event;
		var relatedNode = evt.relatedTarget || evt.toElement
	
		foldMenuIn(relatedNode);
	}

	function foldMenuIn(targetNode) {
		if (!targetNode) return;
		
		var newCurrentlyOpenedMenus = new Array();
		 
		for (var i = 0; i < currentlyOpenedMenus.length; i++) {
			if (!containsElement(currentlyOpenedMenus[i], targetNode)) {
				currentlyOpenedMenus[i].className = '';
				currentlyOpenedMenus[i].parentNode.className = '';
				currentlyOpenedMenus[i].opened = false;
		
			} else {
				newCurrentlyOpenedMenus.push(currentlyOpenedMenus[i]);
			}	
		}
		
		currentlyOpenedMenus = newCurrentlyOpenedMenus;
	}

	function containsElement(obj1, obj2) {
		while (obj2.nodeName != "HTML") {
			if (obj2 == obj1) {
				return true; 
			}
			
			obj2 = obj2.parentNode;
		}
		
		return false;
	}

//=====  Initialization  =====//
	addEvent(window, 'load', initNavigation);