"use strict";

define(['app', 'AddSeries/RootFolders/RootFolderCollection', 'Mixins/AutoComplete'], function (app, rootFolders) {

    NzbDrone.AddSeries.RootFolderItemView = Backbone.Marionette.ItemView.extend({

        template: 'AddSeries/RootFolders/RootFolderItemTemplate',
        tagName : 'tr',

        events: {
            'click .x-remove': 'removeFolder'
        },

        removeFolder: function () {
            this.model.destroy({ wait: true });
            this.model.collection.remove(this.model);
        }

    });

    NzbDrone.AddSeries.RootDirListView = Backbone.Marionette.CollectionView.extend({
        itemView: NzbDrone.AddSeries.RootFolderItemView,

        tagName  : 'table',
        className: 'table table-hover'
    });

    NzbDrone.AddSeries.RootDirView = Backbone.Marionette.Layout.extend({
        template: 'AddSeries/RootFolders/RootFolderTemplate',
        route   : 'series/add/rootdir',

        ui: {
            pathInput: '.x-path input'
        },

        regions: {
            currentDirs: '#current-dirs'
        },

        events: {
            'click .x-add': 'addFolder'
        },


        onRender: function () {

            this.collection = rootFolders;
            this.currentDirs.show(new NzbDrone.AddSeries.RootDirListView({ collection: this.collection }));
            this.ui.pathInput.autoComplete('/directories');
        },


        addFolder: function () {
            var newDir = new NzbDrone.AddSeries.RootFolders.RootFolderModel(
                {
                    Path: this.ui.pathInput.val()
                });

            var self = this;

            this.collection.create(newDir, {
                wait: true, success: function () {
                    self.collection.fetch();
                }
            });
        },

        search: function (context) {

            var term = context.ui.seriesSearch.val();

            if (term === "") {
                context.collection.reset();
            } else {
                console.log(term);
                context.collection.fetch({ data: { term: term } });
            }


        }
    });

});
