'use strict';

define(
    [
        'Cells/NzbDroneCell',
        'Shared/FormatHelpers'
    ], function (NzbDroneCell, FormatHelpers) {
        return NzbDroneCell.extend({

            className: 'episode-number-cell',

            render: function () {

                this.$el.empty();

                var airDateField = this.column.get('airDateUtc') || 'airDateUtc';
                var seasonField = this.column.get('seasonNumber') || 'seasonNumber';
                var episodeField = this.column.get('episodes') || 'episodeNumber';

                if (this.cellValue) {

                    var airDate = this.cellValue.get(airDateField);
                    var seasonNumber = this.cellValue.get(seasonField);
                    var episodes = this.cellValue.get(episodeField);

                    var result = 'Unknown';

                    if (episodes) {

                        var paddedEpisodes;

                        if (episodes.constructor === Array) {
                            paddedEpisodes = _.map(episodes,function (episodeNumber) {
                                return FormatHelpers.pad(episodeNumber, 2);
                            }).join();
                        }
                        else {
                            paddedEpisodes = FormatHelpers.pad(episodes, 2);
                        }

                        result = '{0}x{1}'.format(seasonNumber, paddedEpisodes);
                    }
                    else if (airDate) {
                        result = new Date(airDate).toLocaleDateString();
                    }

                    this.$el.html(result);
                }
                this.delegateEvents();
                return this;
            }
        });
    });