//var compatible = (document.getElementsByTagName && document.createElement);

//if (compatible)
	//document.write('<link rel="stylesheet" href="navstyles.css" />')

function initNavigation() {
	var lists = document.getElementsByTagName('ul');
	for (var i=0;i<lists.length;i++) {
		if (lists[i].className != 'xm_0') continue;
		lists[i].onmouseover = navMouseOver;
        lists[i].onmouseout = navMouseOut;
        //lists[i].getElementsByTagName('a')[0].onfocus = navMouseOver;
        //lists[i].getElementsByTagName('a')[0].onblur = navMouseOut;
		var listItems = lists[i].getElementsByTagName('li');
		for (var j=0;j<listItems.length;j++) {
		//	alert(listItems[j].getElementsByTagName('ul').length);
            listItems[j].getElementsByTagName('a')[0].onfocus = navMouseOver;
			var test = listItems[j].getElementsByTagName('ul')[0];
			if (test) {
				anchors = test.getElementsByTagName('a');
				for (var a in anchors) {
					if (anchors[a].className != "xm_0") {
						anchors[a].onblur = navMouseOut;
						anchors[a].onfocus = navMouseOver;
						//alert(a);
					}
				}
                //test.style.marginLeft = listItems[j-1].clientWidth*-1-2 + 'px';
                test.style.left = listItems[j-1].offsetLeft + 1 + 'px';
				listItems[j-1].relatedItem = test;
			}
            
		}
	}
}

var currentlyOpenedMenus = new Array();
var currentlyFocusedItem;

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,evt.type);
	if (evtTarget.relatedItem && !evtTarget.relatedItem.opened) {
		evtTarget.className = evtTarget.className + ' open';
		evtTarget.relatedItem.className = evtTarget.relatedItem.className + ' open';
        
        evtTarget.relatedItem.opened = true;
		currentlyOpenedMenus.push(evtTarget.relatedItem);
	}
}

function navMouseOut(e) {
	var evt = e || window.event;
	if (evt.type=="mouseout")
		var relatedNode = evt.relatedTarget || evt.toElement;
	else
		var relatedNode = evt.target || evt.srcElement;
	//alert(relatedNode.nodeName);
	foldMenuIn(relatedNode,evt.type);
}

function foldMenuIn(targetNode,evtType) {
	if (!targetNode) return;
	
	var newCurrentlyOpenedMenus = new Array();
	for (var i=0;i<currentlyOpenedMenus.length;i++) {
		//console.debug(targetNode.className.indexOf("end"));
		if ((!containsElement(currentlyOpenedMenus[i],targetNode) && (evtType.indexOf("mouse") > -1)) || (containsElement(currentlyOpenedMenus[i],targetNode) && evtType == "blur" && targetNode.className.indexOf("end")>-1) ) {
			currentlyOpenedMenus[i].className = currentlyOpenedMenus[i].className.replace(' open','');
			currentlyOpenedMenus[i].parentNode.previousSibling.className = currentlyOpenedMenus[i].parentNode.previousSibling.className.replace(' open','');
			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;
}

addEventSimple(window,"load",initNavigation);
addEventSimple(window,"resize",initNavigation);

function addEventSimple(obj,evt,fn) {
	if (obj.addEventListener)
		obj.addEventListener(evt,fn,false);
	else if (obj.attachEvent)
		obj.attachEvent('on'+evt,fn);
}

function removeEventSimple(obj,evt,fn) {
	if (obj.removeEventListener)
		obj.removeEventListener(evt,fn,false);
	else if (obj.detachEvent)
		obj.detachEvent('on'+evt,fn);
}
