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

function Tooltip(collectDOMfunction)
{
	// Simple JavaScript Tooltip
	// (c) endo.ch 2007, 2009 Christoph Berger, www.endo.ch

	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 + 12) + '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;
		//toolObj.updateTT(window.event);
	}
	
	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','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);
}
