define(["jquery", "underscore", "underscore.string", "js/views/feedback"], function($, _, str, SystemFeedbackView) {
    var Notification = SystemFeedbackView.extend({
        options: $.extend({}, SystemFeedbackView.prototype.options, {
            type: "notification",
            closeIcon: false
        })
    });

    // create Notification.Warning, Notification.Confirmation, etc
    var capitalCamel, intents;
    capitalCamel = _.compose(str.capitalize, str.camelize);
    intents = ["warning", "error", "confirmation", "announcement", "step-required", "help", "mini"];
    _.each(intents, function(intent) {
        var subclass;
        subclass = Notification.extend({
            options: $.extend({}, Notification.prototype.options, {
                intent: intent
            })
        });
        Notification[capitalCamel(intent)] = subclass;
    });

    // set more sensible defaults for Notification.Mini views
    var miniOptions = Notification.Mini.prototype.options;
    miniOptions.minShown = 1250;
    miniOptions.closeIcon = false;

    return Notification;
});
