//Definimos los namespaces
Type.registerNamespace('Devy');


//Clase con metodos utiles estaticos
Devy.Notifications = function() { }

Devy.Notifications._ShowDialog = function (title, content, cssclass) {
    setTimeout(function () {
        var sb = new Sys.StringBuilder();

        sb.append('<div title="');
        sb.append(title);
        sb.append('">');
        sb.append(content);
        sb.append('</div>');

        var domDialog = $(sb.toString());
        domDialog.dialog({
            width: 500,
            dialogClass: cssclass,
            modal: true,
            closeOnEscape: true,
            close: function () { $(this).dialog('destroy'); },
            buttons: { "Aceptar": function () { $(this).dialog("close"); } }
        });
    }, 200);
}


Devy.Notifications.ShowMessage = function(title, message) {
    Devy.Notifications._ShowDialog(title, message, "devy-MessageDialog");
}

Devy.Notifications.ShowError = function(title, error) {
    Devy.Notifications._ShowDialog(title, error, "devy-ErrorDialog");
}

Devy.Notifications.ShowConfirm = function(title, prompt, confirmCallBack, cancelCallBack) {
    var sb = new Sys.StringBuilder();

    sb.append('<div title="');
    sb.append(title);
    sb.append('">');
    sb.append(prompt);
    sb.append('</div>');

    var safeCancelCallBack = function() { if (cancelCallBack) cancelCallBack() };

    var domDialog = $(sb.toString());
    domDialog.dialog({
        width: 500,
        closeOnEscape: true,
        close: function() { $(this).dialog('destroy'); safeCancelCallBack(); },
        dialogClass: "devy-ConfirmDialog", modal: true, buttons: {
            "SI": function() { $(this).dialog("close"); confirmCallBack(); },
            "NO": function() { $(this).dialog("close"); safeCancelCallBack(); }
        }
    });
}

Devy.Notifications.ShowLoading = function(taskTitle, taskDescription) {
    if (!Devy.Notifications._loadingObj) {
        Devy.Notifications._cancelShow = false;

        setTimeout(function() { Devy.Notifications._ShowLoading(taskTitle, taskDescription); }, 200);
    }
}

Devy.Notifications._ShowLoading = function(taskTitle, taskDescription) {
    if (!Devy.Notifications._loadingObj && !Devy.Notifications._cancelShow) {
        var sb = new Sys.StringBuilder();

        if (taskTitle === undefined) taskTitle = "Procesando";

        sb.append('<div title="' + taskTitle + '">');

        if (taskDescription !== undefined)
            sb.append('<p class="Description">' + taskDescription + '</p>');

        sb.append('<p class="Progress"><span>Por favor espere...</span></p>');
        sb.append('</div>');

        Devy.Notifications._loadingObj = $(sb.toString());
        Devy.Notifications._loadingObj.dialog({ width: 500, dialogClass: "devy-Loading", modal: true, closeOnEscape: false });
    }
},
Devy.Notifications.HideLoading = function() {
    Devy.Notifications._cancelShow = true;

    if (Devy.Notifications._loadingObj) {
        $(Devy.Notifications._loadingObj).dialog("close");
        $(Devy.Notifications._loadingObj).dialog('destroy')
        Devy.Notifications._loadingObj = null;
    }
}
