"use strict";
define(['app', 'Config'], function () {

    NzbDrone.Shared.Toolbar.ButtonView = Backbone.Marionette.ItemView.extend({
        template : 'Shared/Toolbar/ButtonTemplate',
        className: 'btn',

        events: {
            'click': 'onClick'
        },


        initialize: function () {
            this.storageKey = this.model.get('menuKey') + ':' + this.model.get('key');
        },

        onRender: function () {
            if (this.model.get('active')) {
                this.$el.addClass('active');
                this.invokeCallback();
            }
        },

        onClick: function () {
            this.invokeRoute();
            this.invokeCallback();
            this.invokeCommand();
        },


        invokeCommand: function () {
            var command = this.model.get('command');
            if (command) {
                window.alert(command);
            }
        },

        invokeRoute: function () {
            var route = this.model.get('route');
            if (route) {
                NzbDrone.Router.navigate(route, {trigger: true});
            }
        },

        invokeCallback: function () {

            if (!this.model.ownerContext) {
                throw 'ownerContext must be set.';
            }


            var callback = this.model.get('callback');
            if (callback) {
                callback.call(this.model.ownerContext);
            }
        }

    });
});