// JavaScript Document
/* Script by: www.jtricks.com
 * Version: 20071017
 * Latest version:
 * www.jtricks.com/javascript/navigation/floating.html
 */
var languageMenuId = 'lang';
var languageMenu =
{	
	targetY: 6,

	hasInner: typeof(window.innerWidth) == 'number',
    hasElement: typeof(document.documentElement) == 'object'
        && typeof(document.documentElement.clientWidth) == 'number',

    menu:
        document.getElementById
        ? document.getElementById(languageMenuId)
        : document.all
          ? document.all[languageMenuId]
          : document.layers[languageMenuId]
};

languageMenu.move = function ()
{
    languageMenu.menu.style.top = languageMenu.targetY + 'px';
	languageMenu.menu.style.right = languageMenu.nextX + 'px';
}

languageMenu.calculateWidth = function ()
{
	languageMenu.maxwidth = document.documentElement.clientWidth; 

	languageMenu.currentWidth = 
		languageMenu.maxwidth <= 800 ? (languageMenu.maxwidth-950) : (languageMenu.maxwidth-950)/2;
	setTimeout('languageMenu.calculateWidth()', 10);
}


languageMenu.computeShifts = function ()
{
    var de = document.documentElement;
	
	languageMenu.shiftX = 
		languageMenu.hasInner  
		? pageXOffset  
		: languageMenu.hasElement  
		  ? de.scrollLeft  
		  : document.body.scrollLeft;
	if (languageMenu.targetX < 0)
	{
		languageMenu.shiftX += 
			languageMenu.hasElement
			? (de.clientWidth - 950)
			: (document.body.clientWidth - 950);
	}
}

languageMenu.calculateCornerX = function()
{
    if (languageMenu.nextX != languageMenu.currentWidth)
		languageMenu.targetX = languageMenu.currentWidth + 10;

	if (languageMenu.targetX != 'center')
		return languageMenu.targetX - languageMenu.shiftX;

    var width = parseInt(languageMenu.menu.offsetWidth);

    var cornerX =
        languageMenu.hasElement
        ? (languageMenu.hasInner
           ? pageXOffset
           : document.documentElement.scrollLeft) + 
          (languageMenu.maxwidth - width)/2
        : document.body.scrollLeft + 
          (document.body.clientWidth - width)/2;
    return cornerX;
};

languageMenu.doFloat = function()
{
    var stepX;

	languageMenu.computeShifts();

    var cornerX = languageMenu.calculateCornerX();

    var stepX = (cornerX - languageMenu.nextX) * .07;
    if (Math.abs(stepX) < .5)
    {
        stepX = cornerX - languageMenu.nextX;
    }

    if (Math.abs(stepX) > 0)
    {
        languageMenu.nextX += stepX;
        languageMenu.move();
    }

    setTimeout('languageMenu.doFloat()', 20);
};

// addEvent designed by Aaron Moore
languageMenu.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 = element[listener + '_num'] -1; i >= 0; 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']++;
};

languageMenu.init = function()
{
    languageMenu.initSecondary();
   	languageMenu.doFloat();
};

// Some browsers init scrollbars only after
// full document load.
languageMenu.initSecondary = function()
{
	languageMenu.calculateWidth();
	languageMenu.computeShifts();
    languageMenu.nextX = languageMenu.calculateCornerX();
    languageMenu.move();
}

if (document.layers)
    languageMenu.addEvent(window, 'onload', languageMenu.init);
else
{
    languageMenu.init();
    languageMenu.addEvent(window, 'onload', languageMenu.initSecondary);
}


