﻿(function ($) {

    var methods = {

        buildWindow: function (id, contents, width, height) {

            $("body div").first().append(contents.replace("{id}", id));

            var marginTop = Math.floor((height / 2) + 0.5) * -1;
            var marginLeft = Math.floor((width / 2) + 0.5) * -1;

            $("." + id).css("width", width + "px").css("height", height + "px").css("margin-top", marginTop + "px").css("margin-left", marginLeft + "px");
        },

        showWindow: function (id, iframe, href) {

            if ($.browser.msie && (parseFloat($.browser.version) <= 7)) {
                $("#modal_overlay").css("display", "block");
                $("." + id).css("display", "block");
            } else {
                $("#modal_overlay").show("fade", 200, function () {
                    $("." + id).first().show("fade", 200);
                });
            }

            $("." + id + " .modal_inner").first().prepend(iframe.replace("{href}", href));
        }
    };

    $.fn.lightmediaModal = function (modalOptions) {

        modalOptions = $.extend({
            windowClass: "",
            windowType: "separated",
            width: 800,
            height: 600,
            iframeMarkup: "<iframe class='modal_iframe' src='{href}'></iframe>",
            overlayMarkup: "<div id='modal_overlay'><span>&nbsp;</span></div>",
            windowMarkup: "<div class='modal_window {id}'><div class='modal_inner'></div></div>"
        }, modalOptions);

        if ($("#modal_overlay").length <= 0) {
            $("body div").first().append(modalOptions.overlayMarkup);
        }

        if (modalOptions.windowType == "combined") {
            methods.buildWindow("modal_" + modalOptions.modalWindowClass, modalOptions.windowMarkup, modalOptions.width, modalOptions.height);
        }

        var modalWindowIndex = 0;

        this.each(function () {

            if (modalOptions.windowType == "combined") {
                $(this).click(function (event) {
                    event.preventDefault();
                    methods.showWindow("modal_" + modalOptions.modalWindowClass, modalOptions.iframeMarkup, $(this).attr("href"));
                });
            }

            if (modalOptions.windowType == "separated") {

                var modalWindowID = "modal_" + modalOptions.windowClass + "_" + modalWindowIndex;

                if ($("." + modalWindowID).length <= 0) {
                    methods.buildWindow(modalWindowID, modalOptions.windowMarkup, modalOptions.width, modalOptions.height);
                }

                $(this).click(function (event) {
                    event.preventDefault();
                    methods.showWindow(modalWindowID, modalOptions.iframeMarkup, $(this).attr("href"));
                });
            }

            modalWindowIndex++;
        });

        return this;
    };

})(jQuery);
