$(function() {
    $(document).ajaxSuccess(function(evt, request, settings){ 
        try {
            var json = eval("(" + request.responseText + ")");
            if (typeof(json) != 'object') return;
            if (json.controller == 'error') {
                alert("Application error!"
                    + (json.message ? "\n\nmessage: " + json.message : ''));
            } else if (json.message) {
                alert("Application info!\n\nmessage: " + json.message);
            }
        } catch(e) {}
    }).ajaxError(function(evt, request){
        if (request.status == 0) return;
        switch (request.status) {
            case 200: default:
                var message = "Error response! status: "
                    + request.statusText + "(" + request.status + ")";
                message += "\n\nresponse text: \n" + request.responseText;
                break;
            case 404:
            case 403:
                var message = request.statusText;
                try {
                    var json = eval("(" + request.responseText + ")");
                    if (json.message) message += "\n\nmessage: " + json.message;
                } catch (e) {}
                break;
        }
        alert(message);
    });
    $("#loading").ajaxStart(function(){
        $(this).show();
    }).ajaxStop(function(){ 
        $(this).hide();
    });
});
