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 101: Line 101:
  var _tooltipFrameClassName = 'uniwiki-tooltip-frame';
  var _tooltipFrameClassName = 'uniwiki-tooltip-frame';
  var _activeTooltipIdx = -1;
  var _activeTooltipIdx = -1;
var _posCorrectionX = 50; var _posCorrectionY = 50;
function checkElementByClassComp() {
function checkElementByClassComp() {
if (document.getElementsByClassName == undefined) {
if (document.getElementsByClassName == undefined) {
Line 149: Line 150:
var parentObj = document.getElementById('tooltipframeidx-' + _activeTooltipIdx);
var parentObj = document.getElementById('tooltipframeidx-' + _activeTooltipIdx);
var parentPos = getRelativeCoordinates(e, parentObj);
var parentPos = getRelativeCoordinates(e, parentObj);
parentObj.style.left = (x - parentPos.x) + 'px';
parentObj.style.left = (x - _posCorrectionX) + 'px';
parentObj.style.top = (y - parentPos.y) + 'px';
parentObj.style.top = (y - _posCorrectionY) + 'px';
}
}
return false;
return false;
}
}
function getRelativeCoordinates(event, reference) {
    var x, y;
    event = event || window.event;
    var el = event.target || event.srcElement;
 
    if (!window.opera && typeof event.offsetX != 'undefined') {
      // Use offset coordinates and find common offsetParent
      var pos = { x: event.offsetX, y: event.offsetY };
 
      // Send the coordinates upwards through the offsetParent chain.
      var e = el;
      while (e) {
        e.mouseX = pos.x;
        e.mouseY = pos.y;
        pos.x += e.offsetLeft;
        pos.y += e.offsetTop;
        e = e.offsetParent;
      }
 
      // Look for the coordinates starting from the reference element.
      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;
      }
 
      // 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;