fixedMenuId = 'altpagina';  
  
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.checkPos();
	if (fixedMenu.menu.style.display != "none") {
	    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()  
{  
	// recuperar posició inicial
	fixedMenuRef = findVerticalPos(document.getElementById("posicioAltPagina"));
	//console.debug(fixedMenu.supportsFixed());

    if (fixedMenu.supportsFixed())  { 
	    var ob =   
          document.layers   
          ? fixedMenu.menu   
          : fixedMenu.menu.style;  
        ob.position = "fixed";
		ob.display = "none";
		fixedMenu.addEvent(window, 'onscroll', fixedMenu.checkPos);
	}  
    else  
    {  

        var ob =   
            document.layers   
            ? fixedMenu.menu   
            : fixedMenu.menu.style;  
		ob.position = "absolute";
        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();  
    }  
};  
function findVerticalPos (obj) {  
	var curtop = 0;
	if (obj.offsetParent) {
		do {
			curtop += obj.offsetTop;
		} while (obj = obj.offsetParent);
	} 
	return curtop;
};
fixedMenu.checkPos = function () {
	var scrollY = getScrollXY()[1];
	var ob =   
        document.layers   
        ? fixedMenu.menu   
        : fixedMenu.menu.style;  
	if (scrollY>fixedMenuRef)
		ob.display = "block";
	else
		ob.display = "none";
}
fixedMenu.addEvent(window, 'onload', fixedMenu.init);  
