webgui/www/extras/yui-ext/docs/output/calendar.js.html
JT Smith cfd09a5cb6 upgraded to yui 0.12.0
upgraded to yui-ext 0.33 rc2
2006-11-28 02:23:34 +00:00

4239 lines
No EOL
525 KiB
HTML

<html><head><title>calendar.js</title><link rel="stylesheet" type="text/css" href="../style.css" media="screen"/></head><body><div class="hl-main"><pre><span class="hl-comment">/*
Copyright (c) 2006, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
</span><span class="hl-url">http://developer.yahoo.net/yui/license.txt</span><span class="hl-comment">
version 0.12.0
*/
// holder
/**
* Config is a utility used within an Object to allow the implementer to maintain a list of local configuration properties and listen for changes to those properties dynamically using CustomEvent. The initial values are also maintained so that the configuration can be reset at any given point to its initial state.
* @class YAHOO.util.Config
* @constructor
* @param {Object} owner The owner Object to which this Config Object belongs
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">util</span><span class="hl-default">.</span><span class="hl-identifier">Config</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">owner</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">owner</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-brackets">(</span><span class="hl-identifier">owner</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-default">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">util</span><span class="hl-default">.</span><span class="hl-identifier">Config</span><span class="hl-default">.</span><span class="hl-identifier">prototype</span><span class="hl-default"> = </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* Object reference to the owner of this Config Object
* @property owner
* @type Object
*/
</span><span class="hl-identifier">owner</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Boolean flag that specifies whether a queue is currently being executed
* @property queueInProgress
* @type Boolean
*/
</span><span class="hl-identifier">queueInProgress</span><span class="hl-code"> : </span><span class="hl-reserved">false</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Validates that the value passed in is a Boolean.
* @method checkBoolean
* @param {Object} val The value to validate
* @return {Boolean} true, if the value is valid
*/
</span><span class="hl-identifier">checkBoolean</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">val</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">boolean</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Validates that the value passed in is a number.
* @method checkNumber
* @param {Object} val The value to validate
* @return {Boolean} true, if the value is valid
*/
</span><span class="hl-identifier">checkNumber</span><span class="hl-code">: </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">isNaN</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-default">;
</span><span class="hl-comment">/**
* Initializes the configuration Object and all of its local members.
* @method init
* @param {Object} owner The owner Object to which this Config Object belongs
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">util</span><span class="hl-default">.</span><span class="hl-identifier">Config</span><span class="hl-default">.</span><span class="hl-identifier">prototype</span><span class="hl-default">.</span><span class="hl-identifier">init</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">owner</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">owner</span><span class="hl-code"> = </span><span class="hl-identifier">owner</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Object reference to the owner of this Config Object
* @event configChangedEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configChangedEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">configChanged</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueInProgress</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-comment">/* Private Members */
// holder
/**
* Maintains the local collection of configuration property objects and their specified values
* @property config
* @private
* @type Object
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">config</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Maintains the local collection of configuration property objects as they were initially applied.
* This object is used when resetting a property.
* @property initialConfig
* @private
* @type Object
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">initialConfig</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Maintains the local, normalized CustomEvent queue
* @property eventQueue
* @private
* @type Object
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">eventQueue</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fires a configuration property event using the specified value.
* @method fireEvent
* @private
* @param {String} key The configuration property's name
* @param {value} Object The value of the correct type for the property
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">fireEvent</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">( </span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value </span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">(</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/* End Private Members */
// holder
/**
* Adds a property to the Config Object's private config hash.
* @method addProperty
* @param {String} key The configuration property's name
* @param {Object} propertyObject The Object containing all of this property's arguments
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">( </span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">propertyObject </span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">propertyObject</span><span class="hl-code">;
</span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">handler</span><span class="hl-brackets">) {
</span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">handler</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">owner</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">suppressEvent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">propertyObject</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Returns a key-value configuration map of the values currently set in the Config Object.
* @method getConfig
* @return {Object} The current config, represented in a key-value map
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getConfig</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cfg</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">prop </span><span class="hl-reserved">in </span><span class="hl-identifier">config</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">prop</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-identifier">cfg</span><span class="hl-brackets">[</span><span class="hl-identifier">prop</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">return </span><span class="hl-identifier">cfg</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Returns the value of specified property.
* @method getProperty
* @param {String} key The name of the property
* @return {Object} The value of the specified property
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return </span><span class="hl-identifier">undefined</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Resets the specified property's value to its initial value.
* @method resetProperty
* @param {String} key The name of the property
* @return {Boolean} True is the property was reset, false if not
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">resetProperty</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">initialConfig</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">initialConfig</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">initialConfig</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Sets the value of a property. If the silent property is passed as true, the property's event will not be fired.
* @method setProperty
* @param {String} key The name of the property
* @param {String} value The value to set the property to
* @param {Boolean} silent Whether the value should be set silently, without firing the property event.
* @return {Boolean} True, if the set was successful, false if it failed.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-code">, </span><span class="hl-identifier">silent</span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueInProgress</span><span class="hl-code"> &amp;&amp; ! </span><span class="hl-identifier">silent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">,</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// Currently running through a queue...
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">validator</span><span class="hl-code"> &amp;&amp; ! </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">validator</span><span class="hl-brackets">(</span><span class="hl-identifier">value</span><span class="hl-brackets">)) { </span><span class="hl-comment">// validator
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">silent</span><span class="hl-brackets">) {
</span><span class="hl-identifier">fireEvent</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configChangedEvent</span><span class="hl-code">.</span><span class="hl-identifier">fire</span><span class="hl-brackets">([</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">}
} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Sets the value of a property and queues its event to execute. If the event is already scheduled to execute, it is
* moved from its current position to the end of the queue.
* @method queueProperty
* @param {String} key The name of the property
* @param {String} value The value to set the property to
* @return {Boolean} true, if the set was successful, false if it failed.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueProperty</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">value</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">validator</span><span class="hl-code"> &amp;&amp; ! </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">validator</span><span class="hl-brackets">(</span><span class="hl-identifier">value</span><span class="hl-brackets">)) { </span><span class="hl-comment">// validator
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">value</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">foundDuplicate</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">i</span><span class="hl-code">&lt;</span><span class="hl-identifier">eventQueue</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;</span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItem</span><span class="hl-code"> = </span><span class="hl-identifier">eventQueue</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">queueItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItemKey</span><span class="hl-code"> = </span><span class="hl-identifier">queueItem</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItemValue</span><span class="hl-code"> = </span><span class="hl-identifier">queueItem</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">queueItemKey</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-identifier">key</span><span class="hl-brackets">) {
</span><span class="hl-comment">// found a dupe... push to end of queue, null current item, and break
</span><span class="hl-identifier">eventQueue</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-identifier">eventQueue</span><span class="hl-code">.</span><span class="hl-identifier">push</span><span class="hl-brackets">([</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">value</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> ? </span><span class="hl-identifier">value</span><span class="hl-code"> : </span><span class="hl-identifier">queueItemValue</span><span class="hl-brackets">)])</span><span class="hl-code">;
</span><span class="hl-identifier">foundDuplicate</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">foundDuplicate</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">typeof </span><span class="hl-identifier">value</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-brackets">) { </span><span class="hl-comment">// this is a refire, or a new property in the queue
</span><span class="hl-identifier">eventQueue</span><span class="hl-code">.</span><span class="hl-identifier">push</span><span class="hl-brackets">([</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">value</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">supercedes</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">s</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">s</span><span class="hl-code">&lt;</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">supercedes</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;</span><span class="hl-identifier">s</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">supercedesCheck</span><span class="hl-code"> = </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">supercedes</span><span class="hl-brackets">[</span><span class="hl-identifier">s</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">q</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">q</span><span class="hl-code">&lt;</span><span class="hl-identifier">eventQueue</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;</span><span class="hl-identifier">q</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItemCheck</span><span class="hl-code"> = </span><span class="hl-identifier">eventQueue</span><span class="hl-brackets">[</span><span class="hl-identifier">q</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">queueItemCheck</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItemCheckKey</span><span class="hl-code"> = </span><span class="hl-identifier">queueItemCheck</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItemCheckValue</span><span class="hl-code"> = </span><span class="hl-identifier">queueItemCheck</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">( </span><span class="hl-identifier">queueItemCheckKey</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-identifier">supercedesCheck</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">() ) {
</span><span class="hl-identifier">eventQueue</span><span class="hl-code">.</span><span class="hl-identifier">push</span><span class="hl-brackets">([</span><span class="hl-identifier">queueItemCheckKey</span><span class="hl-code">, </span><span class="hl-identifier">queueItemCheckValue</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-identifier">eventQueue</span><span class="hl-brackets">[</span><span class="hl-identifier">q</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}
}
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fires the event for a property using the property's current value.
* @method refireEvent
* @param {String} key The name of the property
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueInProgress</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">fireEvent</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Applies a key-value Object literal to the configuration, replacing any existing values, and queueing the property events.
* Although the values will be set, fireQueue() must be called for their associated events to execute.
* @method applyConfig
* @param {Object} userConfig The configuration Object literal
* @param {Boolean} init When set to true, the initialConfig will be set to the userConfig passed in, so that calling a reset will reset the properties to the passed values.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">userConfig</span><span class="hl-code">, </span><span class="hl-identifier">init</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">init</span><span class="hl-brackets">) {
</span><span class="hl-identifier">initialConfig</span><span class="hl-code"> = </span><span class="hl-identifier">userConfig</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">prop </span><span class="hl-reserved">in </span><span class="hl-identifier">userConfig</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">prop</span><span class="hl-code">, </span><span class="hl-identifier">userConfig</span><span class="hl-brackets">[</span><span class="hl-identifier">prop</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Refires the events for all configuration properties using their current values.
* @method refresh
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">refresh</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">prop </span><span class="hl-reserved">in </span><span class="hl-identifier">config</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-identifier">prop</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fires the normalized list of queued property change events
* @method fireQueue
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">fireQueue</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueInProgress</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">i</span><span class="hl-code">&lt;</span><span class="hl-identifier">eventQueue</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;</span><span class="hl-identifier">i</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItem</span><span class="hl-code"> = </span><span class="hl-identifier">eventQueue</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">queueItem</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">queueItem</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">queueItem</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">value</span><span class="hl-code"> = </span><span class="hl-identifier">value</span><span class="hl-code">;
</span><span class="hl-identifier">fireEvent</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">,</span><span class="hl-identifier">value</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">queueInProgress</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-identifier">eventQueue</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Subscribes an external handler to the change event for any given property.
* @method subscribeToConfigEvent
* @param {String} key The property name
* @param {Function} handler The handler function to use subscribe to the property's event
* @param {Object} obj The Object to use for scoping the event handler (see CustomEvent documentation)
* @param {Boolean} override Optional. If true, will override &quot;this&quot; within the handler to map to the scope Object passed into the method.
* @return {Boolean} True, if the subscription was successful, otherwise false.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-code">, </span><span class="hl-identifier">override</span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Config</span><span class="hl-code">.</span><span class="hl-identifier">alreadySubscribed</span><span class="hl-brackets">(</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">handler</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-code">, </span><span class="hl-identifier">override</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Unsubscribes an external handler from the change event for any given property.
* @method unsubscribeFromConfigEvent
* @param {String} key The property name
* @param {Function} handler The handler function to use subscribe to the property's event
* @param {Object} obj The Object to use for scoping the event handler (see CustomEvent documentation)
* @return {Boolean} True, if the unsubscription was successful, otherwise false.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribeFromConfigEvent</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">key</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-identifier">key</span><span class="hl-code"> = </span><span class="hl-identifier">key</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">property</span><span class="hl-code"> = </span><span class="hl-identifier">config</span><span class="hl-brackets">[</span><span class="hl-identifier">key</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">property</span><span class="hl-code"> != </span><span class="hl-quotes">'</span><span class="hl-string">undefined</span><span class="hl-quotes">'</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return </span><span class="hl-identifier">property</span><span class="hl-code">.</span><span class="hl-identifier">event</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">handler</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Returns a string representation of the Config object
* @method toString
* @return {String} The Config object in string format.
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">toString</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">output</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">Config</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">owner</span><span class="hl-brackets">) {
</span><span class="hl-identifier">output</span><span class="hl-code"> += </span><span class="hl-quotes">&quot;</span><span class="hl-string"> [</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">owner</span><span class="hl-code">.</span><span class="hl-identifier">toString</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">]</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return </span><span class="hl-identifier">output</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Returns a string representation of the Config object's current CustomEvent queue
* @method outputEventQueue
* @return {String} The string list of CustomEvents currently queued for execution
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">outputEventQueue</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">output</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">q</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">q</span><span class="hl-code">&lt;</span><span class="hl-identifier">eventQueue</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;</span><span class="hl-identifier">q</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">queueItem</span><span class="hl-code"> = </span><span class="hl-identifier">eventQueue</span><span class="hl-brackets">[</span><span class="hl-identifier">q</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">queueItem</span><span class="hl-brackets">) {
</span><span class="hl-identifier">output</span><span class="hl-code"> += </span><span class="hl-identifier">queueItem</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">=</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">queueItem</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">return </span><span class="hl-identifier">output</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-comment">/**
* Checks to determine if a particular function/Object pair are already subscribed to the specified CustomEvent
* @method YAHOO.util.Config.alreadySubscribed
* @static
* @param {YAHOO.util.CustomEvent} evt The CustomEvent for which to check the subscriptions
* @param {Function} fn The function to look for in the subscribers list
* @param {Object} obj The execution scope Object for the subscription
* @return {Boolean} true, if the function/Object pair is already subscribed to the CustomEvent passed in
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">util</span><span class="hl-default">.</span><span class="hl-identifier">Config</span><span class="hl-default">.</span><span class="hl-identifier">alreadySubscribed</span><span class="hl-default"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">evt</span><span class="hl-code">, </span><span class="hl-identifier">fn</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">e</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">e</span><span class="hl-code">&lt;</span><span class="hl-identifier">evt</span><span class="hl-code">.</span><span class="hl-identifier">subscribers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;</span><span class="hl-identifier">e</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">subsc</span><span class="hl-code"> = </span><span class="hl-identifier">evt</span><span class="hl-code">.</span><span class="hl-identifier">subscribers</span><span class="hl-brackets">[</span><span class="hl-identifier">e</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">subsc</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">subsc</span><span class="hl-code">.</span><span class="hl-identifier">obj</span><span class="hl-code"> == </span><span class="hl-identifier">obj</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">subsc</span><span class="hl-code">.</span><span class="hl-identifier">fn</span><span class="hl-code"> == </span><span class="hl-identifier">fn</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-default">;
</span><span class="hl-comment">/**
* YAHOO.widget.DateMath is used for simple date manipulation. The class is a static utility
* used for adding, subtracting, and comparing dates.
* @class YAHOO.widget.DateMath
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-default">.</span><span class="hl-identifier">widget</span><span class="hl-default">.</span><span class="hl-identifier">DateMath</span><span class="hl-default"> = </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* Constant field representing Day
* @property DAY
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">DAY</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">D</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Constant field representing Week
* @property WEEK
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">WEEK</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">W</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Constant field representing Year
* @property YEAR
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YEAR</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">Y</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Constant field representing Month
* @property MONTH
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">MONTH</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">M</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Constant field representing one day, in milliseconds
* @property ONE_DAY_MS
* @static
* @final
* @type Number
*/
</span><span class="hl-identifier">ONE_DAY_MS</span><span class="hl-code"> : </span><span class="hl-number">1000</span><span class="hl-code">*</span><span class="hl-number">60</span><span class="hl-code">*</span><span class="hl-number">60</span><span class="hl-code">*</span><span class="hl-number">24</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Adds the specified amount of time to the this instance.
* @method add
* @param {Date} date The JavaScript Date object to perform addition on
* @param {String} field The field constant to be used for performing addition.
* @param {Number} amount The number of units (measured in the field constant) to add to the date.
* @return {Date} The resulting Date object
*/
</span><span class="hl-identifier">add</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">field</span><span class="hl-code">, </span><span class="hl-identifier">amount</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">d</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">())</span><span class="hl-code">;
</span><span class="hl-reserved">switch </span><span class="hl-brackets">(</span><span class="hl-identifier">field</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case this</span><span class="hl-code">.</span><span class="hl-identifier">MONTH</span><span class="hl-code">:
</span><span class="hl-reserved">var </span><span class="hl-identifier">newMonth</span><span class="hl-code"> = </span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-identifier">amount</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">years</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">newMonth</span><span class="hl-code"> &lt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">newMonth</span><span class="hl-code"> &lt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">newMonth</span><span class="hl-code"> += </span><span class="hl-number">12</span><span class="hl-code">;
</span><span class="hl-identifier">years</span><span class="hl-code"> -= </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
} </span><span class="hl-reserved">else if </span><span class="hl-brackets">(</span><span class="hl-identifier">newMonth</span><span class="hl-code"> &gt; </span><span class="hl-number">11</span><span class="hl-brackets">) {
</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">newMonth</span><span class="hl-code"> &gt; </span><span class="hl-number">11</span><span class="hl-brackets">) {
</span><span class="hl-identifier">newMonth</span><span class="hl-code"> -= </span><span class="hl-number">12</span><span class="hl-code">;
</span><span class="hl-identifier">years</span><span class="hl-code"> += </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">d</span><span class="hl-code">.</span><span class="hl-identifier">setMonth</span><span class="hl-brackets">(</span><span class="hl-identifier">newMonth</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">d</span><span class="hl-code">.</span><span class="hl-identifier">setFullYear</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-identifier">years</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case this</span><span class="hl-code">.</span><span class="hl-identifier">DAY</span><span class="hl-code">:
</span><span class="hl-identifier">d</span><span class="hl-code">.</span><span class="hl-identifier">setDate</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-identifier">amount</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case this</span><span class="hl-code">.</span><span class="hl-identifier">YEAR</span><span class="hl-code">:
</span><span class="hl-identifier">d</span><span class="hl-code">.</span><span class="hl-identifier">setFullYear</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-identifier">amount</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case this</span><span class="hl-code">.</span><span class="hl-identifier">WEEK</span><span class="hl-code">:
</span><span class="hl-identifier">d</span><span class="hl-code">.</span><span class="hl-identifier">setDate</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-brackets">(</span><span class="hl-identifier">amount</span><span class="hl-code"> * </span><span class="hl-number">7</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return </span><span class="hl-identifier">d</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Subtracts the specified amount of time from the this instance.
* @method subtract
* @param {Date} date The JavaScript Date object to perform subtraction on
* @param {Number} field The this field constant to be used for performing subtraction.
* @param {Number} amount The number of units (measured in the field constant) to subtract from the date.
* @return {Date} The resulting Date object
*/
</span><span class="hl-identifier">subtract</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">field</span><span class="hl-code">, </span><span class="hl-identifier">amount</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">add</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">field</span><span class="hl-code">, </span><span class="hl-brackets">(</span><span class="hl-identifier">amount</span><span class="hl-code">*-</span><span class="hl-number">1</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Determines whether a given date is before another date on the calendar.
* @method before
* @param {Date} date The Date object to compare with the compare argument
* @param {Date} compareTo The Date object to use for the comparison
* @return {Boolean} true if the date occurs before the compared date; false if not.
*/
</span><span class="hl-identifier">before</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">compareTo</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">ms</span><span class="hl-code"> = </span><span class="hl-identifier">compareTo</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> &lt; </span><span class="hl-identifier">ms</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Determines whether a given date is after another date on the calendar.
* @method after
* @param {Date} date The Date object to compare with the compare argument
* @param {Date} compareTo The Date object to use for the comparison
* @return {Boolean} true if the date occurs after the compared date; false if not.
*/
</span><span class="hl-identifier">after</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">compareTo</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">ms</span><span class="hl-code"> = </span><span class="hl-identifier">compareTo</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> &gt; </span><span class="hl-identifier">ms</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Determines whether a given date is between two other dates on the calendar.
* @method between
* @param {Date} date The date to check for
* @param {Date} dateBegin The start of the range
* @param {Date} dateEnd The end of the range
* @return {Boolean} true if the date occurs between the compared dates; false if not.
*/
</span><span class="hl-identifier">between</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">dateBegin</span><span class="hl-code">, </span><span class="hl-identifier">dateEnd</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">after</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">dateBegin</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">before</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">dateEnd</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">return true</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">return false</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Retrieves a JavaScript Date object representing January 1 of any given year.
* @method getJan1
* @param {Number} calendarYear The calendar year for which to retrieve January 1
* @return {Date} January 1 of the calendar year specified.
*/
</span><span class="hl-identifier">getJan1</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">calendarYear</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">calendarYear</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">,
</span><span class="hl-comment">/**
* Calculates the number of days the specified date is from January 1 of the specified calendar year.
* Passing January 1 to this function would return an offset value of zero.
* @method getDayOffset
* @param {Date} date The JavaScript date for which to find the offset
* @param {Number} calendarYear The calendar year to use for determining the offset
* @return {Number} The number of days since January 1 of the given year
*/
</span><span class="hl-identifier">getDayOffset</span><span class="hl-code"> : </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-code">, </span><span class="hl-identifier">calendarYear</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">beginYear</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">getJan1</span><span class="hl-brackets">(</span><span class="hl-identifier">calendarYear</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-comment">// Find the start of the year. This will be in week 1.
// Find the number of days the passed in date is away from the calendar year start
</span><span class="hl-reserved">var </span><span class="hl-identifier">dayOffset</span><span class="hl-code"> = </span><span class="hl-builtin">Math</span><span class="hl-code">.</span><span class="hl-identifier">ceil</span><span class="hl-brackets">((</span><span class="hl-identifier">date</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code">-</span><span class="hl-identifier">beginYear</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()) </span><span class="hl-quotes">/</span><span class="hl-string"> this.ONE_DAY_MS);
return dayOffset;
},
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Calculates the week number </span><span class="hl-reserved">for </span><span class="hl-identifier">the given date</span><span class="hl-code">. </span><span class="hl-identifier">This </span><span class="hl-reserved">function </span><span class="hl-identifier">assumes that week </span><span class="hl-number">1 </span><span class="hl-identifier">is the</span><span class="hl-code">
* </span><span class="hl-identifier">week </span><span class="hl-reserved">in </span><span class="hl-identifier">which January </span><span class="hl-number">1 </span><span class="hl-identifier">appears</span><span class="hl-code">, </span><span class="hl-identifier">regardless of whether the week consists of a full </span><span class="hl-number">7 </span><span class="hl-identifier">days</span><span class="hl-code">.
* </span><span class="hl-identifier">The calendar year can be specified to help find what a the week number would be </span><span class="hl-reserved">for </span><span class="hl-identifier">a given</span><span class="hl-code">
* </span><span class="hl-identifier">date </span><span class="hl-reserved">if </span><span class="hl-identifier">the date overlaps years</span><span class="hl-code">. </span><span class="hl-identifier">For instance</span><span class="hl-code">, </span><span class="hl-identifier">a week may be considered week </span><span class="hl-number">1 </span><span class="hl-identifier">of </span><span class="hl-number">2005</span><span class="hl-code">, </span><span class="hl-identifier">or</span><span class="hl-code">
* </span><span class="hl-identifier">week </span><span class="hl-number">53 </span><span class="hl-identifier">of </span><span class="hl-number">2004</span><span class="hl-code">. </span><span class="hl-identifier">Specifying the optional calendarYear allows one to make </span><span class="hl-reserved">this </span><span class="hl-identifier">distinction</span><span class="hl-code">
* </span><span class="hl-identifier">easily</span><span class="hl-code">.
* @</span><span class="hl-identifier">method getWeekNumber</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">date The JavaScript date </span><span class="hl-reserved">for </span><span class="hl-identifier">which to find the week number</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Number</span><span class="hl-brackets">} </span><span class="hl-identifier">calendarYear OPTIONAL</span><span class="hl-code"> - </span><span class="hl-identifier">The calendar year to use </span><span class="hl-reserved">for </span><span class="hl-identifier">determining the week number</span><span class="hl-code">. </span><span class="hl-identifier">Default is</span><span class="hl-code">
* </span><span class="hl-identifier">the calendar year of parameter </span><span class="hl-quotes">&quot;</span><span class="hl-string">date</span><span class="hl-quotes">&quot;</span><span class="hl-code">.
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Number</span><span class="hl-brackets">} </span><span class="hl-identifier">weekStartsOn OPTIONAL</span><span class="hl-code"> - </span><span class="hl-identifier">The integer </span><span class="hl-brackets">(</span><span class="hl-number">0</span><span class="hl-code">-</span><span class="hl-number">6</span><span class="hl-brackets">) </span><span class="hl-identifier">representing which day a week begins on</span><span class="hl-code">. </span><span class="hl-identifier">Default is </span><span class="hl-number">0 </span><span class="hl-brackets">(</span><span class="hl-reserved">for </span><span class="hl-identifier">Sunday</span><span class="hl-brackets">)</span><span class="hl-code">.
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">Number</span><span class="hl-brackets">} </span><span class="hl-identifier">The week number of the given date</span><span class="hl-code">.
*</span><span class="hl-quotes">/</span><span class="hl-string">
getWeekNumber : function(date, calendarYear) {
date = this.clearTime(date);
var nearestThurs = new Date(date.getTime() + (4 * this.ONE_DAY_MS) - ((date.getDay()) * this.ONE_DAY_MS));
var jan1 = new Date(nearestThurs.getFullYear(),0,1);
var dayOfYear = ((nearestThurs.getTime() - jan1.getTime()) </span><span class="hl-quotes">/ </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">ONE_DAY_MS</span><span class="hl-brackets">)</span><span class="hl-code"> - </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">weekNum</span><span class="hl-code"> = </span><span class="hl-builtin">Math</span><span class="hl-code">.</span><span class="hl-identifier">ceil</span><span class="hl-brackets">((</span><span class="hl-identifier">dayOfYear</span><span class="hl-brackets">)</span><span class="hl-quotes">/</span><span class="hl-string"> 7);
return weekNum;
},
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Determines </span><span class="hl-reserved">if </span><span class="hl-identifier">a given week overlaps two different years</span><span class="hl-code">.
* @</span><span class="hl-identifier">method isYearOverlapWeek</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">weekBeginDate The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-identifier">representing the first day of the week</span><span class="hl-code">.
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-identifier">Boolean</span><span class="hl-brackets">} </span><span class="hl-reserved">true if </span><span class="hl-identifier">the date overlaps two different years</span><span class="hl-code">.
*</span><span class="hl-quotes">/</span><span class="hl-string">
isYearOverlapWeek : function(weekBeginDate) {
var overlaps = false;
var nextWeek = this.add(weekBeginDate, this.DAY, 6);
if (nextWeek.getFullYear() != weekBeginDate.getFullYear()) {
overlaps = true;
}
return overlaps;
},
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Determines </span><span class="hl-reserved">if </span><span class="hl-identifier">a given week overlaps two different months</span><span class="hl-code">.
* @</span><span class="hl-identifier">method isMonthOverlapWeek</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">weekBeginDate The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-identifier">representing the first day of the week</span><span class="hl-code">.
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-identifier">Boolean</span><span class="hl-brackets">} </span><span class="hl-reserved">true if </span><span class="hl-identifier">the date overlaps two different months</span><span class="hl-code">.
*</span><span class="hl-quotes">/</span><span class="hl-string">
isMonthOverlapWeek : function(weekBeginDate) {
var overlaps = false;
var nextWeek = this.add(weekBeginDate, this.DAY, 6);
if (nextWeek.getMonth() != weekBeginDate.getMonth()) {
overlaps = true;
}
return overlaps;
},
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Gets the first day of a month containing a given date</span><span class="hl-code">.
* @</span><span class="hl-identifier">method findMonthStart</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">date The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-identifier">used to calculate the month start</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-identifier">representing the first day of the month</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
findMonthStart : function(date) {
var start = new Date(date.getFullYear(), date.getMonth(), 1);
return start;
},
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Gets the last day of a month containing a given date</span><span class="hl-code">.
* @</span><span class="hl-identifier">method findMonthEnd</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">date The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-identifier">used to calculate the month end</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-identifier">representing the last day of the month</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
findMonthEnd : function(date) {
var start = this.findMonthStart(date);
var nextMonth = this.add(start, this.MONTH, 1);
var end = this.subtract(nextMonth, this.DAY, 1);
return end;
},
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Clears the time fields from a given date</span><span class="hl-code">, </span><span class="hl-identifier">effectively setting the time to midnight</span><span class="hl-code">.
* @</span><span class="hl-identifier">method clearTime</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">date The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-reserved">for </span><span class="hl-identifier">which the time fields will be cleared</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">The JavaScript </span><span class="hl-builtin">Date </span><span class="hl-identifier">cleared of all time fields</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
clearTime : function(date) {
date.setHours(12,0,0,0);
return date;
}
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">The Calendar component is a UI control that enables users to choose one or more dates from a graphical calendar presented </span><span class="hl-reserved">in </span><span class="hl-identifier">a one</span><span class="hl-code">-</span><span class="hl-identifier">month </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">one-up</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) </span><span class="hl-identifier">or two</span><span class="hl-code">-</span><span class="hl-identifier">month </span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">two-up</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) </span><span class="hl-reserved">interface</span><span class="hl-code">. </span><span class="hl-identifier">Calendars are generated entirely via script and can be navigated without any page refreshes</span><span class="hl-code">.
* @</span><span class="hl-identifier">module Calendar</span><span class="hl-code">
* @</span><span class="hl-identifier">title Calendar Widget</span><span class="hl-code">
* @</span><span class="hl-identifier">namespace YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">
* @</span><span class="hl-identifier">requires yahoo</span><span class="hl-code">,</span><span class="hl-identifier">dom</span><span class="hl-code">,</span><span class="hl-identifier">event</span><span class="hl-code">
*</span><span class="hl-quotes">/
//</span><span class="hl-string"> holder
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Calendar is the base </span><span class="hl-reserved">class for </span><span class="hl-identifier">the Calendar widget</span><span class="hl-code">. </span><span class="hl-identifier">In its most basic</span><span class="hl-code">
* </span><span class="hl-identifier">implementation</span><span class="hl-code">, </span><span class="hl-identifier">it has the ability to render a calendar widget on the page</span><span class="hl-code">
* </span><span class="hl-identifier">that can be manipulated to select a single date</span><span class="hl-code">, </span><span class="hl-identifier">move back and forth between</span><span class="hl-code">
* </span><span class="hl-identifier">months and years</span><span class="hl-code">.
* &lt;</span><span class="hl-identifier">p</span><span class="hl-code">&gt;</span><span class="hl-identifier">To construct the placeholder </span><span class="hl-reserved">for </span><span class="hl-identifier">the calendar widget</span><span class="hl-code">, </span><span class="hl-identifier">the code is as</span><span class="hl-code">
* </span><span class="hl-identifier">follows</span><span class="hl-code">:
* &lt;</span><span class="hl-identifier">xmp</span><span class="hl-code">&gt;
* &lt;</span><span class="hl-identifier">div id</span><span class="hl-code">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">cal1Container</span><span class="hl-quotes">&quot;</span><span class="hl-code">&gt;&lt;</span><span class="hl-quotes">/</span><span class="hl-string">div&gt;
* &lt;</span><span class="hl-quotes">/</span><span class="hl-identifier">xmp</span><span class="hl-code">&gt;
* </span><span class="hl-identifier">Note that the table can be replaced </span><span class="hl-reserved">with </span><span class="hl-identifier">any kind of element</span><span class="hl-code">.
* &lt;</span><span class="hl-quotes">/</span><span class="hl-string">p&gt;
* @namespace YAHOO.widget
* @class Calendar
* @constructor
* @param {String} id The id of the table element that will represent the calendar widget
* @param {String} containerId The id of the container div element that will wrap the calendar table
* @param {Object} config The configuration object containing the Calendar's arguments
*</span><span class="hl-quotes">/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">id</span><span class="hl-code">, </span><span class="hl-identifier">containerId</span><span class="hl-code">, </span><span class="hl-identifier">config</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-brackets">(</span><span class="hl-identifier">id</span><span class="hl-code">, </span><span class="hl-identifier">containerId</span><span class="hl-code">, </span><span class="hl-identifier">config</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The path to be used for images loaded for the Calendar
* @property YAHOO.widget.Calendar.IMG_ROOT
* @static
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">IMG_ROOT</span><span class="hl-code"> = </span><span class="hl-brackets">(</span><span class="hl-builtin">window</span><span class="hl-code">.</span><span class="hl-identifier">location</span><span class="hl-code">.</span><span class="hl-identifier">href</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code">.</span><span class="hl-identifier">indexOf</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">https</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-code"> ? </span><span class="hl-quotes">&quot;</span><span class="hl-string">https://a248.e.akamai.net/sec.yimg.com/i/</span><span class="hl-quotes">&quot;</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">http://us.i1.yimg.com/us.yimg.com/i/</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Type constant used for renderers to represent an individual date (M/D/Y)
* @property YAHOO.widget.Calendar.DATE
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">DATE</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">D</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Type constant used for renderers to represent an individual date across any year (M/D)
* @property YAHOO.widget.Calendar.MONTH_DAY
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">MONTH_DAY</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">MD</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Type constant used for renderers to represent a weekday
* @property YAHOO.widget.Calendar.WEEKDAY
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">WEEKDAY</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">WD</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Type constant used for renderers to represent a range of individual dates (M/D/Y-M/D/Y)
* @property YAHOO.widget.Calendar.RANGE
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">RANGE</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">R</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Type constant used for renderers to represent a month across any year
* @property YAHOO.widget.Calendar.MONTH
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">MONTH</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">M</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Constant that represents the total number of date cells that are displayed in a given month
* @property YAHOO.widget.Calendar.DISPLAY_DAYS
* @static
* @final
* @type Number
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">DISPLAY_DAYS</span><span class="hl-code"> = </span><span class="hl-number">42</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Constant used for halting the execution of the remainder of the render stack
* @property YAHOO.widget.Calendar.STOP_RENDER
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">STOP_RENDER</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">S</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code"> = </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* The configuration object used to set up the calendars various locale and style options.
* @property Config
* @private
* @deprecated Configuration properties should be set by calling Calendar.cfg.setProperty.
* @type Object
*/
</span><span class="hl-identifier">Config</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The parent CalendarGroup, only to be set explicitly by the parent group
* @property parent
* @type CalendarGroup
*/
</span><span class="hl-identifier">parent</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The index of this item in the parent group
* @property index
* @type Number
*/
</span><span class="hl-identifier">index</span><span class="hl-code"> : -</span><span class="hl-number">1</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The collection of calendar table cells
* @property cells
* @type HTMLTableCellElement[]
*/
</span><span class="hl-identifier">cells</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The collection of calendar cell dates that is parallel to the cells collection. The array contains dates field arrays in the format of [YYYY, M, D].
* @property cellDates
* @type Array[](Number[])
*/
</span><span class="hl-identifier">cellDates</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The id that uniquely identifies this calendar. This id should match the id of the placeholder element on the page.
* @property id
* @type String
*/
</span><span class="hl-identifier">id</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The DOM element reference that points to this calendar's container element. The calendar will be inserted into this element when the shell is rendered.
* @property oDomContainer
* @type HTMLElement
*/
</span><span class="hl-identifier">oDomContainer</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* A Date object representing today's date.
* @property today
* @type Date
*/
</span><span class="hl-identifier">today</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The list of render functions, along with required parameters, used to render cells.
* @property renderStack
* @type Array[]
*/
</span><span class="hl-identifier">renderStack</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* A copy of the initial render functions created before rendering.
* @property _renderStack
* @private
* @type Array
*/
</span><span class="hl-identifier">_renderStack</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* A Date object representing the month/year that the calendar is initially set to
* @property _pageDate
* @private
* @type Date
*/
</span><span class="hl-identifier">_pageDate</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* The private list of initially selected dates.
* @property _selectedDates
* @private
* @type Array
*/
</span><span class="hl-identifier">_selectedDates</span><span class="hl-code"> : </span><span class="hl-reserved">null</span><span class="hl-code">,
</span><span class="hl-comment">/**
* A map of DOM event handlers to attach to cells associated with specific CSS class names
* @property domEventMap
* @type Object
*/
</span><span class="hl-identifier">domEventMap</span><span class="hl-code"> : </span><span class="hl-reserved">null
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Initializes the Calendar widget.
* @method init
* @param {String} id The id of the table element that will represent the calendar widget
* @param {String} containerId The id of the container div element that will wrap the calendar table
* @param {Object} config The configuration object containing the Calendar's arguments
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">id</span><span class="hl-code">, </span><span class="hl-identifier">containerId</span><span class="hl-code">, </span><span class="hl-identifier">config</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">initEvents</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">today</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">clearTime</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">today</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> = </span><span class="hl-identifier">id</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">getElementById</span><span class="hl-brackets">(</span><span class="hl-identifier">containerId</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The Config object used to hold the configuration variables for the Calendar
* @property cfg
* @type YAHOO.util.Config
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Config</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The local object which contains the Calendar's options
* @property Options
* @type Object
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Options</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The local object which contains the Calendar's locale settings
* @property Locale
* @type Object
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code"> = </span><span class="hl-brackets">{}</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">initStyles</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CONTAINER</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_SINGLE</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cellDates</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cells</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderStack</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_renderStack</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">setupConfig</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">config</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">applyConfig</span><span class="hl-brackets">(</span><span class="hl-identifier">config</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">fireQueue</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Renders the built-in IFRAME shim for the IE6 and below
* @method configIframe
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configIframe</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">useIframe</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">inDocument</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">useIframe</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">pos</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">position</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">browser</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">ie</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp; </span><span class="hl-brackets">(</span><span class="hl-identifier">pos</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">absolute</span><span class="hl-quotes">&quot;</span><span class="hl-code"> || </span><span class="hl-identifier">pos</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">relative</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">inDocument</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">iframe</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">javascript:false;</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">setStyle</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">opacity</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">0</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">insertBefore</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">iframe</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Default handler for the &quot;title&quot; property
* @method configTitle
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configTitle</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">title</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">close</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">close</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">titleDiv</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">title</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">title</span><span class="hl-code"> !== </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">titleDiv</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByClassName</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_2UPTITLE</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">div</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> || </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">div</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">titleDiv</span><span class="hl-code">.</span><span class="hl-identifier">className</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_2UPTITLE</span><span class="hl-code">;
</span><span class="hl-identifier">titleDiv</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = </span><span class="hl-identifier">title</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">insertBefore</span><span class="hl-brackets">(</span><span class="hl-identifier">titleDiv</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">firstChild</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">withtitle</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">titleDiv</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByClassName</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_2UPTITLE</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">div</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> || </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">titleDiv</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">purgeElement</span><span class="hl-brackets">(</span><span class="hl-identifier">titleDiv</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">titleDiv</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">close</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">withtitle</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Default handler for the &quot;close&quot; property
* @method configClose
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configClose</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">close</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">title</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">title</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">linkClose</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">close</span><span class="hl-code"> === </span><span class="hl-reserved">true</span><span class="hl-brackets">) {
</span><span class="hl-identifier">linkClose</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByClassName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">link-close</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">a</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> || </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">a</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">linkClose</span><span class="hl-code">.</span><span class="hl-identifier">href</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">javascript:void(null);</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">linkClose</span><span class="hl-code">.</span><span class="hl-identifier">className</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">link-close</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">addListener</span><span class="hl-brackets">(</span><span class="hl-identifier">linkClose</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">click</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">hide</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">imgClose</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">img</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">imgClose</span><span class="hl-code">.</span><span class="hl-identifier">src</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">IMG_ROOT</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">us/my/bn/x_d.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">imgClose</span><span class="hl-code">.</span><span class="hl-identifier">className</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_2UPCLOSE</span><span class="hl-code">;
</span><span class="hl-identifier">linkClose</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">imgClose</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">linkClose</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">withtitle</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">linkClose</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByClassName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">link-close</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">a</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code"> || </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">linkClose</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">purgeElement</span><span class="hl-brackets">(</span><span class="hl-identifier">linkClose</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">removeChild</span><span class="hl-brackets">(</span><span class="hl-identifier">linkClose</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">title</span><span class="hl-code"> || </span><span class="hl-identifier">title</span><span class="hl-code"> === </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">withtitle</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Initializes Calendar's built-in CustomEvents
* @method initEvents
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">initEvents</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-comment">/**
* Fired before a selection is made
* @event beforeSelectEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeSelectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">beforeSelect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when a selection is made
* @event selectEvent
* @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">selectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">select</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired before a selection is made
* @event beforeDeselectEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeDeselectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">beforeDeselect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when a selection is made
* @event deselectEvent
* @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">deselectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">deselect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar page is changed
* @event changePageEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">changePageEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">changePage</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired before the Calendar is rendered
* @event beforeRenderEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeRenderEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">beforeRender</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar is rendered
* @event renderEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">render</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar is reset
* @event resetEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">resetEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">reset</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar is cleared
* @event clearEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">clear</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeSelectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">onBeforeSelect</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">selectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-builtin">onSelect</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeDeselectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">onBeforeDeselect</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">deselectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">onDeselect</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">changePageEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">onChangePage</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">onRender</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">resetEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-builtin">onReset</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">onClear</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default event function that is attached to a date link within a calendar cell
* when the calendar is rendered.
* @method doSelectCell
* @param {DOMEvent} e The event
* @param {Calendar} cal A reference to the calendar passed by the Event utility
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">doSelectCell</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">cell</span><span class="hl-code">,</span><span class="hl-identifier">index</span><span class="hl-code">,</span><span class="hl-identifier">d</span><span class="hl-code">,</span><span class="hl-identifier">date</span><span class="hl-code">;
</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">td</span><span class="hl-quotes">&quot;</span><span class="hl-code"> &amp;&amp; ! </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">hasClass</span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_SELECTABLE</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">html</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">cell</span><span class="hl-code"> = </span><span class="hl-identifier">target</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">hasClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_SELECTABLE</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">index</span><span class="hl-code"> = </span><span class="hl-identifier">cell</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">cell</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">d</span><span class="hl-code"> = </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cellDates</span><span class="hl-brackets">[</span><span class="hl-identifier">index</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">date</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">d</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">,</span><span class="hl-identifier">d</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-identifier">d</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">link</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">Options</span><span class="hl-code">.</span><span class="hl-identifier">MULTI_SELECT</span><span class="hl-brackets">) {
</span><span class="hl-identifier">link</span><span class="hl-code"> = </span><span class="hl-identifier">cell</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByTagName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">a</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">link</span><span class="hl-brackets">) {
</span><span class="hl-identifier">link</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">cellDate</span><span class="hl-code"> = </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cellDates</span><span class="hl-brackets">[</span><span class="hl-identifier">index</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">cellDateIndex</span><span class="hl-code"> = </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">_indexOfSelectedFieldArray</span><span class="hl-brackets">(</span><span class="hl-identifier">cellDate</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">cellDateIndex</span><span class="hl-code"> &gt; -</span><span class="hl-number">1</span><span class="hl-brackets">) {
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">deselectCell</span><span class="hl-brackets">(</span><span class="hl-identifier">index</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">selectCell</span><span class="hl-brackets">(</span><span class="hl-identifier">index</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">link</span><span class="hl-code"> = </span><span class="hl-identifier">cell</span><span class="hl-code">.</span><span class="hl-identifier">getElementsByTagName</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">a</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">link</span><span class="hl-brackets">) {
</span><span class="hl-identifier">link</span><span class="hl-code">.</span><span class="hl-identifier">blur</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">selectCell</span><span class="hl-brackets">(</span><span class="hl-identifier">index</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The event that is executed when the user hovers over a cell
* @method doCellMouseOver
* @param {DOMEvent} e The event
* @param {Calendar} cal A reference to the calendar passed by the Event utility
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">doCellMouseOver</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">target</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-brackets">) {
</span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">td</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">html</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">hasClass</span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_SELECTABLE</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_HOVER</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The event that is executed when the user moves the mouse out of a cell
* @method doCellMouseOut
* @param {DOMEvent} e The event
* @param {Calendar} cal A reference to the calendar passed by the Event utility
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">doCellMouseOut</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">target</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-brackets">) {
</span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Event</span><span class="hl-code">.</span><span class="hl-identifier">getTarget</span><span class="hl-brackets">(</span><span class="hl-identifier">e</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">while </span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> != </span><span class="hl-quotes">&quot;</span><span class="hl-string">td</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-identifier">target</span><span class="hl-code"> = </span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">parentNode</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">.</span><span class="hl-identifier">tagName</span><span class="hl-code">.</span><span class="hl-identifier">toLowerCase</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-quotes">&quot;</span><span class="hl-string">html</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">) {
</span><span class="hl-reserved">return</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">hasClass</span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_SELECTABLE</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-identifier">target</span><span class="hl-code">, </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_HOVER</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">setupConfig</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-comment">/**
* The month/year representing the current visible Calendar date (mm/yyyy)
* @config pagedate
* @type String
* @default today's date
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">()</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configPageDate </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The date or range of dates representing the current Calendar selection
* @config selected
* @type String
* @default []
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-brackets">[]</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configSelected </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The title to display above the Calendar's month header
* @config title
* @type String
* @default &quot;&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">title</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configTitle </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Whether or not a close button should be displayed for this Calendar
* @config close
* @type Boolean
* @default false
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">close</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">false</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configClose </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* 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.
* @config iframe
* @type Boolean
* @default true
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">iframe</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">true</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configIframe</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The minimum selectable date in the current Calendar (mm/dd/yyyy)
* @config mindate
* @type String
* @default null
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mindate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">null</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configMinDate </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The maximum selectable date in the current Calendar (mm/dd/yyyy)
* @config maxdate
* @type String
* @default null
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">maxdate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">null</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configMaxDate </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">// Options properties
/**
* True if the Calendar should allow multiple selections. False by default.
* @config MULTI_SELECT
* @type Boolean
* @default false
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MULTI_SELECT</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">false</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The weekday the week begins on. Default is 0 (Sunday).
* @config START_WEEKDAY
* @type number
* @default 0
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">START_WEEKDAY</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">0</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* True if the Calendar should show weekday labels. True by default.
* @config SHOW_WEEKDAYS
* @type Boolean
* @default true
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">true</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* True if the Calendar should show week row headers. False by default.
* @config SHOW_WEEK_HEADER
* @type Boolean
* @default false
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEK_HEADER</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">false</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* True if the Calendar should show week row footers. False by default.
* @config SHOW_WEEK_FOOTER
* @type Boolean
* @default false
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEK_FOOTER</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">false</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* True if the Calendar should suppress weeks that are not a part of the current month. False by default.
* @config HIDE_BLANK_WEEKS
* @type Boolean
* @default false
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">HIDE_BLANK_WEEKS</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-reserved">false</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkBoolean </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The image that should be used for the left navigation arrow.
* @config NAV_ARROW_LEFT
* @type String
* @default YAHOO.widget.Calendar.IMG_ROOT + &quot;us/tr/callt.gif&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">NAV_ARROW_LEFT</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">IMG_ROOT</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">us/tr/callt.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The image that should be used for the left navigation arrow.
* @config NAV_ARROW_RIGHT
* @type String
* @default YAHOO.widget.Calendar.IMG_ROOT + &quot;us/tr/calrt.gif&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">NAV_ARROW_RIGHT</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">IMG_ROOT</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">us/tr/calrt.gif</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configOptions </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">// Locale properties
/**
* The short month labels for the current locale.
* @config MONTHS_SHORT
* @type String[]
* @default [&quot;Jan&quot;, &quot;Feb&quot;, &quot;Mar&quot;, &quot;Apr&quot;, &quot;May&quot;, &quot;Jun&quot;, &quot;Jul&quot;, &quot;Aug&quot;, &quot;Sep&quot;, &quot;Oct&quot;, &quot;Nov&quot;, &quot;Dec&quot;]
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MONTHS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">Jan</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Feb</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Mar</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Apr</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">May</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Jun</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Jul</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Aug</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Sep</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Oct</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Nov</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Dec</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The long month labels for the current locale.
* @config MONTHS_LONG
* @type String[]
* @default [&quot;January&quot;, &quot;February&quot;, &quot;March&quot;, &quot;April&quot;, &quot;May&quot;, &quot;June&quot;, &quot;July&quot;, &quot;August&quot;, &quot;September&quot;, &quot;October&quot;, &quot;November&quot;, &quot;December&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MONTHS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">January</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">February</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">March</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">April</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">May</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">June</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">July</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">August</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">September</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">October</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">November</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">December</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The 1-character weekday labels for the current locale.
* @config WEEKDAYS_1CHAR
* @type String[]
* @default [&quot;S&quot;, &quot;M&quot;, &quot;T&quot;, &quot;W&quot;, &quot;T&quot;, &quot;F&quot;, &quot;S&quot;]
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_1CHAR</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">S</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">M</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">T</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">W</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">T</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">F</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">S</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The short weekday labels for the current locale.
* @config WEEKDAYS_SHORT
* @type String[]
* @default [&quot;Su&quot;, &quot;Mo&quot;, &quot;Tu&quot;, &quot;We&quot;, &quot;Th&quot;, &quot;Fr&quot;, &quot;Sa&quot;]
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">Su</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Mo</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Tu</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">We</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Th</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Fr</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Sa</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The medium weekday labels for the current locale.
* @config WEEKDAYS_MEDIUM
* @type String[]
* @default [&quot;Sun&quot;, &quot;Mon&quot;, &quot;Tue&quot;, &quot;Wed&quot;, &quot;Thu&quot;, &quot;Fri&quot;, &quot;Sat&quot;]
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_MEDIUM</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">Sun</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Mon</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Tue</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Wed</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Thu</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Fri</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Sat</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The long weekday labels for the current locale.
* @config WEEKDAYS_LONG
* @type String[]
* @default [&quot;Sunday&quot;, &quot;Monday&quot;, &quot;Tuesday&quot;, &quot;Wednesday&quot;, &quot;Thursday&quot;, &quot;Friday&quot;, &quot;Saturday&quot;]
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-brackets">[</span><span class="hl-quotes">&quot;</span><span class="hl-string">Sunday</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Monday</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Tuesday</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Wednesday</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Thursday</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Friday</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">Saturday</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Refreshes the locale values used to build the Calendar.
* @method refreshLocale
* @private
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">refreshLocale</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_MONTHS</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">START_WEEKDAY</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">refreshLocale</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MONTHS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">refreshLocale</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MONTHS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">refreshLocale</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_1CHAR</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">refreshLocale</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">refreshLocale</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_MEDIUM</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">refreshLocale</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">subscribeToConfigEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">refreshLocale</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The setting that determines which length of month labels should be used. Possible values are &quot;short&quot; and &quot;long&quot;.
* @config LOCALE_MONTHS
* @type String
* @default &quot;long&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_MONTHS</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;</span><span class="hl-string">long</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocaleValues </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The setting that determines which length of weekday labels should be used. Possible values are &quot;1char&quot;, &quot;short&quot;, &quot;medium&quot;, and &quot;long&quot;.
* @config LOCALE_WEEKDAYS
* @type String
* @default &quot;short&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;</span><span class="hl-string">short</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocaleValues </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The value used to delimit individual dates in a date string passed to various Calendar functions.
* @config DATE_DELIMITER
* @type String
* @default &quot;,&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">DATE_DELIMITER</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;</span><span class="hl-string">,</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The value used to delimit date fields in a date string passed to various Calendar functions.
* @config DATE_FIELD_DELIMITER
* @type String
* @default &quot;/&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">DATE_FIELD_DELIMITER</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;</span><span class="hl-string">/</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The value used to delimit date ranges in a date string passed to various Calendar functions.
* @config DATE_RANGE_DELIMITER
* @type String
* @default &quot;-&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">DATE_RANGE_DELIMITER</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;</span><span class="hl-string">-</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the month in a month/year date string
* @config MY_MONTH_POSITION
* @type Number
* @default 1
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MY_MONTH_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the year in a month/year date string
* @config MY_YEAR_POSITION
* @type Number
* @default 2
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MY_YEAR_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">2</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the month in a month/day date string
* @config MD_MONTH_POSITION
* @type Number
* @default 1
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MD_MONTH_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the day in a month/year date string
* @config MD_DAY_POSITION
* @type Number
* @default 2
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MD_DAY_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">2</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the month in a month/day/year date string
* @config MDY_MONTH_POSITION
* @type Number
* @default 1
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MDY_MONTH_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the day in a month/day/year date string
* @config MDY_DAY_POSITION
* @type Number
* @default 2
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MDY_DAY_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">2</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the year in a month/day/year date string
* @config MDY_YEAR_POSITION
* @type Number
* @default 3
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MDY_YEAR_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">3</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default handler for the &quot;pagedate&quot; property
* @method configPageDate
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configPageDate</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">month</span><span class="hl-code">, </span><span class="hl-identifier">year</span><span class="hl-code">, </span><span class="hl-identifier">aMonthYear</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">val </span><span class="hl-reserved">instanceof </span><span class="hl-builtin">Date</span><span class="hl-brackets">) {
</span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">findMonthStart</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">val</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_pageDate</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_pageDate</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">aMonthYear</span><span class="hl-code"> = </span><span class="hl-identifier">val</span><span class="hl-code">.</span><span class="hl-identifier">split</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">DATE_FIELD_DELIMITER</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">))</span><span class="hl-code">;
</span><span class="hl-identifier">month</span><span class="hl-code"> = </span><span class="hl-identifier">parseInt</span><span class="hl-brackets">(</span><span class="hl-identifier">aMonthYear</span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MY_MONTH_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-number">10</span><span class="hl-brackets">)</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-identifier">year</span><span class="hl-code"> = </span><span class="hl-identifier">parseInt</span><span class="hl-brackets">(</span><span class="hl-identifier">aMonthYear</span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MY_YEAR_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">, </span><span class="hl-number">10</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">month</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">today</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">year</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">today</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">year</span><span class="hl-code">, </span><span class="hl-identifier">month</span><span class="hl-code">, </span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_pageDate</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_pageDate</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default handler for the &quot;mindate&quot; property
* @method configMinDate
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configMinDate</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">val</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">string</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_parseDate</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mindate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">,</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">,</span><span class="hl-identifier">val</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]))</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default handler for the &quot;maxdate&quot; property
* @method configMaxDate
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configMaxDate</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">val</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">string</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_parseDate</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">maxdate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">,</span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">,</span><span class="hl-identifier">val</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]))</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default handler for the &quot;selected&quot; property
* @method configSelected
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configSelected</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">selected</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">selected</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">typeof </span><span class="hl-identifier">selected</span><span class="hl-code"> == </span><span class="hl-quotes">'</span><span class="hl-string">string</span><span class="hl-quotes">'</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_parseDates</span><span class="hl-brackets">(</span><span class="hl-identifier">selected</span><span class="hl-brackets">)</span><span class="hl-code">, </span><span class="hl-reserved">true</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_selectedDates</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_selectedDates</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default handler for all configuration options properties
* @method configOptions
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configOptions</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-identifier">type</span><span class="hl-code"> = </span><span class="hl-identifier">type</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Options</span><span class="hl-brackets">[</span><span class="hl-identifier">type</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">val</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default handler for all configuration locale properties
* @method configLocale
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configLocale</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-identifier">type</span><span class="hl-code"> = </span><span class="hl-identifier">type</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-brackets">[</span><span class="hl-identifier">type</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">val</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_MONTHS</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">refireEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default handler for all configuration locale field length properties
* @method configLocaleValues
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configLocaleValues</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-identifier">type</span><span class="hl-code"> = </span><span class="hl-identifier">type</span><span class="hl-code">.</span><span class="hl-identifier">toUpperCase</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">switch </span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_MONTHS</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">switch </span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">short</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_MONTHS</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MONTHS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">concat</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">long</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_MONTHS</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MONTHS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">concat</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">LOCALE_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">switch </span><span class="hl-brackets">(</span><span class="hl-identifier">val</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">1char</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_1CHAR</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">concat</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">short</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">concat</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">medium</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_MEDIUM</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">concat</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-quotes">&quot;</span><span class="hl-string">long</span><span class="hl-quotes">&quot;</span><span class="hl-code">:
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">WEEKDAYS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">concat</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">START_WEEKDAY</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">START_WEEKDAY</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">START_WEEKDAY</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">w</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">w</span><span class="hl-code">&lt;</span><span class="hl-identifier">START_WEEKDAY</span><span class="hl-code">;++</span><span class="hl-identifier">w</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-code">.</span><span class="hl-identifier">push</span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-code">.</span><span class="hl-identifier">shift</span><span class="hl-brackets">())</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Defines the style constants for the Calendar
* @method initStyles
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">initStyles</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-comment">/**
* Collection of Style constants for the Calendar
* @property Style
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code"> = </span><span class="hl-brackets">{
</span><span class="hl-comment">/**
* @property Style.CSS_ROW_HEADER
*/
</span><span class="hl-identifier">CSS_ROW_HEADER</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">calrowhead</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_ROW_FOOTER
*/
</span><span class="hl-identifier">CSS_ROW_FOOTER</span><span class="hl-code">: </span><span class="hl-quotes">&quot;</span><span class="hl-string">calrowfoot</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL
*/
</span><span class="hl-identifier">CSS_CELL</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calcell</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_SELECTED
*/
</span><span class="hl-identifier">CSS_CELL_SELECTED</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_SELECTABLE
*/
</span><span class="hl-identifier">CSS_CELL_SELECTABLE</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">selectable</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_RESTRICTED
*/
</span><span class="hl-identifier">CSS_CELL_RESTRICTED</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">restricted</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_TODAY
*/
</span><span class="hl-identifier">CSS_CELL_TODAY</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">today</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_OOM
*/
</span><span class="hl-identifier">CSS_CELL_OOM</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">oom</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_OOB
*/
</span><span class="hl-identifier">CSS_CELL_OOB</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">previous</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_HEADER
*/
</span><span class="hl-identifier">CSS_HEADER</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calheader</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_HEADER_TEXT
*/
</span><span class="hl-identifier">CSS_HEADER_TEXT</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calhead</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_WEEKDAY_CELL
*/
</span><span class="hl-identifier">CSS_WEEKDAY_CELL</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calweekdaycell</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_WEEKDAY_ROW
*/
</span><span class="hl-identifier">CSS_WEEKDAY_ROW</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calweekdayrow</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_FOOTER
*/
</span><span class="hl-identifier">CSS_FOOTER</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calfoot</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CALENDAR
*/
</span><span class="hl-identifier">CSS_CALENDAR</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">yui-calendar</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_SINGLE
*/
</span><span class="hl-identifier">CSS_SINGLE</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">single</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CONTAINER
*/
</span><span class="hl-identifier">CSS_CONTAINER</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">yui-calcontainer</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_NAV_LEFT
*/
</span><span class="hl-identifier">CSS_NAV_LEFT</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calnavleft</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_NAV_RIGHT
*/
</span><span class="hl-identifier">CSS_NAV_RIGHT</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calnavright</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_TOP
*/
</span><span class="hl-identifier">CSS_CELL_TOP</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calcelltop</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_LEFT
*/
</span><span class="hl-identifier">CSS_CELL_LEFT</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calcellleft</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_RIGHT
*/
</span><span class="hl-identifier">CSS_CELL_RIGHT</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calcellright</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_BOTTOM
*/
</span><span class="hl-identifier">CSS_CELL_BOTTOM</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calcellbottom</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_HOVER
*/
</span><span class="hl-identifier">CSS_CELL_HOVER</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">calcellhover</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_HIGHLIGHT1
*/
</span><span class="hl-identifier">CSS_CELL_HIGHLIGHT1</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">highlight1</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_HIGHLIGHT2
*/
</span><span class="hl-identifier">CSS_CELL_HIGHLIGHT2</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">highlight2</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_HIGHLIGHT3
*/
</span><span class="hl-identifier">CSS_CELL_HIGHLIGHT3</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">highlight3</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-comment">/**
* @property Style.CSS_CELL_HIGHLIGHT4
*/
</span><span class="hl-identifier">CSS_CELL_HIGHLIGHT4</span><span class="hl-code"> : </span><span class="hl-quotes">&quot;</span><span class="hl-string">highlight4</span><span class="hl-quotes">&quot;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Builds the date label that will be displayed in the calendar header or
* footer, depending on configuration.
* @method buildMonthLabel
* @return {String} The formatted calendar month label
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">buildMonthLabel</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">text</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_MONTHS</span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()]</span><span class="hl-code"> + </span><span class="hl-quotes">&quot; &quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">text</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Builds the date digit that will be displayed in calendar cells
* @method buildDayLabel
* @param {Date} workingDate The current working date
* @return {String} The formatted day label
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">buildDayLabel</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">day</span><span class="hl-code"> = </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">day</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Renders the calendar header.
* @method renderHeader
* @param {Array} html The current working HTML array
* @return {Array} The current working HTML array
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">renderHeader</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">html</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">colSpan</span><span class="hl-code"> = </span><span class="hl-number">7</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEK_HEADER</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">colSpan</span><span class="hl-code"> += </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEK_FOOTER</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">colSpan</span><span class="hl-code"> += </span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">&lt;thead&gt;</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">&lt;tr&gt;</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;th colspan=&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">colSpan</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot; class=&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_HEADER_TEXT</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot;&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;div class=&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_HEADER</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot;&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">renderLeft</span><span class="hl-code">, </span><span class="hl-identifier">renderRight</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-brackets">) {
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">renderLeft</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code"> == </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pages</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> -</span><span class="hl-number">1</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">renderRight</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-brackets">}
} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">renderLeft</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-identifier">renderRight</span><span class="hl-code"> = </span><span class="hl-reserved">true</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> || </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">renderLeft</span><span class="hl-brackets">) {
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;a class=&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_NAV_LEFT</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot; style=&quot;background-image:url(</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">NAV_ARROW_LEFT</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">)&quot;&gt;&amp;#160;&lt;/a&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">buildMonthLabel</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">renderRight</span><span class="hl-brackets">) {
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;a class=&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_NAV_RIGHT</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot; style=&quot;background-image:url(</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">NAV_ARROW_RIGHT</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">)&quot;&gt;&amp;#160;&lt;/a&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;/div&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;/th&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;/tr&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">html</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">buildWeekdays</span><span class="hl-brackets">(</span><span class="hl-identifier">html</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;/thead&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">html</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Renders the Calendar's weekday headers.
* @method buildWeekdays
* @param {Array} html The current working HTML array
* @return {Array} The current working HTML array
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">buildWeekdays</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">html</span><span class="hl-brackets">) {
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;tr class=&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_WEEKDAY_ROW</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot;&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEK_HEADER</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;th&gt;&amp;#160;&lt;/th&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">for</span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">i</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">i</span><span class="hl-brackets">) {
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;th class=&quot;calweekdaycell&quot;&gt;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Locale</span><span class="hl-code">.</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-brackets">[</span><span class="hl-identifier">i</span><span class="hl-brackets">]</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&lt;/th&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEK_FOOTER</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;th&gt;&amp;#160;&lt;/th&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;/tr&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">html</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Renders the calendar body.
* @method renderBody
* @param {Date} workingDate The current working Date being used for the render process
* @param {Array} html The current working HTML array
* @return {Array} The current working HTML array
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">renderBody</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">, </span><span class="hl-identifier">html</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">startDay</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">START_WEEKDAY</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">preMonthDays</span><span class="hl-code"> = </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDay</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">startDay</span><span class="hl-code"> &gt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">preMonthDays</span><span class="hl-code"> -= </span><span class="hl-identifier">startDay</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">preMonthDays</span><span class="hl-code"> &lt; </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">preMonthDays</span><span class="hl-code"> += </span><span class="hl-number">7</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">monthDays</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">findMonthEnd</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-brackets">)</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">postMonthDays</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">DISPLAY_DAYS</span><span class="hl-code">-</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">preMonthDays</span><span class="hl-code">-</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">monthDays</span><span class="hl-code">;
</span><span class="hl-identifier">workingDate</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">subtract</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">DAY</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">preMonthDays</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">useDate</span><span class="hl-code">,</span><span class="hl-identifier">weekNum</span><span class="hl-code">,</span><span class="hl-identifier">weekClass</span><span class="hl-code">;
</span><span class="hl-identifier">useDate</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;tbody class=&quot;m</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-brackets">(</span><span class="hl-identifier">useDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot;&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">i</span><span class="hl-code"> = </span><span class="hl-number">0</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">tempDiv</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">div</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">cell</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">td</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">tempDiv</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">jan1</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">useDate</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code">,</span><span class="hl-number">0</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> || </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">r</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">r</span><span class="hl-code">&lt;</span><span class="hl-number">6</span><span class="hl-code">;</span><span class="hl-identifier">r</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-identifier">weekNum</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">getWeekNumber</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">, </span><span class="hl-identifier">useDate</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code">, </span><span class="hl-identifier">startDay</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">weekClass</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">w</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">weekNum</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">r</span><span class="hl-code"> !== </span><span class="hl-number">0</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">isDateOOM</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-brackets">)</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">HIDE_BLANK_WEEKS</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code"> === </span><span class="hl-reserved">true</span><span class="hl-brackets">) {
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">html</span><span class="hl-brackets">[</span><span class="hl-identifier">html</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-quotes">'</span><span class="hl-string">&lt;tr class=&quot;</span><span class="hl-quotes">'</span><span class="hl-code"> + </span><span class="hl-identifier">weekClass</span><span class="hl-code"> + </span><span class="hl-quotes">'</span><span class="hl-string">&quot;&gt;</span><span class="hl-quotes">'</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">SHOW_WEEK_HEADER</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) { </span><span class="hl-identifier">html</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderRowHeader</span><span class="hl-brackets">(</span><span class="hl-identifier">weekNum</span><span class="hl-code">, </span><span class="hl-identifier">html</span><span class="hl-brackets">)</span><span class="hl-code">; </span><span class="hl-brackets">}
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">d</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">d</span><span class="hl-code">&lt;</span><span class="hl-number">7</span><span class="hl-code">;</span><span class="hl-identifier">d</span><span class="hl-code">++</span><span class="hl-brackets">){ </span><span class="hl-comment">// Render actual days
</span><span class="hl-reserved">var </span><span class="hl-identifier">cellRenderers</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearElement</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">calcell</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">cell</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">_cell</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">i</span><span class="hl-code">;
</span><span class="hl-identifier">cell</span><span class="hl-code">.</span><span class="hl-identifier">innerHTML</span><span class="hl-code"> = </span><span class="hl-identifier">i</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">renderer</span><span class="hl-code"> = </span><span class="hl-reserved">null</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">today</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">today</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code"> &amp;&amp;
</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">today</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()) {
</span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">renderCellStyleToday</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cellDates</span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cellDates</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-brackets">[</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code">,</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()]</span><span class="hl-code">; </span><span class="hl-comment">// Add this date to cellDates
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">isDateOOM</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">renderCellNotThisMonth</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">wd</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDay</span><span class="hl-brackets">())</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">d</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">())</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">s</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">s</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderStack</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">s</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">rArray</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderStack</span><span class="hl-brackets">[</span><span class="hl-identifier">s</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">type</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">month</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">day</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">year</span><span class="hl-code">;
</span><span class="hl-reserved">switch </span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-brackets">) {
</span><span class="hl-reserved">case </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">DATE</span><span class="hl-code">:
</span><span class="hl-identifier">month</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">day</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">year</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-code"> == </span><span class="hl-identifier">month</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-identifier">day</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-identifier">year</span><span class="hl-brackets">) {
</span><span class="hl-identifier">renderer</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderStack</span><span class="hl-code">.</span><span class="hl-identifier">splice</span><span class="hl-brackets">(</span><span class="hl-identifier">s</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">MONTH_DAY</span><span class="hl-code">:
</span><span class="hl-identifier">month</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">day</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-code"> == </span><span class="hl-identifier">month</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()</span><span class="hl-code"> == </span><span class="hl-identifier">day</span><span class="hl-brackets">) {
</span><span class="hl-identifier">renderer</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderStack</span><span class="hl-code">.</span><span class="hl-identifier">splice</span><span class="hl-brackets">(</span><span class="hl-identifier">s</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">RANGE</span><span class="hl-code">:
</span><span class="hl-reserved">var </span><span class="hl-identifier">date1</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">date2</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d1month</span><span class="hl-code"> = </span><span class="hl-identifier">date1</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d1day</span><span class="hl-code"> = </span><span class="hl-identifier">date1</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d1year</span><span class="hl-code"> = </span><span class="hl-identifier">date1</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d1</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">d1year</span><span class="hl-code">, </span><span class="hl-identifier">d1month</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">d1day</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d2month</span><span class="hl-code"> = </span><span class="hl-identifier">date2</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d2day</span><span class="hl-code"> = </span><span class="hl-identifier">date2</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d2year</span><span class="hl-code"> = </span><span class="hl-identifier">date2</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">d2</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">d2year</span><span class="hl-code">, </span><span class="hl-identifier">d2month</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">d2day</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> &gt;= </span><span class="hl-identifier">d1</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> &lt;= </span><span class="hl-identifier">d2</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()) {
</span><span class="hl-identifier">renderer</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code">==</span><span class="hl-identifier">d2</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderStack</span><span class="hl-code">.</span><span class="hl-identifier">splice</span><span class="hl-brackets">(</span><span class="hl-identifier">s</span><span class="hl-code">,</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">WEEKDAY</span><span class="hl-code">:
</span><span class="hl-reserved">var </span><span class="hl-identifier">weekday</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDay</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-code"> == </span><span class="hl-identifier">weekday</span><span class="hl-brackets">) {
</span><span class="hl-identifier">renderer</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-reserved">case </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">MONTH</span><span class="hl-code">:
</span><span class="hl-identifier">month</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">][</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-code"> == </span><span class="hl-identifier">month</span><span class="hl-brackets">) {
</span><span class="hl-identifier">renderer</span><span class="hl-code"> = </span><span class="hl-identifier">rArray</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">renderer</span><span class="hl-brackets">) {
</span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">renderer</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">_indexOfSelectedFieldArray</span><span class="hl-brackets">([</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getFullYear</span><span class="hl-brackets">()</span><span class="hl-code">,</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getDate</span><span class="hl-brackets">()])</span><span class="hl-code"> &gt; -</span><span class="hl-number">1</span><span class="hl-brackets">) {
</span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">renderCellStyleSelected</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">mindate</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">mindate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">maxdate</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">maxdate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">mindate</span><span class="hl-brackets">) {
</span><span class="hl-identifier">mindate</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">clearTime</span><span class="hl-brackets">(</span><span class="hl-identifier">mindate</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">maxdate</span><span class="hl-brackets">) {
</span><span class="hl-identifier">maxdate</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">clearTime</span><span class="hl-brackets">(</span><span class="hl-identifier">maxdate</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(
(</span><span class="hl-identifier">mindate</span><span class="hl-code"> &amp;&amp; </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> &lt; </span><span class="hl-identifier">mindate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()))</span><span class="hl-code"> ||
</span><span class="hl-brackets">(</span><span class="hl-identifier">maxdate</span><span class="hl-code"> &amp;&amp; </span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> &gt; </span><span class="hl-identifier">maxdate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()))
) {
</span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">renderOutOfBoundsDate</span><span class="hl-code">;
</span><span class="hl-brackets">} </span><span class="hl-reserved">else </span><span class="hl-brackets">{
</span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">styleCellDefault</span><span class="hl-code">;
</span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code">=</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">renderCellDefault</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">x</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">x</span><span class="hl-code">&lt;</span><span class="hl-identifier">cellRenderers</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">x</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">ren</span><span class="hl-code"> = </span><span class="hl-identifier">cellRenderers</span><span class="hl-brackets">[</span><span class="hl-identifier">x</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">ren</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">((</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> || </span><span class="hl-reserved">this</span><span class="hl-brackets">)</span><span class="hl-code">,</span><span class="hl-identifier">workingDate</span><span class="hl-code">,</span><span class="hl-identifier">cell</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">STOP_RENDER</span><span class="hl-brackets">) {
</span><span class="hl-reserved">break</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">setTime</span><span class="hl-brackets">(</span><span class="hl-identifier">workingDate</span><span class="hl-code">.</span><span class="hl-identifier">getTime</span><span class="hl-brackets">()</span><span class="hl-code"> + </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">DateMath</span><span class="hl-code">.</span><span class="hl-identifier">ONE_DAY_MS</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">i</span><span class="hl-code"> &gt;= </span><span class="hl-number">0</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">i</span><span class="hl-code"> &lt;= </span><span class="hl-number">6</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_TOP</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">((</span><span class="hl-identifier">i</span><span class="hl-code"> % </span><span class="hl-number">7</span><span class="hl-brackets">)</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_LEFT</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(((</span><span class="hl-identifier">i</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> % </span><span class="hl-number">7</span><span class="hl-brackets">)</span><span class="hl-code"> === </span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cell</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CELL_RIGHT</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">var </span><span class="hl-identifier">postDays</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">postMonthDays</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">postDays</span><span class="hl-code"> &gt;= </span><span class="hl-number">7</span><span class="hl-code"> &amp;&amp; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">HIDE_BLANK_WEEKS</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">blankWeeks</span><span class="hl-code"> = </span><span class="hl-builtin">Math</span><span class="hl-code">.</span><span class="hl-identifier">floor</span><span class="hl-brackets">(</span><span class="hl-identifier">postDays</span><span class="hl-quotes">/</span><span class="hl-string">7);
for (var p=0;p&lt;blankWeeks;++p) {
postDays -= 7;
}
}
if (i &gt;= ((this.preMonthDays+postDays+this.monthDays)-7)) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_BOTTOM);
}
html[html.length] = tempDiv.innerHTML;
i++;
}
if (this.cfg.getProperty(&quot;SHOW_WEEK_FOOTER&quot;)) { html = this.renderRowFooter(weekNum, html); }
html[html.length] = '&lt;</span><span class="hl-quotes">/</span><span class="hl-identifier">tr</span><span class="hl-code">&gt;</span><span class="hl-quotes">'</span><span class="hl-string">;
}
}
html[html.length] = </span><span class="hl-quotes">'</span><span class="hl-code">&lt;</span><span class="hl-quotes">/</span><span class="hl-string">tbody&gt;';
return html;
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Renders the calendar footer</span><span class="hl-code">. </span><span class="hl-identifier">In the </span><span class="hl-reserved">default </span><span class="hl-identifier">implementation</span><span class="hl-code">, </span><span class="hl-identifier">there is</span><span class="hl-code">
* </span><span class="hl-identifier">no footer</span><span class="hl-code">.
* @</span><span class="hl-identifier">method renderFooter</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Array</span><span class="hl-brackets">} </span><span class="hl-identifier">html The current working HTML array</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">Array</span><span class="hl-brackets">} </span><span class="hl-identifier">The current working HTML array</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.renderFooter = function(html) { return html; };
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Renders the calendar after it has been configured</span><span class="hl-code">. </span><span class="hl-identifier">The render</span><span class="hl-brackets">() </span><span class="hl-identifier">method has a specific call chain that will execute</span><span class="hl-code">
* </span><span class="hl-identifier">when the method is called</span><span class="hl-code">: </span><span class="hl-identifier">renderHeader</span><span class="hl-code">, </span><span class="hl-identifier">renderBody</span><span class="hl-code">, </span><span class="hl-identifier">renderFooter</span><span class="hl-code">.
* </span><span class="hl-identifier">Refer to the documentation </span><span class="hl-reserved">for </span><span class="hl-identifier">those methods </span><span class="hl-reserved">for </span><span class="hl-identifier">information on</span><span class="hl-code">
* </span><span class="hl-identifier">individual render tasks</span><span class="hl-code">.
* @</span><span class="hl-identifier">method render</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.render = function() {
this.beforeRenderEvent.fire();
</span><span class="hl-quotes">//</span><span class="hl-string"> Find starting day of the current month
var workingDate = YAHOO.widget.DateMath.findMonthStart(this.cfg.getProperty(&quot;pagedate&quot;));
this.resetRenderers();
this.cellDates.length = 0;
YAHOO.util.Event.purgeElement(this.oDomContainer, true);
var html = [];
html[html.length] = '&lt;table cellSpacing=&quot;0&quot; class=&quot;' + this.Style.CSS_CALENDAR + ' y' + workingDate.getFullYear() + '&quot; id=&quot;' + this.id + '&quot;&gt;';
html = this.renderHeader(html);
html = this.renderBody(workingDate, html);
html = this.renderFooter(html);
html[html.length] = '&lt;</span><span class="hl-quotes">/</span><span class="hl-identifier">table</span><span class="hl-code">&gt;</span><span class="hl-quotes">'</span><span class="hl-string">;
this.oDomContainer.innerHTML = html.join(&quot;\n&quot;);
this.applyListeners();
this.cells = this.oDomContainer.getElementsByTagName(&quot;td&quot;);
this.cfg.refireEvent(&quot;title&quot;);
this.cfg.refireEvent(&quot;close&quot;);
this.cfg.refireEvent(&quot;iframe&quot;);
this.renderEvent.fire();
};
/**
* Applies the Calendar</span><span class="hl-quotes">'</span><span class="hl-identifier">s DOM listeners to applicable elements</span><span class="hl-code">.
* @</span><span class="hl-identifier">method applyListeners</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.applyListeners = function() {
var root = this.oDomContainer;
var cal = this.parent || this;
var linkLeft, linkRight;
linkLeft = YAHOO.util.Dom.getElementsByClassName(this.Style.CSS_NAV_LEFT, &quot;a&quot;, root);
linkRight = YAHOO.util.Dom.getElementsByClassName(this.Style.CSS_NAV_RIGHT, &quot;a&quot;, root);
if (linkLeft) {
this.linkLeft = linkLeft[0];
YAHOO.util.Event.addListener(this.linkLeft, &quot;mousedown&quot;, cal.previousMonth, cal, true);
}
if (linkRight) {
this.linkRight = linkRight[0];
YAHOO.util.Event.addListener(this.linkRight, &quot;mousedown&quot;, cal.nextMonth, cal, true);
}
if (this.domEventMap) {
var el,elements;
for (var cls in this.domEventMap) {
if (this.domEventMap.hasOwnProperty(cls)) {
var items = this.domEventMap[cls];
if (! (items instanceof Array)) {
items = [items];
}
for (var i=0;i&lt;items.length;i++) {
var item = items[i];
elements = YAHOO.util.Dom.getElementsByClassName(cls, item.tag, this.oDomContainer);
for (var c=0;c&lt;elements.length;c++) {
el = elements[c];
YAHOO.util.Event.addListener(el, item.event, item.handler, item.scope, item.correct );
}
}
}
}
}
YAHOO.util.Event.addListener(this.oDomContainer, &quot;click&quot;, this.doSelectCell, this);
YAHOO.util.Event.addListener(this.oDomContainer, &quot;mouseover&quot;, this.doCellMouseOver, this);
YAHOO.util.Event.addListener(this.oDomContainer, &quot;mouseout&quot;, this.doCellMouseOut, this);
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Retrieves the </span><span class="hl-builtin">Date </span><span class="hl-identifier">object </span><span class="hl-reserved">for </span><span class="hl-identifier">the specified Calendar cell</span><span class="hl-code">
* @</span><span class="hl-identifier">method getDateByCellId</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">String</span><span class="hl-brackets">} </span><span class="hl-identifier">id The id of the cell</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">The </span><span class="hl-builtin">Date </span><span class="hl-identifier">object </span><span class="hl-reserved">for </span><span class="hl-identifier">the specified Calendar cell</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.getDateByCellId = function(id) {
var date = this.getDateFieldsByCellId(id);
return new Date(date[0],date[1]-1,date[2]);
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Retrieves the </span><span class="hl-builtin">Date </span><span class="hl-identifier">object </span><span class="hl-reserved">for </span><span class="hl-identifier">the specified Calendar cell</span><span class="hl-code">
* @</span><span class="hl-identifier">method getDateFieldsByCellId</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">String</span><span class="hl-brackets">} </span><span class="hl-identifier">id The id of the cell</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">Array</span><span class="hl-brackets">} </span><span class="hl-identifier">The array of </span><span class="hl-builtin">Date </span><span class="hl-identifier">fields </span><span class="hl-reserved">for </span><span class="hl-identifier">the specified Calendar cell</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.getDateFieldsByCellId = function(id) {
id = id.toLowerCase().split(&quot;_cell&quot;)[1];
id = parseInt(id, 10);
return this.cellDates[id];
};
</span><span class="hl-quotes">//</span><span class="hl-string"> BEGIN BUILT-IN TABLE CELL RENDERERS
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Renders a cell that falls before the minimum date or after the maximum date</span><span class="hl-code">.
* </span><span class="hl-identifier">widget </span><span class="hl-reserved">class</span><span class="hl-code">.
* @</span><span class="hl-identifier">method renderOutOfBoundsDate</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">workingDate The current working </span><span class="hl-builtin">Date </span><span class="hl-identifier">object being used to generate the calendar</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-identifier">HTMLTableCellElement</span><span class="hl-brackets">} </span><span class="hl-identifier">cell The current working cell </span><span class="hl-reserved">in </span><span class="hl-identifier">the calendar</span><span class="hl-code">
* @</span><span class="hl-reserved">return </span><span class="hl-brackets">{</span><span class="hl-builtin">String</span><span class="hl-brackets">} </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">.</span><span class="hl-identifier">STOP_RENDER </span><span class="hl-reserved">if </span><span class="hl-identifier">rendering should stop </span><span class="hl-reserved">with this </span><span class="hl-identifier">style</span><span class="hl-code">, </span><span class="hl-reserved">null </span><span class="hl-identifier">or nothing </span><span class="hl-reserved">if </span><span class="hl-identifier">rendering</span><span class="hl-code">
* </span><span class="hl-identifier">should not be terminated</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.renderOutOfBoundsDate = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_OOB);
cell.innerHTML = workingDate.getDate();
return YAHOO.widget.Calendar.STOP_RENDER;
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Renders the row header </span><span class="hl-reserved">for </span><span class="hl-identifier">a week</span><span class="hl-code">.
* @</span><span class="hl-identifier">method renderRowHeader</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Number</span><span class="hl-brackets">} </span><span class="hl-identifier">weekNum The week number of the current row</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Array</span><span class="hl-brackets">} </span><span class="hl-identifier">cell The current working HTML array</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.renderRowHeader = function(weekNum, html) {
html[html.length] = '&lt;th class=&quot;calrowhead&quot;&gt;' + weekNum + '&lt;</span><span class="hl-quotes">/</span><span class="hl-identifier">th</span><span class="hl-code">&gt;</span><span class="hl-quotes">'</span><span class="hl-string">;
return html;
};
/**
* Renders the row footer for a week.
* @method renderRowFooter
* @param {Number} weekNum The week number of the current row
* @param {Array} cell The current working HTML array
*/
YAHOO.widget.Calendar.prototype.renderRowFooter = function(weekNum, html) {
html[html.length] = </span><span class="hl-quotes">'</span><span class="hl-code">&lt;</span><span class="hl-identifier">th </span><span class="hl-reserved">class</span><span class="hl-code">=</span><span class="hl-quotes">&quot;</span><span class="hl-string">calrowfoot</span><span class="hl-quotes">&quot;</span><span class="hl-code">&gt;</span><span class="hl-quotes">'</span><span class="hl-string"> + weekNum + </span><span class="hl-quotes">'</span><span class="hl-code">&lt;</span><span class="hl-quotes">/</span><span class="hl-string">th&gt;';
return html;
};
</span><span class="hl-quotes">/</span><span class="hl-code">**
* </span><span class="hl-identifier">Renders a single standard calendar cell </span><span class="hl-reserved">in </span><span class="hl-identifier">the calendar widget table</span><span class="hl-code">.
* </span><span class="hl-identifier">All logic </span><span class="hl-reserved">for </span><span class="hl-identifier">determining how a standard </span><span class="hl-reserved">default </span><span class="hl-identifier">cell will be rendered is</span><span class="hl-code">
* </span><span class="hl-identifier">encapsulated </span><span class="hl-reserved">in this </span><span class="hl-identifier">method</span><span class="hl-code">, </span><span class="hl-identifier">and must be accounted </span><span class="hl-reserved">for </span><span class="hl-identifier">when extending the</span><span class="hl-code">
* </span><span class="hl-identifier">widget </span><span class="hl-reserved">class</span><span class="hl-code">.
* @</span><span class="hl-identifier">method renderCellDefault</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-builtin">Date</span><span class="hl-brackets">} </span><span class="hl-identifier">workingDate The current working </span><span class="hl-builtin">Date </span><span class="hl-identifier">object being used to generate the calendar</span><span class="hl-code">
* @</span><span class="hl-identifier">param </span><span class="hl-brackets">{</span><span class="hl-identifier">HTMLTableCellElement</span><span class="hl-brackets">} </span><span class="hl-identifier">cell The current working cell </span><span class="hl-reserved">in </span><span class="hl-identifier">the calendar</span><span class="hl-code">
*</span><span class="hl-quotes">/</span><span class="hl-string">
YAHOO.widget.Calendar.prototype.renderCellDefault = function(workingDate, cell) {
cell.innerHTML = '&lt;a href=&quot;javascript:void(null);&quot; &gt;' + this.buildDayLabel(workingDate) + &quot;&lt;</span><span class="hl-quotes">/</span><span class="hl-identifier">a</span><span class="hl-code">&gt;</span><span class="hl-quotes">&quot;</span><span class="hl-string">;
};
/**
* Styles a selectable cell.
* @method styleCellDefault
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
*/
YAHOO.widget.Calendar.prototype.styleCellDefault = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_SELECTABLE);
};
/**
* Renders a single standard calendar cell using the CSS hightlight1 style
* @method renderCellStyleHighlight1
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
*/
YAHOO.widget.Calendar.prototype.renderCellStyleHighlight1 = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT1);
};
/**
* Renders a single standard calendar cell using the CSS hightlight2 style
* @method renderCellStyleHighlight2
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
*/
YAHOO.widget.Calendar.prototype.renderCellStyleHighlight2 = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT2);
};
/**
* Renders a single standard calendar cell using the CSS hightlight3 style
* @method renderCellStyleHighlight3
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
*/
YAHOO.widget.Calendar.prototype.renderCellStyleHighlight3 = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT3);
};
/**
* Renders a single standard calendar cell using the CSS hightlight4 style
* @method renderCellStyleHighlight4
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
*/
YAHOO.widget.Calendar.prototype.renderCellStyleHighlight4 = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT4);
};
/**
* Applies the default style used for rendering today's date to the current calendar cell
* @method renderCellStyleToday
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
*/
YAHOO.widget.Calendar.prototype.renderCellStyleToday = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_TODAY);
};
/**
* Applies the default style used for rendering selected dates to the current calendar cell
* @method renderCellStyleSelected
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
* @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
* should not be terminated
*/
YAHOO.widget.Calendar.prototype.renderCellStyleSelected = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_SELECTED);
};
/**
* Applies the default style used for rendering dates that are not a part of the current
* month (preceding or trailing the cells for the current month)
* @method renderCellNotThisMonth
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
* @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
* should not be terminated
*/
YAHOO.widget.Calendar.prototype.renderCellNotThisMonth = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_OOM);
cell.innerHTML=workingDate.getDate();
return YAHOO.widget.Calendar.STOP_RENDER;
};
/**
* Renders the current calendar cell as a non-selectable </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">black</span><span class="hl-code">-</span><span class="hl-identifier">out</span><span class="hl-quotes">&quot;</span><span class="hl-string"> date using the default
* restricted style.
* @method renderBodyCellRestricted
* @param {Date} workingDate The current working Date object being used to generate the calendar
* @param {HTMLTableCellElement} cell The current working cell in the calendar
* @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
* should not be terminated
*/
YAHOO.widget.Calendar.prototype.renderBodyCellRestricted = function(workingDate, cell) {
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL);
YAHOO.util.Dom.addClass(cell, this.Style.CSS_CELL_RESTRICTED);
cell.innerHTML=workingDate.getDate();
return YAHOO.widget.Calendar.STOP_RENDER;
};
// END BUILT-IN TABLE CELL RENDERERS
// BEGIN MONTH NAVIGATION METHODS
/**
* Adds the designated number of months to the current calendar month, and sets the current
* calendar page date to the new month.
* @method addMonths
* @param {Number} count The number of months to add to the current calendar
*/
YAHOO.widget.Calendar.prototype.addMonths = function(count) {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, YAHOO.widget.DateMath.add(this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">), YAHOO.widget.DateMath.MONTH, count));
this.resetRenderers();
this.changePageEvent.fire();
};
/**
* Subtracts the designated number of months from the current calendar month, and sets the current
* calendar page date to the new month.
* @method subtractMonths
* @param {Number} count The number of months to subtract from the current calendar
*/
YAHOO.widget.Calendar.prototype.subtractMonths = function(count) {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, YAHOO.widget.DateMath.subtract(this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">), YAHOO.widget.DateMath.MONTH, count));
this.resetRenderers();
this.changePageEvent.fire();
};
/**
* Adds the designated number of years to the current calendar, and sets the current
* calendar page date to the new month.
* @method addYears
* @param {Number} count The number of years to add to the current calendar
*/
YAHOO.widget.Calendar.prototype.addYears = function(count) {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, YAHOO.widget.DateMath.add(this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">), YAHOO.widget.DateMath.YEAR, count));
this.resetRenderers();
this.changePageEvent.fire();
};
/**
* Subtcats the designated number of years from the current calendar, and sets the current
* calendar page date to the new month.
* @method subtractYears
* @param {Number} count The number of years to subtract from the current calendar
*/
YAHOO.widget.Calendar.prototype.subtractYears = function(count) {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, YAHOO.widget.DateMath.subtract(this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">), YAHOO.widget.DateMath.YEAR, count));
this.resetRenderers();
this.changePageEvent.fire();
};
/**
* Navigates to the next month page in the calendar widget.
* @method nextMonth
*/
YAHOO.widget.Calendar.prototype.nextMonth = function() {
this.addMonths(1);
};
/**
* Navigates to the previous month page in the calendar widget.
* @method previousMonth
*/
YAHOO.widget.Calendar.prototype.previousMonth = function() {
this.subtractMonths(1);
};
/**
* Navigates to the next year in the currently selected month in the calendar widget.
* @method nextYear
*/
YAHOO.widget.Calendar.prototype.nextYear = function() {
this.addYears(1);
};
/**
* Navigates to the previous year in the currently selected month in the calendar widget.
* @method previousYear
*/
YAHOO.widget.Calendar.prototype.previousYear = function() {
this.subtractYears(1);
};
// END MONTH NAVIGATION METHODS
// BEGIN SELECTION METHODS
/**
* Resets the calendar widget to the originally selected month and year, and
* sets the calendar to the initial selection(s).
* @method reset
*/
YAHOO.widget.Calendar.prototype.reset = function() {
this.cfg.resetProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
this.cfg.resetProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
this.resetEvent.fire();
};
/**
* Clears the selected dates in the current calendar widget and sets the calendar
* to the current month and year.
* @method clear
*/
YAHOO.widget.Calendar.prototype.clear = function() {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, []);
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, new Date(this.today.getTime()));
this.clearEvent.fire();
};
/**
* 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.
* @method select
* @param {String/Date/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.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
YAHOO.widget.Calendar.prototype.select = function(date) {
this.beforeSelectEvent.fire();
var selected = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
var aToBeSelected = this._toFieldArray(date);
for (var a=0;a&lt;aToBeSelected.length;++a) {
var toSelect = aToBeSelected[a]; // For each date item in the list of dates we're trying to select
if (this._indexOfSelectedFieldArray(toSelect) == -1) { // not already selected?
selected[selected.length]=toSelect;
}
}
if (this.parent) {
this.parent.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
} else {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
}
this.selectEvent.fire(aToBeSelected);
return this.getSelectedDates();
};
/**
* Selects a date on the current calendar by referencing the index of the cell that should be selected.
* This method is used to easily select a single cell (usually with a mouse click) without having to do
* a full render. The selected style is applied to the cell directly.
* @method selectCell
* @param {Number} cellIndex The index of the cell to select in the current calendar.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
YAHOO.widget.Calendar.prototype.selectCell = function(cellIndex) {
this.beforeSelectEvent.fire();
var selected = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
var cell = this.cells[cellIndex];
var cellDate = this.cellDates[cellIndex];
var dCellDate = this._toDate(cellDate);
var selectDate = cellDate.concat();
selected[selected.length] = selectDate;
if (this.parent) {
this.parent.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
} else {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
}
this.renderCellStyleSelected(dCellDate,cell);
this.selectEvent.fire([selectDate]);
this.doCellMouseOut.call(cell, null, this);
return this.getSelectedDates();
};
/**
* 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.
* @method deselect
* @param {String/Date/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.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
YAHOO.widget.Calendar.prototype.deselect = function(date) {
this.beforeDeselectEvent.fire();
var selected = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
var aToBeSelected = this._toFieldArray(date);
for (var a=0;a&lt;aToBeSelected.length;++a) {
var toSelect = aToBeSelected[a]; // For each date item in the list of dates we're trying to select
var index = this._indexOfSelectedFieldArray(toSelect);
if (index != -1) {
selected.splice(index,1);
}
}
if (this.parent) {
this.parent.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
} else {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
}
this.deselectEvent.fire(aToBeSelected);
return this.getSelectedDates();
};
/**
* Deselects a date on the current calendar by referencing the index of the cell that should be deselected.
* This method is used to easily deselect a single cell (usually with a mouse click) without having to do
* a full render. The selected style is removed from the cell directly.
* @method deselectCell
* @param {Number} cellIndex The index of the cell to deselect in the current calendar.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
YAHOO.widget.Calendar.prototype.deselectCell = function(i) {
this.beforeDeselectEvent.fire();
var selected = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
var cell = this.cells[i];
var cellDate = this.cellDates[i];
var cellDateIndex = this._indexOfSelectedFieldArray(cellDate);
var dCellDate = this._toDate(cellDate);
var selectDate = cellDate.concat();
if (cellDateIndex &gt; -1) {
if (this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">).getMonth() == dCellDate.getMonth() &amp;&amp;
this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">).getFullYear() == dCellDate.getFullYear()) {
YAHOO.util.Dom.removeClass(cell, this.Style.CSS_CELL_SELECTED);
}
selected.splice(cellDateIndex, 1);
}
if (this.parent) {
this.parent.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
} else {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, selected);
}
this.deselectEvent.fire(selectDate);
return this.getSelectedDates();
};
/**
* Deselects all dates on the current calendar.
* @method deselectAll
* @return {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.
*/
YAHOO.widget.Calendar.prototype.deselectAll = function() {
this.beforeDeselectEvent.fire();
var selected = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
var count = selected.length;
var sel = selected.concat();
if (this.parent) {
this.parent.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, []);
} else {
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, []);
}
if (count &gt; 0) {
this.deselectEvent.fire(sel);
}
return this.getSelectedDates();
};
// END SELECTION METHODS
// BEGIN TYPE CONVERSION METHODS
/**
* Converts a date (either a JavaScript Date object, or a date string) to the internal data structure
* used to represent dates: [[yyyy,mm,dd],[yyyy,mm,dd]].
* @method _toFieldArray
* @private
* @param {String/Date/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.
* @return {Array[](Number[])} Array of date field arrays
*/
YAHOO.widget.Calendar.prototype._toFieldArray = function(date) {
var returnDate = [];
if (date instanceof Date) {
returnDate = [[date.getFullYear(), date.getMonth()+1, date.getDate()]];
} else if (typeof date == 'string') {
returnDate = this._parseDates(date);
} else if (date instanceof Array) {
for (var i=0;i&lt;date.length;++i) {
var d = date[i];
returnDate[returnDate.length] = [d.getFullYear(),d.getMonth()+1,d.getDate()];
}
}
return returnDate;
};
/**
* Converts a date field array [yyyy,mm,dd] to a JavaScript Date object.
* @method _toDate
* @private
* @param {Number[]} dateFieldArray The date field array to convert to a JavaScript Date.
* @return {Date} JavaScript Date object representing the date field array
*/
YAHOO.widget.Calendar.prototype._toDate = function(dateFieldArray) {
if (dateFieldArray instanceof Date) {
return dateFieldArray;
} else {
return new Date(dateFieldArray[0],dateFieldArray[1]-1,dateFieldArray[2]);
}
};
// END TYPE CONVERSION METHODS
// BEGIN UTILITY METHODS
/**
* Converts a date field array [yyyy,mm,dd] to a JavaScript Date object.
* @method _fieldArraysAreEqual
* @private
* @param {Number[]} array1 The first date field array to compare
* @param {Number[]} array2 The first date field array to compare
* @return {Boolean} The boolean that represents the equality of the two arrays
*/
YAHOO.widget.Calendar.prototype._fieldArraysAreEqual = function(array1, array2) {
var match = false;
if (array1[0]==array2[0]&amp;&amp;array1[1]==array2[1]&amp;&amp;array1[2]==array2[2]) {
match=true;
}
return match;
};
/**
* Gets the index of a date field array [yyyy,mm,dd] in the current list of selected dates.
* @method _indexOfSelectedFieldArray
* @private
* @param {Number[]} find The date field array to search for
* @return {Number} The index of the date field array within the collection of selected dates.
* -1 will be returned if the date is not found.
*/
YAHOO.widget.Calendar.prototype._indexOfSelectedFieldArray = function(find) {
var selected = -1;
var seldates = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
for (var s=0;s&lt;seldates.length;++s) {
var sArray = seldates[s];
if (find[0]==sArray[0]&amp;&amp;find[1]==sArray[1]&amp;&amp;find[2]==sArray[2]) {
selected = s;
break;
}
}
return selected;
};
/**
* Determines whether a given date is OOM (out of month).
* @method isDateOOM
* @param {Date} date The JavaScript Date object for which to check the OOM status
* @return {Boolean} true if the date is OOM
*/
YAHOO.widget.Calendar.prototype.isDateOOM = function(date) {
var isOOM = false;
if (date.getMonth() != this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">).getMonth()) {
isOOM = true;
}
return isOOM;
};
// END UTILITY METHODS
// BEGIN EVENT HANDLERS
/**
* Event executed before a date is selected in the calendar widget.
* @deprecated Event handlers for this event should be susbcribed to beforeSelectEvent.
*/
YAHOO.widget.Calendar.prototype.onBeforeSelect = function() {
if (this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">MULTI_SELECT</span><span class="hl-quotes">&quot;</span><span class="hl-string">) === false) {
if (this.parent) {
this.parent.callChildFunction(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">clearAllBodyCellStyles</span><span class="hl-quotes">&quot;</span><span class="hl-string">, this.Style.CSS_CELL_SELECTED);
this.parent.deselectAll();
} else {
this.clearAllBodyCellStyles(this.Style.CSS_CELL_SELECTED);
this.deselectAll();
}
}
};
/**
* Event executed when a date is selected in the calendar widget.
* @param {Array} selected An array of date field arrays representing which date or dates were selected. Example: [ [2006,8,6],[2006,8,7],[2006,8,8] ]
* @deprecated Event handlers for this event should be susbcribed to selectEvent.
*/
YAHOO.widget.Calendar.prototype.onSelect = function(selected) { };
/**
* Event executed before a date is deselected in the calendar widget.
* @deprecated Event handlers for this event should be susbcribed to beforeDeselectEvent.
*/
YAHOO.widget.Calendar.prototype.onBeforeDeselect = function() { };
/**
* Event executed when a date is deselected in the calendar widget.
* @param {Array} selected An array of date field arrays representing which date or dates were deselected. Example: [ [2006,8,6],[2006,8,7],[2006,8,8] ]
* @deprecated Event handlers for this event should be susbcribed to deselectEvent.
*/
YAHOO.widget.Calendar.prototype.onDeselect = function(deselected) { };
/**
* Event executed when the user navigates to a different calendar page.
* @deprecated Event handlers for this event should be susbcribed to changePageEvent.
*/
YAHOO.widget.Calendar.prototype.onChangePage = function() {
this.render();
};
/**
* Event executed when the calendar widget is rendered.
* @deprecated Event handlers for this event should be susbcribed to renderEvent.
*/
YAHOO.widget.Calendar.prototype.onRender = function() { };
/**
* Event executed when the calendar widget is reset to its original state.
* @deprecated Event handlers for this event should be susbcribed to resetEvemt.
*/
YAHOO.widget.Calendar.prototype.onReset = function() { this.render(); };
/**
* Event executed when the calendar widget is completely cleared to the current month with no selections.
* @deprecated Event handlers for this event should be susbcribed to clearEvent.
*/
YAHOO.widget.Calendar.prototype.onClear = function() { this.render(); };
/**
* Validates the calendar widget. This method has no default implementation
* and must be extended by subclassing the widget.
* @return Should return true if the widget validates, and false if
* it doesn't.
* @type Boolean
*/
YAHOO.widget.Calendar.prototype.validate = function() { return true; };
// END EVENT HANDLERS
// BEGIN DATE PARSE METHODS
/**
* Converts a date string to a date field array
* @private
* @param {String} sDate Date string. Valid formats are mm/dd and mm/dd/yyyy.
* @return A date field array representing the string passed to the method
* @type Array[](Number[])
*/
YAHOO.widget.Calendar.prototype._parseDate = function(sDate) {
var aDate = sDate.split(this.Locale.DATE_FIELD_DELIMITER);
var rArray;
if (aDate.length == 2) {
rArray = [aDate[this.Locale.MD_MONTH_POSITION-1],aDate[this.Locale.MD_DAY_POSITION-1]];
rArray.type = YAHOO.widget.Calendar.MONTH_DAY;
} else {
rArray = [aDate[this.Locale.MDY_YEAR_POSITION-1],aDate[this.Locale.MDY_MONTH_POSITION-1],aDate[this.Locale.MDY_DAY_POSITION-1]];
rArray.type = YAHOO.widget.Calendar.DATE;
}
for (var i=0;i&lt;rArray.length;i++) {
rArray[i] = parseInt(rArray[i], 10);
}
return rArray;
};
/**
* Converts a multi or single-date string to an array of date field arrays
* @private
* @param {String} sDates Date string with one or more comma-delimited dates. Valid formats are mm/dd, mm/dd/yyyy, mm/dd/yyyy-mm/dd/yyyy
* @return An array of date field arrays
* @type Array[](Number[])
*/
YAHOO.widget.Calendar.prototype._parseDates = function(sDates) {
var aReturn = [];
var aDates = sDates.split(this.Locale.DATE_DELIMITER);
for (var d=0;d&lt;aDates.length;++d) {
var sDate = aDates[d];
if (sDate.indexOf(this.Locale.DATE_RANGE_DELIMITER) != -1) {
// This is a range
var aRange = sDate.split(this.Locale.DATE_RANGE_DELIMITER);
var dateStart = this._parseDate(aRange[0]);
var dateEnd = this._parseDate(aRange[1]);
var fullRange = this._parseRange(dateStart, dateEnd);
aReturn = aReturn.concat(fullRange);
} else {
// This is not a range
var aDate = this._parseDate(sDate);
aReturn.push(aDate);
}
}
return aReturn;
};
/**
* Converts a date range to the full list of included dates
* @private
* @param {Number[]} startDate Date field array representing the first date in the range
* @param {Number[]} endDate Date field array representing the last date in the range
* @return An array of date field arrays
* @type Array[](Number[])
*/
YAHOO.widget.Calendar.prototype._parseRange = function(startDate, endDate) {
var dStart = new Date(startDate[0],startDate[1]-1,startDate[2]);
var dCurrent = YAHOO.widget.DateMath.add(new Date(startDate[0],startDate[1]-1,startDate[2]),YAHOO.widget.DateMath.DAY,1);
var dEnd = new Date(endDate[0], endDate[1]-1, endDate[2]);
var results = [];
results.push(startDate);
while (dCurrent.getTime() &lt;= dEnd.getTime()) {
results.push([dCurrent.getFullYear(),dCurrent.getMonth()+1,dCurrent.getDate()]);
dCurrent = YAHOO.widget.DateMath.add(dCurrent,YAHOO.widget.DateMath.DAY,1);
}
return results;
};
// END DATE PARSE METHODS
// BEGIN RENDERER METHODS
/**
* Resets the render stack of the current calendar to its original pre-render value.
*/
YAHOO.widget.Calendar.prototype.resetRenderers = function() {
this.renderStack = this._renderStack.concat();
};
/**
* Clears the inner HTML, CSS class and style information from the specified cell.
* @method clearElement
* @param {HTMLTableCellElement} The cell to clear
*/
YAHOO.widget.Calendar.prototype.clearElement = function(cell) {
cell.innerHTML = </span><span class="hl-quotes">&quot;</span><span class="hl-code">&amp;#</span><span class="hl-number">160</span><span class="hl-code">;</span><span class="hl-quotes">&quot;</span><span class="hl-string">;
cell.className=</span><span class="hl-quotes">&quot;&quot;</span><span class="hl-string">;
};
/**
* 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.
* @method addRenderer
* @param {String} sDates 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)
* @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
*/
YAHOO.widget.Calendar.prototype.addRenderer = function(sDates, fnRender) {
var aDates = this._parseDates(sDates);
for (var i=0;i&lt;aDates.length;++i) {
var aDate = aDates[i];
if (aDate.length == 2) { // this is either a range or a month/day combo
if (aDate[0] instanceof Array) { // this is a range
this._addRenderer(YAHOO.widget.Calendar.RANGE,aDate,fnRender);
} else { // this is a month/day combo
this._addRenderer(YAHOO.widget.Calendar.MONTH_DAY,aDate,fnRender);
}
} else if (aDate.length == 3) {
this._addRenderer(YAHOO.widget.Calendar.DATE,aDate,fnRender);
}
}
};
/**
* The private method used for adding cell renderers to the local render stack.
* This method is called by other methods that set the renderer type prior to the method call.
* @method _addRenderer
* @private
* @param {String} type The type string that indicates the type of date renderer being added.
* Values are YAHOO.widget.Calendar.DATE, YAHOO.widget.Calendar.MONTH_DAY, YAHOO.widget.Calendar.WEEKDAY,
* YAHOO.widget.Calendar.RANGE, YAHOO.widget.Calendar.MONTH
* @param {Array} aDates An array of dates used to construct the renderer. The format varies based
* on the renderer type
* @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
*/
YAHOO.widget.Calendar.prototype._addRenderer = function(type, aDates, fnRender) {
var add = [type,aDates,fnRender];
this.renderStack.unshift(add);
this._renderStack = this.renderStack.concat();
};
/**
* 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.
* @method addMonthRenderer
* @param {Number} month The month (1-12) to associate with this renderer
* @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
*/
YAHOO.widget.Calendar.prototype.addMonthRenderer = function(month, fnRender) {
this._addRenderer(YAHOO.widget.Calendar.MONTH,[month],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.
* @method addWeekdayRenderer
* @param {Number} weekday The weekday (0-6) to associate with this renderer
* @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
*/
YAHOO.widget.Calendar.prototype.addWeekdayRenderer = function(weekday, fnRender) {
this._addRenderer(YAHOO.widget.Calendar.WEEKDAY,[weekday],fnRender);
};
// END RENDERER METHODS
// BEGIN CSS METHODS
/**
* Removes all styles from all body cells in the current calendar table.
* @method clearAllBodyCellStyles
* @param {style} The CSS class name to remove from all calendar body cells
*/
YAHOO.widget.Calendar.prototype.clearAllBodyCellStyles = function(style) {
for (var c=0;c&lt;this.cells.length;++c) {
YAHOO.util.Dom.removeClass(this.cells[c],style);
}
};
// END CSS METHODS
// BEGIN GETTER/SETTER METHODS
/**
* Sets the calendar's month explicitly
* @method setMonth
* @param {Number} month The numeric month, from 0 (January) to 11 (December)
*/
YAHOO.widget.Calendar.prototype.setMonth = function(month) {
var current = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
current.setMonth(month);
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, current);
};
/**
* Sets the calendar's year explicitly.
* @method setYear
* @param {Number} year The numeric 4-digit year
*/
YAHOO.widget.Calendar.prototype.setYear = function(year) {
var current = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
current.setFullYear(year);
this.cfg.setProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, current);
};
/**
* Gets the list of currently selected dates from the calendar.
* @method getSelectedDates
* @return {Date[]} An array of currently selected JavaScript Date objects.
*/
YAHOO.widget.Calendar.prototype.getSelectedDates = function() {
var returnDates = [];
var selected = this.cfg.getProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">);
for (var d=0;d&lt;selected.length;++d) {
var dateArray = selected[d];
var date = new Date(dateArray[0],dateArray[1]-1,dateArray[2]);
returnDates.push(date);
}
returnDates.sort( function(a,b) { return a-b; } );
return returnDates;
};
/// END GETTER/SETTER METHODS ///
/**
* Hides the Calendar's outer container from view.
* @method hide
*/
YAHOO.widget.Calendar.prototype.hide = function() {
this.oDomContainer.style.display = </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">none</span><span class="hl-quotes">&quot;</span><span class="hl-string">;
};
/**
* Shows the Calendar's outer container.
* @method show
*/
YAHOO.widget.Calendar.prototype.show = function() {
this.oDomContainer.style.display = </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">block</span><span class="hl-quotes">&quot;</span><span class="hl-string">;
};
/**
* Returns a string representing the current browser.
* @property browser
* @type String
*/
YAHOO.widget.Calendar.prototype.browser = function() {
var ua = navigator.userAgent.toLowerCase();
if (ua.indexOf('opera')!=-1) { // Opera (check first in case of spoof)
return 'opera';
} else if (ua.indexOf('msie 7')!=-1) { // IE7
return 'ie7';
} else if (ua.indexOf('msie') !=-1) { // IE
return 'ie';
} else if (ua.indexOf('safari')!=-1) { // Safari (check before Gecko because it includes </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">like Gecko</span><span class="hl-quotes">&quot;</span><span class="hl-string">)
return 'safari';
} else if (ua.indexOf('gecko') != -1) { // Gecko
return 'gecko';
} else {
return false;
}
}();
/**
* Returns a string representation of the object.
* @method toString
* @return {String} A string representation of the Calendar object.
*/
YAHOO.widget.Calendar.prototype.toString = function() {
return </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Calendar </span><span class="hl-quotes">&quot;</span><span class="hl-string"> + this.id;
};
/**
* @namespace YAHOO.widget
* @class Calendar_Core
* @extends YAHOO.widget.Calendar
* @deprecated The old Calendar_Core class is no longer necessary.
*/
YAHOO.widget.Calendar_Core = YAHOO.widget.Calendar;
YAHOO.widget.Cal_Core = YAHOO.widget.Calendar;
/**
* 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 </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">cal1</span><span class="hl-quotes">&quot;</span><span class="hl-string"> and
* containerId of </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">cal1Container</span><span class="hl-quotes">&quot;</span><span class="hl-string">, the markup would be as follows:
* &lt;xmp&gt;
* &lt;div id=</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">cal1Container_0</span><span class="hl-quotes">&quot;</span><span class="hl-string">&gt;&lt;/div&gt;
* &lt;div id=</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">cal1Container_1</span><span class="hl-quotes">&quot;</span><span class="hl-string">&gt;&lt;/div&gt;
* &lt;/xmp&gt;
* The tables for the calendars (</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">cal1_0</span><span class="hl-quotes">&quot;</span><span class="hl-string"> and </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">cal1_1</span><span class="hl-quotes">&quot;</span><span class="hl-string">) will be inserted into those containers.
* @namespace YAHOO.widget
* @class CalendarGroup
* @constructor
* @param {String} id The id of the table element that will represent the calendar widget
* @param {String} containerId The id of the container div element that will wrap the calendar table
* @param {Object} config The configuration object containing the Calendar's arguments
*/
YAHOO.widget.CalendarGroup = function(id, containerId, config) {
if (arguments.length &gt; 0) {
this.init(id, containerId, config);
}
};
/**
* Initializes the calendar group. All subclasses must call this method in order for the
* group to be initialized properly.
* @method init
* @param {String} id The id of the table element that will represent the calendar widget
* @param {String} containerId The id of the container div element that will wrap the calendar table
* @param {Object} config The configuration object containing the Calendar's arguments
*/
YAHOO.widget.CalendarGroup.prototype.init = function(id, containerId, config) {
this.initEvents();
this.initStyles();
/**
* The collection of Calendar pages contained within the CalendarGroup
* @property pages
* @type YAHOO.widget.Calendar[]
*/
this.pages = [];
/**
* The unique id associated with the CalendarGroup
* @property id
* @type String
*/
this.id = id;
/**
* The unique id associated with the CalendarGroup container
* @property containerId
* @type String
*/
this.containerId = containerId;
/**
* The outer containing element for the CalendarGroup
* @property oDomContainer
* @type HTMLElement
*/
this.oDomContainer = document.getElementById(containerId);
YAHOO.util.Dom.addClass(this.oDomContainer, YAHOO.widget.CalendarGroup.CSS_CONTAINER);
YAHOO.util.Dom.addClass(this.oDomContainer, YAHOO.widget.CalendarGroup.CSS_MULTI_UP);
/**
* The Config object used to hold the configuration variables for the CalendarGroup
* @property cfg
* @type YAHOO.util.Config
*/
this.cfg = new YAHOO.util.Config(this);
/**
* The local object which contains the CalendarGroup's options
* @property Options
* @type Object
*/
this.Options = {};
/**
* The local object which contains the CalendarGroup's locale settings
* @property Locale
* @type Object
*/
this.Locale = {};
this.setupConfig();
if (config) {
this.cfg.applyConfig(config, true);
}
this.cfg.fireQueue();
// OPERA HACK FOR MISWRAPPED FLOATS
if (this.browser == </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">opera</span><span class="hl-quotes">&quot;</span><span class="hl-string">){
var fixWidth = function() {
var startW = this.oDomContainer.offsetWidth;
var w = 0;
for (var p=0;p&lt;this.pages.length;++p) {
var cal = this.pages[p];
w += cal.oDomContainer.offsetWidth;
}
if (w &gt; 0) {
this.oDomContainer.style.width = w + </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">px</span><span class="hl-quotes">&quot;</span><span class="hl-string">;
}
};
this.renderEvent.subscribe(fixWidth,this,true);
}
};
YAHOO.widget.CalendarGroup.prototype.setupConfig = function() {
/**
* The number of pages to include in the CalendarGroup. This value can only be set once, in the CalendarGroup's constructor arguments.
* @config pages
* @type Number
* @default 2
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pages</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:2, validator:this.cfg.checkNumber, handler:this.configPages } );
/**
* The month/year representing the current visible Calendar date (mm/yyyy)
* @config pagedate
* @type String
* @default today's date
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:new Date(), handler:this.configPageDate } );
/**
* The date or range of dates representing the current Calendar selection
* @config selected
* @type String
* @default []
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">selected</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:[], handler:this.delegateConfig } );
/**
* The title to display above the CalendarGroup's month header
* @config title
* @type String
* @default </span><span class="hl-quotes">&quot;&quot;</span><span class="hl-string">
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">title</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:</span><span class="hl-quotes">&quot;&quot;</span><span class="hl-string">, handler:this.configTitle } );
/**
* Whether or not a close button should be displayed for this CalendarGroup
* @config close
* @type Boolean
* @default false
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">close</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:false, handler:this.configClose } );
/**
* 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.
* @config iframe
* @type Boolean
* @default true
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">iframe</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:true, handler:this.delegateConfig, validator:this.cfg.checkBoolean } );
/**
* The minimum selectable date in the current Calendar (mm/dd/yyyy)
* @config mindate
* @type String
* @default null
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">mindate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:null, handler:this.delegateConfig } );
/**
* The maximum selectable date in the current Calendar (mm/dd/yyyy)
* @config maxdate
* @type String
* @default null
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">maxdate</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:null, handler:this.delegateConfig } );
// Options properties
/**
* True if the Calendar should allow multiple selections. False by default.
* @config MULTI_SELECT
* @type Boolean
* @default false
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">MULTI_SELECT</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:false, handler:this.delegateConfig, validator:this.cfg.checkBoolean } );
/**
* The weekday the week begins on. Default is 0 (Sunday).
* @config START_WEEKDAY
* @type number
* @default 0
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">START_WEEKDAY</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:0, handler:this.delegateConfig, validator:this.cfg.checkNumber } );
/**
* True if the Calendar should show weekday labels. True by default.
* @config SHOW_WEEKDAYS
* @type Boolean
* @default true
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">SHOW_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:true, handler:this.delegateConfig, validator:this.cfg.checkBoolean } );
/**
* True if the Calendar should show week row headers. False by default.
* @config SHOW_WEEK_HEADER
* @type Boolean
* @default false
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">SHOW_WEEK_HEADER</span><span class="hl-quotes">&quot;</span><span class="hl-string">,{ value:false, handler:this.delegateConfig, validator:this.cfg.checkBoolean } );
/**
* True if the Calendar should show week row footers. False by default.
* @config SHOW_WEEK_FOOTER
* @type Boolean
* @default false
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">SHOW_WEEK_FOOTER</span><span class="hl-quotes">&quot;</span><span class="hl-string">,{ value:false, handler:this.delegateConfig, validator:this.cfg.checkBoolean } );
/**
* True if the Calendar should suppress weeks that are not a part of the current month. False by default.
* @config HIDE_BLANK_WEEKS
* @type Boolean
* @default false
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">HIDE_BLANK_WEEKS</span><span class="hl-quotes">&quot;</span><span class="hl-string">,{ value:false, handler:this.delegateConfig, validator:this.cfg.checkBoolean } );
/**
* The image that should be used for the left navigation arrow.
* @config NAV_ARROW_LEFT
* @type String
* @default YAHOO.widget.Calendar.IMG_ROOT + </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">us</span><span class="hl-quotes">/</span><span class="hl-string">tr</span><span class="hl-quotes">/</span><span class="hl-identifier">callt</span><span class="hl-code">.</span><span class="hl-identifier">gif</span><span class="hl-quotes">&quot;</span><span class="hl-string">
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">NAV_ARROW_LEFT</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:YAHOO.widget.Calendar.IMG_ROOT + </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">us</span><span class="hl-quotes">/</span><span class="hl-string">tr</span><span class="hl-quotes">/</span><span class="hl-identifier">callt</span><span class="hl-code">.</span><span class="hl-identifier">gif</span><span class="hl-quotes">&quot;</span><span class="hl-string">, handler:this.delegateConfig } );
/**
* The image that should be used for the left navigation arrow.
* @config NAV_ARROW_RIGHT
* @type String
* @default YAHOO.widget.Calendar.IMG_ROOT + </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">us</span><span class="hl-quotes">/</span><span class="hl-string">tr</span><span class="hl-quotes">/</span><span class="hl-identifier">calrt</span><span class="hl-code">.</span><span class="hl-identifier">gif</span><span class="hl-quotes">&quot;</span><span class="hl-string">
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">NAV_ARROW_RIGHT</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:YAHOO.widget.Calendar.IMG_ROOT + </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">us</span><span class="hl-quotes">/</span><span class="hl-string">tr</span><span class="hl-quotes">/</span><span class="hl-identifier">calrt</span><span class="hl-code">.</span><span class="hl-identifier">gif</span><span class="hl-quotes">&quot;</span><span class="hl-string">, handler:this.delegateConfig } );
// Locale properties
/**
* The short month labels for the current locale.
* @config MONTHS_SHORT
* @type String[]
* @default [</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Jan</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Feb</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Mar</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Apr</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">May</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Jun</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Jul</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Aug</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sep</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Oct</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Nov</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Dec</span><span class="hl-quotes">&quot;</span><span class="hl-string">]
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">MONTHS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:[</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Jan</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Feb</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Mar</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Apr</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">May</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Jun</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Jul</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Aug</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sep</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Oct</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Nov</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Dec</span><span class="hl-quotes">&quot;</span><span class="hl-string">], handler:this.delegateConfig } );
/**
* The long month labels for the current locale.
* @config MONTHS_LONG
* @type String[]
* @default [</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">January</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">February</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">March</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">April</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">May</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">June</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">July</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">August</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">September</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">October</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">November</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">December</span><span class="hl-quotes">&quot;</span><span class="hl-string">
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">MONTHS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:[</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">January</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">February</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">March</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">April</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">May</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">June</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">July</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">August</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">September</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">October</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">November</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">December</span><span class="hl-quotes">&quot;</span><span class="hl-string">], handler:this.delegateConfig } );
/**
* The 1-character weekday labels for the current locale.
* @config WEEKDAYS_1CHAR
* @type String[]
* @default [</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">S</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">M</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">T</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">W</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">T</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">F</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">S</span><span class="hl-quotes">&quot;</span><span class="hl-string">]
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">WEEKDAYS_1CHAR</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:[</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">S</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">M</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">T</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">W</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">T</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">F</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">S</span><span class="hl-quotes">&quot;</span><span class="hl-string">], handler:this.delegateConfig } );
/**
* The short weekday labels for the current locale.
* @config WEEKDAYS_SHORT
* @type String[]
* @default [</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Su</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Mo</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Tu</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">We</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Th</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Fr</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sa</span><span class="hl-quotes">&quot;</span><span class="hl-string">]
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">WEEKDAYS_SHORT</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:[</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Su</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Mo</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Tu</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">We</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Th</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Fr</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sa</span><span class="hl-quotes">&quot;</span><span class="hl-string">], handler:this.delegateConfig } );
/**
* The medium weekday labels for the current locale.
* @config WEEKDAYS_MEDIUM
* @type String[]
* @default [</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sun</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Mon</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Tue</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Wed</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Thu</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Fri</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sat</span><span class="hl-quotes">&quot;</span><span class="hl-string">]
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">WEEKDAYS_MEDIUM</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:[</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sun</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Mon</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Tue</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Wed</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Thu</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Fri</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sat</span><span class="hl-quotes">&quot;</span><span class="hl-string">], handler:this.delegateConfig } );
/**
* The long weekday labels for the current locale.
* @config WEEKDAYS_LONG
* @type String[]
* @default [</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sunday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Monday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Tuesday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Wednesday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Thursday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Friday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Saturday</span><span class="hl-quotes">&quot;</span><span class="hl-string">]
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">WEEKDAYS_LONG</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:[</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Sunday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Monday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Tuesday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Wednesday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Thursday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Friday</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">Saturday</span><span class="hl-quotes">&quot;</span><span class="hl-string">], handler:this.delegateConfig } );
/**
* The setting that determines which length of month labels should be used. Possible values are </span><span class="hl-quotes">&quot;</span><span class="hl-reserved">short</span><span class="hl-quotes">&quot;</span><span class="hl-string"> and </span><span class="hl-quotes">&quot;</span><span class="hl-reserved">long</span><span class="hl-quotes">&quot;</span><span class="hl-string">.
* @config LOCALE_MONTHS
* @type String
* @default </span><span class="hl-quotes">&quot;</span><span class="hl-reserved">long</span><span class="hl-quotes">&quot;</span><span class="hl-string">
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">LOCALE_MONTHS</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:</span><span class="hl-quotes">&quot;</span><span class="hl-reserved">long</span><span class="hl-quotes">&quot;</span><span class="hl-string">, handler:this.delegateConfig } );
/**
* The setting that determines which length of weekday labels should be used. Possible values are </span><span class="hl-quotes">&quot;</span><span class="hl-number">1</span><span class="hl-reserved">char</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-reserved">short</span><span class="hl-quotes">&quot;</span><span class="hl-string">, </span><span class="hl-quotes">&quot;</span><span class="hl-identifier">medium</span><span class="hl-quotes">&quot;</span><span class="hl-string">, and </span><span class="hl-quotes">&quot;</span><span class="hl-reserved">long</span><span class="hl-quotes">&quot;</span><span class="hl-string">.
* @config LOCALE_WEEKDAYS
* @type String
* @default </span><span class="hl-quotes">&quot;</span><span class="hl-reserved">short</span><span class="hl-quotes">&quot;</span><span class="hl-string">
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">LOCALE_WEEKDAYS</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:</span><span class="hl-quotes">&quot;</span><span class="hl-reserved">short</span><span class="hl-quotes">&quot;</span><span class="hl-string">, handler:this.delegateConfig } );
/**
* The value used to delimit individual dates in a date string passed to various Calendar functions.
* @config DATE_DELIMITER
* @type String
* @default </span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-quotes">&quot;</span><span class="hl-string">
*/
this.cfg.addProperty(</span><span class="hl-quotes">&quot;</span><span class="hl-identifier">DATE_DELIMITER</span><span class="hl-quotes">&quot;</span><span class="hl-string">, { value:</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-quotes">&quot;</span><span class="hl-string">, handler:this.delegateConfig } );
/**
* The value used to delimit date fields in a date string passed to various Calendar functions.
* @config DATE_FIELD_DELIMITER
* @type String
* @default </span><span class="hl-quotes">&quot;/</span><span class="hl-string">&quot;
*</span><span class="hl-quotes">/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">DATE_FIELD_DELIMITER</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;</span><span class="hl-string">/</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The value used to delimit date ranges in a date string passed to various Calendar functions.
* @config DATE_RANGE_DELIMITER
* @type String
* @default &quot;-&quot;
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">DATE_RANGE_DELIMITER</span><span class="hl-quotes">&quot;</span><span class="hl-code">,</span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-quotes">&quot;</span><span class="hl-string">-</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the month in a month/year date string
* @config MY_MONTH_POSITION
* @type Number
* @default 1
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MY_MONTH_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the year in a month/year date string
* @config MY_YEAR_POSITION
* @type Number
* @default 2
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MY_YEAR_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">2</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the month in a month/day date string
* @config MD_MONTH_POSITION
* @type Number
* @default 1
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MD_MONTH_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the day in a month/year date string
* @config MD_DAY_POSITION
* @type Number
* @default 2
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MD_DAY_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">2</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the month in a month/day/year date string
* @config MDY_MONTH_POSITION
* @type Number
* @default 1
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MDY_MONTH_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">1</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the day in a month/day/year date string
* @config MDY_DAY_POSITION
* @type Number
* @default 2
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MDY_DAY_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">2</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The position of the year in a month/day/year date string
* @config MDY_YEAR_POSITION
* @type Number
* @default 3
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">addProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">MDY_YEAR_POSITION</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-brackets">{ </span><span class="hl-identifier">value</span><span class="hl-code">:</span><span class="hl-number">3</span><span class="hl-code">, </span><span class="hl-identifier">handler</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code">, </span><span class="hl-identifier">validator</span><span class="hl-code">:</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">checkNumber </span><span class="hl-brackets">} )</span><span class="hl-code">;
};
</span><span class="hl-comment">/**
* Initializes CalendarGroup's built-in CustomEvents
* @method initEvents
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">initEvents</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">me</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Proxy subscriber to subscribe to the CalendarGroup's child Calendars' CustomEvents
* @method sub
* @private
* @param {Function} fn The function to subscribe to this CustomEvent
* @param {Object} obj The CustomEvent's scope object
* @param {Boolean} bOverride Whether or not to apply scope correction
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">sub</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">fn</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-code">, </span><span class="hl-identifier">bOverride</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">type</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">Event</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">fn</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-code">, </span><span class="hl-identifier">bOverride</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Proxy unsubscriber to unsubscribe from the CalendarGroup's child Calendars' CustomEvents
* @method unsub
* @private
* @param {Function} fn The function to subscribe to this CustomEvent
* @param {Object} obj The CustomEvent's scope object
*/
</span><span class="hl-reserved">var </span><span class="hl-identifier">unsub</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">fn</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-identifier">me</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">type</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">Event</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">]</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-brackets">(</span><span class="hl-identifier">fn</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired before a selection is made
* @event beforeSelectEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeSelectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">beforeSelect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeSelectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeSelectEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when a selection is made
* @event selectEvent
* @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">selectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">select</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">selectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">selectEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired before a selection is made
* @event beforeDeselectEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeDeselectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">beforeDeselect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeDeselectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeDeselectEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when a selection is made
* @event deselectEvent
* @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">deselectEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">deselect</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">deselectEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">deselectEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar page is changed
* @event changePageEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">changePageEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">changePage</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">changePageEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">changePageEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired before the Calendar is rendered
* @event beforeRenderEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeRenderEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">beforeRender</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeRenderEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">beforeRenderEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar is rendered
* @event renderEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">render</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar is reset
* @event resetEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">resetEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">reset</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">resetEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">resetEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Fired when the Calendar is cleared
* @event clearEvent
*/
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearEvent</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">CustomEvent</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">clear</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearEvent</span><span class="hl-code">.</span><span class="hl-identifier">subscribe</span><span class="hl-code"> = </span><span class="hl-identifier">sub</span><span class="hl-code">; </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">clearEvent</span><span class="hl-code">.</span><span class="hl-identifier">unsubscribe</span><span class="hl-code"> = </span><span class="hl-identifier">unsub</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default Config handler for the &quot;pages&quot; property
* @method configPages
* @param {String} type The CustomEvent type (usually the property name)
* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
* @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configPages</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">pageCount</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-identifier">pageCount</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">calId</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">_</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">p</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">calContainerId</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">containerId</span><span class="hl-code"> + </span><span class="hl-quotes">&quot;</span><span class="hl-string">_</span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-identifier">p</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">childConfig</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getConfig</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-identifier">childConfig</span><span class="hl-code">.</span><span class="hl-identifier">close</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-identifier">childConfig</span><span class="hl-code">.</span><span class="hl-identifier">title</span><span class="hl-code"> = </span><span class="hl-reserved">false</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">constructChild</span><span class="hl-brackets">(</span><span class="hl-identifier">calId</span><span class="hl-code">, </span><span class="hl-identifier">calContainerId</span><span class="hl-code">, </span><span class="hl-identifier">childConfig</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">caldate</span><span class="hl-code"> = </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">caldate</span><span class="hl-code">.</span><span class="hl-identifier">setMonth</span><span class="hl-brackets">(</span><span class="hl-identifier">caldate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-identifier">p</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">caldate</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">removeClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">Style</span><span class="hl-code">.</span><span class="hl-identifier">CSS_SINGLE</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">groupcal</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">p</span><span class="hl-code">===</span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">first</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">p</span><span class="hl-code">==</span><span class="hl-brackets">(</span><span class="hl-identifier">pageCount</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-brackets">)) {
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">util</span><span class="hl-code">.</span><span class="hl-identifier">Dom</span><span class="hl-code">.</span><span class="hl-identifier">addClass</span><span class="hl-brackets">(</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">last</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">parent</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">index</span><span class="hl-code"> = </span><span class="hl-identifier">p</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">cal</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* The default Config handler for the &quot;pagedate&quot; property
* @method configPageDate
* @param {String} type The CustomEvent type (usually the property name)
* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
* @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">configPageDate</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">val</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">calDate</span><span class="hl-code"> = </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pagedate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">calDate</span><span class="hl-code">.</span><span class="hl-identifier">setMonth</span><span class="hl-brackets">(</span><span class="hl-identifier">calDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-identifier">p</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Delegates a configuration property to the CustomEvents associated with the CalendarGroup's children
* @method delegateConfig
* @param {String} type The CustomEvent type (usually the property name)
* @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
* @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">delegateConfig</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-code">, </span><span class="hl-identifier">obj</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">val</span><span class="hl-code"> = </span><span class="hl-identifier">args</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">++</span><span class="hl-brackets">) {
</span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">setProperty</span><span class="hl-brackets">(</span><span class="hl-identifier">type</span><span class="hl-code">, </span><span class="hl-identifier">val</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Adds a function to all child Calendars within this CalendarGroup.
* @method setChildFunction
* @param {String} fnName The name of the function
* @param {Function} fn The function to apply to each Calendar page object
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">setChildFunction</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">fnName</span><span class="hl-code">, </span><span class="hl-identifier">fn</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">pageCount</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pages</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-identifier">pageCount</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">][</span><span class="hl-identifier">fnName</span><span class="hl-brackets">]</span><span class="hl-code"> = </span><span class="hl-identifier">fn</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Calls a function within all child Calendars within this CalendarGroup.
* @method callChildFunction
* @param {String} fnName The name of the function
* @param {Array} args The arguments to pass to the function
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">callChildFunction</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">fnName</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">pageCount</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pages</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-identifier">pageCount</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">page</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-identifier">page</span><span class="hl-brackets">[</span><span class="hl-identifier">fnName</span><span class="hl-brackets">]) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">fn</span><span class="hl-code"> = </span><span class="hl-identifier">page</span><span class="hl-brackets">[</span><span class="hl-identifier">fnName</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">fn</span><span class="hl-code">.</span><span class="hl-identifier">call</span><span class="hl-brackets">(</span><span class="hl-identifier">page</span><span class="hl-code">, </span><span class="hl-identifier">args</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Constructs a child calendar. This method can be overridden if a subclassed version of the default
* calendar is to be used.
* @method constructChild
* @param {String} id The id of the table element that will represent the calendar widget
* @param {String} containerId The id of the container div element that will wrap the calendar table
* @param {Object} config The configuration object containing the Calendar's arguments
* @return {YAHOO.widget.Calendar} The YAHOO.widget.Calendar instance that is constructed
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">constructChild</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">id</span><span class="hl-code">,</span><span class="hl-identifier">containerId</span><span class="hl-code">,</span><span class="hl-identifier">config</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">container</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">getElementById</span><span class="hl-brackets">(</span><span class="hl-identifier">containerId</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">(</span><span class="hl-code">! </span><span class="hl-identifier">container</span><span class="hl-brackets">) {
</span><span class="hl-identifier">container</span><span class="hl-code"> = </span><span class="hl-builtin">document</span><span class="hl-code">.</span><span class="hl-identifier">createElement</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">div</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-identifier">container</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code"> = </span><span class="hl-identifier">containerId</span><span class="hl-code">;
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">oDomContainer</span><span class="hl-code">.</span><span class="hl-identifier">appendChild</span><span class="hl-brackets">(</span><span class="hl-identifier">container</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return new </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-brackets">(</span><span class="hl-identifier">id</span><span class="hl-code">,</span><span class="hl-identifier">containerId</span><span class="hl-code">,</span><span class="hl-identifier">config</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Sets the calendar group's month explicitly. This month will be set into the first
* @method setMonth
* page of the multi-page calendar, and all other months will be iterated appropriately.
* @param {Number} month The numeric month, from 0 (January) to 11 (December)
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">setMonth</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">month</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">setMonth</span><span class="hl-brackets">(</span><span class="hl-identifier">month</span><span class="hl-code">+</span><span class="hl-identifier">p</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Sets the calendar group's year explicitly. This year will be set into the first
* @method setYear
* page of the multi-page calendar, and all other months will be iterated appropriately.
* @param {Number} year The numeric 4-digit year
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">setYear</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">year</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">pageDate</span><span class="hl-code"> = </span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">pageDate</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">if </span><span class="hl-brackets">((</span><span class="hl-identifier">pageDate</span><span class="hl-code">.</span><span class="hl-identifier">getMonth</span><span class="hl-brackets">()</span><span class="hl-code">+</span><span class="hl-number">1</span><span class="hl-brackets">)</span><span class="hl-code"> == </span><span class="hl-number">1</span><span class="hl-code"> &amp;&amp; </span><span class="hl-identifier">p</span><span class="hl-code">&gt;</span><span class="hl-number">0</span><span class="hl-brackets">) {
</span><span class="hl-identifier">year</span><span class="hl-code">+=</span><span class="hl-number">1</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">setYear</span><span class="hl-brackets">(</span><span class="hl-identifier">year</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Calls the render function of all child calendars within the group.
* @method render
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">render</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderHeader</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">render</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">renderFooter</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* 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.
* @method select
* @param {String/Date/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.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">select</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">select</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">getSelectedDates</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Selects a date on the current calendar by referencing the index of the cell that should be selected.
* This method is used to easily select a single cell (usually with a mouse click) without having to do
* a full render. The selected style is applied to the cell directly.
* @method selectCell
* @param {Number} cellIndex The index of the cell to select in the current calendar.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">selectCell</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">cellIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">selectCell</span><span class="hl-brackets">(</span><span class="hl-identifier">cellIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">getSelectedDates</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* 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.
* @method deselect
* @param {String/Date/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.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">deselect</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">deselect</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">getSelectedDates</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Deselects all dates on the current calendar.
* @method deselectAll
* @return {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.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">deselectAll</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">deselectAll</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">getSelectedDates</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Deselects a date on the current calendar by referencing the index of the cell that should be deselected.
* This method is used to easily deselect a single cell (usually with a mouse click) without having to do
* a full render. The selected style is removed from the cell directly.
* @method deselectCell
* @param {Number} cellIndex The index of the cell to deselect in the current calendar.
* @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">deselectCell</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">cellIndex</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">deselectCell</span><span class="hl-brackets">(</span><span class="hl-identifier">cellIndex</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-reserved">return this</span><span class="hl-code">.</span><span class="hl-identifier">getSelectedDates</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Resets the calendar widget to the originally selected month and year, and
* sets the calendar to the initial selection(s).
* @method reset
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">reset</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">reset</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Clears the selected dates in the current calendar widget and sets the calendar
* to the current month and year.
* @method clear
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">clear</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Navigates to the next month page in the calendar widget.
* @method nextMonth
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">nextMonth</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">nextMonth</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Navigates to the previous month page in the calendar widget.
* @method previousMonth
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">previousMonth</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&gt;=</span><span class="hl-number">0</span><span class="hl-code">;--</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">previousMonth</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Navigates to the next year in the currently selected month in the calendar widget.
* @method nextYear
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">nextYear</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">nextYear</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Navigates to the previous year in the currently selected month in the calendar widget.
* @method previousYear
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">previousYear</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">previousYear</span><span class="hl-brackets">()</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Gets the list of currently selected dates from the calendar.
* @return An array of currently selected JavaScript Date objects.
* @type Date[]
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">getSelectedDates</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">var </span><span class="hl-identifier">returnDates</span><span class="hl-code"> = </span><span class="hl-brackets">[]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">selected</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">cfg</span><span class="hl-code">.</span><span class="hl-identifier">getProperty</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">selected</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">d</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">d</span><span class="hl-code">&lt;</span><span class="hl-identifier">selected</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">d</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">dateArray</span><span class="hl-code"> = </span><span class="hl-identifier">selected</span><span class="hl-brackets">[</span><span class="hl-identifier">d</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-reserved">var </span><span class="hl-identifier">date</span><span class="hl-code"> = </span><span class="hl-reserved">new </span><span class="hl-builtin">Date</span><span class="hl-brackets">(</span><span class="hl-identifier">dateArray</span><span class="hl-brackets">[</span><span class="hl-number">0</span><span class="hl-brackets">]</span><span class="hl-code">,</span><span class="hl-identifier">dateArray</span><span class="hl-brackets">[</span><span class="hl-number">1</span><span class="hl-brackets">]</span><span class="hl-code">-</span><span class="hl-number">1</span><span class="hl-code">,</span><span class="hl-identifier">dateArray</span><span class="hl-brackets">[</span><span class="hl-number">2</span><span class="hl-brackets">])</span><span class="hl-code">;
</span><span class="hl-identifier">returnDates</span><span class="hl-code">.</span><span class="hl-identifier">push</span><span class="hl-brackets">(</span><span class="hl-identifier">date</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
</span><span class="hl-identifier">returnDates</span><span class="hl-code">.</span><span class="hl-identifier">sort</span><span class="hl-brackets">( </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">a</span><span class="hl-code">,</span><span class="hl-identifier">b</span><span class="hl-brackets">) { </span><span class="hl-reserved">return </span><span class="hl-identifier">a</span><span class="hl-code">-</span><span class="hl-identifier">b</span><span class="hl-code">; </span><span class="hl-brackets">} )</span><span class="hl-code">;
</span><span class="hl-reserved">return </span><span class="hl-identifier">returnDates</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* 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.
* @method addRenderer
* @param {String} sDates 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)
* @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">addRenderer</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">sDates</span><span class="hl-code">, </span><span class="hl-identifier">fnRender</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">addRenderer</span><span class="hl-brackets">(</span><span class="hl-identifier">sDates</span><span class="hl-code">, </span><span class="hl-identifier">fnRender</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* 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.
* @method addMonthRenderer
* @param {Number} month The month (1-12) to associate with this renderer
* @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">addMonthRenderer</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">month</span><span class="hl-code">, </span><span class="hl-identifier">fnRender</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">addMonthRenderer</span><span class="hl-brackets">(</span><span class="hl-identifier">month</span><span class="hl-code">, </span><span class="hl-identifier">fnRender</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* 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.
* @method addWeekdayRenderer
* @param {Number} weekday The weekday (0-6) to associate with this renderer
* @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">addWeekdayRenderer</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">weekday</span><span class="hl-code">, </span><span class="hl-identifier">fnRender</span><span class="hl-brackets">) {
</span><span class="hl-reserved">for </span><span class="hl-brackets">(</span><span class="hl-reserved">var </span><span class="hl-identifier">p</span><span class="hl-code">=</span><span class="hl-number">0</span><span class="hl-code">;</span><span class="hl-identifier">p</span><span class="hl-code">&lt;</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-code">.</span><span class="hl-identifier">length</span><span class="hl-code">;++</span><span class="hl-identifier">p</span><span class="hl-brackets">) {
</span><span class="hl-reserved">var </span><span class="hl-identifier">cal</span><span class="hl-code"> = </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">pages</span><span class="hl-brackets">[</span><span class="hl-identifier">p</span><span class="hl-brackets">]</span><span class="hl-code">;
</span><span class="hl-identifier">cal</span><span class="hl-code">.</span><span class="hl-identifier">addWeekdayRenderer</span><span class="hl-brackets">(</span><span class="hl-identifier">weekday</span><span class="hl-code">, </span><span class="hl-identifier">fnRender</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}
}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Renders the header for the CalendarGroup.
* @method renderHeader
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">renderHeader</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Renders a footer for the 2-up calendar container. By default, this method is
* unimplemented.
* @method renderFooter
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">renderFooter</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Adds the designated number of months to the current calendar month, and sets the current
* calendar page date to the new month.
* @method addMonths
* @param {Number} count The number of months to add to the current calendar
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">addMonths</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">count</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">callChildFunction</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">addMonths</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">count</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Subtracts the designated number of months from the current calendar month, and sets the current
* calendar page date to the new month.
* @method subtractMonths
* @param {Number} count The number of months to subtract from the current calendar
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">subtractMonths</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">count</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">callChildFunction</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">subtractMonths</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">count</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Adds the designated number of years to the current calendar, and sets the current
* calendar page date to the new month.
* @method addYears
* @param {Number} count The number of years to add to the current calendar
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">addYears</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">count</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">callChildFunction</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">addYears</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">count</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Subtcats the designated number of years from the current calendar, and sets the current
* calendar page date to the new month.
* @method subtractYears
* @param {Number} count The number of years to subtract from the current calendar
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">subtractYears</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">count</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">callChildFunction</span><span class="hl-brackets">(</span><span class="hl-quotes">&quot;</span><span class="hl-string">subtractYears</span><span class="hl-quotes">&quot;</span><span class="hl-code">, </span><span class="hl-identifier">count</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-comment">/**
* CSS class representing the container for the calendar
* @property YAHOO.widget.CalendarGroup.CSS_CONTAINER
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_CONTAINER</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">yui-calcontainer</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* CSS class representing the container for the calendar
* @property YAHOO.widget.CalendarGroup.CSS_MULTI_UP
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_MULTI_UP</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">multi</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* CSS class representing the title for the 2-up calendar
* @property YAHOO.widget.CalendarGroup.CSS_2UPTITLE
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_2UPTITLE</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">title</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-comment">/**
* CSS class representing the close icon for the 2-up calendar
* @property YAHOO.widget.CalendarGroup.CSS_2UPCLOSE
* @static
* @final
* @type String
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">CSS_2UPCLOSE</span><span class="hl-code"> = </span><span class="hl-quotes">&quot;</span><span class="hl-string">close-icon</span><span class="hl-quotes">&quot;</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">augment</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar</span><span class="hl-code">, </span><span class="hl-quotes">&quot;</span><span class="hl-string">buildDayLabel</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">buildMonthLabel</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderOutOfBoundsDate</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderRowHeader</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderRowFooter</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellDefault</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">styleCellDefault</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellStyleHighlight1</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellStyleHighlight2</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellStyleHighlight3</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellStyleHighlight4</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellStyleToday</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellStyleSelected</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderCellNotThisMonth</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">renderBodyCellRestricted</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">initStyles</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">configTitle</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">configClose</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">hide</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">show</span><span class="hl-quotes">&quot;</span><span class="hl-code">,
</span><span class="hl-quotes">&quot;</span><span class="hl-string">browser</span><span class="hl-quotes">&quot;</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* Returns a string representation of the object.
* @method toString
* @return {String} A string representation of the CalendarGroup object.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">.</span><span class="hl-identifier">prototype</span><span class="hl-code">.</span><span class="hl-identifier">toString</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">() {
</span><span class="hl-reserved">return </span><span class="hl-quotes">&quot;</span><span class="hl-string">CalendarGroup </span><span class="hl-quotes">&quot;</span><span class="hl-code"> + </span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">id</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalGrp</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @class YAHOO.widget.Calendar2up
* @extends YAHOO.widget.CalendarGroup
* @deprecated The old Calendar2up class is no longer necessary, since CalendarGroup renders in a 2up view by default.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar2up</span><span class="hl-code"> = </span><span class="hl-reserved">function</span><span class="hl-brackets">(</span><span class="hl-identifier">id</span><span class="hl-code">, </span><span class="hl-identifier">containerId</span><span class="hl-code">, </span><span class="hl-identifier">config</span><span class="hl-brackets">) {
</span><span class="hl-reserved">this</span><span class="hl-code">.</span><span class="hl-identifier">init</span><span class="hl-brackets">(</span><span class="hl-identifier">id</span><span class="hl-code">, </span><span class="hl-identifier">containerId</span><span class="hl-code">, </span><span class="hl-identifier">config</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-brackets">}</span><span class="hl-code">;
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">extend</span><span class="hl-brackets">(</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar2up</span><span class="hl-code">, </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">CalendarGroup</span><span class="hl-brackets">)</span><span class="hl-code">;
</span><span class="hl-comment">/**
* @deprecated The old Calendar2up class is no longer necessary, since CalendarGroup renders in a 2up view by default.
*/
</span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Cal2up</span><span class="hl-code"> = </span><span class="hl-identifier">YAHOO</span><span class="hl-code">.</span><span class="hl-identifier">widget</span><span class="hl-code">.</span><span class="hl-identifier">Calendar2up</span><span class="hl-code">;</span></pre></div><hr>Copyright &copy; 2006 Jack Slocum. All rights reserved.</body></html>