var tt = new Tooltip( function(){ return document.getElementById('link').getElementsByTagName('*');  });

function Tooltip(collectDOMfunction)
{
var toolObj = this;
this.tooltip = null; // DOM <div>-objekt des Tooltips
this.ttactive = false; // true sobald Tooltip angezeigt wird
this.collectDOMfunction = collectDOMfunction;
this.updateTT = function(e) { if (toolObj.ttactive) { x = (document.all) ? e.clientX + (document.documentElement.scrollLeft | document.body.scrollLeft) : e.pageX;
y = (document.all) ? e.clientY + (document.documentElement.scrollTop  | document.body.scrollTop)  : e.pageY;
toolObj.tooltip.style.left = (x - 20) + 'px';
toolObj.tooltip.style.top   = (y + 22) + 'px';
toolObj.tooltip.style.display = 'block'; }}
this.showTT = function(element) { if (!element.tooltip) return;
title = element.tooltip;
toolObj.tooltip.innerHTML = '<p>'+title+'</p>';
toolObj.ttactive = true;}
this.hideTT = function(element) { toolObj.tooltip.style.display = 'none';
toolObj.ttactive = false;}
this.init = function(){ // an Stelle von  <div id="tooltip"></div> // im HTML Quellcode
toolObj.tooltip = document.createElement('div');
toolObj.tooltip.setAttribute('id','link_tooltip');
toolObj.tooltip.style.position = 'absolute';
toolObj.tooltip.style.display = 'none';
document.getElementsByTagName('body')[0].appendChild(toolObj.tooltip);
// an Stelle von  <img src=".." title="xyz" onmouseover="showTT(this)" onmouseout="hideTT(this)"> // im HTML Quellcode
var objArr = toolObj.collectDOMfunction();
for(var i=0; i<objArr.length; i++){if (objArr[i].title){objArr[i].tooltip =  objArr[i].title;
objArr[i].title = ''; toolObj.addListener(objArr[i], 'mouseover', function(e){ toolObj.showTT(e.srcElement||this)}); toolObj.addListener(objArr[i], 'mouseout', function(e){ toolObj.hideTT(e.srcElement||this)});}} toolObj.addListener(document, 'mousemove', toolObj.updateTT);}
this.unload = function() { // Safari Problem mit Back Button beheben, indem die Änderungen     // beim Verlassen der Seite rückgängig gemacht werden
try{if (navigator.vendor && navigator.vendor.match(/Apple/)){var objArr = toolObj.collectDOMfunction();
for(var i=0; i<objArr.length; i++){if (objArr[i].tooltip){objArr[i].title = objArr[i].tooltip;
}}}}
catch(e) {}
}
this.addListener = function(element, event, listener, bubble) { if(element.addEventListener) { if(typeof(bubble) == 'undefined'){ bubble = false;}
element.addEventListener(event, listener, bubble);
} else if(document.attachEvent) {element.attachEvent("on" + event, listener);}}
// init nach Ende des Ladevorgangs aufrufen
this.addListener(window, 'load', this.init);
this.addListener(window, 'unload', this.unload);}
