function pushHandler(object, event, handler) {
var handlersProp = '_handlerStack_'+event;
var eventProp = 'on'+event;
if (typeof(object[handlersProp]) == 'undefined') {
object[handlersProp] = [];
if (typeof(object[eventProp]) == 'function')
object[handlersProp].push = object[eventProp];
object[eventProp] = function(e) {
for (var i=0; i<object[handlersProp].length; i++)
object[handlersProp][i](e);
}}
object[handlersProp].push(handler);
}
function removeHandler(object, event, handler) {
var handlersProp = '_handlerStack_'+event;
if (typeof(object[handlersProp]) != 'undefined') {
for (var i=0; i<object[handlersProp].length; i++) {
if (object[handlersProp][i] == handler) {
object[handlersProp].splice(i, 1);
return;
}}}}
var titleTable, titleRow, titleCell;var currentElement = null;var timer = null;
pushHandler(window, "load", initttitles);
function initttitles() {
if (!document.createElement)
return;
titleTable = createElement("table");
titleRow = titleTable.insertRow(0);
titleCell = titleRow.insertCell(0);
pushHandler(document.getElementsByTagName("body")[0], "mouseover", showttitle);
pushHandler(document.getElementsByTagName("body")[0], "focus", showttitle);
pushHandler(window, "blur", hidettitle);
}
function createElement(tag) {
if (typeof(document.createElementNS) == "function")
return document.createElementNS("http://www.w3.org/1999/xhtml", tag);
else
return document.createElement(tag);
}
function findPosition(node) {
if(node.offsetParent) {
for(var posX = 0, posY = 0; node.offsetParent; node = node.offsetParent) {
posX += node.offsetLeft;
posY += node.offsetTop;
}
return [posX, posY];
}
else
return [node.x, node.y];
}
function createParagraph(text, className) {
var p = createElement("p");
p.className = className;
text = text.split("\n");
if (typeof(text.length) == 'number') {
for (var i=0; i<text.length; i++) {
p.appendChild(document.createTextNode(text[i]));
if (i < text.length-1)
p.appendChild(createElement("br"));
}}
return p;
}
function showttitle(e) {
e = e || window.event;
if (!e || typeof(window.currentElement) == 'undefined')
return;
var element = e.target || e.srcElement;
while (element) {
if (element.nodeType == 1) {
if (element.getAttribute("TTT"))
break;
else if (element.getAttribute("title")) {
element.setAttribute("TTT", element.getAttribute("title"));
element.setAttribute("title", "");
element.setAttribute("jxdelay", 0);
break;
}}
element = element.parentNode;
}
if (!element || element == currentElement)
return;
currentElement = element;
pushHandler(element, "mouseout", hidettitle);
pushHandler(element, "blur", hidettitle);
var pos = findPosition(element);
titleTable.style.width = "auto";
titleTable.style.position="static";
titleTable.className = "TTT " + element.tagName.toLowerCase() + "title";
while (titleCell.firstChild)
titleCell.removeChild(titleCell.firstChild);
titleCell.appendChild(createParagraph(element.getAttribute("TTT")), "titletext");
var delay = element.getAttribute("jxdelay");
element = e.target || e.srcElement;
while (element && (element.nodeType != 1 || !element.getAttribute("href")))
element = element.parentNode;
if (delay)
timer = setTimeout("doShowttitle(["+pos[0]+","+pos[1]+"])",delay);
else
doShowttitle(pos);
}
function doShowttitle(pos) {
timer = null;
if (! titleTable) return;
if (typeof(window.opera) == 'undefined')
titleTable.style.position="absolute";
titleTable.style.visibility="hidden";
document.getElementsByTagName("body")[0].appendChild(titleTable);
pos[0] += 15;
pos[1] += 35;
var innerWidth = null;
if (window.innerWidth)
innerWidth = window.innerWidth;
else if (document.body && document.body.clientWidth)
innerWidth = document.body.clientWidth;
if (innerWidth && titleTable.offsetWidth && titleTable.offsetWidth + pos[0] + 20 > innerWidth) {
var width = innerWidth - pos[0] - 20;
if (width < 200)
width = Math.min(200, titleTable.offsetWidth);
titleTable.style.width = width + 'px';
if (titleTable.offsetWidth + pos[0] + 20 > innerWidth) {
titleTable.style.left = (innerWidth - titleTable.offsetWidth - 20) + 'px';
}
else {
titleTable.style.left = pos[0]+'px';
}}
else {
titleTable.style.width = titleTable.offsetWidth + 'px';
titleTable.style.left = pos[0]+'px';
}
titleTable.style.top = pos[1]+'px';
if (typeof(window.opera) != 'undefined')
titleTable.style.position="absolute";
titleTable.style.visibility="visible";
}
function hidettitle(e) {
if (typeof(timer) == 'undefined')
return;
if (timer) {
clearTimeout(timer);
timer = null;
}
if (typeof(window.currentElement) == 'undefined')
return;
if (currentElement && titleTable.parentNode) {
titleTable.parentNode.removeChild(titleTable);
removeHandler(currentElement, "mouseout", hidettitle);
removeHandler(currentElement, "blur", hidettitle);
currentElement = null;
}}

