"use strict";
define(['app'], function () {
    NzbDrone.Calendar.CalendarModel = Backbone.Model.extend({
        mutators: {
            title              : function () {
                return this.get('seriesTitle');
            },
            allDay             : function () {
                return false;
            },
            day                : function () {
                return Date.create(this.get('start')).format('{dd}');
            },
            month              : function () {
                return Date.create(this.get('start')).format('{MON}');
            },
            startTime          : function () {
                var start = Date.create(this.get('start'));

                if (start.format('{mm}') === '00') {
                    return start.format('{h}{tt}');
                }

                return start.format('{h}.{mm}{tt}');
            },
            paddedEpisodeNumber: function () {
                return this.get('episodeNumber');
            },
            statusLevel        : function () {
                var status = this.get('status');
                var currentTime = Date.create();
                var start = Date.create(this.get('start'));
                var end = Date.create(this.get('end'));

                if (currentTime.isBetween(start, end)) {
                    return 'warning';
                }

                if (start.isBefore(currentTime) || status === 'Missing') {
                    return 'danger';
                }

                if (status === 'Ready') {
                    return 'success';
                }

                return 'primary';
            },
            bestDateString     : function () {
                return bestDateString(this.get('start'));
            }
        },
        defaults: {
            status: 0
        }
    });
});
