# Yahoo! UI Library

### Calendar 2.5.0

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

Show Private Show Protected

## Class YAHOO.widget.CalendarNavigator

The CalendarNavigator is used along with a Calendar/CalendarGroup to provide a Month/Year popup navigation control, allowing the user to navigate to a specific month/year in the Calendar/CalendarGroup without having to scroll through months sequentially

### Constructor

YAHOO.widget.CalendarNavigator `( cal )`

Parameters:
  `cal <Calendar|CalendarGroup>` The instance of the Calendar or CalendarGroup to which this CalendarNavigator should be attached.

### Properties

#### __isIEQuirks `- private object`

Private flag, to identify IE6/IE7 Quirks

#### __isMac `- private object`

Private flag, to identify MacOS

#### __rendered `- private Boolean`

Private internal state property which indicates whether or not the Navigator has been rendered.

#### _DEFAULT_CFG `- protected static Object`

Object literal containing the default configuration values for the CalendarNavigator The configuration object is expected to follow the format below, with the properties being case sensitive.

strings
  Object : An object with the properties shown below, defining the string labels to use in the Navigator's UI
  month
    String : The string to use for the month label. Defaults to "Month".
  year
    String : The string to use for the year label. Defaults to "Year".
  submit
    String : The string to use for the submit button label. Defaults to "Okay".
  cancel
    String : The string to use for the cancel button label. Defaults to "Cancel".
  invalidYear
    String : The string to use for invalid year values. Defaults to "Year needs to be a number".
monthFormat
  String : The month format to use. Either YAHOO.widget.Calendar.LONG, or YAHOO.widget.Calendar.SHORT. Defaults to YAHOO.widget.Calendar.LONG
initialFocus
  String : Either "year" or "month" specifying which input control should get initial focus. Defaults to "year"

#### _doc `- protected HTMLDocument`

The document containing the Calendar/Calendar group instance

#### _month `- protected Number`

Internal state property for the current month index displayed in the navigator

#### _year `- protected Number`

Internal state property for the current year displayed in the navigator

#### cal `- {Calendar|CalendarGroup}`

The Calendar/CalendarGroup instance to which the navigator belongs

#### cancelEl `- HTMLElement`

Reference to the HTMLElement used to hide the navigator without updating the Calendar/Calendar group

#### errorEl `- HTMLElement`

Reference to the HTMLElement used to display validation errors

#### firstCtrl `- HTMLElement`

Reference to the first focusable control in the navigator (by default monthEl)

#### id `- String`

The unique ID for this CalendarNavigator instance

#### lastCtrl `- HTMLElement`

Reference to the last focusable control in the navigator (by default cancelEl)

#### maskEl `- HTMLElement`

Reference to the HTMLElement used to render the navigator's mask

#### monthEl `- HTMLElement`

Reference to the HTMLElement used to input the month

#### navEl `- HTMLElement`

Reference to the HTMLElement used to render the navigator's bounding box

#### submitEl `- HTMLElement`

Reference to the HTMLElement used to update the Calendar/Calendar group with the month/year values

#### YAHOO.widget.CalendarNavigator.CANCEL_SUFFIX `- static final String`

The suffix added to the Navigator's ID, to generate a unique ID for the "Cancel" button.

#### YAHOO.widget.CalendarNavigator.CLASSES `- static Object`

YAHOO.widget.CalendarNavigator.CLASSES contains constants for the class values applied to the CalendarNaviatgator's DOM elements

#### YAHOO.widget.CalendarNavigator.CLASSES.BUTTON `- static String`

Class applied to buttons wrapping element

#### YAHOO.widget.CalendarNavigator.CLASSES.BUTTONS `- static String`

Class applied to the submit/cancel button's bounding box

#### YAHOO.widget.CalendarNavigator.CLASSES.DEFAULT `- static String`

Class applied to default controls

#### YAHOO.widget.CalendarNavigator.CLASSES.ERROR `- static String`

Class applied to the validation error area's bounding box

#### YAHOO.widget.CalendarNavigator.CLASSES.INVALID `- static String`

Class applied to controls with invalid data (e.g. a year input field with invalid an year)

#### YAHOO.widget.CalendarNavigator.CLASSES.MASK `- static String`

Class applied to the Navigator mask's bounding box

#### YAHOO.widget.CalendarNavigator.CLASSES.MONTH `- static String`

Class applied to the month label/control bounding box

#### YAHOO.widget.CalendarNavigator.CLASSES.MONTH_CTRL `- static String`

Class applied to the month input control

#### YAHOO.widget.CalendarNavigator.CLASSES.NAV `- static String`

Class applied to the Calendar Navigator's bounding box

#### YAHOO.widget.CalendarNavigator.CLASSES.NAV_VISIBLE `- static String`

Class applied to the Calendar/CalendarGroup's bounding box to indicate the Navigator is currently visible

#### YAHOO.widget.CalendarNavigator.CLASSES.YEAR `- static String`

Class applied to the year label/control bounding box

#### YAHOO.widget.CalendarNavigator.CLASSES.YEAR_CTRL `- static String`

Class applied to the year input control

#### YAHOO.widget.CalendarNavigator.ERROR_SUFFIX `- static final String`

The suffix added to the Navigator's ID, to generate a unique ID for the error bounding box.

#### YAHOO.widget.CalendarNavigator.ID_SUFFIX `- static final String`

The suffix added to the Calendar/CalendarGroup's ID, to generate a unique ID for the Navigator and it's bounding box.

#### YAHOO.widget.CalendarNavigator.MONTH_SUFFIX `- static final String`

The suffix added to the Navigator's ID, to generate a unique ID for the month control.

#### YAHOO.widget.CalendarNavigator.SUBMIT_SUFFIX `- static final String`

The suffix added to the Navigator's ID, to generate a unique ID for the "Submit" button.

#### YAHOO.widget.CalendarNavigator.TRIM `- static RegExp`

Regular expression used to trim strings

#### YAHOO.widget.CalendarNavigator.UPDATE_DELAY `- static Number`

Artificial delay (in ms) between the time the Navigator is hidden and the Calendar/CalendarGroup state is updated. Allows the user the see the Calendar/CalendarGroup page changing. If set to 0 the Calendar/CalendarGroup page will be updated instantly

#### YAHOO.widget.CalendarNavigator.YEAR_SUFFIX `- static final String`

The suffix added to the Navigator's ID, to generate a unique ID for the year control.

#### YAHOO.widget.CalendarNavigator.YR_MAJOR_INC `- static Number`

The amount by which to increment the current year value, when the page up/down key is pressed on the year control

#### YAHOO.widget.CalendarNavigator.YR_MAX_DIGITS `- static Number`

The number of digits to which the year input control is to be limited.

#### YAHOO.widget.CalendarNavigator.YR_MINOR_INC `- static Number`

The amount by which to increment the current year value, when the arrow up/down key is pressed on the year control

#### YAHOO.widget.CalendarNavigator.YR_PATTERN `- static RegExp`

Regular expression used to validate the year input

#### yearEl `- HTMLElement`

Reference to the HTMLElement used to input the year

### Methods

#### __getCfg

`private void __getCfg ( Case , true, )`
Retrieve Navigator configuration values from the parent Calendar/CalendarGroup's config value.

If it has not been set in the user provided configuration, the method will return the default value of the configuration property, as set in _DEFAULT_CFG

Parameters:
  `Case <String>` sensitive property name.
  `true, <Boolean>` if the property is a string property, false if not.

Returns: `void`
  The value of the configuration property

#### _getMonthFromUI

`protected Number _getMonthFromUI ( )`
Returns the month value (index), from the month UI element

Returns: `Number`
  The month index, or 0 if a UI element for the month is not found

#### _getYearFromUI

`protected Number _getYearFromUI ( )`
Returns the year value, from the Navitator's year UI element

Returns: `Number`
  The year value set in the UI, if valid. null is returned if the UI does not contain a valid year value.

#### _handleDirectionKeys

`protected void _handleDirectionKeys ( e )`
Default Keyboard event handler to capture up/down/pgup/pgdown on the Navigator's year control (yearEl).

Parameters:
  `e <Event>` The DOM event being handled

Returns: `void`

#### _handleEnterKey

`protected void _handleEnterKey ( e )`
Default Keyboard event handler to capture Enter on the Navigator's year control (yearEl)

Parameters:
  `e <Event>` The DOM event being handled

Returns: `void`

#### _handleShiftTabKey

`protected void _handleShiftTabKey ( e )`
Default Keyboard event handler to capture Shift-Tab on the first control (firstCtrl) in the Navigator.

Parameters:
  `e <Event>` The DOM event being handled

Returns: `void`

#### _handleTabKey

`protected void _handleTabKey ( e )`
Default Keyboard event handler to capture Tab on the last control (lastCtrl) in the Navigator.

Parameters:
  `e <Event>` The DOM event being handled

Returns: `void`

#### _setFirstLastElements

`protected void _setFirstLastElements ( )`
Sets up references to the first and last focusable element in the Navigator's UI in terms of tab order (Naviagator's firstEl and lastEl properties). The references are used to control modality by looping around from the first to the last control and visa versa for tab/shift-tab navigation.

See applyKeyListeners

Returns: `void`

#### _show

`protected void _show ( )`
Protected implementation to handle how UI elements are hidden/shown.

Returns: `void`

#### _syncMask

`protected void _syncMask ( )`
Used to set the width/height of the mask in pixels to match the Calendar Container. Currently only used for IE6 and IE7 quirks mode. The other A-Grade browser are handled using CSS (width/height 100%).

The method is also registered as an HTMLElement resize listener on the Calendars container element.

Returns: `void`

#### _updateMonthUI

`protected void _updateMonthUI ( )`
Updates the Navigator's month UI, based on the month value set on the Navigator object

Returns: `void`

#### _updateYearUI

`protected void _updateYearUI ( )`
Updates the Navigator's year UI, based on the year value set on the Navigator object

Returns: `void`

#### applyKeyListeners

`void applyKeyListeners ( )`
Attaches DOM listeners for keyboard support. Tab/Shift-Tab looping, Enter Key Submit on Year element, Up/Down/PgUp/PgDown year increment on Year element

NOTE: MacOSX Safari 2.x doesn't let you tab to buttons and MacOSX Gecko does not let you tab to buttons or select controls, so for these browsers, Tab/Shift-Tab looping is limited to the elements which can be reached using the tab key.

Returns: `void`

#### applyListeners

`void applyListeners ( )`
Attaches DOM event listeners to the rendered elements

The method will call applyKeyListeners, to setup keyboard specific listeners

Returns: `void`

#### cancel

`void cancel ( )`
Hides the navigator and mask, without updating the Calendar/CalendarGroup's state

Returns: `void`

#### clearError

`void clearError ( )`
Clears the navigator's error message and hides the error panel

Returns: `void`

#### clearErrors

`void clearErrors ( )`
Clears all validation and error messages in the UI

Returns: `void`

#### clearYearError

`void clearYearError ( )`
Removes the validation error UI for the year control

Returns: `void`

#### createMask

`void createMask ( )`
Creates the Mask HTMLElement and appends it to the Calendar/CalendarGroups container.

Returns: `void`

#### createNav

`void createNav ( )`
Creates the navigator's containing HTMLElement, it's contents, and appends the containg element to the Calendar/CalendarGroup's container.

Returns: `void`

#### destroy

`void destroy ( )`
Destroys the Navigator object and any HTML references

Returns: `void`

#### erase

`void erase ( )`
Removes all renderered HTML elements for the Navigator from the DOM, purges event listeners and clears (nulls) any property references to HTML references

Returns: `void`

#### getMonth

`Number getMonth ( )`
Returns the current month set on the navigator Note: This may not be the month set in the UI, if the UI contains an invalid value.

Returns: `Number`
  The Navigator's current month index

#### getYear

`Number getYear ( )`
Returns the current year set on the navigator Note: This may not be the year set in the UI, if the UI contains an invalid value.

Returns: `Number`
  The Navigator's current year value

#### hide

`void hide ( )`
Hides the navigator and mask The show method will fire the Calendar/CalendarGroup's beforeHideNav event and hideNav events

Returns: `void`

#### hideMask

`void hideMask ( )`
Hides the navigator's mask element

Returns: `void`

#### init

`void init ( cal )`
Init lifecycle method called as part of construction

Parameters:
  `cal <Calendar>` The instance of the Calendar or CalendarGroup to which this CalendarNavigator should be attached

Returns: `void`

#### purgeKeyListeners

`void purgeKeyListeners ( )`
Removes/purges DOM listeners for keyboard support

Returns: `void`

#### purgeListeners

`void purgeListeners ( )`
Removes/purges DOM event listeners from the rendered elements

Returns: `void`

#### render

`void render ( )`
Renders the HTML for the navigator, adding it to the document and attaches event listeners if it has not already been rendered.

Returns: `void`

#### renderButton

`String renderButton ( )`
Renders the submit/cancel buttons for the navigator

Returns: `String`
  The HTML created for the Button UI

#### renderNavContents

`Array renderNavContents ( html )`
Renders the contents of the navigator

Parameters:
  `html <Array>` The HTML buffer to append the HTML to.

Returns: `Array`
  A reference to the buffer passed in.

#### renderYear

`Array renderYear ( html )`
Renders the year label and control for the navigator

Parameters:
  `html <Array>` The HTML buffer to append the HTML to.

Returns: `Array`
  A reference to the buffer passed in.

#### setError

`void setError ( msg )`
Displays an error message in the Navigator's error panel

Parameters:
  `msg <String>` The error message to display

Returns: `void`

#### setInitialFocus

`void setInitialFocus ( )`
Sets the initial focus, based on the configured value

Returns: `void`

#### setMonth

`void setMonth ( nMonth )`
Sets the current month on the Navigator, and updates the UI

Parameters:
  `nMonth <Number>` The month index, from 0 (Jan) through 11 (Dec).

Returns: `void`

#### setYear

`void setYear ( nYear )`
Sets the current year on the Navigator, and updates the UI. If the provided year is invalid, it will not be set.

Parameters:
  `nYear <Number>` The full year value to set the Navigator to.

Returns: `void`

#### setYearError

`void setYearError ( )`
Displays the validation error UI for the year control

Returns: `void`

#### show

`void show ( )`
Displays the navigator and mask, updating the input controls to reflect the currently set month and year. The show method will invoke the render method if the navigator has not been renderered already, allowing for lazy rendering of the control. The show method will fire the Calendar/CalendarGroup's beforeShowNav and showNav events

Returns: `void`

#### showMask

`void showMask ( )`
Displays the navigator's mask element

Returns: `void`

#### submit

`void submit ( )`
Updates the Calendar/CalendarGroup's pagedate with the currently set month and year if valid.

If the currently set month/year is invalid, a validation error will be displayed and the Calendar/CalendarGroup's pagedate will not be updated.

Returns: `void`

#### validate

`Boolean validate ( )`
Validates the current state of the UI controls

Returns: `Boolean`
  true, if the current UI state contains valid values, false if not

Copyright © 2007 Yahoo! Inc. All rights reserved.