'use strict';
define(
    [
        'marionette',
        'Calendar/UpcomingCollection',
        'Calendar/UpcomingCollectionView',
        'Calendar/CalendarView',
    ], function (Marionette, UpcomingCollection, UpcomingCollectionView, CalendarView) {
        return Marionette.Layout.extend({
            template: 'Calendar/CalendarLayoutTemplate',

            regions: {
                upcoming: '#x-upcoming',
                calendar: '#x-calendar'
            },

            initialize: function () {
                this.upcomingCollection = new UpcomingCollection();
                this.upcomingCollection.fetch();
            },

            onShow: function () {
                this._showUpcoming();
                this._showCalendar();
            },

            _showUpcoming: function () {
                this.upcoming.show(new UpcomingCollectionView({
                    collection: this.upcomingCollection
                }));
            },

            _showCalendar: function () {
                this.calendar.show(new CalendarView());
            }
        });
    });