(function($) {
    var modaldialog = {};

    //显示对话框。
    function showDialog(msg, options, events) {
        //确定对话框的类型是正确的，如果给定的对话框类型不正确，则使用默认对话框类型中的第一个。
        if (!$.inArray(options.type, modaldialog.DialogTypes)) {
            options.type = modaldialog.DialogTypes[0];
        };

        //合并设置。
        var settings = $.extend({ title: modaldialog.DialogTitles[options.type] }, modaldialog.defaults, options);

        var dialog = document.getElementById('dialog');
        var mask = document.getElementById('dialog-mask');
        if (dialog) { $(dialog).remove(); }
        if (mask) { $(mask).remove(); }

        //对话框。
        dialog = document.createElement('div');
        dialog.id = 'dialog';
        //头部。
        var header = document.createElement('div');
        header.id = 'dialog-header';
        //标题。
        var title = document.createElement('div');
        title.id = 'dialog-title';
        //关闭按钮。
        var close = document.createElement('div');
        close.id = 'dialog-close';
        $(header).append(title).append(close);

        //内容。
        var content = document.createElement('div');
        content.id = 'dialog-content';
        //内部内容。
        var innerContent = document.createElement('div');
        innerContent.id = 'dialog-content-inner';
        //按钮容器。
        var buttonContainer = document.createElement('div');
        buttonContainer.id = 'dialog-button-container';
        //确定按钮。
        var buttonOK = document.createElement('input');
        $(buttonOK).attr({ type: 'button', id: 'dialog-OK', value: '确定' });
        //关闭按钮。
        var button = document.createElement('input');
        $(button).attr({ type: 'button', id: 'dialog-button', value: '关闭' });

        $(buttonContainer).append(buttonOK).append(button);
        $(content).append(innerContent).append(buttonContainer);
        $(dialog).append(header).append(content);

        //背景遮罩。
        mask = document.createElement('div');
        mask.id = 'dialog-mask';

        $(mask).hide();
        $(dialog).hide();

        document.body.appendChild(mask);
        document.body.appendChild(dialog);

        //右上角的关闭按钮单击事件。
        $(close).click(function() {
            modaldialog.hide(events, 'button_close');
        });

        //按钮容器中的关闭按钮单击事件。
        $("#dialog-button").click(function() {
            modaldialog.hide(events, 'button_cancel');
        });

        //按钮容器中的确定按钮单击事件。
        $("#dialog-OK").click(function() {
            modaldialog.hide(events, 'button_ok');
        });

        //判断什么时候显示确定按钮。
        if (settings['type'] == 'prompt') {
            $(buttonOK).show();
            $(button).val('取消');
        } else {
            $(buttonOK).hide();
            $(button).val("关闭");
        }

        $(title).html(settings.title);
        $(innerContent).html(msg);

        //设置宽度。
        var dialogTop = Math.abs($(window).height() - $(dialog).height()) / 2;
        $(dialog).width(settings.width).css({ left: ($(window).width() - $(dialog).width()) / 2 + 'px', top: dialogTop + 'px' });

        //添加样式。
        $(header).addClass(settings.type + 'header');
        $(content).addClass(settings.type);
        $(button).addClass(settings.type + 'button');
        $(buttonOK).addClass(settings.type + 'ok');

        mask.style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=50)"
        mask.style.opacity = ".5";

        if (navigator.appVersion.indexOf('MSIE 6.0') != -1) {
            $(mask).css({ position: 'absolute' }).height(Math.max($(document.body).height(), $('html').height()) + 'px');
            $(dialog).css({ position: 'absolute', top: $(document).scrollTop() + dialogTop + 'px' });
        }

        $(mask).fadeIn("fast");
        $(dialog).fadeIn("fast");
    };

    modaldialog.error = function $$modaldialog$error(msg, options, events) {
        if (typeof (options) == "undefined") {
            options = {};
        }
        options['type'] = "error";
        return (showDialog(msg, options, events));
    }
    modaldialog.warning = function $$modaldialog$error(msg, options, events) {
        if (typeof (options) == "undefined") {
            options = {};
        }
        options['type'] = "warning";
        return (showDialog(msg, options, events));
    }
    modaldialog.success = function $$modaldialog$error(msg, options, events) {
        if (typeof (options) == "undefined") {
            options = {};
        }
        options['type'] = "success";
        return (showDialog(msg, options, events));
    }
    modaldialog.prompt = function $$modaldialog$error(msg, options, events) {
        if (typeof (options) == "undefined") {
            options = {};
        }
        options['type'] = "prompt";
        return (showDialog(msg, options, events));
    }

    modaldialog.hide = function $$modaldialog$hide(events, buttonType) {
        var funcArray = new Array();

        if (events) {
            if (events['ok'] && typeof (events['ok']) == 'function' && buttonType == 'button_ok') {
                funcArray.push(events['ok']);
            }

            if (events['cancel'] && typeof (events['cancel']) == 'function' && buttonType == 'button_cancel') {
                funcArray.push(events['cancel']);
            }

            if (events['closed'] && typeof (events['closed']) == 'function') {
                funcArray.push(events['closed']);
            }

            $('#dialog').fadeOut("fast", function() {
                $(this).hide(0);
                for (var i = 0; i < funcArray.length; i++) {
                    funcArray[i]();
                }
            });
        }
        else {
            $('#dialog').fadeOut("fast", function() { $(this).hide(0); });
        }

        $('#dialog-mask').fadeOut("fast", function() { $(this).hide(0); });
    };

    //对话框类型。
    modaldialog.DialogTypes = new Array("error", "warning", "success", "prompt");

    //对话框标题。
    modaldialog.DialogTitles = { "error": "错误", "warning": "警告", "success": "提示", "prompt": "提示" };

    //设置默认值。
    modaldialog.defaults = { width: 350 };

    $.extend({ modaldialog: modaldialog });
})(jQuery);
