/**
 * 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.opens = new Array();
_menu.isIE  = false;
_menu.bVer  = 0;

function initMenu(id){
	_menu.menu = $(id);
	_menu.pos  = getPosition(_menu.menu);
	
	// needed to fix IE bug...
	_menu.isIE = (navigator.userAgent.indexOf('MSIE') >= 0 && navigator.userAgent.indexOf('Opera') < 0) ? true : false;
    if (/MSIE (\d+\.\d+);/.test(navigator.userAgent)){
        _menu.bVer = new Number(RegExp.$1); 
    }

}

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(){
	closeAllMenu(_menu.menu.childNodes[0], true);
	return true;
}

function openMenu(elm, deep){
	deep = deep || 1;

	elm.style.backgroundPosition = 'bottom';
	elm.getElementsByTagName('A')[0].className = 'active';
	
    var smenu = elm.getElementsByTagName('DIV')[0];
    if (smenu){
		if (_menu.isIE && _menu.bVer < 7) { // IE 6
			elm.style.marginBottom = '-3px';
			if (deep == 1){
				smenu.style.top  = _menu.pos.y + elm.offsetTop + 'px';
				smenu.style.left = _menu.pos.x + 221 + 'px';
			} else {
				smenu.style.top = elm.offsetTop + 8 + 'px';
				smenu.style.left = 211 + 'px';
			}
            
		} else if (_menu.isIE && _menu.bVer < 8) { // IE 7
			elm.style.marginBottom = '-3px';
			if (deep == 1){
				smenu.style.top  = _menu.pos.y + elm.offsetTop + 'px';
				smenu.style.left = _menu.pos.x + 221 + 'px';
			} else {
				smenu.style.top = elm.offsetTop + 8 + 'px';
				smenu.style.left = 211 + 'px';
			}
			
		} else {
			smenu.style.top  = -22 + 'px';
			smenu.style.left = 207 + 'px';
		}
		smenu.style.display = 'block';
		smenu.style.visibility = 'visible';
	}
}

function closeMenu(elm){	
	elm.style.backgroundPosition = 'top';
	elm.getElementsByTagName('A')[0].className = '';
	if (_menu.isIE && _menu.bVer < 8) elm.style.marginBottom = '0px';
	
	smenu = elm.getElementsByTagName('DIV')[0];
	if (smenu) {
		smenu.style.display = 'none';
		smenu.style.visibility = 'hidden';
	}
}

function closeAllMenu(elm, close_all){
	close_all = close_all || false;
	
	var items = elm.parentNode.childNodes;
	
	for (var i=0; i<items.length; i++){
		if (items[i].nodeName == 'LI'){
			items[i].style.backgroundPosition = 'top';
			items[i].getElementsByTagName('A')[0].className = '';
			if (_menu.isIE && _menu.bVer < 8) items[i].style.marginBottom = '0px';
			
			smenu = items[i].getElementsByTagName('DIV')[0];
			if (smenu) {
				smenu.style.display = 'none';
				smenu.style.visibility = 'hidden';
				
				if (close_all){
					smenu_elm = smenu.getElementsByTagName('LI')[0];
					if (smenu_elm) closeAllMenu(smenu_elm, close_all);
				}
			}
		}
	}
}


/* 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};
}
