(function(define) {
    'use strict';
    define(['backbone', 'js/edxnotes/utils/utils', 'underscore.string'], function(Backbone, Utils, str) {
        var NoteModel = Backbone.Model.extend({
            defaults: {
                'id': null,
                'created': '',
                'updated': '',
                'user': '',
                'usage_id': '',
                'course_id': '',
                'text': '',
                'quote': '',
                'ranges': [],
                'tags': [],
                'unit': {
                    'display_name': '',
                    'url': '',
                    'location': ''
                },
                'section': {
                    'display_name': '',
                    'location': '',
                    'children': []
                },
                'chapter': {
                    'display_name': '',
                    'location': '',
                    'index': 0,
                    'children': []
                },
            // Flag indicating current state of the note: expanded or collapsed.
                'is_expanded': false,
            // Flag indicating whether `More` link should be shown.
                'show_link': false
            },

            textSize: 300,

            initialize: function() {
                if (this.get('quote').length > this.textSize) {
                    this.set('show_link', true);
                }
            },

            getQuote: function() {
                var message = this.get('quote');

                if (!this.get('is_expanded') && this.get('show_link')) {
                    message = str.prune(message, this.textSize);
                }

                return message;
            }

        });

        return NoteModel;
    });
}).call(this, define || RequireJS.define);
