'use strict';
define(['app',
    'backbone.deepmodel',
    'Mixins/AsChangeTrackingModel',
    'Shared/Messenger'], function (App, DeepModel, AsChangeTrackingModel, Messenger) {
    var model = DeepModel.DeepModel.extend({

        initialize: function () {
            this.listenTo(App.vent, App.Commands.SaveSettings, this.saveSettings);
        },

        saveSettings: function () {

            if (!this.isSaved) {

                var savePromise = this.save();

                Messenger.monitor(
                    {
                        promise       : savePromise,
                        successMessage: this.successMessage,
                        errorMessage  : this.errorMessage
                    });

                return savePromise;
            }

            return undefined;
        }

    });

    return AsChangeTrackingModel.call(model);
});