'use strict'; define( [ 'app', 'marionette', 'Episode/Search/ButtonsView', 'Episode/Search/ManualLayout', 'Release/Collection', 'Series/SeriesCollection', 'Shared/LoadingView', 'Shared/Messenger', 'Shared/Actioneer', 'Shared/FormatHelpers' ], function (App, Marionette, ButtonsView, ManualSearchLayout, ReleaseCollection, SeriesCollection, LoadingView, Messenger, Actioneer, FormatHelpers) { return Marionette.Layout.extend({ template: 'Episode/Search/LayoutTemplate', regions: { main: '#episode-search-region' }, events: { 'click .x-search-auto' : '_searchAuto', 'click .x-search-manual': '_searchManual', 'click .x-search-back' : '_showButtons' }, initialize: function () { this.mainView = new ButtonsView(); }, onShow: function () { this._showMainView(); }, _searchAuto: function (e) { if (e) { e.preventDefault(); } var series = SeriesCollection.get(this.model.get('seriesId')); var seriesTitle = series.get('title'); var season = this.model.get('seasonNumber'); var episode = this.model.get('episodeNumber'); var message = seriesTitle + ' - ' + season + 'x' + FormatHelpers.pad(episode, 2); Actioneer.ExecuteCommand({ command : 'episodeSearch', properties: { episodeId: this.model.get('id') }, errorMessage: 'Search failed for: ' + message }); App.vent.trigger(App.Commands.CloseModalCommand); }, _searchManual: function (e) { if (e) { e.preventDefault(); } var self = this; this.mainView = new LoadingView(); this._showMainView(); var releases = new ReleaseCollection(); var promise = releases.fetchEpisodeReleases(this.model.id); promise.done(function () { if (!self.isClosed) { self.mainView = new ManualSearchLayout({collection: releases}); self._showMainView(); } }); }, _showMainView: function () { this.main.show(this.mainView); }, _showButtons: function () { this.mainView = new ButtonsView(); this._showMainView(); } }); });