# Yahoo! UI Library

### Calendar 2.5.0

Yahoo! UI Library > calendar > YAHOO.widget.CalendarGroup

Show Private Show Protected

## Class YAHOO.widget.CalendarGroup

Known Subclasses:
  YAHOO.widget.Calendar2up

YAHOO.widget.CalendarGroup is a special container class for YAHOO.widget.Calendar. This class facilitates the ability to have multi-page calendar views that share a single dataset and are dependent on each other. The calendar group instance will refer to each of its elements using a 0-based index. For example, to construct the placeholder for a calendar group widget with id "cal1" and containerId of "cal1Container", the markup would be as follows:

    <div id="cal1Container_0"></div>
    <div id="cal1Container_1"></div>

The tables for the calendars ("cal1_0" and "cal1_1") will be inserted into those containers.

NOTE: As of 2.4.0, the constructor's ID argument is optional. The CalendarGroup can be constructed by simply providing a container ID string, or a reference to a container DIV HTMLElement (the element needs to exist in the document). E.g.:

    var c = new YAHOO.widget.CalendarGroup("calContainer", configOptions);

or:

    var containerDiv = YAHOO.util.Dom.get("calContainer");
    var c = new YAHOO.widget.CalendarGroup(containerDiv, configOptions);

If not provided, the ID will be generated from the container DIV ID by adding an "_t" suffix. For example if an ID is not provided, and the container's ID is "calContainer", the CalendarGroup's ID will be set to "calContainer_t".

### Constructor

YAHOO.widget.CalendarGroup `( id , container , config )`

Parameters:
  `id <String>` optional The id of the table element that will represent the CalendarGroup widget. As of 2.4.0, this argument is optional.
  `container <String | HTMLElement>` The id of the container div element that will wrap the CalendarGroup table, or a reference to a DIV element which exists in the document.
  `config <Object>` optional The configuration object containing the initial configuration values for the CalendarGroup.

### Properties

#### cfg `- YAHOO.util.Config`

The Config object used to hold the configuration variables for the CalendarGroup

#### containerId `- String`

The unique id associated with the CalendarGroup container

#### id `- String`

The unique id associated with the CalendarGroup

#### Locale `- Object`

The local object which contains the CalendarGroup's locale settings

#### Options `- Object`

The local object which contains the CalendarGroup's options

#### pages `- YAHOO.widget.Calendar[]`

The collection of Calendar pages contained within the CalendarGroup

#### YAHOO.widget.CalendarGroup._DEFAULT_CONFIG `- private static final Object`

The set of default Config property keys and values for the CalendarGroup

#### YAHOO.widget.CalendarGroup.CSS_2UPCLOSE `- static final String`

CSS class representing the close icon for the 2-up calendar
Deprecated: Along with Calendar.IMG_ROOT and NAV_ARROW_LEFT, NAV_ARROW_RIGHT configuration properties. Calendar's Style.CSS_CLOSE property now represents the CSS class used to render the close icon

#### YAHOO.widget.CalendarGroup.CSS_2UPTITLE `- static final String`

CSS class representing the title for the 2-up calendar

#### YAHOO.widget.CalendarGroup.CSS_CONTAINER `- static final String`

CSS class representing the container for the calendar

#### YAHOO.widget.CalendarGroup.CSS_MULTI_UP `- static final String`

CSS class representing the container for the calendar

### Methods

#### _fixWidth

`private void _fixWidth ( )`
Fixes the width of the CalendarGroup container element, to account for miswrapped floats

Returns: `void`

#### _setMonthOnDate

`private void _setMonthOnDate ( date , iMonth )`
Sets the month on a Date object, taking into account year rollover if the month is less than 0 or greater than 11. The Date object passed in is modified. It should be cloned before passing it into this method if the original value needs to be maintained

Parameters:
  `date <Date>` The Date object on which to set the month index
  `iMonth <Number>` The month index to set

Returns: `void`

#### addMonthRenderer

`void addMonthRenderer ( month , fnRender )`
Adds a month to the render stack. The function reference passed to this method will be executed when a date cell matches the month passed to this method.

Parameters:
  `month <Number>` The month (1-12) to associate with this renderer
  `fnRender <Function>` The function executed to render cells that match the render rules for this renderer.

Returns: `void`

#### addMonths

`void addMonths ( count )`
Adds the designated number of months to the current calendar month, and sets the current calendar page date to the new month.

Parameters:
  `count <Number>` The number of months to add to the current calendar

Returns: `void`

#### addRenderer

`void addRenderer ( sDates , fnRender )`
Adds a renderer to the render stack. The function reference passed to this method will be executed when a date cell matches the conditions specified in the date string for this renderer.

Parameters:
  `sDates <String>` A date string to associate with the specified renderer. Valid formats include date (12/24/2005), month/day (12/24), and range (12/1/2004-1/1/2005)
  `fnRender <Function>` The function executed to render cells that match the render rules for this renderer.

Returns: `void`

#### addWeekdayRenderer

`void addWeekdayRenderer ( weekday , fnRender )`
Adds a weekday to the render stack. The function reference passed to this method will be executed when a date cell matches the weekday passed to this method.

Parameters:
  `weekday <Number>` The weekday (1-7) to associate with this renderer. 1=Sunday, 2=Monday etc.
  `fnRender <Function>` The function executed to render cells that match the render rules for this renderer.

Returns: `void`

#### addYears

`void addYears ( count )`
Adds the designated number of years to the current calendar, and sets the current calendar page date to the new month.

Parameters:
  `count <Number>` The number of years to add to the current calendar

Returns: `void`

#### callChildFunction

`void callChildFunction ( fnName , args )`
Calls a function within all child Calendars within this CalendarGroup.

Parameters:
  `fnName <String>` The name of the function
  `args <Array>` The arguments to pass to the function

Returns: `void`

#### clear

`void clear ( )`
Clears the selected dates in the current calendar widget and sets the calendar to the current month and year.

Returns: `void`

#### configPageDate

`void configPageDate ( type , args , obj )`
The default Config handler for the "pagedate" property

Parameters:
  `type <String>` The CustomEvent type (usually the property name)
  `args <Object[]>` The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
  `obj <Object>` The scope object. For configuration handlers, this will usually equal the owner.

Returns: `void`

#### configPages

`void configPages ( type , args , obj )`
The default Config handler for the "pages" property

Parameters:
  `type <String>` The CustomEvent type (usually the property name)
  `args <Object[]>` The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
  `obj <Object>` The scope object. For configuration handlers, this will usually equal the owner.

Returns: `void`

#### configSelected

`void configSelected ( type , args , obj )`
The default Config handler for the CalendarGroup "selected" property

Parameters:
  `type <String>` The CustomEvent type (usually the property name)
  `args <Object[]>` The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
  `obj <Object>` The scope object. For configuration handlers, this will usually equal the owner.

Returns: `void`

#### constructChild

`YAHOO.widget.Calendar constructChild ( id , containerId , config )`
Constructs a child calendar. This method can be overridden if a subclassed version of the default calendar is to be used.

Parameters:
  `id <String>` The id of the table element that will represent the calendar widget
  `containerId <String>` The id of the container div element that will wrap the calendar table
  `config <Object>` The configuration object containing the Calendar's arguments

Returns: `YAHOO.widget.Calendar`
  The YAHOO.widget.Calendar instance that is constructed

#### delegateConfig

`void delegateConfig ( type , args , obj )`
Delegates a configuration property to the CustomEvents associated with the CalendarGroup's children

Parameters:
  `type <String>` The CustomEvent type (usually the property name)
  `args <Object[]>` The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
  `obj <Object>` The scope object. For configuration handlers, this will usually equal the owner.

Returns: `void`

#### deselect

`Date[] deselect ( date )`
Deselects a date or a collection of dates on the current calendar. This method, by default, does not call the render method explicitly. Once deselection has completed, render must be called for the changes to be reflected visually.

Parameters:
  `date <String/Date/Date[]>` The date string of dates to deselect in the current calendar. Valid formats are individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006). Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005). This method can also take a JavaScript Date object or an array of Date objects.

Returns: `Date[]`
  Array of JavaScript Date objects representing all individual dates that are currently selected.

#### deselectAll

`Date[] deselectAll ( )`
Deselects all dates on the current calendar.

Returns: `Date[]`
  Array of JavaScript Date objects representing all individual dates that are currently selected. Assuming that this function executes properly, the return value should be an empty array. However, the empty array is returned for the sake of being able to check the selection status of the calendar.

#### deselectCell

`Date[] deselectCell ( cellIndex )`
Deselects dates in the CalendarGroup based on the cell index provided. This method is used to select cells without having to do a full render. The selected style is applied to the cells directly. deselectCell will deselect the cell at the specified index on each displayed Calendar page.

Parameters:
  `cellIndex <Number>` The index of the cell to deselect.

Returns: `Date[]`
  Array of JavaScript Date objects representing all individual dates that are currently selected.

#### getCalendarPage

`Calendar getCalendarPage ( date )`
Returns the Calendar page instance which has a pagedate (month/year) matching the given date. Returns null if no match is found.

Parameters:
  `date <Date>` The JavaScript Date object for which a Calendar page is to be found.

Returns: `Calendar`
  The Calendar page instance representing the month to which the date belongs.

#### getSelectedDates

`void getSelectedDates ( )`
Gets the list of currently selected dates from the calendar.

Returns: `void`
  An array of currently selected JavaScript Date objects.

#### init

`void init ( id , container , config )`
Initializes the calendar group. All subclasses must call this method in order for the group to be initialized properly.

Parameters:
  `id <String>` optional The id of the table element that will represent the CalendarGroup widget. As of 2.4.0, this argument is optional.
  `container <String | HTMLElement>` The id of the container div element that will wrap the CalendarGroup table, or a reference to a DIV element which exists in the document.
  `config <Object>` optional The configuration object containing the initial configuration values for the CalendarGroup.

Returns: `void`

#### initEvents

`void initEvents ( )`
Initializes CalendarGroup's built-in CustomEvents

Returns: `void`

#### nextMonth

`void nextMonth ( )`
Navigates to the next month page in the calendar widget.

Returns: `void`

#### nextYear

`void nextYear ( )`
Navigates to the next year in the currently selected month in the calendar widget.

Returns: `void`

#### previousMonth

`void previousMonth ( )`
Navigates to the previous month page in the calendar widget.

Returns: `void`

#### previousYear

`void previousYear ( )`
Navigates to the previous year in the currently selected month in the calendar widget.

Returns: `void`

#### removeRenderers

`void removeRenderers ( )`
Removes all custom renderers added to the CalendarGroup through the addRenderer, addMonthRenderer and addWeekRenderer methods. CalendarGroup's render method needs to be called to after removing renderers to see the changes applied.

Returns: `void`

#### render

`void render ( )`
Calls the render function of all child calendars within the group.

Returns: `void`

#### renderFooter

`void renderFooter ( )`
Renders a footer for the 2-up calendar container. By default, this method is unimplemented.

Returns: `void`

#### renderHeader

`void renderHeader ( )`
Renders the header for the CalendarGroup.

Returns: `void`

#### reset

`void reset ( )`
Resets the calendar widget to the originally selected month and year, and sets the calendar to the initial selection(s).

Returns: `void`

#### select

`Date[] select ( date )`
Selects a date or a collection of dates on the current calendar. This method, by default, does not call the render method explicitly. Once selection has completed, render must be called for the changes to be reflected visually.

Parameters:
  `date <String/Date/Date[]>` The date string of dates to select in the current calendar. Valid formats are individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006). Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005). This method can also take a JavaScript Date object or an array of Date objects.

Returns: `Date[]`
  Array of JavaScript Date objects representing all individual dates that are currently selected.

#### selectCell

`Date[] selectCell ( cellIndex )`
Selects dates in the CalendarGroup based on the cell index provided. This method is used to select cells without having to do a full render. The selected style is applied to the cells directly. The value of the MULTI_SELECT Configuration attribute will determine the set of dates which get selected.

- If MULTI_SELECT is false, selectCell will select the cell at the specified index for only the last displayed Calendar page.
- If MULTI_SELECT is true, selectCell will select the cell at the specified index, on each displayed Calendar page.

Parameters:
  `cellIndex <Number>` The index of the cell to be selected.

Returns: `Date[]`
  Array of JavaScript Date objects representing all individual dates that are currently selected.

#### setChildFunction

`void setChildFunction ( fnName , fn )`
Adds a function to all child Calendars within this CalendarGroup.

Parameters:
  `fnName <String>` The name of the function
  `fn <Function>` The function to apply to each Calendar page object

Returns: `void`

#### setMonth

`void setMonth ( month )`
Sets the calendar group's month explicitly. This month will be set into the first page of the multi-page calendar, and all other months will be iterated appropriately.

Parameters:
  `month <Number>` The numeric month, from 0 (January) to 11 (December)

Returns: `void`

#### setYear

`void setYear ( year )`
Sets the calendar group's year explicitly. This year will be set into the first page of the multi-page calendar, and all other months will be iterated appropriately.

Parameters:
  `year <Number>` The numeric 4-digit year

Returns: `void`

#### sub

`private void sub ( fn , obj , bOverride )`
Proxy subscriber to subscribe to the CalendarGroup's child Calendars' CustomEvents

Parameters:
  `fn <Function>` The function to subscribe to this CustomEvent
  `obj <Object>` The CustomEvent's scope object
  `bOverride <Boolean>` Whether or not to apply scope correction

Returns: `void`

#### subtractMonths

`void subtractMonths ( count )`
Subtracts the designated number of months from the current calendar month, and sets the current calendar page date to the new month.

Parameters:
  `count <Number>` The number of months to subtract from the current calendar

Returns: `void`

#### subtractYears

`void subtractYears ( count )`
Subtcats the designated number of years from the current calendar, and sets the current calendar page date to the new month.

Parameters:
  `count <Number>` The number of years to subtract from the current calendar

Returns: `void`

#### toString

`String toString ( )`
Returns a string representation of the object.

Returns: `String`
  A string representation of the CalendarGroup object.

#### unsub

`private void unsub ( fn , obj )`
Proxy unsubscriber to unsubscribe from the CalendarGroup's child Calendars' CustomEvents

Parameters:
  `fn <Function>` The function to subscribe to this CustomEvent
  `obj <Object>` The CustomEvent's scope object

Returns: `void`

### Events

#### beforeDeselectEvent

`beforeDeselectEvent ( )`
Fired before a selection is made

#### beforeHideEvent

`beforeHideEvent ( )`
Fired just before the CalendarGroup is to be hidden

#### beforeHideNavEvent

`beforeHideNavEvent ( )`
Fired just before the CalendarNavigator is to be hidden

#### beforeRenderEvent

`beforeRenderEvent ( )`
Fired before the Calendar is rendered

#### beforeRenderNavEvent

`beforeRenderNavEvent ( )`
Fired just before the CalendarNavigator is to be rendered

#### beforeSelectEvent

`beforeSelectEvent ( )`
Fired before a selection is made

#### beforeShowEvent

`beforeShowEvent ( )`
Fired just before the CalendarGroup is to be shown

#### beforeShowNavEvent

`beforeShowNavEvent ( )`
Fired just before the CalendarNavigator is to be shown

#### changePageEvent

`changePageEvent ( )`
Fired when the Calendar page is changed

#### clearEvent

`clearEvent ( )`
Fired when the Calendar is cleared

#### deselectEvent

`deselectEvent ( Array )`
Fired when a selection is made

Parameters:
  `Array <Array>` of Date field arrays in the format [YYYY, MM, DD].

#### hideEvent

`hideEvent ( )`
Fired after the CalendarGroup is hidden

#### hideNavEvent

`hideNavEvent ( )`
Fired after the CalendarNavigator is hidden

#### renderEvent

`renderEvent ( )`
Fired when the Calendar is rendered

#### renderNavEvent

`renderNavEvent ( )`
Fired after the CalendarNavigator is rendered

#### resetEvent

`resetEvent ( )`
Fired when the Calendar is reset

#### selectEvent

`selectEvent ( Array )`
Fired when a selection is made

Parameters:
  `Array <Array>` of Date field arrays in the format [YYYY, MM, DD].

#### showEvent

`showEvent ( )`
Fired after the CalendarGroup is shown

#### showNavEvent

`showNavEvent ( )`
Fired after the CalendarNavigator is shown

### Configuration Attributes

#### close `- Boolean`

Whether or not a close button should be displayed for this CalendarGroup
Default Value: false

#### DATE_DELIMITER `- String`

The value used to delimit individual dates in a date string passed to various Calendar functions.
Default Value: ","

#### DATE_FIELD_DELIMITER `- String`

The value used to delimit date fields in a date string passed to various Calendar functions.
Default Value: "/"

#### DATE_RANGE_DELIMITER `- String`

The value used to delimit date ranges in a date string passed to various Calendar functions.
Default Value: "-"

#### HIDE_BLANK_WEEKS `- Boolean`

True if the Calendar should suppress weeks that are not a part of the current month. False by default.
Default Value: false

#### iframe `- Boolean`

Whether or not an iframe shim should be placed under the Calendar to prevent select boxes from bleeding through in Internet Explorer 6 and below. This property is enabled by default for IE6 and below. It is disabled by default for other browsers for performance reasons, but can be enabled if required.
Default Value: true for IE6 and below, false for all other browsers

#### LOCALE_MONTHS `- String`

The setting that determines which length of month labels should be used. Possible values are "short" and "long".
Default Value: "long"

#### LOCALE_WEEKDAYS `- String`

The setting that determines which length of weekday labels should be used. Possible values are "1char", "short", "medium", and "long".
Default Value: "short"

#### maxdate `- String`

The maximum selectable date in the current Calendar (mm/dd/yyyy)
Default Value: null

#### MD_DAY_POSITION `- Number`

The position of the day in a month/year date string
Default Value: 2

#### MD_MONTH_POSITION `- Number`

The position of the month in a month/day date string
Default Value: 1

#### MDY_DAY_POSITION `- Number`

The position of the day in a month/day/year date string
Default Value: 2

#### MDY_MONTH_POSITION `- Number`

The position of the month in a month/day/year date string
Default Value: 1

#### MDY_YEAR_POSITION `- Number`

The position of the year in a month/day/year date string
Default Value: 3

#### mindate `- String`

The minimum selectable date in the current Calendar (mm/dd/yyyy)
Default Value: null

#### MONTHS_LONG `- String[]`

The long month labels for the current locale.
Default Value: ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"

#### MONTHS_SHORT `- String[]`

The short month labels for the current locale.
Default Value: ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]

#### MULTI_SELECT `- Boolean`

True if the Calendar should allow multiple selections. False by default.
Default Value: false

#### MY_LABEL_MONTH_POSITION `- Number`

The position of the month in the month year label string used as the Calendar header
Default Value: 1

#### MY_LABEL_MONTH_SUFFIX `- String`

The suffix used after the month when rendering the Calendar header
Default Value: " "

#### MY_LABEL_YEAR_POSITION `- Number`

The position of the year in the month year label string used as the Calendar header
Default Value: 2

#### MY_LABEL_YEAR_SUFFIX `- String`

The suffix used after the year when rendering the Calendar header
Default Value: ""

#### MY_MONTH_POSITION `- Number`

The position of the month in a month/year date string
Default Value: 1

#### MY_YEAR_POSITION `- Number`

The position of the year in a month/year date string
Default Value: 2

#### NAV `- Object`

Configuration for the Month Year Navigation UI. By default it is disabled
Default Value: null

#### NAV_ARROW_LEFT `- String`

The image that should be used for the left navigation arrow.
Deprecated You can customize the image by overriding the default CSS class for the left arrow - "calnavleft"
Default Value: null

#### NAV_ARROW_RIGHT `- String`

The image that should be used for the right navigation arrow.
Deprecated You can customize the image by overriding the default CSS class for the right arrow - "calnavright"
Default Value: null

#### pagedate `- String`

The month/year representing the current visible Calendar date (mm/yyyy)
Default Value: today's date

#### pages `- Number`

The number of pages to include in the CalendarGroup. This value can only be set once, in the CalendarGroup's constructor arguments.
Default Value: 2

#### selected `- String`

The date or range of dates representing the current Calendar selection
Default Value: []

#### SHOW_WEEK_FOOTER `- Boolean`

True if the Calendar should show week row footers. False by default.
Default Value: false

#### SHOW_WEEK_HEADER `- Boolean`

True if the Calendar should show week row headers. False by default.
Default Value: false

#### SHOW_WEEKDAYS `- Boolean`

True if the Calendar should show weekday labels. True by default.
Default Value: true

#### START_WEEKDAY `- number`

The weekday the week begins on. Default is 0 (Sunday).
Default Value: 0

#### title `- String`

The title to display above the CalendarGroup's month header
Default Value: ""

#### WEEKDAYS_1CHAR `- String[]`

The 1-character weekday labels for the current locale.
Default Value: ["S", "M", "T", "W", "T", "F", "S"]

#### WEEKDAYS_LONG `- String[]`

The long weekday labels for the current locale.
Default Value: ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]

#### WEEKDAYS_MEDIUM `- String[]`

The medium weekday labels for the current locale.
Default Value: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]

#### WEEKDAYS_SHORT `- String[]`

The short weekday labels for the current locale.
Default Value: ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]

Copyright © 2007 Yahoo! Inc. All rights reserved.