Toggle menu
Toggle preferences menu
Toggle personal menu
Not logged in
Your IP address will be publicly visible if you make any edits.

MediaWiki:Common.js: Difference between revisions

MediaWiki interface page
mNo edit summary
mNo edit summary
Line 143: Line 143:
mouseY = e.clientY + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
mouseY = e.clientY + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
}
}
moveTooltip(mouseX, mouseY);
moveTooltip(mouseX, mouseY, e);
}
}
function moveTooltip(x, y) {
function moveTooltip(x, y, e) {
if(_activeTooltipIdx != -1) {
if(_activeTooltipIdx != -1) {
var parentObj = document.getElementById('tooltipframeidx-' + _activeTooltipIdx);
var parentObj = document.getElementById('tooltipframeidx-' + _activeTooltipIdx);
var parentPos = GetAbsPosition(parentObj);
var parentPos = getRelativeCoordinates(e, parentObj);
parentObj.style.left = (x - parentPos.x) + 'px';
parentObj.style.left = (x - parentPos.x) + 'px';
parentObj.style.top = (y - parentPos.y) + 'px';
parentObj.style.top = (y - parentPos.y) + 'px';
Line 154: Line 154:
return false;
return false;
}  
}  
function GetAbsPosition(object) {
function = getRelativeCoordinates(event, reference) {
var position = new Object;
    var x, y;
position.x = 0;
    event = event || window.event;
position.y = 0;
    var el = event.target || event.srcElement;


if( object ) {
    if (!window.opera && typeof event.offsetX != 'undefined') {
position.x = object.offsetLeft;
      // Use offset coordinates and find common offsetParent
position.y = object.offsetTop;
      var pos = { x: event.offsetX, y: event.offsetY };


if( object.offsetParent ) {
      // Send the coordinates upwards through the offsetParent chain.
var parentpos = GetAbsPosition(object.offsetParent);
      var e = el;
position.x += parentpos.x;
      while (e) {
position.y += parentpos.y;
        e.mouseX = pos.x;
}
        e.mouseY = pos.y;
}
        pos.x += e.offsetLeft;
        pos.y += e.offsetTop;
        e = e.offsetParent;
      }


position.cx = object.offsetWidth;
      // Look for the coordinates starting from the reference element.
position.cy = object.offsetHeight;
      var e = reference;
      var offset = { x: 0, y: 0 }
      while (e) {
        if (typeof e.mouseX != 'undefined') {
          x = e.mouseX - offset.x;
          y = e.mouseY - offset.y;
          break;
        }
        offset.x += e.offsetLeft;
        offset.y += e.offsetTop;
        e = e.offsetParent;
      }


return position;
      // Reset stored coordinates
}
      e = el;
      while (e) {
        e.mouseX = undefined;
        e.mouseY = undefined;
        e = e.offsetParent;
      }
    }
    else {
      // Use absolute coordinates
      var pos = getAbsolutePosition(reference);
      x = event.pageX  - pos.x;
      y = event.pageY - pos.y;
    }
    // Subtract distance to middle
    return { x: x, y: y };
  }
function showTooltip(id) {
function showTooltip(id) {
_activeTooltipIdx = id;
_activeTooltipIdx = id;