//<![CDATA[

//Add the DIV element for the coolTip
if (document.layers)
{
    document.write('<layer id="CoolTip" class="CoolTip" style="visibility:hidden"></layer>');
    document.captureEvents(Event.MOUSEMOVE);
}
else
    document.write('<div id="CoolTip" class="CoolTip" style="position:absolute; z-index:100000; visibility:hidden"></div>');

CoolTipHelper =
{
    Init: function()
    {
        if (CoolTipHelper.Element == null)
        {
            CoolTipHelper.OffsetX = 8; //Customize x offset of tooltip
            CoolTipHelper.OffsetY = 8; //Customize y offset of tooltip
            CoolTipHelper.isIE = document.all;
            CoolTipHelper.IsEnabled = false;
            CoolTipHelper.Element = document.all ? document.all["CoolTip"] : document.getElementById ? document.getElementById("CoolTip") : "";
        }
    },

    IeBody: function()
    {
        return (document.compatMode && document.compatMode != "BackCompat") ? document.documentElement : document.body;
    }
}

function coolTip(html, width)
{
    CoolTipHelper.Init();

    try
    {
        if (html)
        {
            if (typeof width != "undefined" && width != null && width != "")
                CoolTipHelper.Element.style.width = width + "px";
            else
                CoolTipHelper.Element.style.width = "200px";
            CoolTipHelper.Element.innerHTML = html;
            CoolTipHelper.IsEnabled = true
            return false
        }
        else
        {
            CoolTipHelper.IsEnabled = false
            CoolTipHelper.Element.style.visibility = "hidden"
            CoolTipHelper.Element.style.left = "-1000px"
        }
    }
    catch (e) { }
}

function positionCoolTip(e)
{
    if (CoolTipHelper.IsEnabled)
    {
        try
        {
            var curX = (e.pageX) ? e.pageX : event.clientX + CoolTipHelper.IeBody().scrollLeft;
            var curY = (e.pageY) ? e.pageY : event.clientY + CoolTipHelper.IeBody().scrollTop;
            //Find out how close the mouse is to the corner of the window
            var rightedge = CoolTipHelper.isIE && !window.opera ? CoolTipHelper.IeBody().clientWidth - event.clientX - CoolTipHelper.OffsetX : window.innerWidth - e.clientX - CoolTipHelper.OffsetX - 20
            var bottomedge = CoolTipHelper.isIE && !window.opera ? CoolTipHelper.IeBody().clientHeight - event.clientY - CoolTipHelper.OffsetY : window.innerHeight - e.clientY - CoolTipHelper.OffsetY - 20

            var leftedge = (CoolTipHelper.OffsetX < 0) ? CoolTipHelper.OffsetX * (-1) : -1000

            //if the horizontal distance isn't enough to accomodate the width of the context menu
            if (rightedge < CoolTipHelper.Element.offsetWidth)
            //move the horizontal position of the menu to the left by it's width
                CoolTipHelper.Element.style.left = CoolTipHelper.isIE ? CoolTipHelper.IeBody().scrollLeft + event.clientX - CoolTipHelper.Element.offsetWidth + "px" : window.pageXOffset + e.clientX - CoolTipHelper.Element.offsetWidth + "px"
            else if (curX < leftedge)
                CoolTipHelper.Element.style.left = "5px"
            else
            //position the horizontal position of the menu where the mouse is positioned
                CoolTipHelper.Element.style.left = curX + CoolTipHelper.OffsetX + "px"

            //same concept with the vertical position
            if (bottomedge < CoolTipHelper.Element.offsetHeight)
                CoolTipHelper.Element.style.top = CoolTipHelper.isIE ? CoolTipHelper.IeBody().scrollTop + event.clientY - CoolTipHelper.Element.offsetHeight - CoolTipHelper.OffsetY + "px" : window.pageYOffset + e.clientY - CoolTipHelper.Element.offsetHeight - CoolTipHelper.OffsetY + "px"
            else
                CoolTipHelper.Element.style.top = curY + CoolTipHelper.OffsetY + "px"
            CoolTipHelper.Element.style.visibility = "visible"
        }
        catch (e) { }
    }
}

addCooltipEvent(document, "mousemove", positionCoolTip);

function addCooltipEvent(obj, eventType, functionProc)
{
    if (obj.addEventListener)
    {
        obj.addEventListener(eventType, functionProc, true);
    }
    else if (obj.attachEvent)
    {
        obj.attachEvent('on' + eventType, functionProc);
    }
    else if (obj.addEventListener)
    {
        obj.addEventListener(eventType, functionProc, true);
    }
}

//]]>
