"use strict";
define([
    'app',
    'AddSeries/RootFolders/RootFolderCollection',
    'Quality/QualityProfileCollection',
    'AddSeries/RootFolders/RootFolderView',
    'AddSeries/New/AddNewSeriesView',
    'AddSeries/Existing/ImportSeriesView'
],
    function (app, rootFolderCollection, qualityProfileCollection) {
        NzbDrone.AddSeries.AddSeriesLayout = Backbone.Marionette.Layout.extend({
            template: 'AddSeries/addSeriesLayoutTemplate',

            regions: {
                addNew        : '#add-new',
                importExisting: '#import-existing',
                rootFolders   : '#root-folders'
            },

            ui: {
                addNewTab        : '.x-add-new-tab',
                importExistingTab: '.x-import-existing-tab',
                rootFoldersTab   : '.x-root-folders-tab'
            },

            events: {
                'click .x-add-new-tab'        : 'showAddNew',
                'click .x-import-existing-tab': 'showImport',
                'click .x-root-folders-tab'   : 'showRootFolders'
            },

            showAddNew: function (e) {
                if (e) {
                    e.preventDefault();
                }

                this.ui.addNewTab.tab('show');
                NzbDrone.Router.navigate('series/add/new');
            },

            showImport: function (e) {
                if (e) {
                    e.preventDefault();
                }

                this.ui.importExistingTab.tab('show');
                NzbDrone.Router.navigate('series/add/import');
            },

            showRootFolders: function (e) {
                if (e) {
                    e.preventDefault();
                }

                this.ui.rootFoldersTab.tab('show');
                NzbDrone.Router.navigate('series/add/rootfolders');
            },


            initialize: function (options) {
                if (options.action) {
                    this.action = options.action.toLowerCase();
                }
            },

            onRender: function () {

                rootFolderCollection.fetch();
                qualityProfileCollection.fetch();

                this.addNew.show(new NzbDrone.AddSeries.New.AddNewSeriesView());
                this.importExisting.show(new NzbDrone.AddSeries.Existing.ImportSeriesView());
                this.rootFolders.show(new NzbDrone.AddSeries.RootDirView());

                this.listenTo(rootFolderCollection, 'add', this.evaluateActions, this);
                this.listenTo(rootFolderCollection, 'remove', this.evaluateActions, this);
                this.listenTo(rootFolderCollection, 'reset', this.evaluateActions, this);
            },

            onShow: function () {
                switch (this.action) {
                    case 'import':
                        this.showImport();
                        break;
                    case 'rootfolders':
                        this.showRootFolders();
                        break;
                    default:
                        this.showAddNew();
                }
            },

            evaluateActions: function () {
                if (rootFolderCollection.length === 0) {
                    this.ui.addNewTab.hide();
                    this.ui.importExistingTab.hide();
                    this.showRootFolders();
                } else {
                    this.ui.addNewTab.show();
                    this.ui.importExistingTab.show();
                }
            }
        });
    });