if(!floatdivpos || floatdivpos>400)floatdivpos=400;
var floatingMenuId = 'floatdiv';
var floatingMenu =
{
  targetX: 0,
  targetY: floatdivpos,
 
  hasInner: typeof(window.innerWidth) == 'number',
  hasElement: typeof(document.documentElement) == 'object'
  && typeof(document.documentElement.clientWidth) == 'number',
 
  menu:
  document.getElementById
  ? document.getElementById(floatingMenuId)
  : document.all
  ? document.all[floatingMenuId]
  : document.layers[floatingMenuId]
};
 
floatingMenu.move = function ()
{
  floatingMenu.menu.style.left = floatingMenu.nextX + 'px';
  floatingMenu.menu.style.top = floatingMenu.nextY + 'px';
}
 
floatingMenu.computeShifts = function ()
{
  var de = document.documentElement;
 
  floatingMenu.shiftX =  
  floatingMenu.hasInner  
  ? pageXOffset  
  : floatingMenu.hasElement  
  ? de.scrollLeft  
  : document.body.scrollLeft;  
  if (floatingMenu.targetX < 0)
  {
   floatingMenu.shiftX +=
   floatingMenu.hasElement
   ? de.clientWidth
   : document.body.clientWidth;
  }
 
  floatingMenu.shiftY = 
  floatingMenu.hasInner
  ? pageYOffset
  : floatingMenu.hasElement
  ? de.scrollTop
  : document.body.scrollTop;
  if (floatingMenu.targetY < 0)
  {
   if (floatingMenu.hasElement && floatingMenu.hasInner)
   {
    // Handle Opera 8 problems
    floatingMenu.shiftY +=
    de.clientHeight > window.innerHeight
    ? window.innerHeight
    : de.clientHeight
   }
   else
   {
    floatingMenu.shiftY +=
    floatingMenu.hasElement
    ? de.clientHeight
    : document.body.clientHeight;
   }
  }
}
 
floatingMenu.calculateCornerX = function()
{
  if (floatingMenu.targetX != 'center')
  return floatingMenu.shiftX + floatingMenu.targetX;
 
  var width = parseInt(floatingMenu.menu.offsetWidth);
 
  var cornerX =
  floatingMenu.hasElement
  ? (floatingMenu.hasInner
   ? pageXOffset
   : document.documentElement.scrollLeft) + 
  (document.documentElement.clientWidth - width)/2
  : document.body.scrollLeft + 
  (document.body.clientWidth - width)/2;
  return cornerX;
};
 
floatingMenu.calculateCornerY = function()
{
  if (floatingMenu.targetY != 'center')
  return floatingMenu.shiftY + floatingMenu.targetY;
 
  var height = parseInt(floatingMenu.menu.offsetHeight);
 
  // Handle Opera 8 problems
  var clientHeight = 
  floatingMenu.hasElement && floatingMenu.hasInner
  && document.documentElement.clientHeight 
  > window.innerHeight
  ? window.innerHeight
  : document.documentElement.clientHeight
 
  var cornerY =
  floatingMenu.hasElement
  ? (floatingMenu.hasInner  
   ? pageYOffset
   : document.documentElement.scrollTop) + 
  (clientHeight - height)/2
  : document.body.scrollTop + 
  (document.body.clientHeight - height)/2;
  return cornerY;
};
 
floatingMenu.doFloat = function()
{
  // Check if reference to menu was lost due
  // to ajax manipuations
  if (!floatingMenu.menu)
  {
   menu = document.getElementById
   ? document.getElementById(floatingMenuId)
   : document.all
   ? document.all[floatingMenuId]
   : document.layers[floatingMenuId];
   initSecondary();
  }
 
  var stepX, stepY;
 
  floatingMenu.computeShifts();
 
  var cornerX = floatingMenu.calculateCornerX();
 
  var stepX = (cornerX - floatingMenu.nextX) * .07;
  if (Math.abs(stepX) < .5)
  {
   stepX = cornerX - floatingMenu.nextX;
  }
 
  var cornerY = floatingMenu.calculateCornerY();
 
  var stepY = (cornerY - floatingMenu.nextY) * .07;
  if (Math.abs(stepY) < .5)
  {
   stepY = cornerY - floatingMenu.nextY;
  }
 
  if (Math.abs(stepX) > 0 ||
  Math.abs(stepY) > 0)
  {
   floatingMenu.nextX += stepX;
   floatingMenu.nextY += stepY;
   floatingMenu.move();
  }

  setTimeout('floatingMenu.doFloat()', 20);
};
 
// addEvent designed by Aaron Moore
floatingMenu.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']++;
};
 
floatingMenu.init = function()
{
  floatingMenu.initSecondary();
  floatingMenu.doFloat();
};
 
// Some browsers init scrollbars only after
// full document load.
floatingMenu.initSecondary = function()
{
  floatingMenu.computeShifts();
  floatingMenu.nextX = floatingMenu.calculateCornerX();
  floatingMenu.nextY = floatingMenu.calculateCornerY();
  floatingMenu.move();
}
 
if (document.layers)
  floatingMenu.addEvent(window, 'onload', floatingMenu.init);
else
{
  floatingMenu.init();
  floatingMenu.addEvent(window, 'onload',
  floatingMenu.initSecondary);
}

