// $Id: menu.js 149 2008-11-20 15:58:26Z webb $        
var wac_menuObj;       // Reference to the menu div
var currentZIndex = 1000;
var liIndex = 0;
var visibleMenus = new Array();
var activeMenuItem = false;
var timeBeforeAutoHide = 1200; // Microseconds from mouse leaves menu to auto hide.
var wac_menu_arrow = 'images/arrow.gif';

var MSIE = navigator.userAgent.indexOf('MSIE')>=0?true:false;
var navigatorVersion = navigator.appVersion.replace(/.*?MSIE ([0-9]\.[0-9]).*/g,'$1')/1;
var menuBlockArray = new Array();
var menuParentOffsetLeft = false;       
function getTopPos(inputObj)
{
        
  var returnValue = inputObj.offsetTop;
  if(inputObj.tagName=='LI' && inputObj.parentNode.className=='menuBlock1') {
        var aTag = inputObj.getElementsByTagName('A')[0];
        if(aTag)returnValue += aTag.parentNode.offsetHeight;

  }       
  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetTop;

  return returnValue;
}

function getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null)returnValue += inputObj.offsetLeft;
  return returnValue;
}

function showHideSub()
{

        var attr = this.parentNode.getAttribute('currentDepth');
        if(navigator.userAgent.indexOf('Opera')>=0){
                attr = this.parentNode.currentDepth;
        }
        
        this.className = 'currentDepth' + attr + 'over';
        
        if(activeMenuItem && activeMenuItem!=this){
                activeMenuItem.className=activeMenuItem.className.replace(/over/,'');
        }
        activeMenuItem = this;

        var numericIdThis = this.id.replace(/[^0-9]/g,'');
        var exceptionArray = new Array();
        // Showing sub item of this LI
        var sub = document.getElementById('subOf' + numericIdThis);
        if(sub){
                visibleMenus.push(sub);
                sub.style.display='';
                sub.parentNode.className = sub.parentNode.className + 'over';
                exceptionArray[sub.id] = true;
        }       
        
        // Showing parent items of this one
        
        var parent = this.parentNode;
        while(parent && parent.id && parent.tagName=='UL'){
                visibleMenus.push(parent);
                exceptionArray[parent.id] = true;
                parent.style.display='';
                
                var li = document.getElementById('wac_listItem' + parent.id.replace(/[^0-9]/g,''));
                if(li.className.indexOf('over')<0)li.className = li.className + 'over';
                parent = li.parentNode;
                
        }
                
        hideMenuItems(exceptionArray);

}

function hideMenuItems(exceptionArray)
{
        /*
        Hiding visible menu items
        */
        var newVisibleMenuArray = new Array();
        for(var no=0;no<visibleMenus.length;no++){
                if(visibleMenus[no].className!='menuBlock1' && visibleMenus[no].id){
                        if(!exceptionArray[visibleMenus[no].id]){
                                var el = visibleMenus[no].getElementsByTagName('A')[0];
                                visibleMenus[no].style.display = 'none';
                                var li = document.getElementById('wac_listItem' + visibleMenus[no].id.replace(/[^0-9]/g,''));
                                if(li.className.indexOf('over')>0)li.className = li.className.replace(/over/,'');
                        }else{                          
                                newVisibleMenuArray.push(visibleMenus[no]);
                        }
                }
        }               
        visibleMenus = newVisibleMenuArray;             
}



var menuActive = true;
var hideTimer = 0;
function mouseOverMenu()
{
        menuActive = true;              
}

function mouseOutMenu()
{
        menuActive = false;
        timerAutoHide();        
}

function timerAutoHide()
{
        if(menuActive){
                hideTimer = 0;
                return;
        }
        
        if(hideTimer<timeBeforeAutoHide){
                hideTimer+=100;
                setTimeout('timerAutoHide()',99);
        }else{
                hideTimer = 0;
                autohideMenuItems();    
        }
}

function autohideMenuItems()
{
        if(!menuActive){
                hideMenuItems(new Array());     
                if(activeMenuItem)activeMenuItem.className=activeMenuItem.className.replace(/over/,'');         
        }
}


function initSubMenus(inputObj,initOffsetLeft,currentDepth)
{       
        var subUl = inputObj.getElementsByTagName('UL');
        if(subUl.length>0){
                var ul = subUl[0];
                
                ul.id = 'subOf' + inputObj.id.replace(/[^0-9]/g,'');
                ul.setAttribute('currentDepth' ,currentDepth);
                ul.currentDepth = currentDepth;
                ul.className='menuBlock' + currentDepth;
                ul.onmouseover = mouseOverMenu;
                ul.onmouseout = mouseOutMenu;
                currentZIndex+=1;
                ul.style.zIndex = currentZIndex;
                menuBlockArray.push(ul);
                var topPos = getTopPos(inputObj);
                var leftPos = getLeftPos(inputObj)/1 + initOffsetLeft/1;                        
                ul = wac_menuObj.appendChild(ul);
                ul.style.position = 'absolute';


















                ul.style.left = leftPos + 'px';
                ul.style.top = topPos + 'px';
                var li = ul.getElementsByTagName('LI')[0];

                while(li){
                        if(li.tagName=='LI'){   
                                li.className='currentDepth' + currentDepth;                                     
                                li.id = 'wac_listItem' + liIndex;
                                liIndex++;                              
                                var uls = li.getElementsByTagName('UL');
                                li.onmouseover = showHideSub;

                                if(uls.length>0){
                                        var offsetToFunction = li.getElementsByTagName('A')[0].offsetWidth+2;
                                        if(navigatorVersion<6 && MSIE)offsetToFunction+=15;     // MSIE 5.x fix
                                        initSubMenus(li,offsetToFunction,(currentDepth+1));
                                }       
                                if(MSIE){
                                        var a = li.getElementsByTagName('A')[0];
                                        a.style.width=li.offsetWidth+'px';
                                        a.style.display='block';
                                }                                       
                        }
                        li = li.nextSibling;
                }
                ul.style.display = 'none';      
                if(!document.all){
                        //wac_menuObj.appendChild(ul);
                }
        }       
}


function resizeMenu()
{
        var offsetParent = getLeftPos(wac_menuObj);
        
        for(var no=0;no<menuBlockArray.length;no++){
                var leftPos = menuBlockArray[no].style.left.replace('px','')/1;
                menuBlockArray[no].style.left = leftPos + offsetParent - menuParentOffsetLeft + 'px';
        }
        menuParentOffsetLeft = offsetParent;
}

/* 
Initializing menu 
*/
function initwacMenu()
        {
wac_menuObj = document.getElementById('wac_menu');
        
        
        var aTags = wac_menuObj.getElementsByTagName('A');
        for(var no=0;no<aTags.length;no++){                     

                var subUl = aTags[no].parentNode.getElementsByTagName('UL');
                if(subUl.length>0 && aTags[no].parentNode.parentNode.parentNode.id != 'wac_menu'){
                        var img = document.createElement('IMG');
                        img.src = wac_menu_arrow;
                        aTags[no].appendChild(img);                             

                }

        }
                        
        var mainMenu = wac_menuObj.getElementsByTagName('UL')[0];
        mainMenu.className='menuBlock1';
        mainMenu.style.zIndex = currentZIndex;
        mainMenu.setAttribute('currentDepth' ,1);
        mainMenu.currentDepth = '1';
        mainMenu.onmouseover = mouseOverMenu;
        mainMenu.onmouseout = mouseOutMenu;             

        var mainMenuItemsArray = new Array();
        var mainMenuItem = mainMenu.getElementsByTagName('LI')[0];
        mainMenu.style.height = mainMenuItem.offsetHeight + 2 + 'px';
        while(mainMenuItem){
                
                mainMenuItem.className='currentDepth1';
                mainMenuItem.id = 'wac_listItem' + liIndex;
                mainMenuItem.onmouseover = showHideSub;
                liIndex++;                              
                if(mainMenuItem.tagName=='LI'){
                        mainMenuItem.style.cssText = 'float:left;';     
                        mainMenuItem.style.styleFloat = 'left';
                        mainMenuItemsArray[mainMenuItemsArray.length] = mainMenuItem;
                        initSubMenus(mainMenuItem,0,2);
                }                       
                
                mainMenuItem = mainMenuItem.nextSibling;
                
        }

        for(var no=0;no<mainMenuItemsArray.length;no++){
                initSubMenus(mainMenuItemsArray[no],0,2);                       
        }
        
        menuParentOffsetLeft = getLeftPos(wac_menuObj);        
        window.onresize = resizeMenu;   
        wac_menuObj.style.visibility = 'visible';      
}

window.onload = initwacMenu;

