if(document.getElementById('calendar'))
{
var tt = new Tooltip( function(){ return document.getElementById('calendar').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);
}
