var LinkEx = 'LinkEx'; // <- ???????? ?? ?????? ????????????? ????
var isIE = (navigator.userAgent.toLowerCase().indexOf('msie') != -1) && (navigator.userAgent.toLowerCase().indexOf('opera') == -1);

function iePageXOffset() {return document.body.scrollLeft?document.body.scrollLeft:document.documentElement.scrollLeft;}
function iePageYOffset() {return document.body.scrollTop?document.body.scrollTop:document.documentElement.scrollTop;}
function linkexOverNode(Node, X, Y) {return (X >= Node.offsetLeft) && (Y >= Node.offsetTop) && (X <= Node.offsetLeft+Node.offsetWidth) && (Y <= Node.offsetTop+Node.offsetHeight);}

function linkexPopupHide(e)
{
  var popup = document.getElementById('LinkExPopup');
  var x = (isIE?iePageXOffset():window.pageXOffset) + e.clientX;
  var y = (isIE?iePageYOffset():window.pageYOffset) + e.clientY;
  if (!(linkexOverNode(popup, x, y) || linkexOverNode(document.getElementById(LinkEx), x, y))) {
    if (document.removeEventListener) { // DOM2
      popup.removeEventListener('mouseout', linkexPopupHide, true);
    } else if (document.detachEvent) { // IE5+
      popup.detachEvent('onmouseout', linkexPopupHide);
    }
    popup.style.display = 'none';
  }
}

function linkexPopupShow(e)
{
  var popup = document.getElementById('LinkExPopup');
  if (popup) {
    if (popup.style.display == 'block') return;
    popup.style.display = 'block';
    var x = ((e.clientX < popup.offsetWidth) ? (e.clientX -10) : (e.clientX - popup.offsetWidth + 10)) + (isIE?iePageXOffset():window.pageXOffset);
    var y = ((e.clientY < popup.offsetHeight) ? (e.clientY -10) : (e.clientY - popup.offsetHeight + 10)) + (isIE?iePageYOffset():window.pageYOffset);
    popup.style.left = x+'px';
    popup.style.top = y+'px';
    if (document.addEventListener) { // DOM2
      document.addEventListener('mouseout', linkexPopupHide, false);
    } else if (document.attachEvent) { // IE5+
      document.attachEvent('onmouseout', linkexPopupHide);
    }
  }
}

function linkexAttach()
{
  var Node = document.getElementById(LinkEx);
  if (Node) {
    if (document.addEventListener) { // DOM2
      Node.addEventListener('mouseover', linkexPopupShow, false);
    } else if (document.attachEvent) { // IE5+
      Node.attachEvent('onmouseover', linkexPopupShow);
    }
  }
}
