/*! Copyright © 2010 General Mills. All Rights Reserved. No permission is granted to use, copy or extend this code. */
QRV.namespace('QRV.ToolTip');
QRV.ToolTip =
{
    timer: 0,
    location: null,
    spacerImg: null,

    init: function()
    {
        $(document).ready(function()
        {
            $("[tooltip]").each(QRV.ToolTip.wireup);
        });
    },

    wireup: function(i)
    {
        var target = $(this);
        var css = target.attr('tooltip');

        var html = '<div class="tool-tip" id="toolTipWrapper' + i + '"><table border="0" cellpadding="0" cellspacing="0">';
        html += '<tr><td class="TL"><img src="/assets/images/spacer.gif" ></td><td class="' + css + '"><img src="/assets/images/spacer.gif"></td><td class="TR"><img src="/assets/images/spacer.gif" ></td></tr>';
        html += '<tr><td class="ML"><img src="/assets/images/spacer.gif" ></td><td class="MC">' + target.attr('title') + '</td><td class="MR"><img src="/assets/images/spacer.gif"></td></tr>';
        html += '<tr><td class="BL"><img src="/assets/images/spacer.gif" ></td><td class="BC"><img src="/assets/images/spacer.gif"></td><td class="BR"><img src="/assets/images/spacer.gif"></td></tr></table></div>';

        $('body').append(html);
        $('#toolTipWrapper' + i).hide();

        var currentTooltip = $('#toolTipWrapper' + i);
        if (target.attr('title') != '' && target.attr('title') != 'undefined')
        {
            target.removeAttr('title');     //prevents default browser tool-tip from displaying
            target.mouseover(function()
            {
                QRV.ToolTip.startTimer(currentTooltip);
            });
            target.mouseout(function()
            {
                currentTooltip.css({ display: 'none' });
                QRV.ToolTip.resetTimer(currentTooltip);
            });
            target.mousemove(function(kmouse)
            {
                var border_top = $(window).scrollTop();
                var border_right = $(window).width();
                var left_pos = 0, top_pos = 0, offset = 5, marginLeft = 0;

                if (border_right - (offset * 2) >= currentTooltip.width() + kmouse.pageX)
                {
                    left_pos = kmouse.pageX + offset;
                }
                else
                {
                    left_pos = border_right - currentTooltip.width() - offset;
                }
                if (border_top + (offset * 2) >= kmouse.pageY - currentTooltip.height())
                {
                    top_pos = border_top + offset;
                }
                else
                {
                    top_pos = kmouse.pageY - currentTooltip.height() - offset;
                }

                switch (css)
                {
                    case 'TFL':
                        marginLeft = kmouse.pageX - 14;
                        break;
                    case 'TFC':
                        marginLeft = kmouse.pageX - (currentTooltip.width() / 2);
                        break;
                    case 'TFR':
                        marginLeft = kmouse.pageX - (currentTooltip.width() - 10);
                        break;
                }
                currentTooltip.css({ left: marginLeft, top: kmouse.pageY + 20 })
            });
        }
    },

    startTimer: function(target)
    {
        QRV.ToolTip.timer = setTimeout(function() { QRV.ToolTip.openToolTip(target); }, 150);
    },

    openToolTip: function(target)
    {
        $(target).show();
    },

    resetTimer: function()
    {
        clearTimeout(QRV.ToolTip.timer);
    }

};
