Show:
                            /**
                             * The Scheduler Component
                             *
                             * @module aui-scheduler
                             * @submodule aui-scheduler-view-month
                             */
                            
                            var Lang = A.Lang,
                                isFunction = Lang.isFunction,
                            
                                DateMath = A.DataType.DateMath,
                            
                                getCN = A.getClassName,
                            
                                CSS_SVM_TABLE_DATA_COL_NOMONTH = getCN('scheduler-view-month', 'table', 'data', 'col', 'nomonth'),
                                CSS_SVT_TABLE_DATA_COL_TITLE = getCN('scheduler-view', 'table', 'data', 'col', 'title');
                            
                            /**
                             * A base class for `SchedulerMonthView`.
                             *
                             * @class A.SchedulerMonthView
                             * @extends A.SchedulerTableView
                             * @param {Object} config Object literal specifying widget configuration
                             *     properties.
                             * @constructor
                             */
                            var SchedulerMonthView = A.Component.create({
                            
                                /**
                                 * Static property provides a string to identify the class.
                                 *
                                 * @property NAME
                                 * @type {String}
                                 * @static
                                 */
                                NAME: 'scheduler-view-month',
                            
                                /**
                                 * Static property used to define the default attribute
                                 * configuration for the `SchedulerMonthView`.
                                 *
                                 * @property ATTRS
                                 * @type {Object}
                                 * @static
                                 */
                                ATTRS: {
                            
                                    /**
                                     * Contains the number of Days to display in a month view.
                                     *
                                     * @attribute displayDaysInterval
                                     * @default 42
                                     * @type {Number}
                                     * @readOnly
                                     */
                                    displayDaysInterval: {
                                        readOnly: true,
                                        value: 42
                                    },
                            
                                    /**
                                     * Determines the name for this month view.
                                     *
                                     * @attribute name
                                     * @default 'month'
                                     * @type {String}
                                     */
                                    name: {
                                        value: 'month'
                                    },
                            
                                    /**
                                     * Contains the function that formats the navigation date.
                                     *
                                     * @attribute navigationDateFormatter
                                     * @type {Function}
                                     */
                                    navigationDateFormatter: {
                                        value: function(date) {
                                            var instance = this;
                                            var scheduler = instance.get('scheduler');
                            
                                            return A.DataType.Date.format(
                                                date, {
                                                    format: '%B %Y',
                                                    locale: scheduler.get('locale')
                                                }
                                            );
                                        },
                                        validator: isFunction
                                    }
                                },
                            
                                /**
                                 * Static property used to define which component it extends.
                                 *
                                 * @property EXTENDS
                                 * @type {Object}
                                 * @static
                                 */
                                EXTENDS: A.SchedulerTableView,
                            
                                prototype: {
                            
                                    /**
                                     * Returns a date value of the first day of the month with its time
                                     * adjusted to midnight.
                                     *
                                     * @method getAdjustedViewDate
                                     * @param {Date} date
                                     * @return {Date}
                                     */
                                    getAdjustedViewDate: function(date) {
                                        return DateMath.toMidnight(DateMath.findMonthStart(date));
                                    },
                            
                                    /**
                                     * Returns the value of the date that follows the month view's current
                                     * date.
                                     *
                                     * @method getNextDate
                                     * @return {Date}
                                     */
                                    getNextDate: function() {
                                        var instance = this;
                            
                                        var scheduler = instance.get('scheduler');
                                        var viewDate = scheduler.get('viewDate');
                            
                                        return DateMath.toLastHour(DateMath.add(viewDate, DateMath.MONTH, 1));
                                    },
                            
                                    /**
                                     * Returns the value of the date that preceeds the month view's current
                                     * date.
                                     *
                                     * @method getPrevDate
                                     * @return {Date}
                                     */
                                    getPrevDate: function() {
                                        var instance = this;
                            
                                        var scheduler = instance.get('scheduler');
                                        var viewDate = scheduler.get('viewDate');
                            
                                        return DateMath.toMidnight(DateMath.subtract(viewDate, DateMath.MONTH, 1));
                                    },
                            
                                    /**
                                     * Plots all events in the current view.
                                     *
                                     * @method plotEvents
                                     */
                                    plotEvents: function() {
                                        var instance = this;
                            
                                        A.SchedulerMonthView.superclass.plotEvents.apply(instance, arguments);
                            
                                        var scheduler = instance.get('scheduler');
                                        var viewDate = scheduler.get('viewDate');
                            
                                        var monthEnd = DateMath.findMonthEnd(viewDate);
                                        var monthStart = DateMath.findMonthStart(viewDate);
                            
                                        var currentIntervalStart = instance._findCurrentIntervalStart();
                            
                                        var colTitleNodes = instance.tableRowContainer.all('.' + CSS_SVT_TABLE_DATA_COL_TITLE);
                            
                                        colTitleNodes.each(function(colTitleNode, index) {
                                            var celDate = DateMath.add(currentIntervalStart, DateMath.DAY, index);
                            
                                            if (DateMath.before(celDate, monthStart) || DateMath.after(celDate, monthEnd)) {
                                                colTitleNode.addClass(CSS_SVM_TABLE_DATA_COL_NOMONTH);
                                            }
                                        });
                                    },
                            
                                    /**
                                     * Returns the current interval start by finding the first day of the
                                     * week with the `Scheduler`'s `viewDate`.
                                     *
                                     * @method _findCurrentIntervalStart
                                     * @protected
                                     * @return {Date} The current interval start from the first day of the
                                     * week with the `Scheduler`'s `viewDate`.
                                     */
                                    _findCurrentIntervalStart: function() {
                                        var instance = this;
                                        var scheduler = instance.get('scheduler');
                                        var viewDate = scheduler.get('viewDate');
                            
                                        return instance._findFirstDayOfWeek(viewDate);
                                    },
                            
                                    /**
                                     * Returns the first day of the week with given `Date`.
                                     *
                                     * @method _findFirstDayOfWeek
                                     * @param {Date} date
                                     * @protected
                                     * @return {Date} The first day of the week with given `Date`.
                                     */
                                    _findFirstDayOfWeek: function(date) {
                                        var instance = this;
                            
                                        var scheduler = instance.get('scheduler');
                                        var firstDayOfWeek = scheduler.get('firstDayOfWeek');
                            
                                        return DateMath.getFirstDayOfWeek(date, firstDayOfWeek);
                                    }
                            
                                }
                            });
                            
                            A.SchedulerMonthView = SchedulerMonthView;