/**
 * Menu functions
 */
 
var _menu = new Object();
_menu.in_menu = 0;
_menu.menu_timer = 0;
_menu.menu_elm = false;
_menu.smenu_elm = false;
_menu.menu = false;
_menu.pos  = new Array();
_menu.megamenu = false;
_menu.path  = '';
_menu.path_ = Array();

function initMenu(id, path){
	_menu.menu  = $(id);
	_menu.pos   = getPosition(_menu.menu);
	_menu.path  = path;
	_menu.path_ = _menu.path.split('/');
	
	setMenuState();
}

function setMenu(ind){
	_menu.in_menu = ind;
	if (_menu.menu_timer) clearTimeout(_menu.menu_timer);
	if (_menu.in_menu == 0) _menu.menu_timer = setTimeout(setMenuState, 200);	
}

function setMenuState(){
	closeMenus();
	
	return true;
}

function openMenu(elm){
	if (elm != _menu.menu_elm){
		closeMenus();
	}
	
	elm.parentNode.style.backgroundPosition = 'bottom';
	var smenu = elm.parentNode.getElementsByTagName('UL')[0];
    if (smenu){
		//smenu.style.left = _menu.pos.x + 'px';
		smenu.style.display = 'block';
		smenu.style.zIndex = '10000';
	}
	
	_menu.menu_elm = elm;
}

function closeMenus(){
	var items = _menu.menu.childNodes;
	
	for (var i=0; i<items.length; i++){
		if (items[i].nodeName == 'LI'){
			// set the main menu
			if (_menu.path_[0] != null && items[i].id == _menu.path_[0]){
				items[i].style.backgroundPosition = 'bottom'; // menu is active
			} else {
				items[i].style.backgroundPosition = 'top'; //menu is inactive
			}
			
			// set submenu panel and items...
			smenu = items[i].getElementsByTagName('UL')[0];
			
			if (smenu) {
				 // z-index is set to a lower level of the currently selected submenu
				if (_menu.path_[0] != null && items[i].id == _menu.path_[0]){
					smenu.style.display = 'block'; // submenu is opened
					smenu.className = 'active'; // submenu is active
					smenu.style.zIndex = '9999';
				} else {
					smenu.style.display = 'none'; // submenu is closed
				}
				
				var smenu_items  = smenu.childNodes;
				var smenu_status = false;
				
				for (var j=0; j<smenu_items.length; j++){
					if (smenu_items[j].nodeName == 'LI'){
						// in any case, close a mega menu
						closeMegaMenus(smenu_items[j]);
						break;
					}
				}
			}
		}
	}
}


/* - Mega Menu - */

function openMegaMenu(elm, mid, width, height, last_ind){
	width  = width || 254;
	height = height || 54;
	last_ind = last_ind || 0;
	
	if (elm != _menu.smenu_elm) closeMegaMenus(elm);
	
	elm.getElementsByTagName('A')[0].className = 'active';

	var mmenu = $(mid);
	if (mmenu) {
		elm.style.backgroundPosition = 'bottom';
		
		var pos = getPosition(elm);
		_menu.megamenu = mmenu;
		mmenu.style.top  = pos.y + 28 + 'px';
		if (last_ind == 1) pos.x = pos.x - 88; // the last mmenu has only 1 column
		if (last_ind == 2) pos.x = pos.x - 340; // the last mmenu has 2 columns
		
		var mmenu_divs = mmenu.getElementsByTagName('DIV');
		for (var i=0; i<mmenu_divs.length; i++){
			mmenu_divs[i].style.height = height - 40 + 'px'; // 40 = top + bottom padding
		}
		mmenu.style.width = width + 'px';
		mmenu.style.left = pos.x + 'px';
		mmenu.style.display = 'block';
		mmenu.style.visibility = 'visible';
	}
	
	_menu.smenu_elm = elm;
}

function closeMegaMenus(elm) {
	var items = elm.parentNode.childNodes;
	
	if (_menu.megamenu) {
		_menu.megamenu.style.display = 'none';
		_menu.megamenu.style.visibility = 'hidden';
	}
	
	for (var i=0; i < items.length; i++){
		mmenu = false;
		
		if (items[i].nodeName == 'LI') {
			items[i].style.backgroundPosition = 'top';
			
			if (_menu.path_[1] != null && items[i].id == _menu.path_[1]){
				items[i].getElementsByTagName('A')[0].className = 'active';
			} else {
				items[i].getElementsByTagName('A')[0].className = '';
			}
		}
	}
}


/* helpful */
function getPosition(element){
    var x = 0;
    var y = 0;
    while (element != null){
        x += element.offsetLeft - element.scrollLeft;
        y += element.offsetTop - element.scrollTop;
        element = element.offsetParent;
    }
    return {x:x,y:y};
}

