var ie = document.all ? true : false;
var tooltip, tipcss;

function initializeTip(elem) {
    tooltip = document.getElementById(elem);
    tipcss = tooltip.style;
}

function doTooltip(event, id) {
    // setup mouseover event
    if (!event) var event = window.event;

    // set up current tool tip
    initializeTip(id);
    if (!tooltip) return;
    if (!tipcss) return;

    // get mouse position
    var mouseX = 0;
    var mouseY = 0;
    if (event.pageX || event.pageY) {
        mouseX = event.pageX;
        mouseY = event.pageY;
        var scrollX = window.pageXOffset;
        var scrollY = window.pageYOffset;
    }
    else if (event.clientX || event.clientY)
    {
        // get scroll offset
        if (document.documentElement && document.documentElement.scrollTop) {
            var scrollX = ie ? document.documentElement.scrollLeft : window.pageXOffset;
            var scrollY = ie ? document.documentElement.scrollTop : window.pageYOffset;
        }
        else {
            var scrollX = ie ? document.body.scrollLeft : window.pageXOffset;
            var scrollY = ie ? document.body.scrollTop : window.pageYOffset;
        }

        mouseX = event.clientX + scrollX;
        mouseY = event.clientY + scrollY;
    }


    // get page width
    var pageWidth = ie ? document.body.clientWidth : document.body.offsetWidth;
    var pageHeight = ie ? document.body.clientHeight : document.body.offsetHeight;

    // hide <select> and <applet> objects
    setVisibility("select", "invisible");
    setVisibility("applet", "invisible");

    // display tooltip - note that we need this before we can get the tooltip size
    tipcss.display='block';

    // get tooltip size
    var tipWidth = tooltip.offsetWidth;
    var tipHeight = tooltip.offsetHeight;

    // set target position to above and right of mouse
    var leftSide = mouseX;
    var topSide = mouseY - tipHeight;

    // make sure target is not off the screen
    if (mouseX > pageWidth / 2)
        leftSide = mouseX - tipWidth - 5;

    if (topSide < scrollY)
        topSide = mouseY + 5;

    while((topSide + tipHeight > (scrollY + pageHeight)) && (topSide > scrollY + 1))
        topSide--;

    // position tooltip
    tipcss.left = ie ? leftSide : leftSide + "px";
    tipcss.top = ie ? topSide : topSide + "px";
}

function hideTip() {
    // hide all tooltips
    if (!tooltip) return;
    tipcss.display = 'none';

    // show all <select> and <applet> objects
    setVisibility("select", "");
    setVisibility("applet", "");
}

function setVisibility(elmID, displayValue) {
    if (ie) {
        for(i = 0; i < document.all.tags( elmID ).length; i++) {
            obj = document.all.tags(elmID)[i];
            if(!obj || !obj.offsetParent || !obj.style.visibility) continue;
            obj.style.visibility = displayValue;
        }
    }
}
