var App = App || {};
App.Presenters = App.Presenters || {};

App.Presenters.HttpErrorPresenter = function(
    jQuery,
    promise,
    util,
    topNavigationPresenter) {

    var $el = jQuery('#content');
    var templates = {};

    function init(params, loaded) {
        topNavigationPresenter.changeTitle('Error ' + params.error);

        if (params.error === 404) {
            promise.wait(util.promiseTemplate('404'))
                .then(function(template) {
                    templates.errorPage = template;
                    reinit(params, loaded);
                }).fail(function() {
                    console.log(arguments);
                    loaded();
                });
        } else {
            console.log('Not supported.');
            loaded();
        }
    }

    function reinit(params, loaded) {
        render();
        loaded();
    }

    function render() {
        $el.html(templates.errorPage());
    }

    return {
        init: init,
        reinit: reinit,
        render: render,
    };

};

App.DI.register('httpErrorPresenter', ['jQuery', 'promise', 'util', 'topNavigationPresenter'], App.Presenters.HttpErrorPresenter);