var Utils = {
    tooltipTimer: null,
    redirectTimer: null,

    ShowTooltip: function(message, redirectUrl) {
        $(Config.TooltipDlgSelector).html(message);

        $(Config.TooltipDlgSelector).dialog({
            title: "Message",
            modal: true,
            draggable: false,
            resizable: false,
            minHeight: 0,
            buttons: {
                Ok: function() {
                    $(this).dialog("close");
                    Utils.CleanupTooltip();

                    if (redirectUrl) {
                        Utils.Redirect(redirectUrl);
                    }
                }
            },
            open: function(event, ui) {
                Utils.tooltipTimer = setTimeout(
                    '$(Config.TooltipDlgSelector).dialog("close");',
                    Config.TooltipTimeout);
            },
            close: function(event, ui) {
                Utils.CleanupTooltip();

                if (redirectUrl) {
                    Utils.Redirect(redirectUrl);
                }
            }
        });

        if (redirectUrl) {
            Utils.redirectTimer = setTimeout(
                "Utils.Redirect('" + redirectUrl + "')",
                Config.TooltipTimeout);
        }
    },

    CleanupTooltip: function() {
        $(Config.TooltipDlgSelector).html("");
        clearTimeout(Utils.tooltipTimer);
        clearTimeout(Utils.redirectTimer);
    },

    ShowConfirmDialog: function(html, okCallback) {
        $(Config.ConfirmDlgSelector).html(html);
        $(Config.ConfirmDlgSelector).dialog({
            title: "Confirm",
            resizable: false,
            modal: true,
            minHeight: 0,
            buttons: {
                "OK": function() {
                    okCallback.call(this);
                },
                Cancel: function() {
                    $(this).dialog('close');
                }
            }
        });
    },

    CenterDialog: function(selector) {
        $(selector).dialog("option", "width", "auto");
        $(selector).dialog("option", "height", "auto");
        $(selector).dialog("option", "position", "center");
    },

    Redirect: function(url, newWindow) {
        if (newWindow) {
            window.open(url, '_blank', 'toolbar=0,location=0,menubar=0');
        } else {
            window.location.href = url;
        }
    },

    ToggleCheckboxes: function(el, selector) {
        var val = $(el).attr("checked");

        if (val) {
            $(selector).attr("checked", val);
        } else {
            $(selector).attr("checked", val);
        }
    },

    InArray: function(needle, haystack) {
        for (var i = 0; i < haystack.length; i++) {
            if (haystack[i] == needle) {
                return true;
            }
        }

        return false;
    },

    IsInteger: function (s) {
        return (s.toString().search(/^-?[0-9]+$/) == 0);
    },

    isUnsignedInteger: function (s) {
        return (s.toString().search(/^[0-9]+$/) == 0);
    }
}
