﻿/// <reference path="jQuery/jquery-1.3.2-vsdoc.js" />

(function ($) {
    var c_modal = "#modal";
    var c_modalBack = "#modal-back";
    var c_modalBottom = "#modal-bottom";
    var c_modalClose = ".modal-close";
    var c_modalContainer = "#modal-container";
    var c_modalContent = "#modal-content";
    var c_modalTop = "#modal-top";

    var _buildStructure = function () {
        $(document.body).append("<div id=\"modal-back\">"
		+ "<div id=\"modal-container\">"
		+ "<div id=\"modal-top\"></div>"
		+ "<div id=\"modal-content\"><div id=\"modal\"></div></div>"
		+ "<div id=\"modal-bottom\"></div>"
		+ "<a class=\"modal-close text-replace\" href=\"#\" title=\"Close\" />"
		+ "</div></div>");

        $(c_modalClose).click(function (evt) {
            evt.preventDefault();
            $.modalClose();
        });
        //$(c_modalOverlay).click(function () {$.modalClose();});
        $(document).keyup(function (e) {
            if (e.keyCode == 27) {
                $.modalClose();
            }
        });
    };

    var _structureExists = function () {
        if ($(c_modal).length > 0)
            return true;

        return false;
    };

    $.modal = function (target, options) {
        if ($.browser.msie && $.browser.version < 7)
            return;

        var o = $.extend({}, { callback: null, height: 418, minHeight: 470 }, options);

        $(target).click(function (evt) {
            var $this = $(this);
            var windowHeight = $(window).height();

            $(c_modal).children().remove();

            if (windowHeight < o.minHeight)
                return;

            evt.preventDefault();

            if (!_structureExists())
                _buildStructure();

            $(c_modalContent).height(o.height);
            $(c_modalBack).css({ display: "block" });

            var url = $this.attr("href");
            if (url && url != "")
                $(c_modal).load(url, function (responseText, textStatus, xhr) {
                    if (textStatus == "error") {
                        $(c_modal).html("<p>An error has occured, please try again later.</p>");
                        return;
                    }

                    if ($.isFunction(o.callback))
                        o.callback(textStatus);
                });
        });
    };

    $.modalOpen = function (content, show) {
        if (show === undefined)
            show = true;

        $(c_modal).children().remove();

        if (!_structureExists())
            _buildStructure();

        if (show)
            $.modalShow();

        $(c_modal).html(content);
    };

    $.modalShow = function () {
        $(c_modalBack).css({ display: "block" });
    };

    $.modalClose = function () {
        $(c_modalBack).remove();
    };
})(jQuery);