var fadeInInterval = null;
var fadeOutInterval = null;
var tooltipElement = null;
var tooltipEnabled = false;
var windowHeight = 0;
var windowWidth = 0;
var mouseX = 0;
var mouseY = 0;

function getWindowSize() {
        var x;
        var y;
        if (self.innerHeight) {
                // real browser
                x = self.innerWidth;
                y = self.innerHeight;
        } else if (document.documentElement && document.documentElement.clientHeight) {
                // ie 6
                x = document.documentElement.clientWidth;
                y = document.documentElement.clientHeight;
        } else if (document.body) {
                // other ie
                x = document.body.clientWidth;
                y = document.body.clientHeight;
        }
        return new Array(x, y);
}



function enableTooltip() {
        tooltipEnabled = true;
        toggleTooltip();
}


function disableTooltip() {
        tooltipEnabled = false;
        if (fadeOutInterval != null) {
                window.clearTimeout(fadeOutInterval);
                fadeOutInterval = null;
        }
        if (fadeInInterval != null) {
                window.clearInterval(fadeInInterval);
                fadeInInterval = null;
        }

        var el = document.getElementById('tooltip');
        el.style.opacity = 0;
        el.style.filter = 'alpha(opacity=0)';    
        toggleTooltip();            
}


function toggleTooltip() {
        if (tooltipEnabled) {
                var el = document.getElementById('tooltip');
                el.style.display = 'block';
                var opacity = el.style.opacity * 100;
                if (opacity < 85) {
                        var opacityNew = opacity + 7;
                        el.style.opacity = opacityNew/100;
                        el.style.filter = 'alpha(opacity=' + opacityNew + ')';
                } else {
                        if (fadeInInterval != null) {
                                window.clearInterval(fadeInInterval);
                                fadeInInterval = null;
                        }
                }
        } else {
                var el = document.getElementById('tooltip');
                el.style.display = 'none';    
        }
}


function updateTooltip(evt) {
        if ( !evt ) evt = window.event;
        var el = document.getElementById('tooltip');
        if (document.all) {
                var x = window.event.x + document.body.scrollLeft;
                var y = window.event.y + document.body.scrollTop;
        } else {
                var x = evt.pageX;
                var y = evt.pageY;
        }
        newleft = (x > (document.body.clientWidth/2)+100) ? (x - el.offsetWidth - 20 ) : (x + 20);
        newtop = y +10;
        if (el.style.display == 'block') {
                el.style.left = newleft + "px";
                el.style.top = newtop + "px";
        }
}


function jsTooltips() {
        var windowSize = getWindowSize();
        windowWidth = windowSize[0];
        windowHeight = windowSize[1]; 

        var el = document.getElementById('tooltip');

        var tooltipTags = new Array('div', 'span', 'a', 'img');
        for (var i=0; i<tooltipTags.length; i++) {
                var nodes = document.getElementsByTagName(tooltipTags[i]);
                for (var j=0; j<nodes.length; j++) {
                        var node = nodes.item(j);
                        if (node.getAttribute('title') != '' && node.getAttribute('title') != null) {
                                node.setAttribute('tooltip_text', node.getAttribute('title'));
                                node.setAttribute('title', '')
                                node.onmouseover = function(evt) {
                                        var el = document.getElementById('tooltip_body');
                                        el.innerHTML = this.getAttribute('tooltip_text');
                                        toggleTooltip();

                                        if (fadeOutInterval != null) {
                                                window.clearTimeout(fadeOutInterval);
                                                fadeOutInterval = null;
                                                tooltipEnabled = false;
                                        }        
                                        if (fadeInInterval == null && !tooltipEnabled) {
                                                fadeInInterval = window.setInterval("enableTooltip()", 10);
                                        }
                                }

                                node.onmouseout = function() {
                                        if (fadeOutInterval == null) {
                                                fadeOutInterval = window.setTimeout("disableTooltip()", 100);
                                        }                    
                                }
                        }
                }
        }
        document.onmousemove = updateTooltip;
}



