var MouseX = 0;
var MouseY = 0;
var BrowserWidth = 0;
var ScrollLeft = 0;
var BrowserHeight = 0;
var ScrollTop = 0;

if(window.Event) document.captureEvents(Event.MOUSEMOVE|Event.SCROLL);
window.onload		= SaveMouseXY;
document.onmousemove	= SaveMouseXY;
window.onscroll		= SaveMouseXY;

function SaveMouseXY (e) {
  if(navigator.appName.substring(0,1) == "N") {
    MouseX = e.pageX;
    MouseY = e.pageY;

    BrowserWidth = window.innerWidth;
    ScrollLeft = window.pageXOffset;
    BrowserHeight = window.innerHeight;
    ScrollTop = window.pageYOffset;
  }
  else {
    MouseX = document.body.scrollLeft + window.event.x;
    MouseY = document.body.scrollTop  + window.event.y;

    BrowserWidth = window.document.body.offsetWidth;
    ScrollLeft = document.body.scrollLeft;
    BrowserHeight = window.document.body.offsetHeight;
    ScrollTop = document.body.scrollTop;
  }
}

function ShowInfoBox (HTMLObject, YOffset, XOffset, WindowWidth, WindowHeight, MaybeStayRight) {
  Obj = HTMLObject.id + '_InfoBox';
  document.getElementById(Obj).style.visibility = "visible";

  if (! WindowWidth ) WindowHeight = 0;
  if (! WindowHeight) WindowHeight = 0;

  var PosLeft = MouseX + 20 + (XOffset ? XOffset : 0);
  var PosTop  = MouseY + YOffset;

  if (BrowserWidth - (MouseX-ScrollLeft+XOffset+40) < WindowWidth) {
    if (MaybeStayRight)
      PosLeft = Math.min(PosLeft,BrowserWidth+ScrollLeft-WindowWidth-20)
    else
      PosLeft = Math.max(PosLeft - WindowWidth-25, ScrollLeft);
  }
  else {
    PosLeft = Math.min(PosLeft,BrowserWidth+ScrollLeft-WindowWidth-20);
  }
  document.getElementById(Obj).style.left = PosLeft;

  if (BrowserHeight - (MouseY-ScrollTop+YOffset+20) < WindowHeight) {
    PosTop = Math.max(PosTop - WindowHeight-30, ScrollTop);
  }
  else {
    PosTop  = Math.min(PosTop,BrowserHeight+ScrollTop-WindowHeight);
  }
  document.getElementById(Obj).style.top = PosTop;
}

function HideInfoBox (HTMLObject) {
  document.getElementById(HTMLObject.id + '_InfoBox').style.visibility = "hidden";
}
