﻿function Enum() { } Enum.MessageType = { none: -1, success: 1, failure: 0, info: 2, wait: 3 }
// wi.interface.js -->
$.fn.extend({
    message: function(result, message, options) {
        options = $.extend({
            failureClass: 'ErrorMessage',
            successClass: 'SuccessMessage',
            errorClass: 'InfoMessage',
            waitClass: 'WaitMessage',
            noneClass: 'NoneMessage',
            animate: true,
            addClass: true
        }, options);

        var resultFormat = '';
        if (result == Enum.MessageType.wait) {
            var windowHtml = '<div style="margin:0 auto; margin-top:' + parseInt(($(document).height() - 15) / 2) + 'px; width: 300px; height:50px; vertical-align:middle; text-align:center;">'
                + '<div class="top-border"></div>'
                + '<div class="right-border"></div>'
                + '<div class="bottom-border"></div>'
                + '<div class="left-border"></div>'
                + '<div class="top-left-corner"></div>'
                + '<div class="top-right-corner"></div>'
                + '<div class="bottom-right-corner"></div>'
                + '<div class="bottom-left-corner"></div>'
                + '<div class="content-container" style="">'
                + '<div class="content" style="background-color:white;"><span class="loading" style="margin:5px;"></span>' + message + '</div>'
                + '<div class="buttons" style="display: none;"></div>'
                + '</div>'
                + '</div>';
            resultFormat = $.format('<div class="ui-window-modal" style="opacity: 0.5; position: fixed; left: 0px; top: 0px; z-index: 1001; width: {0}px; height: {1}px; display: block;">{2}</div>', $(document).width(), $(document).height(), windowHtml);
        }
        else {
            resultFormat = $.format('{0}', message);
        }

        if (options.animate) {
            $(this).slideUp("slow", function() {
                $(this).html(resultFormat);
                if (options.addClass) {
                    $(this).attr('class', '');
                    $(this).addClass('MessageContainer');

                    switch (result) {
                        case Enum.MessageType.success:
                            $(this).addClass(options.successClass);
                            break;
                        case Enum.MessageType.failure:
                            $(this).addClass(options.failureClass);
                            break;
                        case Enum.MessageType.info:
                            $(this).addClass(options.errorClass);
                            break;
                        case Enum.MessageType.wait:
                            $(this).addClass(options.waitClass);
                            break;
                        default:
                            $(this).addClass(options.noneClass);
                            break;
                    }
                }
                if (result != Enum.MessageType.none) {
                    $(this).slideDown("slow");
                }
            });
        } else {
            $(this).hide();
            $(this).html(resultFormat);
            if (options.addClass) {
                $(this).attr('class', '');
                $(this).addClass('MessageContainer');

                switch (result) {
                    case Enum.MessageType.success:
                        $(this).addClass(options.successClass);
                        break;
                    case Enum.MessageType.failure:
                        $(this).addClass(options.failureClass);
                        break;
                    case Enum.MessageType.info:
                        $(this).addClass(options.errorClass);
                        break;
                    case Enum.MessageType.wait:
                        $(this).addClass(options.waitClass);
                        break;
                    default:
                        $(this).addClass(options.noneClass);
                        break;
                }
            }
            if (result != Enum.MessageType.wait) {

            }
            else if (result != Enum.MessageType.none) {
                $(this).show();
            }
        }
    }
});
