// JavaScript Document
headerDivId = 'headerdiv';  
   
var headerDiv =   
{  
     hasInner: typeof(window.innerWidth) == 'number',  
     hasElement: document.documentElement != null  
        && document.documentElement.clientWidth,  
   
     menu: document.getElementById  
         ? document.getElementById(headerDivId)  
         : document.all  
           ? document.all[headerDivId]  
           : document.layers[headerDivId]  
};  
  
headerDiv.computeShifts = function()  
{  
    headerDiv.shiftX = headerDiv.hasInner  
        ? pageXOffset  
        : headerDiv.hasElement  
          ? document.documentElement.scrollLeft  
          : document.body.scrollLeft;  
    if (headerDiv.targetLeft > 0)  
        headerDiv.shiftX += headerDiv.targetLeft;  
    else  
    {  
        headerDiv.shiftX +=   
            (headerDiv.hasElement  
              ? document.documentElement.clientWidth  
              : headerDiv.hasInner  
                ? window.innerWidth - 20  
                : document.body.clientWidth)  
            - headerDiv.targetRight  
            - headerDiv.menu.offsetWidth;  
    }  
  
    headerDiv.shiftY = headerDiv.hasInner  
        ? pageYOffset  
        : headerDiv.hasElement  
          ? document.documentElement.scrollTop  
          : document.body.scrollTop;  
    if (headerDiv.targetTop > 0)  
        headerDiv.shiftY += headerDiv.targetTop;  
    else  
    {  
        headerDiv.shiftY +=   
            (headerDiv.hasElement  
            ? document.documentElement.clientHeight  
            : headerDiv.hasInner  
              ? window.innerHeight - 20  
             : document.body.clientHeight)  
            - headerDiv.targetBottom  
            - headerDiv.menu.offsetHeight;  
    }  
};  
  
headerDiv.moveMenu = function()  
{  
    headerDiv.computeShifts();  
  
    if (headerDiv.currentX != headerDiv.shiftX  
        || headerDiv.currentY != headerDiv.shiftY)  
    {  
        headerDiv.currentX = headerDiv.shiftX;  
        headerDiv.currentY = headerDiv.shiftY;  
  
        if (document.layers)  
        {  
            headerDiv.menu.left = headerDiv.currentX;  
            headerDiv.menu.top = headerDiv.currentY;  
        }  
        else  
        {  
            headerDiv.menu.style.left = headerDiv.currentX + 'px';  
            headerDiv.menu.style.top = headerDiv.currentY + 'px';  
        }  
    }  
  
    headerDiv.menu.style.right = '';  
    headerDiv.menu.style.bottom = '';  
};  
   
headerDiv.floatMenu = function()  
{  
    headerDiv.moveMenu();  
    setTimeout('headerDiv.floatMenu()', 20);  
};  
  
// addEvent designed by Aaron Moore  
headerDiv.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']++;  
};  
  
headerDiv.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;  
};  
  
headerDiv.init = function()  
{  
    if (headerDiv.supportsFixed())  
        headerDiv.menu.style.position = "fixed";  
    else  
    {  
        var ob =   
            document.layers   
            ? headerDiv.menu   
            : headerDiv.menu.style;  
  
        headerDiv.targetLeft = parseInt(ob.left);  
        headerDiv.targetTop = parseInt(ob.top);  
        headerDiv.targetRight = parseInt(ob.right);  
        headerDiv.targetBottom = parseInt(ob.bottom);  
  
        if (document.layers)  
        {  
            menu.left = 0;  
            menu.top = 0;  
        }  
        headerDiv.addEvent(window, 'onscroll', headerDiv.moveMenu);  
        headerDiv.floatMenu();  
    }  
};  
  
headerDiv.addEvent(window, 'onload', headerDiv.init);  
