// ---- XHTML Menu V 1.0 ---------------------
// XHTML Menu manager
// © 2003-2006 Onidji®. All rights reserved.

var CLASS_MENU_ROOT = 'menu-level-1';
var CLASS_MENU_SITE = 'menu-site';
var CLASS_DYNAMIC = 'dynamic';
var CLASS_SUB_MENU = 'sub-menu';
var CLASS_CURRENT_SUB_MENU = 'current-sub-menu';
var CLASS_CURRENT_MENU_ITEM = 'current-menu-item';

var _menu_timer_ = null;

function initMenus()
{
	var mm = getNodes(window.document,TAG_DIV,CLASS_MENU_SITE);
	for(var i=0;i<mm.length;i++)
	{
		var m = mm[i];
		addClassName(m,CLASS_DYNAMIC);
		var ll = m.getElementsByTagName(TAG_UL);
		   for(var j=1;j<ll.length;j++)
			addClassName(ll[j].parentNode,CLASS_SUB_MENU);
		if (m.addEventListener) 
		{
		   m.addEventListener(TAG_MOUSEOVER,eventShowMenu,true);
		   m.addEventListener(TAG_FOCUS,eventShowMenu,true);
		   m.addEventListener(TAG_DOMFOCUSIN,eventShowMenu,true);
		   m.addEventListener(TAG_MOUSEOUT,eventHideMenu,true);
		   m.addEventListener(TAG_BLUR,eventHideMenu,true);
		   m.addEventListener(TAG_DOMFOCUSOUT,eventHideMenu,true);
		} 
		else 
		{
				var ss = getElementsByClassName(CLASS_SUB_MENU, '*', m);
				for (var j=0;j<ss.length; j++)
				{
					addEvent(ss[j],TAG_MOUSEOVER,eventShowMenu);
					addEvent(ss[j],TAG_MOUSEOUT,eventHideMenu);
					var aa = ss[j].getElementsByTagName(TAG_A);
					for (var k=0;k<aa.length; k++) 
					{
						addEvent(aa[k],TAG_FOCUS,eventShowMenu);
						addEvent(aa[k],TAG_BLUR,eventHideMenu);
					}
				}
		}   
			   
	}
}


function eventShowMenu(event) 
{
	var node;
	if (event && event.target) {
		node = event.target;
	} else if (window.event) {
		node = window.event.srcElement;
	} else {
		node = this;
	}
	if (_menu_timer_!=null) {hideMenus();}
	while (!hasClassName(node,CLASS_MENU_SITE)) {
		if (hasClassName(node,CLASS_SUB_MENU)) {
			addClassName(node,CLASS_CURRENT_SUB_MENU);
		} else{
            addClassName(node,CLASS_CURRENT_MENU_ITEM);
        }
		node = node.parentNode;
	}

	if (window.event &&
		(typeof(window.event.cancelBubble)==TAG_BOOLEAN) )
	{
		window.event.cancelBubble = true;
	}
	return false;
}

function eventHideMenu(event) {
	var node, t;
	if (event && event.target) {
		node = event.target;
		t = event.relatedTarget;
	} else if (window.event) {
		node = window.event.srcElement;
		t = window.event.toElement;

	} else {
		node = this;
	}

	if (t) {
		var hideChilds;
		while (!hasClassName(node,CLASS_MENU_SITE)) {
			if ( (hasClassName(node,CLASS_SUB_MENU)) && (isChildOf(t,node)) ) 
			{
				hideChilds = node;
				break;
			}
			node = node.parentNode;
		}

		if (hideChilds) {
			hideMenus(hideChilds);
        } else {
			_menu_timer_ = setInterval('hideMenus()',850);
		}

	} else {
		hideMenus();
	}

	if (window.event &&
		(typeof(window.event.cancelBubble)==TAG_BOOLEAN) )
	{
		window.event.cancelBubble = true;
	}
	return false;
}
	
function hideMenus(node) {
	var mm = getNodes(window.document,TAG_DIV,CLASS_MENU_SITE);
	if (_menu_timer_!=null) 
	{
			clearInterval(_menu_timer_);
			_menu_timer_ = null;
	}
	for(var k=0;k<mm.length;k++)
	{
		var m = mm[k];
		node = node?node:m;
		var ss = getElementsByClassName(CLASS_SUB_MENU,'*', m);
		var ff = getElementsByClassName(CLASS_CURRENT_MENU_ITEM,'*', m);
		for (var i=0; ss[i]; i++) {
			deleteClassName(ss[i],CLASS_CURRENT_SUB_MENU);
		}
		for (var j=0; ff[j]; j++) {
			deleteClassName(ff[j],CLASS_CURRENT_MENU_ITEM);
		}
	}
}

function preInit()
{
	window.document.write('<style type="text/css">.menu-site ul ul {display: none;}</style>');
}

preInit();