﻿/*
функция отображения сообщений в блоке
применяется, например, после ajax-операций
*/
jQuery.fn.showSummary = function (/*String or Object or Array*/obj, clear) {
    var $self = $(this).hide();
    if (clear || true) {
        $self.empty();
    }
    switch (obj.constructor) {
        case String:
            $self.append(obj);
            break;

        case Object:
        case Array:
            $.each(obj, function (i, e) {
                $self.append(e + "<br />");
            });
            break;
        default:
            return;
    }
    $self.clearQueue("custom")
                .queue("custom", function (next) {
                    $(this).show();
                    next();
                })
                .delay(3000, "custom")
                .queue("custom", function (next) {
                    $(this).hide('fast');
                    next();
                });

    $self.dequeue("custom");
    return $self;
}

/* 
функция преобразования словаря .NET в js объект
применяется, например, к JsonResponce.Additional
*/
jQuery.convertToObject = function (arr, keyName, valueName) {
    var result = {};
    var keyName = keyName || "Key";
    var valueName = valueName || "Value";
    $.each(arr, function (i, e) {
        result[e[keyName]] = e[valueName];
    });
    return result;
};

/*
функция преобразования формы в объект
*/
jQuery.fn.serializeObject = function () {
    var o = {};
    var a = this.serializeArray();
    $.each(a, function () {
        if (o[this.name]) {
            if (!o[this.name].push) {
                o[this.name] = [o[this.name]];
            }
            o[this.name].push(this.value || '');
        } else {
            o[this.name] = this.value || '';
        }
    });
    return o;
};

/*
Отображение загрузки
*/
jQuery.fn.loadingHtml = function () {
    $(this).html("<div style=\"display: block; color:#64962b;font-weight: bold;font-family: arial,sans-serif;font-size: 13px; float: left;\">загрузка данных...</div>").end().html("<div class=\"loading\"><div class=\"loading-img\"></div></div>");
    return this;
};
