/**
 * Tooltip-PlugIn
 */
(function ($) {
    $.fn.Tooltip = function (options) {
        options = $.extend({
            timespan:  300,
            classOver: 'infoOver',
            scope:     'detail', // 'overview' || 'tabber'
            left: 205
        }, options);

        var showTooltip = function (evt, timespan, objLink, content) {
            var toolTip = $("<div>", {
                'id':    "tooltip",
                'class': options.classOver,
                'html':  content
            }).css({'cursor': 'default'});

            $("<div>", {
                'id': 'tooltipContainer',
                'css': {
                    'display': 'inline', 'position': 'relative',
                    'left': options.left + 'px', 'top': '-10px'
                }
            }).insertAfter(objLink);

            $(toolTip).appendTo('#tooltipContainer')
                      .fadeIn(timespan)
                      .bind('mouseover mouseout click', function (evt) {
                          evt.stopImmediatePropagation();
                      });

            // Link Service | Versand :: Versandpauschalen
            $('#tooltip a.linkVP').attr(
                'href',
                $('#contentLinkContainer').find('a:contains("| Versand")')
                                          .attr('href')
            );

            $('#tooltip a.MediumButton').bind('click', function (evt) {
                removeTooltip();
                evt.stopImmediatePropagation();
                return false;
            });

            // IE7 fix position
            if ($.browser.msie && (parseFloat($.browser.version) < 8)) {
                var top = parseInt($("#tooltip").css('top'));
                $("#tooltip").css({'top': (top+12) + 'px'});
            }
            evt.stopPropagation();
        };

        var removeTooltip = function (callerLink) {
            $('#tooltip,#tooltipContainer').stop().remove();
            $(callerLink).css({'text-decoration': 'underline'});

            // Re-show elements under the tooltip for IE7 or IE6
            if ( $.browser.msie
              && (parseFloat($.browser.version) < 8)
            ) {
                if (options.scope == 'overview') {
                    // fixing stuff
                }
                else
                if (options.scope == 'detail') {
                    $('#table.ArticleOrderTable .hideme')
                    .css({'visibility': 'visible'});
                }
            }
            return;
        };

        $(this).each(function () {
            var id_producer = $(this).attr("id_producer");
            var content;
            $(this).bind({
                click: function (evt) {
                    evt.stopPropagation();
                    if ($("#tooltip").css("opacity") !== 0) {
                        removeTooltip(this);
                    }
                    // Lazy loading
                    content = content || ajaxFunctions.loadDeliveryAmountList(id_producer);
                    // Hide elements under the tooltip for IE7 or IE6
                    if ( $.browser.msie
                      && (parseFloat($.browser.version) < 8)
                    ) {
                        if (options.scope == 'overview') {
                            // fixing stuff
                        }
                        else
                        if (options.scope == 'detail') {
                            $('#table.ArticleOrderTable .hideme')
                            .css({'visibility': 'hidden'});
                        }
                    }

                    showTooltip(evt, options.timespan, this, content);
                },
                mouseenter: function (evt) {
                    $(this).css('text-decoration', 'none').find('span').css({'cursor': 'help'});
                },
                mouseleave: function (evt) {
                    $(this).css('text-decoration', 'underline').find('span').css({'cursor': 'default'});
                }
            });
        });
    };
})(jQuery);

