More actions
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 = | 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 | 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; | ||