'use strict';
define(
    [
        'handlebars',
        'underscore'
    ], function (Handlebars, _) {
        Handlebars.registerHelper('poster', function () {

            var poster = _.where(this.images, {coverType: 'poster'});

            if (poster[0]) {
                return poster[0].url;
            }

            return undefined;
        });

        Handlebars.registerHelper('traktUrl', function () {
            return 'http://trakt.tv/show/' + this.titleSlug;
        });

        Handlebars.registerHelper('imdbUrl', function () {
            return 'http://imdb.com/title/' + this.imdbId;
        });

        Handlebars.registerHelper('tvdbUrl', function () {
            return 'http://www.thetvdb.com/?tab=series&id=' + this.tvdbId;
        });

        Handlebars.registerHelper('tvRageUrl', function () {
            return 'http://www.tvrage.com/shows/id-' + this.tvRageId;
        });

        Handlebars.registerHelper('route', function () {
            return '/series/' + this.titleSlug;
        });

        Handlebars.registerHelper('percentOfEpisodes', function () {
            var episodeCount = this.episodeCount;
            var episodeFileCount = this.episodeFileCount;

            var percent = 100;

            if (episodeCount > 0) {
                percent = episodeFileCount / episodeCount * 100;
            }

            return percent;
        });

        Handlebars.registerHelper('seasonCountHelper', function () {
            var seasonCount = this.seasonCount;
            var continuing = this.status === 'continuing';

            if (continuing) {
                return new Handlebars.SafeString('<span class="label label-info">Season {0}</span>'.format(seasonCount));
            }

            if (seasonCount === 1) {
                return new Handlebars.SafeString('<span class="label label-info">{0} Season</span>'.format(seasonCount))
            }

            return new Handlebars.SafeString('<span class="label label-info">{0} Seasons</span>'.format(seasonCount))
        });

        Handlebars.registerHelper('titleWithYear', function () {
            if (this.title.endsWith(' ({0})'.format(this.year))) {
                return this.title;
            }

            return '{0} ({1})'.format(this.title, this.year);
        });
    });