/* Script by: www.jtricks.com 
 * Version: 20071127 
 * Latest version: 
 * www.jtricks.com/javascript/navigation/fixed_menu.html 
 */  
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 + 'px';  
             fixedMenu.menu.style.top = fixedMenu.currentY + 'px';  
         }  
     }  
   
     fixedMenu.menu.style.right = '';  
     fixedMenu.menu.style.bottom = '';  
 };  
   
 fixedMenu.floatMenu = function()  
 {  
     fixedMenu.moveMenu();  
     setTimeout('fixedMenu.floatMenu()', 20);  
 };  
   
 // addEvent designed by Aaron Moore  
 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);  
