User:Elliot/hoveringtext.js
The UESPWiki – Your source for The Elder Scrolls since 1995
Note: After saving, you may have to bypass your browser's cache to see the changes.
- Firefox / Safari: Hold Shift while clicking Reload, or press either Ctrl-F5 or Ctrl-R (⌘-R on a Mac)
- Google Chrome: Press Ctrl-Shift-R (⌘-Shift-R on a Mac)
- Internet Explorer / Edge: Hold Ctrl while clicking Refresh, or press Ctrl-F5
- Opera: Go to Menu → Settings (Opera → Preferences on a Mac) and then to Privacy & security → Clear browsing data → Cached images and files.
var dtBgStyle = "background-color:transparent;";
var dtHTMLStart = '<div style="font-size:1em; width: auto; max-width:20em; ' + dtBgStyle + '">';
var mousePos = null;
var winSize = null;
function mouseMove(ev) {
if (ev) {
if (ev.clientX) var mouseX = ev.clientX;
if (ev.clientY) var mouseY = ev.clientY;
} else if (typeof(window.event) != "undefined") {
var mouseX = window.event.clientX;
var mouseY = window.event.clientY;
}
mousePos = {x:mouseX, y:mouseY};
}
function getDBC() {
dbc = new Array();
docBase = document.documentElement || document.body;
dbc[0] = docBase.clientWidth || 0;
dbc[1] = docBase.clientHeight || 0;
return dbc;
}
function getDBS() {
dbs = new Array();
docBase = document.documentElement || document.body;
dbs[0] = docBase.scrollLeft || 0;
dbs[1] = docBase.scrollTop || 0;
return dbs;
}
function windowResize() {
dbC = getDBC();
winSize = {x:(dbC[0])? dbC[0]:window.innerWidth, y:(dbC[1])? dbC[1]:window.innerHeight}
}
windowResize();
document.onmousemove = mouseMove;
window.onresize = windowResize;
function displayTip() {
var tip = document.getElementById("simpletfb");
tip.style.position = "absolute";
tip.style.visibility = "hidden";
tip.style.display = "block";
tip.style.zIndex = "999";
moveTip();
tip.style.visibility = "visible";
}
function moveTip() {
skinAdjust = new Array();
dbS = getDBS();
tip = document.getElementById("simpletfb");
var showDTAtTop = mousePos.y > (winSize.y / 2);
var showDTAtLeft = mousePos.x > (winSize.x / 2);
var newTop = mousePos.y + (showDTAtTop ? - (tip.clientHeight + 20) : 20);
var newLeft = mousePos.x + (showDTAtLeft ? - (tip.clientWidth + 20) : 20);
tip.style.position = 'fixed';
tip.style.top = newTop + "px";
tip.style.left = newLeft + "px";
}
function hideTip() {
var tip = document.getElementById("simpletfb");
if (typeof(tip.style) == "undefined") return false;
tip.style.display = "none";
}
function showTemplateTip(i) {
var Tip = document.getElementById("dttc" + i);
tooltip = dtHTMLStart + Tip.innerHTML + '</div>';
document.getElementById("simpletfb").innerHTML = tooltip;
displayTip();
}
function performTooltips() {
var contentstart = document.getElementById("bodyContent")
qttfdiv = document.createElement("div");
qttfdiv.setAttribute("id", "simpletfb");
contentstart.insertBefore(qttfdiv, contentstart.childNodes[0]);
var Spans = document.getElementsByTagName("span");
for (i=0;i<Spans.length;i++) {
if (hasClass(Spans[i], "dttext")) {
Spans[i].nextSibling.setAttribute("id", "dttc" + i);
Spans[i].firstChild.setAttribute("title", "");
Spans[i].onmouseover = showTemplateTip.bind(Spans[i],i);
Spans[i].onmouseout = hideTip;
Spans[i].onmousemove = moveTip;
}
}
}
var tooltips = true;
function loadTooltips() {
if (tooltips) performTooltips();
}
addOnloadHook(loadTooltips);