src/cm/media/js/lib/yui/yui_3.10.3/build/calendar-base/calendar-base-debug.js
author gibus
Tue, 16 Jul 2013 14:29:46 +0200
changeset 525 89ef5ed3c48b
permissions -rw-r--r--
Upgrades to yui 3.10.3
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
525
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     1
/*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     2
YUI 3.10.3 (build 2fb5187)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     3
Copyright 2013 Yahoo! Inc. All rights reserved.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     4
Licensed under the BSD License.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     5
http://yuilibrary.com/license/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     6
*/
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     7
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     8
YUI.add('calendar-base', function (Y, NAME) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
     9
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    10
/**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    11
 * The CalendarBase submodule is a basic UI calendar view that displays
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    12
 * a range of dates in a two-dimensional month grid, with one or more
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    13
 * months visible at a single time. CalendarBase supports custom date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    14
 * rendering, multiple calendar panes, and selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    15
 * @module calendar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    16
 * @submodule calendar-base
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    17
 */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    18
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    19
var getCN                 = Y.ClassNameManager.getClassName,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    20
    CALENDAR              = 'calendar',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    21
    CAL_GRID              = getCN(CALENDAR, 'grid'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    22
    CAL_LEFT_GRID         = getCN(CALENDAR, 'left-grid'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    23
    CAL_RIGHT_GRID        = getCN(CALENDAR, 'right-grid'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    24
    CAL_BODY              = getCN(CALENDAR, 'body'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    25
    CAL_HD                = getCN(CALENDAR, 'header'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    26
    CAL_HD_LABEL          = getCN(CALENDAR, 'header-label'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    27
    CAL_WDAYROW           = getCN(CALENDAR, 'weekdayrow'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    28
    CAL_WDAY              = getCN(CALENDAR, 'weekday'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    29
    CAL_COL_HIDDEN        = getCN(CALENDAR, 'column-hidden'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    30
    CAL_DAY_SELECTED      = getCN(CALENDAR, 'day-selected'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    31
    SELECTION_DISABLED    = getCN(CALENDAR, 'selection-disabled'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    32
    CAL_ROW               = getCN(CALENDAR, 'row'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    33
    CAL_DAY               = getCN(CALENDAR, 'day'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    34
    CAL_PREVMONTH_DAY     = getCN(CALENDAR, 'prevmonth-day'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    35
    CAL_NEXTMONTH_DAY     = getCN(CALENDAR, 'nextmonth-day'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    36
    CAL_ANCHOR            = getCN(CALENDAR, 'anchor'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    37
    CAL_PANE              = getCN(CALENDAR, 'pane'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    38
    CAL_STATUS            = getCN(CALENDAR, 'status'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    39
    L           = Y.Lang,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    40
    substitute  = L.sub,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    41
    arrayEach   = Y.Array.each,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    42
    objEach     = Y.Object.each,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    43
    iOf         = Y.Array.indexOf,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    44
    hasKey      = Y.Object.hasKey,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    45
    setVal      = Y.Object.setValue,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    46
    isEmpty     = Y.Object.isEmpty,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    47
    ydate       = Y.DataType.Date;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    48
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    49
/** Create a calendar view to represent a single or multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    50
    * month range of dates, rendered as a grid with date and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    51
    * weekday labels.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    52
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    53
    * @class CalendarBase
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    54
    * @extends Widget
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    55
    * @param config {Object} Configuration object (see Configuration
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    56
    * attributes)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    57
    * @constructor
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    58
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    59
function CalendarBase() {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    60
    CalendarBase.superclass.constructor.apply ( this, arguments );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    61
}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    62
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    63
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    64
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    65
Y.CalendarBase = Y.extend( CalendarBase, Y.Widget, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    66
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    67
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    68
     * A storage for various properties of individual month
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    69
     * panes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    70
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    71
     * @property _paneProperties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    72
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    73
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    74
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    75
    _paneProperties : {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    76
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    77
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    78
     * The number of month panes in the calendar, deduced
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    79
     * from the CONTENT_TEMPLATE's number of {calendar_grid}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    80
     * tokens.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    81
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    82
     * @property _paneNumber
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    83
     * @type Number
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    84
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    85
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    86
    _paneNumber : 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    87
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    88
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    89
     * The unique id used to prefix various elements of this
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    90
     * calendar instance.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    91
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    92
     * @property _calendarId
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    93
     * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    94
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    95
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    96
    _calendarId : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    97
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    98
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
    99
     * The hash map of selected dates, populated with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   100
     * selectDates() and deselectDates() methods
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   101
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   102
     * @property _selectedDates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   103
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   104
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   105
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   106
    _selectedDates : {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   107
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   108
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   109
     * A private copy of the rules object, populated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   110
     * by setting the customRenderer attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   111
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   112
     * @property _rules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   113
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   114
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   115
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   116
    _rules : {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   117
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   118
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   119
     * A private copy of the filterFunction, populated
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   120
     * by setting the customRenderer attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   121
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   122
     * @property _filterFunction
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   123
     * @type Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   124
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   125
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   126
    _filterFunction : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   127
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   128
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   129
     * Storage for calendar cells modified by any custom
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   130
     * formatting. The storage is cleared, used to restore
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   131
     * cells to the original state, and repopulated accordingly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   132
     * when the calendar is rerendered.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   133
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   134
     * @property _storedDateCells
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   135
     * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   136
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   137
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   138
    _storedDateCells : {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   139
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   140
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   141
     * Designated initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   142
     * Initializes instance-level properties of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   143
     * calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   144
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   145
     * @method initializer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   146
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   147
    initializer : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   148
        this._paneProperties = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   149
        this._calendarId = Y.guid('calendar');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   150
        this._selectedDates = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   151
        if (isEmpty(this._rules)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   152
             this._rules = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   153
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   154
        this._storedDateCells = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   155
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   156
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   157
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   158
     * renderUI implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   159
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   160
     * Creates a visual representation of the calendar based on existing parameters.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   161
     * @method renderUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   162
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   163
    renderUI : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   165
        var contentBox = this.get('contentBox');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   166
        contentBox.appendChild(this._initCalendarHTML(this.get('date')));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   167
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   168
        if (this.get('showPrevMonth')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   169
                this._afterShowPrevMonthChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   170
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   171
        if (this.get('showNextMonth')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   172
                this._afterShowNextMonthChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   173
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   174
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   175
        this._renderCustomRules();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   176
        this._renderSelectedDates();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   177
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   178
        this.get("boundingBox").setAttribute("aria-labelledby", this._calendarId + "_header");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   179
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   180
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   181
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   182
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   183
     * bindUI implementation
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   184
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   185
     * Assigns listeners to relevant events that change the state
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   186
     * of the calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   187
     * @method bindUI
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   188
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   189
    bindUI : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   190
        this.after('dateChange', this._afterDateChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   191
        this.after('showPrevMonthChange', this._afterShowPrevMonthChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   192
        this.after('showNextMonthChange', this._afterShowNextMonthChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   193
        this.after('headerRendererChange', this._afterHeaderRendererChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   194
        this.after('customRendererChange', this._afterCustomRendererChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   195
        this.after('enabledDatesRuleChange', this._afterCustomRendererChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   196
        this.after('disabledDatesRuleChange', this._afterCustomRendererChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   197
        this.after('focusedChange', this._afterFocusedChange);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   198
        this.after('selectionChange', this._renderSelectedDates);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   199
        this._bindCalendarEvents();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   200
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   201
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   202
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   203
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   204
     * An internal utility method that generates a list of selected dates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   205
     * from the hash storage.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   206
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   207
     * @method _getSelectedDatesList
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   208
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   209
     * @return {Array} The array of `Date`s that are currently selected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   210
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   211
    _getSelectedDatesList : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   212
        var output = [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   213
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   214
        objEach (this._selectedDates, function (year) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   215
            objEach (year, function (month) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   216
                objEach (month, function (day) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   217
                    output.push (day);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   218
                }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   219
            }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   220
        }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   221
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   222
        return output;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   223
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   224
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   225
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   226
     * A utility method that returns all dates selected in a specific month.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   227
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   228
     * @method _getSelectedDatesInMonth
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   229
     * @param {Date} oDate corresponding to the month for which selected dates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   230
     * are requested.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   231
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   232
     * @return {Array} The array of `Date`s in a given month that are currently selected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   233
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   234
    _getSelectedDatesInMonth : function (oDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   235
        var year = oDate.getFullYear(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   236
            month = oDate.getMonth();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   238
        if (hasKey(this._selectedDates, year) && hasKey(this._selectedDates[year], month)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   239
            return Y.Object.values(this._selectedDates[year][month]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   240
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   241
            return [];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   242
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   243
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   244
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   245
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   246
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   247
     * An internal parsing method that receives a String list of numbers
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   248
     * and number ranges (of the form "1,2,3,4-6,7-9,10,11" etc.) and checks
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   249
     * whether a specific number is included in this list. Used for looking
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   250
     * up dates in the customRenderer rule set.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   251
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   252
     * @method _isNumInList
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   253
     * @param {Number} num The number to look for in a list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   254
     * @param {String} strList The list of numbers of the form "1,2,3,4-6,7-8,9", etc.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   255
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   256
     * @return {boolean} Returns true if the given number is in the given list.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   257
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   258
    _isNumInList : function (num, strList) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   259
        if (strList === "all") {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   260
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   261
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   262
            var elements = strList.split(","),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   263
                i = elements.length,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   264
                range;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   265
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   266
            while (i--) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   267
                range = elements[i].split("-");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   268
                if (range.length === 2 && num >= parseInt(range[0], 10) && num <= parseInt(range[1], 10)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   269
                    return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   270
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   271
                else if (range.length === 1 && (parseInt(elements[i], 10) === num)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   272
                    return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   273
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   274
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   275
            return false;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   276
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   277
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   278
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   279
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   280
     * Given a specific date, returns an array of rules (from the customRenderer rule set)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   281
     * that the given date matches.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   282
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   283
     * @method _getRulesForDate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   284
     * @param {Date} oDate The date for which an array of rules is needed
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   285
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   286
     * @return {Array} Returns an array of `String`s, each containg the name of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   287
     * a rule that the given date matches.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   288
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   289
    _getRulesForDate : function (oDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   290
        var year = oDate.getFullYear(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   291
                month = oDate.getMonth(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   292
                date = oDate.getDate(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   293
                wday = oDate.getDay(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   294
                rules = this._rules,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   295
                outputRules = [],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   296
                years, months, dates, days;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   297
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   298
        for (years in rules) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   299
            if (this._isNumInList(year, years)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   300
                if (L.isString(rules[years])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   301
                        outputRules.push(rules[years]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   302
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   303
                else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   304
                    for (months in rules[years]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   305
                        if (this._isNumInList(month, months)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   306
                            if (L.isString(rules[years][months])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   307
                                    outputRules.push(rules[years][months]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   308
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   309
                            else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   310
                                for (dates in rules[years][months]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   311
                                    if (this._isNumInList(date, dates)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   312
                                        if (L.isString(rules[years][months][dates])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   313
                                                outputRules.push(rules[years][months][dates]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   314
                                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   315
                                        else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   316
                                            for (days in rules[years][months][dates]) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   317
                                                if (this._isNumInList(wday, days)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   318
                                                    if (L.isString(rules[years][months][dates][days])) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   319
                                                        outputRules.push(rules[years][months][dates][days]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   320
                                                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   321
                                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   322
                                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   323
                                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   324
                                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   325
                                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   326
                            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   327
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   328
                    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   329
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   330
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   331
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   332
        return outputRules;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   333
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   334
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   335
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   336
     * A utility method which, given a specific date and a name of the rule,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   337
     * checks whether the date matches the given rule.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   338
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   339
     * @method _matchesRule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   340
     * @param {Date} oDate The date to check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   341
     * @param {String} rule The name of the rule that the date should match.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   342
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   343
     * @return {boolean} Returns true if the date matches the given rule.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   344
     *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   345
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   346
    _matchesRule : function (oDate, rule) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   347
        return (iOf(this._getRulesForDate(oDate), rule) >= 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   348
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   349
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   350
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   351
     * A utility method which checks whether a given date matches the `enabledDatesRule`
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   352
     * or does not match the `disabledDatesRule` and therefore whether it can be selected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   353
     * @method _canBeSelected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   354
     * @param {Date} oDate The date to check
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   355
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   356
     * @return {boolean} Returns true if the date can be selected; false otherwise.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   357
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   358
    _canBeSelected : function (oDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   359
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   360
        var enabledDatesRule = this.get("enabledDatesRule"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   361
            disabledDatesRule = this.get("disabledDatesRule");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   362
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   363
        if (enabledDatesRule) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   364
            return this._matchesRule(oDate, enabledDatesRule);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   365
        } else if (disabledDatesRule) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   366
            return !this._matchesRule(oDate, disabledDatesRule);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   367
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   368
            return true;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   369
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   370
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   371
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   372
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   373
     * Selects a given date or array of dates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   374
     * @method selectDates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   375
     * @param {Date|Array} dates A `Date` or `Array` of `Date`s.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   376
     * @return {CalendarBase} A reference to this object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   377
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   378
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   379
    selectDates : function (dates) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   380
        if (ydate.isValidDate(dates)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   381
            this._addDateToSelection(dates);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   382
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   383
        else if (L.isArray(dates)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   384
            this._addDatesToSelection(dates);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   385
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   386
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   387
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   388
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   389
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   390
     * Deselects a given date or array of dates, or deselects
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   391
     * all dates if no argument is specified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   392
     * @method deselectDates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   393
     * @param {Date|Array} [dates] A `Date` or `Array` of `Date`s, or no
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   394
     * argument if all dates should be deselected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   395
     * @return {CalendarBase} A reference to this object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   396
     * @chainable
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   397
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   398
    deselectDates : function (dates) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   399
        if (!dates) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   400
            this._clearSelection();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   401
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   402
        else if (ydate.isValidDate(dates)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   403
            this._removeDateFromSelection(dates);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   404
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   405
        else if (L.isArray(dates)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   406
            this._removeDatesFromSelection(dates);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   407
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   408
        return this;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   409
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   410
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   411
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   412
     * A utility method that adds a given date to selection..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   413
     * @method _addDateToSelection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   414
     * @param {Date} oDate The date to add to selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   415
     * @param {Number} [index] An optional parameter that is used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   416
     * to differentiate between individual date selections and multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   417
     * date selections.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   418
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   419
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   420
    _addDateToSelection : function (oDate, index) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   421
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   422
        if (this._canBeSelected(oDate)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   423
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   424
            var year = oDate.getFullYear(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   425
                month = oDate.getMonth(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   426
                day = oDate.getDate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   427
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   428
            if (hasKey(this._selectedDates, year)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   429
                if (hasKey(this._selectedDates[year], month)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   430
                    this._selectedDates[year][month][day] = oDate;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   431
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   432
                    this._selectedDates[year][month] = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   433
                    this._selectedDates[year][month][day] = oDate;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   434
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   435
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   436
                this._selectedDates[year] = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   437
                this._selectedDates[year][month] = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   438
                this._selectedDates[year][month][day] = oDate;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   439
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   440
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   441
            this._selectedDates = setVal(this._selectedDates, [year, month, day], oDate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   442
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   443
            if (!index) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   444
                this._fireSelectionChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   445
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   446
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   447
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   448
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   449
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   450
     * A utility method that adds a given list of dates to selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   451
     * @method _addDatesToSelection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   452
     * @param {Array} datesArray The list of dates to add to selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   453
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   454
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   455
    _addDatesToSelection : function (datesArray) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   456
        arrayEach(datesArray, this._addDateToSelection, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   457
        this._fireSelectionChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   458
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   459
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   460
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   461
     * A utility method that adds a given range of dates to selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   462
     * @method _addDateRangeToSelection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   463
     * @param {Date} startDate The first date of the given range.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   464
     * @param {Date} endDate The last date of the given range.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   465
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   466
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   467
    _addDateRangeToSelection : function (startDate, endDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   468
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   469
        var timezoneDifference = (endDate.getTimezoneOffset() - startDate.getTimezoneOffset())*60000,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   470
            startTime = startDate.getTime(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   471
            endTime   = endDate.getTime(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   472
            tempTime,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   473
            time,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   474
            addedDate;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   475
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   476
        if (startTime > endTime) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   477
            tempTime = startTime;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   478
            startTime = endTime;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   479
            endTime = tempTime + timezoneDifference;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   480
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   481
            endTime = endTime - timezoneDifference;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   482
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   483
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   484
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   485
        for (time = startTime; time <= endTime; time += 86400000) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   486
            addedDate = new Date(time);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   487
            addedDate.setHours(12);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   488
            this._addDateToSelection(addedDate, time);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   489
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   490
        this._fireSelectionChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   491
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   492
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   493
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   494
     * A utility method that removes a given date from selection..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   495
     * @method _removeDateFromSelection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   496
     * @param {Date} oDate The date to remove from selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   497
     * @param {Number} [index] An optional parameter that is used
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   498
     * to differentiate between individual date selections and multiple
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   499
     * date selections.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   500
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   501
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   502
    _removeDateFromSelection : function (oDate, index) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   503
        var year = oDate.getFullYear(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   504
            month = oDate.getMonth(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   505
            day = oDate.getDate();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   507
        if (hasKey(this._selectedDates, year) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   508
            hasKey(this._selectedDates[year], month) &&
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   509
            hasKey(this._selectedDates[year][month], day)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   510
        ) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   511
            delete this._selectedDates[year][month][day];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   512
            if (!index) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   513
                this._fireSelectionChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   514
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   515
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   516
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   517
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   518
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   519
     * A utility method that removes a given list of dates from selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   520
     * @method _removeDatesFromSelection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   521
     * @param {Array} datesArray The list of dates to remove from selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   522
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   523
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   524
    _removeDatesFromSelection : function (datesArray) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   525
        arrayEach(datesArray, this._removeDateFromSelection, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   526
        this._fireSelectionChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   527
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   528
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   529
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   530
     * A utility method that removes a given range of dates from selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   531
     * @method _removeDateRangeFromSelection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   532
     * @param {Date} startDate The first date of the given range.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   533
     * @param {Date} endDate The last date of the given range.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   534
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   535
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   536
    _removeDateRangeFromSelection : function (startDate, endDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   537
        var startTime = startDate.getTime(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   538
            endTime   = endDate.getTime(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   539
            time;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   540
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   541
        for (time = startTime; time <= endTime; time += 86400000) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   542
            this._removeDateFromSelection(new Date(time), time);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   543
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   544
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   545
        this._fireSelectionChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   546
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   547
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   548
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   549
     * A utility method that removes all dates from selection.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   550
     * @method _clearSelection
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   551
     * @param {boolean} noevent A Boolean specifying whether a selectionChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   552
     * event should be fired. If true, the event is not fired.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   553
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   554
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   555
    _clearSelection : function (noevent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   556
        this._selectedDates = {};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   557
        this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   558
        if (!noevent) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   559
            this._fireSelectionChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   560
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   561
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   562
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   563
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   564
     * A utility method that fires a selectionChange event.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   565
     * @method _fireSelectionChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   566
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   567
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   568
    _fireSelectionChange : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   569
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   570
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   571
        * Fired when the set of selected dates changes. Contains a payload with
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   572
        * a `newSelection` property with an array of selected dates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   573
        *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   574
        * @event selectionChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   575
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   576
        this.fire("selectionChange", {newSelection: this._getSelectedDatesList()});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   577
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   578
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   579
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   580
     * A utility method that restores cells modified by custom formatting.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   581
     * @method _restoreModifiedCells
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   582
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   583
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   584
    _restoreModifiedCells : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   585
        var contentbox = this.get("contentBox"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   586
            id;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   587
        for (id in this._storedDateCells) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   588
            contentbox.one("#" + id).replace(this._storedDateCells[id]);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   589
            delete this._storedDateCells[id];
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   590
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   591
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   592
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   593
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   594
     * A rendering assist method that renders all cells modified by the customRenderer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   595
     * rules, as well as the enabledDatesRule and disabledDatesRule.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   596
     * @method _renderCustomRules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   597
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   598
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   599
    _renderCustomRules : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   600
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   601
        this.get("contentBox").all("." + CAL_DAY + ",." + CAL_NEXTMONTH_DAY).removeClass(SELECTION_DISABLED).setAttribute("aria-disabled", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   602
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   603
        if (!isEmpty(this._rules)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   604
            var paneNum,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   605
                paneDate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   606
                dateArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   607
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   608
            for (paneNum = 0; paneNum < this._paneNumber; paneNum++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   609
                paneDate = ydate.addMonths(this.get("date"), paneNum);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   610
                dateArray = ydate.listOfDatesInMonth(paneDate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   611
                arrayEach(dateArray, Y.bind(this._renderCustomRulesHelper, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   612
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   613
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   614
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   616
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   617
    * A handler for a date selection event (either a click or a keyboard
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   618
    *   selection) that adds the appropriate CSS class to a specific DOM
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   619
    *   node corresponding to the date and sets its aria-selected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   620
    *   attribute to true.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   621
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   622
    * @method _renderCustomRulesHelper
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   623
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   624
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   625
    _renderCustomRulesHelper: function (date) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   626
        var enRule = this.get("enabledDatesRule"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   627
            disRule = this.get("disabledDatesRule"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   628
            matchingRules,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   629
            dateNode;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   630
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   631
        matchingRules = this._getRulesForDate(date);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   632
        if (matchingRules.length > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   633
            dateNode = this._dateToNode(date);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   634
            if ((enRule && iOf(matchingRules, enRule) < 0) || (!enRule && disRule && iOf(matchingRules, disRule) >= 0)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   635
                dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   636
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   637
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   638
            if (L.isFunction(this._filterFunction)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   639
                this._storedDateCells[dateNode.get("id")] = dateNode.cloneNode(true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   640
                this._filterFunction (date, dateNode, matchingRules);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   641
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   642
        } else if (enRule) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   643
             dateNode = this._dateToNode(date);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   644
             dateNode.addClass(SELECTION_DISABLED).setAttribute("aria-disabled", true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   645
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   646
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   647
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   648
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   649
     * A rendering assist method that renders all cells that are currently selected.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   650
     * @method _renderSelectedDates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   651
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   652
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   653
    _renderSelectedDates : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   654
        this.get("contentBox").all("." + CAL_DAY_SELECTED).removeClass(CAL_DAY_SELECTED).setAttribute("aria-selected", false);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   655
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   656
        var paneNum,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   657
            paneDate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   658
            dateArray;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   659
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   660
        for (paneNum = 0; paneNum < this._paneNumber; paneNum++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   661
            paneDate = ydate.addMonths(this.get("date"), paneNum);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   662
            dateArray = this._getSelectedDatesInMonth(paneDate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   663
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   664
            arrayEach(dateArray, Y.bind(this._renderSelectedDatesHelper, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   665
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   666
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   667
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   668
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   669
    * Takes in a date and determines whether that date has any rules
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   670
    *   matching it in the customRenderer; then calls the specified
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   671
    *   filterFunction if that's the case and/or disables the date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   672
    *   if the rule is specified as a disabledDatesRule.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   673
    *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   674
    * @method _renderSelectedDatesHelper
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   675
    * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   676
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   677
    _renderSelectedDatesHelper: function (date) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   678
        this._dateToNode(date).addClass(CAL_DAY_SELECTED).setAttribute("aria-selected", true);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   679
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   680
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   681
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   682
     * A utility method that converts a date to the node wrapping the calendar cell
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   683
     * the date corresponds to..
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   684
     * @method _dateToNode
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   685
     * @param {Date} oDate The date to convert to Node
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   686
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   687
     * @return {Node} The node wrapping the DOM element of the cell the date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   688
     * corresponds to.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   689
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   690
    _dateToNode : function (oDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   691
        var day = oDate.getDate(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   692
            col = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   693
            daymod = day%7,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   694
            paneNum = (12 + oDate.getMonth() - this.get("date").getMonth()) % 12,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   695
            paneId = this._calendarId + "_pane_" + paneNum,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   696
            cutoffCol = this._paneProperties[paneId].cutoffCol;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   697
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   698
        switch (daymod) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   699
            case (0):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   700
                if (cutoffCol >= 6) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   701
                    col = 12;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   702
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   703
                    col = 5;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   704
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   705
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   706
            case (1):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   707
                    col = 6;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   708
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   709
            case (2):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   710
                if (cutoffCol > 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   711
                    col = 7;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   712
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   713
                    col = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   714
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   715
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   716
            case (3):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   717
                if (cutoffCol > 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   718
                    col = 8;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   719
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   720
                    col = 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   721
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   722
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   723
            case (4):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   724
                if (cutoffCol > 2) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   725
                    col = 9;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   726
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   727
                    col = 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   728
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   729
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   730
            case (5):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   731
                if (cutoffCol > 3) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   732
                    col = 10;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   733
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   734
                    col = 3;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   735
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   736
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   737
            case (6):
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   738
                if (cutoffCol > 4) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   739
                    col = 11;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   740
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   741
                    col = 4;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   742
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   743
                break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   744
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   745
        return(this.get("contentBox").one("#" + this._calendarId + "_pane_" + paneNum + "_" + col + "_" + day));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   746
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   747
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   748
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   749
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   750
     * A utility method that converts a node corresponding to the DOM element of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   751
     * the cell for a particular date to that date.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   752
     * @method _nodeToDate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   753
     * @param {Node} oNode The Node wrapping the DOM element of a particular date cell.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   754
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   755
     * @return {Date} The date corresponding to the DOM element that the given node wraps.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   756
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   757
    _nodeToDate : function (oNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   758
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   759
        var idParts = oNode.get("id").split("_").reverse(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   760
            paneNum = parseInt(idParts[2], 10),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   761
            day  = parseInt(idParts[0], 10),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   762
            shiftedDate = ydate.addMonths(this.get("date"), paneNum),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   763
            year = shiftedDate.getFullYear(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   764
            month = shiftedDate.getMonth();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   765
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   766
        return new Date(year, month, day, 12, 0, 0, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   767
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   768
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   769
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   770
     * A placeholder method, called from bindUI, to bind the Calendar events.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   771
     * @method _bindCalendarEvents
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   772
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   773
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   774
    _bindCalendarEvents : function () {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   775
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   776
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   777
     * A utility method that normalizes a given date by converting it to the 1st
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   778
     * day of the month the date is in, with the time set to noon.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   779
     * @method _normalizeDate
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   780
     * @param {Date} oDate The date to normalize
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   781
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   782
     * @return {Date} The normalized date, set to the first of the month, with time
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   783
     * set to noon.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   784
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   785
    _normalizeDate : function (date) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   786
        if (date) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   787
            return new Date(date.getFullYear(), date.getMonth(), 1, 12, 0, 0, 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   788
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   789
            return null;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   790
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   791
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   792
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   793
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   794
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   795
     * A render assist utility method that computes the cutoff column for the calendar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   796
     * rendering mask.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   797
     * @method _getCutoffColumn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   798
     * @param {Date} date The date of the month grid to compute the cutoff column for.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   799
     * @param {Number} firstday The first day of the week (modified by internationalized calendars)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   800
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   801
     * @return {Number} The number of the cutoff column.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   802
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   803
    _getCutoffColumn : function (date, firstday) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   804
        var distance = this._normalizeDate(date).getDay() - firstday,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   805
            cutOffColumn = 6 - (distance + 7) % 7;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   806
        return cutOffColumn;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   807
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   808
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   809
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   810
     * A render assist method that turns on the view of the previous month's dates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   811
     * in a given calendar pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   812
     * @method _turnPrevMonthOn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   813
     * @param {Node} pane The calendar pane that needs its previous month's dates view
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   814
     * modified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   815
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   816
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   817
    _turnPrevMonthOn : function (pane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   818
        var pane_id = pane.get("id"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   819
            pane_date = this._paneProperties[pane_id].paneDate,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   820
            daysInPrevMonth = ydate.daysInMonth(ydate.addMonths(pane_date, -1)),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   821
            cell;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   822
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   823
        if (!this._paneProperties[pane_id].hasOwnProperty("daysInPrevMonth")) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   824
            this._paneProperties[pane_id].daysInPrevMonth = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   825
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   826
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   827
        if (daysInPrevMonth !== this._paneProperties[pane_id].daysInPrevMonth) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   828
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   829
            this._paneProperties[pane_id].daysInPrevMonth = daysInPrevMonth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   830
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   831
            for (cell = 5; cell >= 0; cell--) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   832
                pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).set('text', daysInPrevMonth--);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   833
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   834
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   835
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   836
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   837
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   838
     * A render assist method that turns off the view of the previous month's dates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   839
     * in a given calendar pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   840
     * @method _turnPrevMonthOff
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   841
     * @param {Node} pane The calendar pane that needs its previous month's dates view
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   842
     * modified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   843
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   844
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   845
    _turnPrevMonthOff : function (pane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   846
        var pane_id = pane.get("id"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   847
            cell;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   848
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   849
        this._paneProperties[pane_id].daysInPrevMonth = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   850
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   851
        for (cell = 5; cell >= 0; cell--) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   852
            pane.one("#" + pane_id + "_" + cell + "_" + (cell-5)).setContent("&nbsp;");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   853
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   854
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   855
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   856
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   857
     * A render assist method that cleans up the last few cells in the month grid
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   858
     * when the number of days in the month changes.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   859
     * @method _cleanUpNextMonthCells
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   860
     * @param {Node} pane The calendar pane that needs the last date cells cleaned up.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   861
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   862
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   863
    _cleanUpNextMonthCells : function (pane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   864
        var pane_id = pane.get("id");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   865
            pane.one("#" + pane_id + "_6_29").removeClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   866
            pane.one("#" + pane_id + "_7_30").removeClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   867
            pane.one("#" + pane_id + "_8_31").removeClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   868
            pane.one("#" + pane_id + "_0_30").removeClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   869
            pane.one("#" + pane_id + "_1_31").removeClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   870
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   871
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   872
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   873
     * A render assist method that turns on the view of the next month's dates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   874
     * in a given calendar pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   875
     * @method _turnNextMonthOn
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   876
     * @param {Node} pane The calendar pane that needs its next month's dates view
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   877
     * modified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   878
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   879
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   880
    _turnNextMonthOn : function (pane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   881
        var dayCounter = 1,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   882
            pane_id = pane.get("id"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   883
            daysInMonth = this._paneProperties[pane_id].daysInMonth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   884
            cutoffCol = this._paneProperties[pane_id].cutoffCol,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   885
            cell,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   886
            startingCell;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   887
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   888
        for (cell = daysInMonth - 22; cell < cutoffCol + 7; cell++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   889
            pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   890
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   891
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   892
        startingCell = cutoffCol;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   893
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   894
        if (daysInMonth === 31 && (cutoffCol <= 1)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   895
            startingCell = 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   896
        } else if (daysInMonth === 30 && cutoffCol === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   897
            startingCell = 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   898
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   899
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   900
        for (cell = startingCell ; cell < cutoffCol + 7; cell++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   901
            pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).set("text", dayCounter++).addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   902
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   903
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   904
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   905
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   906
     * A render assist method that turns off the view of the next month's dates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   907
     * in a given calendar pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   908
     * @method _turnNextMonthOff
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   909
     * @param {Node} pane The calendar pane that needs its next month's dates view
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   910
     * modified.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   911
     * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   912
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   913
    _turnNextMonthOff : function (pane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   914
            var pane_id = pane.get("id"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   915
                daysInMonth = this._paneProperties[pane_id].daysInMonth,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   916
                cutoffCol = this._paneProperties[pane_id].cutoffCol,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   917
                cell,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   918
                startingCell;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   919
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   920
            for (cell = daysInMonth - 22; cell <= 12; cell++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   921
                pane.one("#" + pane_id + "_" + cell + "_" + (cell+23)).setContent("&nbsp;").addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   922
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   923
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   924
            startingCell = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   925
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   926
            if (daysInMonth === 31 && (cutoffCol <= 1)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   927
                startingCell = 2;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   928
            } else if (daysInMonth === 30 && cutoffCol === 0) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   929
                startingCell = 1;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   930
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   931
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   932
            for (cell = startingCell ; cell <= 12; cell++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   933
                pane.one("#" + pane_id + "_" + cell + "_" + (cell+30)).setContent("&nbsp;").addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   934
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   935
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   936
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   937
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   938
     * The handler for the change in the showNextMonth attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   939
     * @method _afterShowNextMonthChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   940
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   941
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   942
    _afterShowNextMonthChange : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   943
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   944
        var contentBox = this.get('contentBox'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   945
            lastPane = contentBox.one("#" + this._calendarId + "_pane_" + (this._paneNumber - 1));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   946
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   947
        this._cleanUpNextMonthCells(lastPane);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   948
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   949
        if (this.get('showNextMonth')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   950
            this._turnNextMonthOn(lastPane);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   951
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   952
            this._turnNextMonthOff(lastPane);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   953
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   954
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   955
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   956
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   957
    /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   958
     * The handler for the change in the showPrevMonth attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   959
     * @method _afterShowPrevMonthChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   960
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   961
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   962
    _afterShowPrevMonthChange : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   963
        var contentBox = this.get('contentBox'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   964
            firstPane = contentBox.one("#" + this._calendarId + "_pane_" + 0);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   965
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   966
        if (this.get('showPrevMonth')) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   967
            this._turnPrevMonthOn(firstPane);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   968
        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   969
            this._turnPrevMonthOff(firstPane);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   970
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   971
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   972
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   973
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   974
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   975
     * The handler for the change in the headerRenderer attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   976
     * @method _afterHeaderRendererChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   977
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   978
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   979
    _afterHeaderRendererChange : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   980
        var headerCell = this.get("contentBox").one("." + CAL_HD_LABEL);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   981
        headerCell.setContent(this._updateCalendarHeader(this.get('date')));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   982
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   983
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   984
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   985
     * The handler for the change in the customRenderer attribute.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   986
     * @method _afterCustomRendererChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   987
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   988
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   989
    _afterCustomRendererChange : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   990
        this._restoreModifiedCells();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   991
        this._renderCustomRules();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   992
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   993
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   994
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   995
     * The handler for the change in the date attribute. Modifies the calendar
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   996
     * view by shifting the calendar grid mask and running custom rendering and
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   997
     * selection rendering as necessary.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   998
     * @method _afterDateChange
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
   999
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1000
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1001
    _afterDateChange : function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1002
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1003
        var contentBox = this.get('contentBox'),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1004
            headerCell = contentBox.one("." + CAL_HD).one("." + CAL_HD_LABEL),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1005
            calendarPanes = contentBox.all("." + CAL_GRID),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1006
            currentDate = this.get("date"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1007
            counter = 0;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1008
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1009
        contentBox.setStyle("visibility", "hidden");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1010
        headerCell.setContent(this._updateCalendarHeader(currentDate));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1011
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1012
        this._restoreModifiedCells();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1013
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1014
        calendarPanes.each(function (curNode) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1015
            this._rerenderCalendarPane(ydate.addMonths(currentDate, counter++), curNode);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1016
        }, this);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1017
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1018
        this._afterShowPrevMonthChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1019
        this._afterShowNextMonthChange();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1020
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1021
        this._renderCustomRules();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1022
        this._renderSelectedDates();
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1023
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1024
        contentBox.setStyle("visibility", "visible");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1025
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1026
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1027
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1028
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1029
     * A rendering assist method that initializes the HTML for a single
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1030
     * calendar pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1031
     * @method _initCalendarPane
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1032
     * @param {Date} baseDate The date corresponding to the month of the given
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1033
     * calendar pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1034
     * @param {String} pane_id The id of the pane, to be used as a prefix for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1035
     * element ids in the given pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1036
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1037
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1038
    _initCalendarPane : function (baseDate, pane_id) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1039
        // Get a list of short weekdays from the internationalization package, or else use default English ones.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1040
        var weekdays = this.get('strings.very_short_weekdays') || ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1041
            fullweekdays = this.get('strings.weekdays') || ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1042
            // Get the first day of the week from the internationalization package, or else use Sunday as default.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1043
            firstday = this.get('strings.first_weekday') || 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1044
            // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1045
            cutoffCol = this._getCutoffColumn(baseDate, firstday),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1046
            // Compute the number of days in the month based on starting date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1047
            daysInMonth = ydate.daysInMonth(baseDate),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1048
            // Initialize the array of individual row HTML strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1049
            row_array = ['','','','','',''],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1050
            // Initialize the partial templates object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1051
            partials = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1052
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1053
            day,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1054
            row,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1055
            column,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1056
            date,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1057
            id_date,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1058
            calendar_day_class,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1059
            column_visibility,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1060
            output;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1061
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1062
            // Initialize the partial template for the weekday row cells.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1063
            partials.weekday_row = '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1064
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1065
        // Populate the partial template for the weekday row cells with weekday names
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1066
        for (day = firstday; day <= firstday + 6; day++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1067
            partials.weekday_row +=
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1068
                substitute(CalendarBase.WEEKDAY_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1069
                    weekdayname: weekdays[day%7],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1070
                    full_weekdayname: fullweekdays[day%7]
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1071
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1072
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1073
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1074
        // Populate the partial template for the weekday row container with the weekday row cells
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1075
        partials.weekday_row_template = substitute(CalendarBase.WEEKDAY_ROW_TEMPLATE, partials);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1076
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1077
        // Populate the array of individual row HTML strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1078
        for (row = 0; row <= 5; row++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1079
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1080
            for (column = 0; column <= 12; column++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1081
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1082
                // Compute the value of the date that needs to populate the cell
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1083
                date = 7*row - 5 + column;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1084
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1085
                // Compose the value of the unique id of the current calendar cell
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1086
                id_date = pane_id + "_" + column + "_" + date;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1087
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1088
                // Set the calendar day class to one of three possible values
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1089
                calendar_day_class = CAL_DAY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1090
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1091
                if (date < 1) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1092
                    calendar_day_class = CAL_PREVMONTH_DAY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1093
                } else if (date > daysInMonth) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1094
                    calendar_day_class = CAL_NEXTMONTH_DAY;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1095
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1096
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1097
                // Cut off dates that fall before the first and after the last date of the month
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1098
                if (date < 1 || date > daysInMonth) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1099
                    date = "&nbsp;";
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1100
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1101
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1102
                // Decide on whether a column in the masked table is visible or not based on the value of the cutoff column.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1103
                column_visibility = (column >= cutoffCol && column < (cutoffCol + 7)) ? '' : CAL_COL_HIDDEN;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1104
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1105
                // Substitute the values into the partial calendar day template and add it to the current row HTML string
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1106
                row_array[row] += substitute (CalendarBase.CALDAY_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1107
                    day_content: date,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1108
                    calendar_col_class: "calendar_col" + column,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1109
                    calendar_col_visibility_class: column_visibility,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1110
                    calendar_day_class: calendar_day_class,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1111
                    calendar_day_id: id_date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1112
                });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1113
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1114
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1115
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1116
        // Instantiate the partial calendar pane body template
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1117
        partials.body_template = '';
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1118
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1119
        // Populate the body template with the rows templates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1120
        arrayEach (row_array, function (v) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1121
             partials.body_template += substitute(CalendarBase.CALDAY_ROW_TEMPLATE, {calday_row: v});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1122
        });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1123
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1124
        // Populate the calendar grid id
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1125
        partials.calendar_pane_id = pane_id;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1126
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1127
        // Populate the calendar pane tabindex
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1128
        partials.calendar_pane_tabindex = this.get("tabIndex");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1129
        partials.pane_arialabel = ydate.format(baseDate, { format: "%B %Y" });
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1130
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1131
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1132
        // Generate final output by substituting class names.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1133
        output = substitute(substitute (CalendarBase.CALENDAR_GRID_TEMPLATE, partials),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1134
                                                        CalendarBase.CALENDAR_STRINGS);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1135
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1136
        // Store the initialized pane information
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1137
        this._paneProperties[pane_id] = {cutoffCol: cutoffCol, daysInMonth: daysInMonth, paneDate: baseDate};
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1138
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1139
        return output;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1140
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1141
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1142
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1143
     * A rendering assist method that rerenders a specified calendar pane, based
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1144
     * on a new Date.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1145
     * @method _rerenderCalendarPane
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1146
     * @param {Date} newDate The date corresponding to the month of the given
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1147
     * calendar pane.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1148
     * @param {Node} pane The node corresponding to the calendar pane to be rerenders.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1149
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1150
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1151
    _rerenderCalendarPane : function (newDate, pane) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1152
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1153
        // Get the first day of the week from the internationalization package, or else use Sunday as default.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1154
        var firstday = this.get('strings.first_weekday') || 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1155
            // Compute the cutoff column of the masked calendar table, based on the start date and the first day of week.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1156
            cutoffCol = this._getCutoffColumn(newDate, firstday),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1157
            // Compute the number of days in the month based on starting date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1158
            daysInMonth = ydate.daysInMonth(newDate),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1159
            // Get pane id for easier reference
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1160
            paneId = pane.get("id"),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1161
            column,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1162
            currentColumn,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1163
            curCell;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1164
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1165
        // Hide the pane before making DOM changes to speed them up
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1166
        pane.setStyle("visibility", "hidden");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1167
        pane.setAttribute("aria-label", ydate.format(newDate, {format:"%B %Y"}));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1168
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1169
        // Go through all columns, and flip their visibility setting based on whether they are within the unmasked range.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1170
        for (column = 0; column <= 12; column++) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1171
            currentColumn = pane.all("." + "calendar_col" + column);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1172
            currentColumn.removeClass(CAL_COL_HIDDEN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1173
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1174
            if (column < cutoffCol || column >= (cutoffCol + 7)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1175
                currentColumn.addClass(CAL_COL_HIDDEN);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1176
            } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1177
                // Clean up dates in visible columns to account for the correct number of days in a month
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1178
                switch(column) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1179
                    case 0:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1180
                        curCell = pane.one("#" + paneId + "_0_30");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1181
                        if (daysInMonth >= 30) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1182
                            curCell.set("text", "30");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1183
                            curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1184
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1185
                            curCell.setContent("&nbsp;");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1186
                            curCell.addClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1187
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1188
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1189
                    case 1:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1190
                        curCell = pane.one("#" + paneId + "_1_31");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1191
                        if (daysInMonth >= 31) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1192
                            curCell.set("text", "31");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1193
                            curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1194
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1195
                            curCell.setContent("&nbsp;");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1196
                            curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1197
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1198
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1199
                    case 6:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1200
                        curCell = pane.one("#" + paneId + "_6_29");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1201
                        if (daysInMonth >= 29) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1202
                            curCell.set("text", "29");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1203
                            curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1204
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1205
                            curCell.setContent("&nbsp;");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1206
                            curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1207
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1208
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1209
                    case 7:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1210
                        curCell = pane.one("#" + paneId + "_7_30");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1211
                        if (daysInMonth >= 30) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1212
                            curCell.set("text", "30");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1213
                            curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1214
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1215
                            curCell.setContent("&nbsp;");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1216
                            curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1217
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1218
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1219
                    case 8:
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1220
                        curCell = pane.one("#" + paneId + "_8_31");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1221
                        if (daysInMonth >= 31) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1222
                            curCell.set("text", "31");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1223
                            curCell.removeClass(CAL_NEXTMONTH_DAY).addClass(CAL_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1224
                        } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1225
                            curCell.setContent("&nbsp;");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1226
                            curCell.removeClass(CAL_DAY).addClass(CAL_NEXTMONTH_DAY);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1227
                        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1228
                        break;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1229
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1230
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1231
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1232
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1233
        // Update stored pane properties
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1234
        this._paneProperties[paneId].cutoffCol = cutoffCol;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1235
        this._paneProperties[paneId].daysInMonth = daysInMonth;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1236
        this._paneProperties[paneId].paneDate = newDate;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1237
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1238
        // Bring the pane visibility back after all DOM changes are done
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1239
        pane.setStyle("visibility", "visible");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1240
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1241
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1242
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1243
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1244
     * A rendering assist method that updates the calendar header based
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1245
     * on a given date and potentially the provided headerRenderer.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1246
     * @method _updateCalendarHeader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1247
     * @param {Date} baseDate The date with which to update the calendar header.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1248
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1249
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1250
    _updateCalendarHeader : function (baseDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1251
        var headerString = "",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1252
            headerRenderer = this.get("headerRenderer");
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1253
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1254
        if (Y.Lang.isString(headerRenderer)) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1255
            headerString = ydate.format(baseDate, {format:headerRenderer});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1256
        } else if (headerRenderer instanceof Function) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1257
            headerString = headerRenderer.call(this, baseDate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1258
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1259
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1260
        return headerString;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1261
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1262
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1263
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1264
     * A rendering assist method that initializes the calendar header HTML
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1265
     * based on a given date and potentially the provided headerRenderer.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1266
     * @method _updateCalendarHeader
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1267
     * @param {Date} baseDate The date with which to initialize the calendar header.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1268
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1269
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1270
    _initCalendarHeader : function (baseDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1271
        return substitute(substitute(CalendarBase.HEADER_TEMPLATE, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1272
                calheader: this._updateCalendarHeader(baseDate),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1273
                calendar_id: this._calendarId
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1274
            }), CalendarBase.CALENDAR_STRINGS );
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1275
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1276
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1277
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1278
     * A rendering assist method that initializes the calendar HTML
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1279
     * based on a given date.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1280
     * @method _initCalendarHTML
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1281
     * @param {Date} baseDate The date with which to initialize the calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1282
     * @private
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1283
     */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1284
    _initCalendarHTML : function (baseDate) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1285
        // Instantiate the partials holder
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1286
        var partials = {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1287
            // Counter for iterative template replacement.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1288
            counter = 0,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1289
            singlePane,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1290
            output;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1291
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1292
        // Generate the template for the header
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1293
        partials.header_template =  this._initCalendarHeader(baseDate);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1294
        partials.calendar_id = this._calendarId;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1295
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1296
        partials.body_template = substitute(substitute (CalendarBase.CONTENT_TEMPLATE, partials),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1297
                                                                                 CalendarBase.CALENDAR_STRINGS);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1298
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1299
        // Instantiate the iterative template replacer function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1300
        function paneReplacer () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1301
            singlePane = this._initCalendarPane(ydate.addMonths(baseDate, counter), partials.calendar_id + "_pane_" + counter);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1302
            counter++;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1303
            return singlePane;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1304
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1305
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1306
        // Go through all occurrences of the calendar_grid_template token and replace it with an appropriate calendar grid.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1307
        output = partials.body_template.replace(/\{calendar_grid_template\}/g, Y.bind(paneReplacer, this));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1308
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1309
        // Update the paneNumber count
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1310
        this._paneNumber = counter;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1311
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1312
        return output;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1313
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1314
}, {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1315
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1316
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1317
        * The CSS classnames for the calendar templates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1318
        * @property CALENDAR_STRINGS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1319
        * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1320
        * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1321
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1322
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1323
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1324
    CALENDAR_STRINGS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1325
        calendar_grid_class       : CAL_GRID,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1326
        calendar_body_class       : CAL_BODY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1327
        calendar_hd_class         : CAL_HD,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1328
        calendar_hd_label_class   : CAL_HD_LABEL,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1329
        calendar_weekdayrow_class : CAL_WDAYROW,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1330
        calendar_weekday_class    : CAL_WDAY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1331
        calendar_row_class        : CAL_ROW,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1332
        calendar_day_class        : CAL_DAY,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1333
        calendar_dayanchor_class  : CAL_ANCHOR,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1334
        calendar_pane_class       : CAL_PANE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1335
        calendar_right_grid_class : CAL_RIGHT_GRID,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1336
        calendar_left_grid_class  : CAL_LEFT_GRID,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1337
        calendar_status_class     : CAL_STATUS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1338
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1339
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1340
    /*
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1341
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1342
    ARIA_STATUS_TEMPLATE: '<div role="status" aria-atomic="true" class="{calendar_status_class}"></div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1343
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1344
    AriaStatus : null,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1345
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1346
    updateStatus : function (statusString) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1347
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1348
        if (!CalendarBase.AriaStatus) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1349
            CalendarBase.AriaStatus = create(
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1350
                                                         substitute (CalendarBase.ARIA_STATUS_TEMPLATE,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1351
                                                                                 CalendarBase.CALENDAR_STRINGS));
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1352
            Y.one("body").append(CalendarBase.AriaStatus);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1353
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1354
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1355
            CalendarBase.AriaStatus.set("text", statusString);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1356
    },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1357
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1358
    */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1359
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1360
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1361
        * The main content template for calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1362
        * @property CONTENT_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1363
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1364
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1365
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1366
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1367
    CONTENT_TEMPLATE:  '<div class="yui3-g {calendar_pane_class}" id="{calendar_id}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1368
                        '{header_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1369
                        '<div class="yui3-u-1">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1370
                        '{calendar_grid_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1371
                        '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1372
                        '</div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1373
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1374
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1375
        * A single pane template for calendar (same as default CONTENT_TEMPLATE)
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1376
        * @property ONE_PANE_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1377
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1378
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1379
        * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1380
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1381
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1382
    ONE_PANE_TEMPLATE: '<div class="yui3-g {calendar_pane_class}" id="{calendar_id}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1383
                            '{header_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1384
                            '<div class="yui3-u-1">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1385
                                '{calendar_grid_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1386
                            '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1387
                        '</div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1388
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1389
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1390
        * A two pane template for calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1391
        * @property TWO_PANE_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1392
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1393
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1394
        * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1395
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1396
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1397
    TWO_PANE_TEMPLATE: '<div class="yui3-g {calendar_pane_class}" id="{calendar_id}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1398
                            '{header_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1399
                            '<div class="yui3-u-1-2">'+
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1400
                                '<div class = "{calendar_left_grid_class}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1401
                                    '{calendar_grid_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1402
                                '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1403
                            '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1404
                            '<div class="yui3-u-1-2">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1405
                                '<div class = "{calendar_right_grid_class}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1406
                                    '{calendar_grid_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1407
                                '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1408
                            '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1409
                        '</div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1410
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1411
        * A three pane template for calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1412
        * @property THREE_PANE_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1413
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1414
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1415
        * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1416
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1417
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1418
    THREE_PANE_TEMPLATE: '<div class="yui3-g {calendar_pane_class}" id="{calendar_id}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1419
                            '{header_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1420
                            '<div class="yui3-u-1-3">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1421
                                '<div class="{calendar_left_grid_class}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1422
                                    '{calendar_grid_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1423
                                '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1424
                            '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1425
                            '<div class="yui3-u-1-3">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1426
                                '{calendar_grid_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1427
                            '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1428
                            '<div class="yui3-u-1-3">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1429
                                '<div class="{calendar_right_grid_class}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1430
                                    '{calendar_grid_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1431
                                '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1432
                            '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1433
                        '</div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1434
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1435
        * A template for the calendar grid.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1436
        * @property CALENDAR_GRID_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1437
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1438
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1439
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1440
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1441
    CALENDAR_GRID_TEMPLATE: '<table class="{calendar_grid_class}" id="{calendar_pane_id}" role="grid" aria-readonly="true" ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1442
                                'aria-label="{pane_arialabel}" tabindex="{calendar_pane_tabindex}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1443
                                '<thead>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1444
                                    '{weekday_row_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1445
                                '</thead>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1446
                                '<tbody>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1447
                                    '{body_template}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1448
                                '</tbody>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1449
                            '</table>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1450
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1451
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1452
        * A template for the calendar header.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1453
        * @property HEADER_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1454
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1455
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1456
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1457
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1458
    HEADER_TEMPLATE: '<div class="yui3-g {calendar_hd_class}">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1459
                        '<div class="yui3-u {calendar_hd_label_class}" id="{calendar_id}_header" aria-role="heading">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1460
                            '{calheader}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1461
                        '</div>' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1462
                    '</div>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1463
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1464
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1465
        * A template for the row of weekday names.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1466
        * @property WEEKDAY_ROW_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1467
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1468
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1469
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1470
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1471
    WEEKDAY_ROW_TEMPLATE: '<tr class="{calendar_weekdayrow_class}" role="row">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1472
                            '{weekday_row}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1473
                        '</tr>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1474
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1475
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1476
        * A template for a single row of calendar days.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1477
        * @property CALDAY_ROW_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1478
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1479
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1480
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1481
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1482
    CALDAY_ROW_TEMPLATE: '<tr class="{calendar_row_class}" role="row">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1483
                            '{calday_row}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1484
                        '</tr>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1485
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1486
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1487
        * A template for a single cell with a weekday name.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1488
        * @property CALDAY_ROW_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1489
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1490
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1491
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1492
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1493
    WEEKDAY_TEMPLATE: '<th class="{calendar_weekday_class}" role="columnheader" aria-label="{full_weekdayname}">{weekdayname}</th>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1494
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1495
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1496
        * A template for a single cell with a calendar day.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1497
        * @property CALDAY_TEMPLATE
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1498
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1499
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1500
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1501
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1502
    CALDAY_TEMPLATE: '<td class="{calendar_col_class} {calendar_day_class} {calendar_col_visibility_class}" id="{calendar_day_id}" ' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1503
                        'role="gridcell" tabindex="-1">' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1504
                        '{day_content}' +
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1505
                    '</td>',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1506
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1507
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1508
        * The identity of the widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1509
        *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1510
        * @property NAME
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1511
        * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1512
        * @default 'calendarBase'
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1513
        * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1514
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1515
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1516
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1517
    NAME: 'calendarBase',
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1518
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1519
     /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1520
        * Static property used to define the default attribute configuration of
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1521
        * the Widget.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1522
        *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1523
        * @property ATTRS
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1524
        * @type {Object}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1525
        * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1526
        * @static
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1527
        */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1528
    ATTRS: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1529
        tabIndex: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1530
            value: 1
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1531
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1532
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1533
         * The date corresponding to the current calendar view. Always
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1534
         * normalized to the first of the month that contains the date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1535
         * at assignment time. Used as the first date visible in the
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1536
         * calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1537
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1538
         * @attribute date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1539
         * @type Date
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1540
         * @default The first of the month containing today's date, as
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1541
         * set on the end user's system.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1542
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1543
        date: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1544
            value: new Date(),
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1545
            setter: function (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1546
                var newDate = this._normalizeDate(val);
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1547
                if (ydate.areEqual(newDate, this.get('date'))) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1548
                        return this.get('date');
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1549
                } else {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1550
                        return newDate;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1551
                }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1552
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1553
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1554
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1555
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1556
         * A setting specifying whether to shows days from the previous
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1557
         * month in the visible month's grid, if there are empty preceding
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1558
         * cells available.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1559
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1560
         * @attribute showPrevMonth
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1561
         * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1562
         * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1563
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1564
        showPrevMonth: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1565
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1566
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1567
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1568
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1569
         * A setting specifying whether to shows days from the next
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1570
         * month in the visible month's grid, if there are empty
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1571
         * cells available at the end.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1572
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1573
         * @attribute showNextMonth
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1574
         * @type boolean
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1575
         * @default false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1576
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1577
        showNextMonth: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1578
            value: false
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1579
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1580
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1581
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1582
         * Strings and properties derived from the internationalization packages
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1583
         * for the calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1584
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1585
         * @attribute strings
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1586
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1587
         * @protected
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1588
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1589
        strings : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1590
            valueFn: function() { return Y.Intl.get("calendar-base"); }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1591
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1592
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1593
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1594
         * Custom header renderer for the calendar.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1595
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1596
         * @attribute headerRenderer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1597
         * @type String | Function
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1598
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1599
        headerRenderer: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1600
            value: "%B %Y"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1601
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1602
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1603
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1604
         * The name of the rule which all enabled dates should match.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1605
         * Either disabledDatesRule or enabledDatesRule should be specified,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1606
         * or neither, but not both.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1607
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1608
         * @attribute enabledDatesRule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1609
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1610
         * @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1611
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1612
        enabledDatesRule: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1613
            value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1614
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1615
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1616
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1617
         * The name of the rule which all disabled dates should match.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1618
         * Either disabledDatesRule or enabledDatesRule should be specified,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1619
         * or neither, but not both.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1620
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1621
         * @attribute disabledDatesRule
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1622
         * @type String
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1623
         * @default null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1624
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1625
        disabledDatesRule: {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1626
            value: null
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1627
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1628
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1629
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1630
         * A read-only attribute providing a list of currently selected dates.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1631
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1632
         * @attribute selectedDates
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1633
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1634
         * @type Array
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1635
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1636
        selectedDates : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1637
            readOnly: true,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1638
            getter: function () {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1639
                return (this._getSelectedDatesList());
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1640
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1641
        },
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1642
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1643
        /**
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1644
         * An object of the form {rules:Object, filterFunction:Function},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1645
         * providing  set of rules and a custom rendering function for
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1646
         * customizing specific calendar cells.
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1647
         *
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1648
         * @attribute customRenderer
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1649
         * @readOnly
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1650
         * @type Object
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1651
         * @default {}
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1652
         */
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1653
        customRenderer : {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1654
            lazyAdd: false,
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1655
            value: {},
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1656
            setter: function (val) {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1657
                this._rules = val.rules;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1658
                this._filterFunction = val.filterFunction;
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1659
            }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1660
        }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1661
    }
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1662
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1663
});
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1664
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1665
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1666
}, '3.10.3', {
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1667
    "requires": [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1668
        "widget",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1669
        "datatype-date",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1670
        "datatype-date-math",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1671
        "cssgrids"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1672
    ],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1673
    "lang": [
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1674
        "de",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1675
        "en",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1676
        "es",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1677
        "es-AR",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1678
        "fr",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1679
        "it",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1680
        "ja",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1681
        "nb-NO",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1682
        "nl",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1683
        "pt-BR",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1684
        "ru",
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1685
        "zh-HANT-TW"
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1686
    ],
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1687
    "skinnable": true
89ef5ed3c48b Upgrades to yui 3.10.3
gibus
parents:
diff changeset
  1688
});