﻿function Utilities()
{
    // <remarks>
    // Klasa udostępniające użyteczne metody
    // </remarks>
}

Utilities.IsNullOrUndefOrEmpty = function(obj)
{
    /// <summary>
    /// Sprawdza czy obiekt jest równy null, undefined lub jest pustą tablicą
    /// </summary>
    /// <param name="obj" type="Object">Obiekt</param>

    return obj == null || obj == undefined || obj.length == 0;
}

Utilities.IsNUE = function (obj)
{
    /// <summary>
    /// Sprawdza czy obiekt jest równy null, undefined lub jest pustą tablicą (alias dla metody Utilities.IsNullOrUndefOrEmpty(obj))
    /// </summary>
    /// <param name="obj" type="Object">Obiekt</param>

    return Utilities.IsNullOrUndefOrEmpty(obj);
}

Utilities.IsEventHandlerAttached = function (evtDel)
{
    /// <summary>
    /// Sprawdza czy do zdarzenia podpiętą przynajmniej jedną metodę
    /// </summary>
    /// <param name="evtDel" type="Array">Tablica z metodami wywoływanymi podczas zdarzenia</param>

    if (evtDel && evtDel != null && evtDel != undefined)
        return true;
    return false;
}

Utilities.FireEvent = function (e, WHATEVER, YOU, WANT)
{
    /// <summary>
    /// Wywołuje zdarzenie
    /// </summary>
    /// <param name="e" type="Array">Zdarzenie</param>
    /// <param name="WHATEVER">WHATEVER</param>
    /// <param name="YOU">YOU</param>
    /// <param name="WANT">WANT</param>

    if (Utilities.IsEventHandlerAttached(e))
    {
        var a = arguments;
        for (var i = 0; i < e.length; ++i)
        {
            var f = "";
            f += "e[" + i + "](";
            if (!Utilities.IsNullOrUndefOrEmpty(a) && a.length > 1)
            {
                for (var j = 1; j < a.length; ++j)
                {
                    f += (j > 1 ? "," : "") + "a[" + j + "]";
                }
            }
            f += ");";
            eval(f);
        }
    }
}

Utilities.FlushEvent = function (e)
{
    /// <summary>
    /// Czyści tablicę metod wywoływanych podczas zdarzenia
    /// </summary>
    /// <param name="e" type="Array">Zdarzenie</param>

    e = [];
}

Utilities.HandleAjaxError = function (result, additionalData)
{
    // nothing to do
}

Utilities.GetPostBackMethod = function (obj, attr)
{
    /// <summary>
    /// Wyciąga wyrażeniem regułowym __doPostBack z atrybutu obiektu
    /// </summary>
    /// <param name="obj">obiekt</param>
    /// <param name="attr">atrybut</param>
    if (!Utilities.IsNUE(obj) && !Utilities.IsNUE(attr))
    {
        var reDP = new RegExp("__doPostBack\\(.*\\)");
        var postBack = $(obj).attr(attr);
        var res = null;
        if (!Utilities.IsNUE(postBack))
        {
            res = reDP.exec(postBack);
            if (!Utilities.IsNUE(res))
                res = res[0];
        }
        return res;
    }
}
