'use strict';
define(
    [
        'Shared/NzbDroneController',
        'AppLayout',
        'Series/SeriesCollection',
        'Series/Index/SeriesIndexLayout',
        'Series/Details/SeriesDetailsLayout'
    ], function (NzbDroneController, AppLayout, SeriesCollection, SeriesIndexLayout, SeriesDetailsLayout) {

        return NzbDroneController.extend({

            _originalInit: NzbDroneController.prototype.initialize,

            initialize: function () {
                this.route('', this.series);
                this.route('series', this.series);
                this.route('series/:query', this.seriesDetails);

                this._originalInit.apply(this, arguments);
            },

            series: function () {
                this.setTitle('NzbDrone');
                this.showMainRegion(new SeriesIndexLayout());
            },

            seriesDetails: function (query) {
                var series = SeriesCollection.where({titleSlug: query});

                if (series.length !== 0) {
                    var targetSeries = series[0];
                    this.setTitle(targetSeries.get('title'));
                    this.showMainRegion(new SeriesDetailsLayout({ model: targetSeries }));
                }
                else {
                    this.showNotFound();
                }
            }
        });
    });

