var WM_BOTTOM = "bottom";
var WM_RIGHT  = "right";

var WM_BOTTOM_MARGIN_BOTTOM = 2;
var WM_BOTTOM_MARGIN_LEFT   = 0;

var WM_RIGHT_MARGIN_BOTTOM = 0;
var WM_RIGHT_MARGIN_RIGHT  = 4;

if (userAgent() == 'ie')
{
    var WM_BOTTOM_MARGIN_BOTTOM = 2;
    var WM_BOTTOM_MARGIN_LEFT   = 0;

    var WM_RIGHT_MARGIN_BOTTOM = 0;
    var WM_RIGHT_MARGIN_RIGHT  = 4;
}
if (userAgent() == 'opera')
{
    var WM_BOTTOM_MARGIN_BOTTOM = 4;
    var WM_BOTTOM_MARGIN_LEFT   = 0;

    var WM_RIGHT_MARGIN_BOTTOM = 0;
    var WM_RIGHT_MARGIN_RIGHT  = 4;
}

var currentItem = null;
var menuTrail = new Array();
var currentStyleOff = null;


function userAgent()
{

    var name = navigator.userAgent.toLowerCase();

    if (name.indexOf('opera') + 1)
        return 'opera';
    else if (name.indexOf('firefox') + 1)
        return 'firefox';
    else if (name.indexOf('msie') + 1)
        return 'ie';

    return 'unknow';
}

function wmItemOn(item, level, submenuId, submenuPosition) 
{
    if (item.onmouseout == "null") 
    {
        item.onmouseout = startOffTimer;
    }
    
    stopOffTimer();

    currentItem = item;

    if (submenuId != "null")
    {
        hide(level);
        var menu = document.getElementById(submenuId);
        
        if (menu.style.display == "block")
          return;

        if (submenuPosition == WM_BOTTOM) 
        {
            menu.style.top = findOffsetTop(item) + item.offsetHeight + WM_BOTTOM_MARGIN_BOTTOM;
            menu.style.left = findOffsetLeft(item) + WM_BOTTOM_MARGIN_LEFT;
        }

        if (submenuPosition == WM_RIGHT) 
        {
            menu.style.top = findOffsetTop(item) + WM_RIGHT_MARGIN_BOTTOM;
            menu.style.left = findOffsetLeft(item) + item.offsetWidth + WM_RIGHT_MARGIN_RIGHT;
        }

        menu.style.display = "block";
        menuTrail[level] = menu;
    }
    else
    {
        hide(level);
    }
}
//
// hiding menu 
//
function hide(level) 
{
    for (var i = level; i < menuTrail.length; i++)
    {
        menuTrail[i].style.display = "none";

    }      
}

var timerID   = null;
var timerOn   = false;
var timecount = 1000; // Steven changed this to fix IE bug

function startOffTimer() 
{
    if (timerOn == false) 
    {
        timerID = setTimeout("offAll()", timecount);
        timerOn = true;
    }
}

function stopOffTimer() 
{
    if (timerOn) 
    {
         clearTimeout(timerID);
         timerID = null;
         timerOn = false;
    }
}

function offAll() {
    hide(0);
}


function findOffsetLeft(obj)
{
    var curleft = 0;
    if (obj.offsetParent)
    {
        while (obj.offsetParent)
        {
            curleft += obj.offsetLeft;
            obj = obj.offsetParent;
        }
    } 
    else if (obj.x) 
    {
        curleft += obj.x;
    }
    return curleft;
}

function findOffsetTop(obj)
{
    var curtop = 0;
    if (obj.offsetParent) 
    {
        while (obj.offsetParent)
        {
            curtop += obj.offsetTop;
            obj = obj.offsetParent;
        }
    }
    else if (obj.y)
    {
        curtop += obj.y;
    }
    return curtop;
}