﻿$.fn.popUpBox = function(options) {
    var opts = $.extend({}, $.fn.popUpBox.defaults, options);
    var $activeLink = $(this);
    if ($('#popUpBox_overlay').length == 0) {
        $(opts.appendTo).append('<div id="popUpBox_overlay"></div><div id="popUpBox_container"><div id="popUpBox_inner" class="clearfix"></div><a id="popUpBox_close" href="#close"><img src="' + opts.imgDir + 'popUpBox_close.png" height="20" width="20" class="tpng"/></a></div><div id="popUpBox_dump"></div>');
        var $overlay = $('#popUpBox_overlay').hide();
        var $container = $('#popUpBox_container').hide();
        var $inner = $('#popUpBox_inner');
        if (!opts.closeButton) {
            $('#popUpBox_close').hide();
        } else {
            $('#popUpBox_close').click(function() {
                closePopUp();
                return false
            });
        }

    }
    $activeLink.unbind('click.popUpBox');
    $activeLink.bind('click.popUpBox', function() {
        var $overlay = $('#popUpBox_overlay');
        var $container = $('#popUpBox_container');
        var $inner = $('#popUpBox_inner');
        var DOMLink = $(this).get(0);
        var posParent = $(DOMLink.hash).parents(opts.parentFilter);
        if ($.fn.popUpBox.popUpOpen) {
            closePopUp();
        }
        opts.onOpen(this);
        $currentParent = $(DOMLink.hash).parent();
        if (opts.clickOffToClose && opts.overlay) {
            $overlay.click(closePopUp).show();
        }

        $container.show();
        if (opts.position == "center") {
            if ($.browser.msie && $.browser.version.substr(0, 1) < 7) {
                //IE6 HACK as IE6 does not support fixed positioning
                $container.css("position", "absolute");
            }
            else {
                $container.css("position", "fixed");

            }
        }

        if (DOMLink.hash != "" && !opts.ajax) {
            $inner.append($(DOMLink.hash)).width($(DOMLink.hash).innerWidth());
            $container.width($inner.outerWidth());
        } else {
            $inner.append('<img class="loading" src="' + opts.imgDir + 'ajax-loader.gif" height="16" width="16" style="margin: 0 auto; display: block" />').load(DOMLink.href + " #main",
																							function() {
																							    $('#popUpBox_inner .loading').remove();
																							    $inner.width($inner.children().outerWidth());
																							    $container.width($inner.outerWidth()).offset({ left: opts.alignWith.offset().left + ((opts.alignWith.width() / 2) - ($container.width() / 2)) + opts.offsetLeft, top: opts.alignWith.offset().top + opts.offsetTop });
																							});
        }
        if (opts.position == "relative") {
            if (opts.float == "right") {
                $container.offset({ left: ($(this).offset().left - ($container.width() - $(this).width() + opts.offsetLeft)),
                    top: ($(this).offset().top + $(this).outerHeight() + opts.offsetTop)
                });
            } else {
                $container.offset({ left: ($(this).offset().left + opts.offsetLeft),
                    top: ($(this).offset().top + $(this).outerHeight()) + opts.offsetTop
                });
            }
        } else if (opts.position == "align") {
            if (opts.offsetTop = "parent") {
                $container.offset({ left: opts.alignWith.offset().left + ((opts.alignWith.innerWidth() / 2) - ($container.width() / 2)) + opts.offsetLeft,
                    top: posParent.offset().top
                });
            } else {
                $container.offset({ left: opts.alignWith.offset().left + ((opts.alignWith.innerWidth() / 2) - ($container.width() / 2)) + opts.offsetLeft,
                    top: opts.alignWith.offset().top + opts.offsetTop
                });
            }
        } else {
            $container.css({ left: (($(window).width() - $container.width()) / 2),
                top: (($(window).height() - $container.height()) / 2)
            });
        }
        $.fn.popUpBox.popUpOpen = true;
        return false;
    });
    function closePopUp() {
        $currentParent.append($('#popUpBox_inner').children().detach());
        $('#popUpBox_container').css({ position: "relative", top: "0", left: "0" }).hide();
        $('#popUpBox_overlay').unbind("click").hide();
        $.fn.popUpBox.popUpOpen = false;
    }
}
$.fn.popUpBox.popUpOpen = false;
$.fn.popUpBox.defaults = {
    inline: false,
    position: "center",
    float: "left",
    imgDir: "/_layouts/1033/SCJohnson/ScrubbingBubbles/images/",
    closeButton: true,
    clickOffToClose: true,
    overlay: true,
    width: "auto",
    height: "auto",
    alignWith: $('body'),
    offsetLeft: 0,
    offsetTop: 0,
    appendTo: 'body #aspnetForm',
    onOpen : function() {},
    parentFilter: ""
};
