Ext.ns('Application');

/**
 * Funkcja przechwytujaca bledy
 */
Application.errorHandler = function(response, failureType, noEmptyError, formWindow) {

    if(!Ext.isEmpty(noEmptyError)) {
        failureType = 'default';
    }
    
    switch (failureType) {
        case Ext.form.Action.CONNECT_FAILURE:
            // Blad komunikacji z ajaxem (przekroczony czas)
            Ext.MessageBox.show({
                title: Application.lang.msg_error_title,
                msg: Application.lang.msg_error_overall_text,
                buttons: Ext.MessageBox.OK,
                icon: Ext.MessageBox.ERROR
            });
            break;
        case Ext.form.Action.SERVER_INVALID:
            // Odpowiedz zawiera zmienne bledow formularza
            Ext.MessageBox.show({
                title: Application.lang.text_warning,
                msg: Application.lang.form_window_valid_error_server,
                buttons: Ext.MessageBox.OK,
                icon: Ext.MessageBox.WARNING
            });
            break;
        default:
            // Blad serwera zdefiniowany w wywolaniu ajaxa
            if(!Ext.isEmpty(response)) {

                // Blad zwiazany z niezalogowanym uzytkownikiem
                if(!Ext.isEmpty(response.action) && response.action == 'logout') {
                    // Zastopowanie sztucznego podtrzymywania sesji
                    Ext.TaskMgr.stopAll();
                }

                Ext.MessageBox.show({
                    title: Application.lang.text_warning,
                    msg: response.msg,
                    buttons: Ext.MessageBox.OK,
                    icon: Ext.MessageBox.WARNING,
                    fn: function() {
                        if(!Ext.isEmpty(response.action) && response.action == 'logout') {
                            // Akcja wylogowania, nastepuje odswiezanie strony
                            window.location.reload(false);
                        } else if(!Ext.isEmpty(response.action) && response.action == 'close') {
                            // Akcja zamkniecia okna
                            if(!Ext.isEmpty(formWindow))
                                formWindow.hide();
                        }
                    }
                });
            } else {
                if(Ext.isEmpty(noEmptyError)) {
                    // Pusta odpowiedz
                    Ext.MessageBox.show({
                        title: Application.lang.msg_error_title,
                        msg: Application.lang.msg_error_empty_response_text,
                        buttons: Ext.MessageBox.OK,
                        icon: Ext.MessageBox.ERROR
                    });
                }
            }
    }
    
};

/**
 * Wyswietlanie nieoczekiwanego bledu aplikacji
 */
Application.failure = function() {

    Ext.MessageBox.show({
        title: Application.lang.msg_error_title,
        msg: Application.lang.msg_error_overall_text,
        buttons: Ext.MessageBox.OK,
        icon: Ext.MessageBox.ERROR
    });

};

