fixedMenuId = 'fixeddiv';   
  
var fixedMenu =    
{   
    hasInner: typeof(window.innerWidth) == 'number',   
    hasElement: document.documentElement != null  
       && document.documentElement.clientWidth,   
  
    menu: document.getElementById   
        ? document.getElementById(fixedMenuId)   
        : document.all   
          ? document.all[fixedMenuId]   
          : document.layers[fixedMenuId]   
};   
  
fixedMenu.computeShifts = function()   
{   
    fixedMenu.shiftX = fixedMenu.hasInner   
        ? pageXOffset   
        : fixedMenu.hasElement   
          ? document.documentElement.scrollLeft   
          : document.body.scrollLeft;   
    if (fixedMenu.targetLeft >= 0)   
        fixedMenu.shiftX += fixedMenu.targetLeft;   
    else  
    {   
        fixedMenu.shiftX +=    
            (fixedMenu.hasElement   
              ? document.documentElement.clientWidth   
              : fixedMenu.hasInner   
                ? window.innerWidth - 20   
                : document.body.clientWidth)   
            - fixedMenu.targetRight   
            - fixedMenu.menu.offsetWidth;   
    }   
  
    fixedMenu.shiftY = fixedMenu.hasInner   
        ? pageYOffset   
        : fixedMenu.hasElement   
          ? document.documentElement.scrollTop   
          : document.body.scrollTop;   
    if (fixedMenu.targetTop >= 0)   
        fixedMenu.shiftY += fixedMenu.targetTop;   
    else  
    {   
        fixedMenu.shiftY +=    
            (fixedMenu.hasElement   
            ? document.documentElement.clientHeight   
            : fixedMenu.hasInner   
              ? window.innerHeight - 20   
              : document.body.clientHeight)   
            - fixedMenu.targetBottom   
            - fixedMenu.menu.offsetHeight;   
    }   
};   
  
fixedMenu.moveMenu = function()   
{   
    fixedMenu.computeShifts();   
  
    if (fixedMenu.currentX != fixedMenu.shiftX   
        || fixedMenu.currentY != fixedMenu.shiftY)   
    {   
        fixedMenu.currentX = fixedMenu.shiftX;   
        fixedMenu.currentY = fixedMenu.shiftY;   
  
        if (document.layers)   
        {   
            fixedMenu.menu.left = fixedMenu.currentX;   
            fixedMenu.menu.top = fixedMenu.currentY;   
        }   
        else  
        {   
            fixedMenu.menu.style.left = fixedMenu.currentX ;   
            fixedMenu.menu.style.top = fixedMenu.currentY;   
        }   
    }   
  
    fixedMenu.menu.style.right = '';   
    fixedMenu.menu.style.bottom = '';   
};   
  
fixedMenu.floatMenu = function()   
{   
    fixedMenu.moveMenu();   
    setTimeout('fixedMenu.floatMenu()', 20);   
};   
  
fixedMenu.addEvent = function(element, listener, handler)   
{   
    if(typeof element[listener] != 'function' ||    
       typeof element[listener + '_num'] == 'undefined')   
    {   
        element[listener + '_num'] = 0;   
        if (typeof element[listener] == 'function')   
        {   
            element[listener + 0] = element[listener];   
            element[listener + '_num']++;   
        }   
        element[listener] = function(e)   
        {   
            var r = true;   
            e = (e) ? e : window.event;   
            for(var i = 0; i < element[listener + '_num']; i++)   
                if(element[listener + i](e) === false)   
                    r = false;   
            return r;   
        }   
    }   
  
    //if handler is not already stored, assign it   
    for(var i = 0; i < element[listener + '_num']; i++)   
        if(element[listener + i] == handler)   
            return;   
    element[listener + element[listener + '_num']] = handler;   
    element[listener + '_num']++;   
};   
  
fixedMenu.supportsFixed = function()   
{   
    var testDiv = document.createElement("div");   
    testDiv.id = "testingPositionFixed";   
    testDiv.style.position = "fixed";   
    testDiv.style.top = "0px";   
    testDiv.style.right = "0px";   
    document.body.appendChild(testDiv);   
    var offset = 1;   
    if (typeof testDiv.offsetTop == "number"  
        && testDiv.offsetTop != null    
        && testDiv.offsetTop != "undefined")   
    {   
        offset = parseInt(testDiv.offsetTop);   
    }   
    if (offset == 0)   
    {   
        return true;   
    }   
  
    return false;   
};   
  
fixedMenu.init = function()   
{   
    if (fixedMenu.supportsFixed())   
        fixedMenu.menu.style.position = "fixed";   
    else  
    {   
        var ob =    
            document.layers    
            ? fixedMenu.menu    
            : fixedMenu.menu.style;   
  
        fixedMenu.targetLeft = parseInt(ob.left);   
        fixedMenu.targetTop = parseInt(ob.top);   
        fixedMenu.targetRight = parseInt(ob.right);   
        fixedMenu.targetBottom = parseInt(ob.bottom);   
  
        if (document.layers)   
        {   
            menu.left = 0;   
            menu.top = 0;   
        }   
        fixedMenu.addEvent(window, 'onscroll', fixedMenu.moveMenu);   
        fixedMenu.floatMenu();   
    }   
}; 

fixedMenu.addEvent(window, 'onload', fixedMenu.init);