﻿jQuery.balloonTip = {
    timers: new Array(),
    show: function(options) {
        var settings = jQuery.extend({
            balloonId: 'balloonTip',
            content: null,
            orientation: 'Up',
            targetElementId: null,
            duration: 10
        }, options);

        // Intentionally not checking anything for null

        var html = '<div id="' + settings.balloonId + '" style="display: none;" class="balloonTip' + settings.orientation + '">';
        html += '<div class="content">' + settings.content + '</div>';
        html += '<div class="bottom">&nbsp;</div>';
        html += '</div>';
        $('body').append(html);

        var $targetElement = jQuery('#' + settings.targetElementId);
        var targetOffset = $targetElement.offset();

        var $balloon = jQuery('#' + settings.balloonId);
        if (settings.orientation == 'Up') {
            $balloon.css({ 'top': (targetOffset.top + $targetElement.height()) + 'px', 'left': targetOffset.left - 230 /* balloon width */ + $targetElement.width() / 2 });
        } else {
            $balloon.css({ 'top': (targetOffset.top - $balloon.height()) + 'px', 'left': targetOffset.left });
        }
        $balloon.fadeIn('slow');

        this.timers[settings.balloonId] = window.setTimeout('jQuery.balloonTip.hide({balloonId:"' + settings.balloonId + '"})', settings.duration * 1000);
    },
    hide: function(options) {
        var settings = jQuery.extend({
            balloonId: 'balloonTip'
        }, options);

        this.timers[settings.balloonId] = null;
        jQuery('#' + settings.balloonId).fadeOut('slow', function() { jQuery(this).remove(); });
    }
};

