/*-[ menu ]--------------------------------------------------*/

var menuCloseDelay = 400;

var objMenu = new Array();
var lastEl = "";
var lastLevel = 0;
var lastA = "";
var closeOkay = true;
var cTimer = null;


if (document.getElementById && J2styl()) document.onmousemove = findMenu;


function findMenu(event) {
	evnt = eval((document.all)?"window.event.srcElement":"event.target");
	if (evnt != lastEl) {
		ul = evnt;
		var level = 0;
		while (ul = findParentTagName(ul,"ul")) {
			level++;
			if (J2hasClassName(ul,"menu")) break;
			ul = ul.parentNode;
		};
		
		if (lastA) {
			J2removeClassName(lastA,"over");
			lastA = "";
		}

		if (ul) {

			if (evnt.tagName.toLowerCase() != "ul") {

				noTimerClose();

				if (objMenu.length > level-1) {
					hideMenu(level-1);
				}
				
				if (li = findParentTagName(evnt,"li")) {
					a_a = li.getElementsByTagName("a");
					if (a_a.length > 0) {
						a = a_a[0];
						if (!J2hasClassName(a,"over")) {
							J2addClassName(a,"over");
							lastA = a;
						}
					}

					ul_a = li.getElementsByTagName("ul");
					if (ul_a.length > 0) {
						ul = ul_a[0];
						if (!J2hasClassName(ul,"show")) {
							J2addClassName(ul,"show");
							J2addClassName(a,"open");
							objMenu[objMenu.length]=ul;
						}
					}
				}
			}		
		}
		else {
			timeHideMenu();
		}
	lastEl = evnt;
	}
}

function hideMenu(level) {
 	if (arguments.length == 0) level = 0;
	while (objMenu.length > level) {
		popped = objMenu[objMenu.length-1];
		objMenu = objMenu.slice(0,objMenu.length-1);
		J2removeClassName(popped,"show");
		li = popped.parentNode;
		a_a = li.getElementsByTagName("a");
		if (a_a.length > 0) {
			a = a_a[0];
			if (J2hasClassName(a,"open")) {
				J2removeClassName(a,"open");
			}
		}
	}
}

function timeHideMenu() {
    if(!closeOkay) {
        closeOkay=true;
        cTimer=setTimeout("doTimeClose()",menuCloseDelay);
    }
}

function doTimeClose() {
    clearTimeout(cTimer);
    hideMenu();
    closeOkay=false;
}

function noTimerClose() {
	closeOkay = false;
	clearTimeout(cTimer);
}


function findParentTagName(el,name) {
	while (el !=null && el.parentNode != null && el.tagName.toLowerCase() != name) {
		el = el.parentNode;
	}
	if (el !=null && el.parentNode != null)	return el;
	else return false;
}

/*-----------------------------------------------------------*/
