annotate rhodecode/public/js/yui/calendar/calendar-debug.js @ 547:1e757ac98988

renamed project to rhodecode
author Marcin Kuzminski <marcin@python-works.com>
date Wed, 06 Oct 2010 03:18:16 +0200
parents pylons_app/public/js/yui/calendar/calendar-debug.js@564e40829f80
children 289ff43cc190
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2 Copyright (c) 2009, Yahoo! Inc. All rights reserved.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3 Code licensed under the BSD License:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4 http://developer.yahoo.net/yui/license.txt
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5 version: 2.8.0r4
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7 (function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
8
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
9 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
10 * Config is a utility used within an Object to allow the implementer to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
11 * maintain a list of local configuration properties and listen for changes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
12 * to those properties dynamically using CustomEvent. The initial values are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
13 * also maintained so that the configuration can be reset at any given point
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
14 * to its initial state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
15 * @namespace YAHOO.util
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
16 * @class Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
17 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
18 * @param {Object} owner The owner Object to which this Config Object belongs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
19 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
20 YAHOO.util.Config = function (owner) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
21
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
22 if (owner) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
23 this.init(owner);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
24 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
25
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
26 if (!owner) { YAHOO.log("No owner specified for Config object", "error", "Config"); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
27
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
28 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
29
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
30
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
31 var Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
32 CustomEvent = YAHOO.util.CustomEvent,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
33 Config = YAHOO.util.Config;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
34
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
35
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
36 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
37 * Constant representing the CustomEvent type for the config changed event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
38 * @property YAHOO.util.Config.CONFIG_CHANGED_EVENT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
39 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
40 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
41 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
42 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
43 Config.CONFIG_CHANGED_EVENT = "configChanged";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
44
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
45 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
46 * Constant representing the boolean type string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
47 * @property YAHOO.util.Config.BOOLEAN_TYPE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
48 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
49 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
50 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
51 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
52 Config.BOOLEAN_TYPE = "boolean";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
53
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
54 Config.prototype = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
55
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
56 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
57 * Object reference to the owner of this Config Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
58 * @property owner
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
59 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
60 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
61 owner: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
62
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
63 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
64 * Boolean flag that specifies whether a queue is currently
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
65 * being executed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
66 * @property queueInProgress
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
67 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
68 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
69 queueInProgress: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
70
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
71 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
72 * Maintains the local collection of configuration property objects and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
73 * their specified values
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
74 * @property config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
75 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
76 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
77 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
78 config: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
79
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
80 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
81 * Maintains the local collection of configuration property objects as
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
82 * they were initially applied.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
83 * This object is used when resetting a property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
84 * @property initialConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
85 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
86 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
87 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
88 initialConfig: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
89
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
90 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
91 * Maintains the local, normalized CustomEvent queue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
92 * @property eventQueue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
93 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
94 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
95 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
96 eventQueue: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
97
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
98 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
99 * Custom Event, notifying subscribers when Config properties are set
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
100 * (setProperty is called without the silent flag
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
101 * @event configChangedEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
102 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
103 configChangedEvent: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
104
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
105 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
106 * Initializes the configuration Object and all of its local members.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
107 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
108 * @param {Object} owner The owner Object to which this Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
109 * Object belongs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
110 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
111 init: function (owner) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
112
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
113 this.owner = owner;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
114
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
115 this.configChangedEvent =
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
116 this.createEvent(Config.CONFIG_CHANGED_EVENT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
117
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
118 this.configChangedEvent.signature = CustomEvent.LIST;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
119 this.queueInProgress = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
120 this.config = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
121 this.initialConfig = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
122 this.eventQueue = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
123
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
124 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
125
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
126 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
127 * Validates that the value passed in is a Boolean.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
128 * @method checkBoolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
129 * @param {Object} val The value to validate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
130 * @return {Boolean} true, if the value is valid
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
131 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
132 checkBoolean: function (val) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
133 return (typeof val == Config.BOOLEAN_TYPE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
134 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
135
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
136 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
137 * Validates that the value passed in is a number.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
138 * @method checkNumber
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
139 * @param {Object} val The value to validate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
140 * @return {Boolean} true, if the value is valid
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
141 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
142 checkNumber: function (val) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
143 return (!isNaN(val));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
144 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
145
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
146 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
147 * Fires a configuration property event using the specified value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
148 * @method fireEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
149 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
150 * @param {String} key The configuration property's name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
151 * @param {value} Object The value of the correct type for the property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
152 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
153 fireEvent: function ( key, value ) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
154 YAHOO.log("Firing Config event: " + key + "=" + value, "info", "Config");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
155 var property = this.config[key];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
156
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
157 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
158 property.event.fire(value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
159 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
160 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
161
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
162 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
163 * Adds a property to the Config Object's private config hash.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
164 * @method addProperty
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
165 * @param {String} key The configuration property's name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
166 * @param {Object} propertyObject The Object containing all of this
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
167 * property's arguments
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
168 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
169 addProperty: function ( key, propertyObject ) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
170 key = key.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
171 YAHOO.log("Added property: " + key, "info", "Config");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
172
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
173 this.config[key] = propertyObject;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
174
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
175 propertyObject.event = this.createEvent(key, { scope: this.owner });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
176 propertyObject.event.signature = CustomEvent.LIST;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
177
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
178
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
179 propertyObject.key = key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
180
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
181 if (propertyObject.handler) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
182 propertyObject.event.subscribe(propertyObject.handler,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
183 this.owner);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
184 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
185
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
186 this.setProperty(key, propertyObject.value, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
187
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
188 if (! propertyObject.suppressEvent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
189 this.queueProperty(key, propertyObject.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
190 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
191
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
192 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
193
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
194 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
195 * Returns a key-value configuration map of the values currently set in
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
196 * the Config Object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
197 * @method getConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
198 * @return {Object} The current config, represented in a key-value map
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
199 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
200 getConfig: function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
201
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
202 var cfg = {},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
203 currCfg = this.config,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
204 prop,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
205 property;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
206
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
207 for (prop in currCfg) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
208 if (Lang.hasOwnProperty(currCfg, prop)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
209 property = currCfg[prop];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
210 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
211 cfg[prop] = property.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
212 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
213 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
214 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
215
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
216 return cfg;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
217 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
218
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
219 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
220 * Returns the value of specified property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
221 * @method getProperty
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
222 * @param {String} key The name of the property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
223 * @return {Object} The value of the specified property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
224 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
225 getProperty: function (key) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
226 var property = this.config[key.toLowerCase()];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
227 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
228 return property.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
229 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
230 return undefined;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
231 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
232 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
233
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
234 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
235 * Resets the specified property's value to its initial value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
236 * @method resetProperty
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
237 * @param {String} key The name of the property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
238 * @return {Boolean} True is the property was reset, false if not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
239 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
240 resetProperty: function (key) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
241
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
242 key = key.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
243
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
244 var property = this.config[key];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
245
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
246 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
247
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
248 if (this.initialConfig[key] &&
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
249 !Lang.isUndefined(this.initialConfig[key])) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
250
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
251 this.setProperty(key, this.initialConfig[key]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
252
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
253 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
254
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
255 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
256
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
257 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
258
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
259 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
260 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
261
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
262 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
263
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
264 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
265 * Sets the value of a property. If the silent property is passed as
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
266 * true, the property's event will not be fired.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
267 * @method setProperty
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
268 * @param {String} key The name of the property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
269 * @param {String} value The value to set the property to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
270 * @param {Boolean} silent Whether the value should be set silently,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
271 * without firing the property event.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
272 * @return {Boolean} True, if the set was successful, false if it failed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
273 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
274 setProperty: function (key, value, silent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
275
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
276 var property;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
277
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
278 key = key.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
279 YAHOO.log("setProperty: " + key + "=" + value, "info", "Config");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
280
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
281 if (this.queueInProgress && ! silent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
282 // Currently running through a queue...
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
283 this.queueProperty(key,value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
284 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
285
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
286 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
287 property = this.config[key];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
288 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
289 if (property.validator && !property.validator(value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
290 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
291 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
292 property.value = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
293 if (! silent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
294 this.fireEvent(key, value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
295 this.configChangedEvent.fire([key, value]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
296 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
297 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
298 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
299 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
300 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
301 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
302 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
303 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
304
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
305 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
306 * Sets the value of a property and queues its event to execute. If the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
307 * event is already scheduled to execute, it is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
308 * moved from its current position to the end of the queue.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
309 * @method queueProperty
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
310 * @param {String} key The name of the property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
311 * @param {String} value The value to set the property to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
312 * @return {Boolean} true, if the set was successful, false if
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
313 * it failed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
314 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
315 queueProperty: function (key, value) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
316
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
317 key = key.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
318 YAHOO.log("queueProperty: " + key + "=" + value, "info", "Config");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
319
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
320 var property = this.config[key],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
321 foundDuplicate = false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
322 iLen,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
323 queueItem,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
324 queueItemKey,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
325 queueItemValue,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
326 sLen,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
327 supercedesCheck,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
328 qLen,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
329 queueItemCheck,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
330 queueItemCheckKey,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
331 queueItemCheckValue,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
332 i,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
333 s,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
334 q;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
335
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
336 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
337
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
338 if (!Lang.isUndefined(value) && property.validator &&
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
339 !property.validator(value)) { // validator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
340 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
341 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
342
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
343 if (!Lang.isUndefined(value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
344 property.value = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
345 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
346 value = property.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
347 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
348
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
349 foundDuplicate = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
350 iLen = this.eventQueue.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
351
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
352 for (i = 0; i < iLen; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
353 queueItem = this.eventQueue[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
354
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
355 if (queueItem) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
356 queueItemKey = queueItem[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
357 queueItemValue = queueItem[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
358
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
359 if (queueItemKey == key) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
360
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
361 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
362 found a dupe... push to end of queue, null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
363 current item, and break
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
364 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
365
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
366 this.eventQueue[i] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
367
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
368 this.eventQueue.push(
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
369 [key, (!Lang.isUndefined(value) ?
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
370 value : queueItemValue)]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
371
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
372 foundDuplicate = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
373 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
374 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
375 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
376 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
377
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
378 // this is a refire, or a new property in the queue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
379
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
380 if (! foundDuplicate && !Lang.isUndefined(value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
381 this.eventQueue.push([key, value]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
382 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
383 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
384
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
385 if (property.supercedes) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
386
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
387 sLen = property.supercedes.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
388
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
389 for (s = 0; s < sLen; s++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
390
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
391 supercedesCheck = property.supercedes[s];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
392 qLen = this.eventQueue.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
393
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
394 for (q = 0; q < qLen; q++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
395 queueItemCheck = this.eventQueue[q];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
396
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
397 if (queueItemCheck) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
398 queueItemCheckKey = queueItemCheck[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
399 queueItemCheckValue = queueItemCheck[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
400
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
401 if (queueItemCheckKey ==
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
402 supercedesCheck.toLowerCase() ) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
403
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
404 this.eventQueue.push([queueItemCheckKey,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
405 queueItemCheckValue]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
406
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
407 this.eventQueue[q] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
408 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
409
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
410 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
411 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
412 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
413 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
414 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
415
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
416 YAHOO.log("Config event queue: " + this.outputEventQueue(), "info", "Config");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
417
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
418 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
419 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
420 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
421 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
422 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
423
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
424 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
425 * Fires the event for a property using the property's current value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
426 * @method refireEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
427 * @param {String} key The name of the property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
428 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
429 refireEvent: function (key) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
430
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
431 key = key.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
432
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
433 var property = this.config[key];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
434
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
435 if (property && property.event &&
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
436
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
437 !Lang.isUndefined(property.value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
438
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
439 if (this.queueInProgress) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
440
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
441 this.queueProperty(key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
442
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
443 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
444
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
445 this.fireEvent(key, property.value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
446
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
447 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
448
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
449 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
450 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
451
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
452 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
453 * Applies a key-value Object literal to the configuration, replacing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
454 * any existing values, and queueing the property events.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
455 * Although the values will be set, fireQueue() must be called for their
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
456 * associated events to execute.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
457 * @method applyConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
458 * @param {Object} userConfig The configuration Object literal
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
459 * @param {Boolean} init When set to true, the initialConfig will
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
460 * be set to the userConfig passed in, so that calling a reset will
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
461 * reset the properties to the passed values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
462 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
463 applyConfig: function (userConfig, init) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
464
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
465 var sKey,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
466 oConfig;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
467
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
468 if (init) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
469 oConfig = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
470 for (sKey in userConfig) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
471 if (Lang.hasOwnProperty(userConfig, sKey)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
472 oConfig[sKey.toLowerCase()] = userConfig[sKey];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
473 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
474 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
475 this.initialConfig = oConfig;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
476 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
477
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
478 for (sKey in userConfig) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
479 if (Lang.hasOwnProperty(userConfig, sKey)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
480 this.queueProperty(sKey, userConfig[sKey]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
481 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
482 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
483 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
484
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
485 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
486 * Refires the events for all configuration properties using their
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
487 * current values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
488 * @method refresh
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
489 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
490 refresh: function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
491
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
492 var prop;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
493
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
494 for (prop in this.config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
495 if (Lang.hasOwnProperty(this.config, prop)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
496 this.refireEvent(prop);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
497 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
498 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
499 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
500
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
501 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
502 * Fires the normalized list of queued property change events
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
503 * @method fireQueue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
504 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
505 fireQueue: function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
506
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
507 var i,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
508 queueItem,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
509 key,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
510 value,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
511 property;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
512
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
513 this.queueInProgress = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
514 for (i = 0;i < this.eventQueue.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
515 queueItem = this.eventQueue[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
516 if (queueItem) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
517
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
518 key = queueItem[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
519 value = queueItem[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
520 property = this.config[key];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
521
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
522 property.value = value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
523
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
524 // Clear out queue entry, to avoid it being
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
525 // re-added to the queue by any queueProperty/supercedes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
526 // calls which are invoked during fireEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
527 this.eventQueue[i] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
528
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
529 this.fireEvent(key,value);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
530 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
531 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
532
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
533 this.queueInProgress = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
534 this.eventQueue = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
535 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
536
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
537 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
538 * Subscribes an external handler to the change event for any
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
539 * given property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
540 * @method subscribeToConfigEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
541 * @param {String} key The property name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
542 * @param {Function} handler The handler function to use subscribe to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
543 * the property's event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
544 * @param {Object} obj The Object to use for scoping the event handler
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
545 * (see CustomEvent documentation)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
546 * @param {Boolean} overrideContext Optional. If true, will override
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
547 * "this" within the handler to map to the scope Object passed into the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
548 * method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
549 * @return {Boolean} True, if the subscription was successful,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
550 * otherwise false.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
551 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
552 subscribeToConfigEvent: function (key, handler, obj, overrideContext) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
553
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
554 var property = this.config[key.toLowerCase()];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
555
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
556 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
557 if (!Config.alreadySubscribed(property.event, handler, obj)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
558 property.event.subscribe(handler, obj, overrideContext);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
559 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
560 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
561 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
562 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
563 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
564
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
565 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
566
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
567 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
568 * Unsubscribes an external handler from the change event for any
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
569 * given property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
570 * @method unsubscribeFromConfigEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
571 * @param {String} key The property name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
572 * @param {Function} handler The handler function to use subscribe to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
573 * the property's event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
574 * @param {Object} obj The Object to use for scoping the event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
575 * handler (see CustomEvent documentation)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
576 * @return {Boolean} True, if the unsubscription was successful,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
577 * otherwise false.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
578 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
579 unsubscribeFromConfigEvent: function (key, handler, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
580 var property = this.config[key.toLowerCase()];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
581 if (property && property.event) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
582 return property.event.unsubscribe(handler, obj);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
583 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
584 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
585 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
586 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
587
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
588 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
589 * Returns a string representation of the Config object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
590 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
591 * @return {String} The Config object in string format.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
592 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
593 toString: function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
594 var output = "Config";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
595 if (this.owner) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
596 output += " [" + this.owner.toString() + "]";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
597 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
598 return output;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
599 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
600
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
601 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
602 * Returns a string representation of the Config object's current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
603 * CustomEvent queue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
604 * @method outputEventQueue
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
605 * @return {String} The string list of CustomEvents currently queued
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
606 * for execution
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
607 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
608 outputEventQueue: function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
609
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
610 var output = "",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
611 queueItem,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
612 q,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
613 nQueue = this.eventQueue.length;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
614
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
615 for (q = 0; q < nQueue; q++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
616 queueItem = this.eventQueue[q];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
617 if (queueItem) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
618 output += queueItem[0] + "=" + queueItem[1] + ", ";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
619 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
620 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
621 return output;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
622 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
623
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
624 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
625 * Sets all properties to null, unsubscribes all listeners from each
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
626 * property's change event and all listeners from the configChangedEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
627 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
628 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
629 destroy: function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
630
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
631 var oConfig = this.config,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
632 sProperty,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
633 oProperty;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
634
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
635
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
636 for (sProperty in oConfig) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
637
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
638 if (Lang.hasOwnProperty(oConfig, sProperty)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
639
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
640 oProperty = oConfig[sProperty];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
641
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
642 oProperty.event.unsubscribeAll();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
643 oProperty.event = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
644
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
645 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
646
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
647 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
648
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
649 this.configChangedEvent.unsubscribeAll();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
650
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
651 this.configChangedEvent = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
652 this.owner = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
653 this.config = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
654 this.initialConfig = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
655 this.eventQueue = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
656
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
657 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
658
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
659 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
660
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
661
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
662
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
663 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
664 * Checks to determine if a particular function/Object pair are already
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
665 * subscribed to the specified CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
666 * @method YAHOO.util.Config.alreadySubscribed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
667 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
668 * @param {YAHOO.util.CustomEvent} evt The CustomEvent for which to check
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
669 * the subscriptions
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
670 * @param {Function} fn The function to look for in the subscribers list
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
671 * @param {Object} obj The execution scope Object for the subscription
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
672 * @return {Boolean} true, if the function/Object pair is already subscribed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
673 * to the CustomEvent passed in
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
674 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
675 Config.alreadySubscribed = function (evt, fn, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
676
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
677 var nSubscribers = evt.subscribers.length,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
678 subsc,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
679 i;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
680
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
681 if (nSubscribers > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
682 i = nSubscribers - 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
683 do {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
684 subsc = evt.subscribers[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
685 if (subsc && subsc.obj == obj && subsc.fn == fn) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
686 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
687 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
688 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
689 while (i--);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
690 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
691
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
692 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
693
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
694 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
695
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
696 YAHOO.lang.augmentProto(Config, YAHOO.util.EventProvider);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
697
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
698 }());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
699 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
700 * The datemath module provides utility methods for basic JavaScript Date object manipulation and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
701 * comparison.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
702 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
703 * @module datemath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
704 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
705
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
706 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
707 * YAHOO.widget.DateMath is used for simple date manipulation. The class is a static utility
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
708 * used for adding, subtracting, and comparing dates.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
709 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
710 * @class DateMath
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
711 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
712 YAHOO.widget.DateMath = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
713 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
714 * Constant field representing Day
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
715 * @property DAY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
716 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
717 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
718 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
719 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
720 DAY : "D",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
721
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
722 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
723 * Constant field representing Week
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
724 * @property WEEK
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
725 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
726 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
727 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
728 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
729 WEEK : "W",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
730
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
731 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
732 * Constant field representing Year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
733 * @property YEAR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
734 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
735 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
736 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
737 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
738 YEAR : "Y",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
739
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
740 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
741 * Constant field representing Month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
742 * @property MONTH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
743 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
744 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
745 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
746 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
747 MONTH : "M",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
748
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
749 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
750 * Constant field representing one day, in milliseconds
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
751 * @property ONE_DAY_MS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
752 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
753 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
754 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
755 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
756 ONE_DAY_MS : 1000*60*60*24,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
757
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
758 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
759 * Constant field representing the date in first week of January
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
760 * which identifies the first week of the year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
761 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
762 * In the U.S, Jan 1st is normally used based on a Sunday start of week.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
763 * ISO 8601, used widely throughout Europe, uses Jan 4th, based on a Monday start of week.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
764 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
765 * @property WEEK_ONE_JAN_DATE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
766 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
767 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
768 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
769 WEEK_ONE_JAN_DATE : 1,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
770
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
771 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
772 * Adds the specified amount of time to the this instance.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
773 * @method add
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
774 * @param {Date} date The JavaScript Date object to perform addition on
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
775 * @param {String} field The field constant to be used for performing addition.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
776 * @param {Number} amount The number of units (measured in the field constant) to add to the date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
777 * @return {Date} The resulting Date object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
778 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
779 add : function(date, field, amount) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
780 var d = new Date(date.getTime());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
781 switch (field) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
782 case this.MONTH:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
783 var newMonth = date.getMonth() + amount;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
784 var years = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
785
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
786 if (newMonth < 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
787 while (newMonth < 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
788 newMonth += 12;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
789 years -= 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
790 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
791 } else if (newMonth > 11) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
792 while (newMonth > 11) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
793 newMonth -= 12;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
794 years += 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
795 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
796 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
797
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
798 d.setMonth(newMonth);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
799 d.setFullYear(date.getFullYear() + years);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
800 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
801 case this.DAY:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
802 this._addDays(d, amount);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
803 // d.setDate(date.getDate() + amount);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
804 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
805 case this.YEAR:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
806 d.setFullYear(date.getFullYear() + amount);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
807 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
808 case this.WEEK:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
809 this._addDays(d, (amount * 7));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
810 // d.setDate(date.getDate() + (amount * 7));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
811 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
812 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
813 return d;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
814 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
815
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
816 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
817 * Private helper method to account for bug in Safari 2 (webkit < 420)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
818 * when Date.setDate(n) is called with n less than -128 or greater than 127.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
819 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
820 * Fix approach and original findings are available here:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
821 * http://brianary.blogspot.com/2006/03/safari-date-bug.html
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
822 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
823 * @method _addDays
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
824 * @param {Date} d JavaScript date object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
825 * @param {Number} nDays The number of days to add to the date object (can be negative)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
826 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
827 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
828 _addDays : function(d, nDays) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
829 if (YAHOO.env.ua.webkit && YAHOO.env.ua.webkit < 420) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
830 if (nDays < 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
831 // Ensure we don't go below -128 (getDate() is always 1 to 31, so we won't go above 127)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
832 for(var min = -128; nDays < min; nDays -= min) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
833 d.setDate(d.getDate() + min);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
834 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
835 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
836 // Ensure we don't go above 96 + 31 = 127
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
837 for(var max = 96; nDays > max; nDays -= max) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
838 d.setDate(d.getDate() + max);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
839 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
840 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
841 // nDays should be remainder between -128 and 96
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
842 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
843 d.setDate(d.getDate() + nDays);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
844 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
845
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
846 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
847 * Subtracts the specified amount of time from the this instance.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
848 * @method subtract
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
849 * @param {Date} date The JavaScript Date object to perform subtraction on
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
850 * @param {Number} field The this field constant to be used for performing subtraction.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
851 * @param {Number} amount The number of units (measured in the field constant) to subtract from the date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
852 * @return {Date} The resulting Date object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
853 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
854 subtract : function(date, field, amount) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
855 return this.add(date, field, (amount*-1));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
856 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
857
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
858 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
859 * Determines whether a given date is before another date on the calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
860 * @method before
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
861 * @param {Date} date The Date object to compare with the compare argument
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
862 * @param {Date} compareTo The Date object to use for the comparison
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
863 * @return {Boolean} true if the date occurs before the compared date; false if not.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
864 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
865 before : function(date, compareTo) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
866 var ms = compareTo.getTime();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
867 if (date.getTime() < ms) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
868 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
869 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
870 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
871 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
872 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
873
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
874 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
875 * Determines whether a given date is after another date on the calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
876 * @method after
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
877 * @param {Date} date The Date object to compare with the compare argument
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
878 * @param {Date} compareTo The Date object to use for the comparison
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
879 * @return {Boolean} true if the date occurs after the compared date; false if not.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
880 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
881 after : function(date, compareTo) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
882 var ms = compareTo.getTime();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
883 if (date.getTime() > ms) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
884 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
885 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
886 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
887 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
888 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
889
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
890 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
891 * Determines whether a given date is between two other dates on the calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
892 * @method between
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
893 * @param {Date} date The date to check for
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
894 * @param {Date} dateBegin The start of the range
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
895 * @param {Date} dateEnd The end of the range
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
896 * @return {Boolean} true if the date occurs between the compared dates; false if not.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
897 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
898 between : function(date, dateBegin, dateEnd) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
899 if (this.after(date, dateBegin) && this.before(date, dateEnd)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
900 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
901 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
902 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
903 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
904 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
905
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
906 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
907 * Retrieves a JavaScript Date object representing January 1 of any given year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
908 * @method getJan1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
909 * @param {Number} calendarYear The calendar year for which to retrieve January 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
910 * @return {Date} January 1 of the calendar year specified.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
911 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
912 getJan1 : function(calendarYear) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
913 return this.getDate(calendarYear,0,1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
914 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
915
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
916 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
917 * Calculates the number of days the specified date is from January 1 of the specified calendar year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
918 * Passing January 1 to this function would return an offset value of zero.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
919 * @method getDayOffset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
920 * @param {Date} date The JavaScript date for which to find the offset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
921 * @param {Number} calendarYear The calendar year to use for determining the offset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
922 * @return {Number} The number of days since January 1 of the given year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
923 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
924 getDayOffset : function(date, calendarYear) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
925 var beginYear = this.getJan1(calendarYear); // Find the start of the year. This will be in week 1.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
926
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
927 // Find the number of days the passed in date is away from the calendar year start
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
928 var dayOffset = Math.ceil((date.getTime()-beginYear.getTime()) / this.ONE_DAY_MS);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
929 return dayOffset;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
930 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
931
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
932 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
933 * Calculates the week number for the given date. Can currently support standard
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
934 * U.S. week numbers, based on Jan 1st defining the 1st week of the year, and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
935 * ISO8601 week numbers, based on Jan 4th defining the 1st week of the year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
936 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
937 * @method getWeekNumber
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
938 * @param {Date} date The JavaScript date for which to find the week number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
939 * @param {Number} firstDayOfWeek The index of the first day of the week (0 = Sun, 1 = Mon ... 6 = Sat).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
940 * Defaults to 0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
941 * @param {Number} janDate The date in the first week of January which defines week one for the year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
942 * Defaults to the value of YAHOO.widget.DateMath.WEEK_ONE_JAN_DATE, which is 1 (Jan 1st).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
943 * For the U.S, this is normally Jan 1st. ISO8601 uses Jan 4th to define the first week of the year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
944 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
945 * @return {Number} The number of the week containing the given date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
946 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
947 getWeekNumber : function(date, firstDayOfWeek, janDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
948
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
949 // Setup Defaults
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
950 firstDayOfWeek = firstDayOfWeek || 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
951 janDate = janDate || this.WEEK_ONE_JAN_DATE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
952
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
953 var targetDate = this.clearTime(date),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
954 startOfWeek,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
955 endOfWeek;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
956
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
957 if (targetDate.getDay() === firstDayOfWeek) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
958 startOfWeek = targetDate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
959 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
960 startOfWeek = this.getFirstDayOfWeek(targetDate, firstDayOfWeek);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
961 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
962
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
963 var startYear = startOfWeek.getFullYear();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
964
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
965 // DST shouldn't be a problem here, math is quicker than setDate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
966 endOfWeek = new Date(startOfWeek.getTime() + 6*this.ONE_DAY_MS);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
967
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
968 var weekNum;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
969 if (startYear !== endOfWeek.getFullYear() && endOfWeek.getDate() >= janDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
970 // If years don't match, endOfWeek is in Jan. and if the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
971 // week has WEEK_ONE_JAN_DATE in it, it's week one by definition.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
972 weekNum = 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
973 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
974 // Get the 1st day of the 1st week, and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
975 // find how many days away we are from it.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
976 var weekOne = this.clearTime(this.getDate(startYear, 0, janDate)),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
977 weekOneDayOne = this.getFirstDayOfWeek(weekOne, firstDayOfWeek);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
978
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
979 // Round days to smoothen out 1 hr DST diff
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
980 var daysDiff = Math.round((targetDate.getTime() - weekOneDayOne.getTime())/this.ONE_DAY_MS);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
981
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
982 // Calc. Full Weeks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
983 var rem = daysDiff % 7;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
984 var weeksDiff = (daysDiff - rem)/7;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
985 weekNum = weeksDiff + 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
986 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
987 return weekNum;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
988 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
989
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
990 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
991 * Get the first day of the week, for the give date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
992 * @param {Date} dt The date in the week for which the first day is required.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
993 * @param {Number} startOfWeek The index for the first day of the week, 0 = Sun, 1 = Mon ... 6 = Sat (defaults to 0)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
994 * @return {Date} The first day of the week
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
995 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
996 getFirstDayOfWeek : function (dt, startOfWeek) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
997 startOfWeek = startOfWeek || 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
998 var dayOfWeekIndex = dt.getDay(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
999 dayOfWeek = (dayOfWeekIndex - startOfWeek + 7) % 7;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1000
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1001 return this.subtract(dt, this.DAY, dayOfWeek);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1002 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1003
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1004 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1005 * Determines if a given week overlaps two different years.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1006 * @method isYearOverlapWeek
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1007 * @param {Date} weekBeginDate The JavaScript Date representing the first day of the week.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1008 * @return {Boolean} true if the date overlaps two different years.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1009 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1010 isYearOverlapWeek : function(weekBeginDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1011 var overlaps = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1012 var nextWeek = this.add(weekBeginDate, this.DAY, 6);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1013 if (nextWeek.getFullYear() != weekBeginDate.getFullYear()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1014 overlaps = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1015 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1016 return overlaps;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1017 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1018
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1019 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1020 * Determines if a given week overlaps two different months.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1021 * @method isMonthOverlapWeek
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1022 * @param {Date} weekBeginDate The JavaScript Date representing the first day of the week.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1023 * @return {Boolean} true if the date overlaps two different months.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1024 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1025 isMonthOverlapWeek : function(weekBeginDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1026 var overlaps = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1027 var nextWeek = this.add(weekBeginDate, this.DAY, 6);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1028 if (nextWeek.getMonth() != weekBeginDate.getMonth()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1029 overlaps = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1030 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1031 return overlaps;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1032 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1033
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1034 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1035 * Gets the first day of a month containing a given date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1036 * @method findMonthStart
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1037 * @param {Date} date The JavaScript Date used to calculate the month start
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1038 * @return {Date} The JavaScript Date representing the first day of the month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1039 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1040 findMonthStart : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1041 var start = this.getDate(date.getFullYear(), date.getMonth(), 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1042 return start;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1043 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1044
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1045 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1046 * Gets the last day of a month containing a given date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1047 * @method findMonthEnd
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1048 * @param {Date} date The JavaScript Date used to calculate the month end
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1049 * @return {Date} The JavaScript Date representing the last day of the month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1050 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1051 findMonthEnd : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1052 var start = this.findMonthStart(date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1053 var nextMonth = this.add(start, this.MONTH, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1054 var end = this.subtract(nextMonth, this.DAY, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1055 return end;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1056 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1057
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1058 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1059 * Clears the time fields from a given date, effectively setting the time to 12 noon.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1060 * @method clearTime
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1061 * @param {Date} date The JavaScript Date for which the time fields will be cleared
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1062 * @return {Date} The JavaScript Date cleared of all time fields
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1063 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1064 clearTime : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1065 date.setHours(12,0,0,0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1066 return date;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1067 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1068
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1069 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1070 * Returns a new JavaScript Date object, representing the given year, month and date. Time fields (hr, min, sec, ms) on the new Date object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1071 * are set to 0. The method allows Date instances to be created with the a year less than 100. "new Date(year, month, date)" implementations
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1072 * set the year to 19xx if a year (xx) which is less than 100 is provided.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1073 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1074 * <em>NOTE:</em>Validation on argument values is not performed. It is the caller's responsibility to ensure
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1075 * arguments are valid as per the ECMAScript-262 Date object specification for the new Date(year, month[, date]) constructor.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1076 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1077 * @method getDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1078 * @param {Number} y Year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1079 * @param {Number} m Month index from 0 (Jan) to 11 (Dec).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1080 * @param {Number} d (optional) Date from 1 to 31. If not provided, defaults to 1.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1081 * @return {Date} The JavaScript date object with year, month, date set as provided.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1082 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1083 getDate : function(y, m, d) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1084 var dt = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1085 if (YAHOO.lang.isUndefined(d)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1086 d = 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1087 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1088 if (y >= 100) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1089 dt = new Date(y, m, d);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1090 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1091 dt = new Date();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1092 dt.setFullYear(y);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1093 dt.setMonth(m);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1094 dt.setDate(d);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1095 dt.setHours(0,0,0,0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1096 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1097 return dt;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1098 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1099 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1100 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1101 * The Calendar component is a UI control that enables users to choose one or more dates from a graphical calendar presented in a one-month or
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1102 * multi-month interface. Calendars are generated entirely via script and can be navigated without any page refreshes.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1103 * @module calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1104 * @title Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1105 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1106 * @requires yahoo,dom,event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1107 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1108 (function(){
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1109
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1110 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1111 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1112 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1113 DateMath = YAHOO.widget.DateMath;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1114
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1115 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1116 * Calendar is the base class for the Calendar widget. In its most basic
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1117 * implementation, it has the ability to render a calendar widget on the page
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1118 * that can be manipulated to select a single date, move back and forth between
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1119 * months and years.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1120 * <p>To construct the placeholder for the calendar widget, the code is as
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1121 * follows:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1122 * <xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1123 * <div id="calContainer"></div>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1124 * </xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1125 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1126 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1127 * <strong>NOTE: As of 2.4.0, the constructor's ID argument is optional.</strong>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1128 * The Calendar can be constructed by simply providing a container ID string,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1129 * or a reference to a container DIV HTMLElement (the element needs to exist
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1130 * in the document).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1131 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1132 * E.g.:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1133 * <xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1134 * var c = new YAHOO.widget.Calendar("calContainer", configOptions);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1135 * </xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1136 * or:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1137 * <xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1138 * var containerDiv = YAHOO.util.Dom.get("calContainer");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1139 * var c = new YAHOO.widget.Calendar(containerDiv, configOptions);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1140 * </xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1141 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1142 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1143 * If not provided, the ID will be generated from the container DIV ID by adding an "_t" suffix.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1144 * For example if an ID is not provided, and the container's ID is "calContainer", the Calendar's ID will be set to "calContainer_t".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1145 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1146 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1147 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1148 * @class Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1149 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1150 * @param {String} id optional The id of the table element that will represent the Calendar widget. As of 2.4.0, this argument is optional.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1151 * @param {String | HTMLElement} container The id of the container div element that will wrap the Calendar table, or a reference to a DIV element which exists in the document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1152 * @param {Object} config optional The configuration object containing the initial configuration values for the Calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1153 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1154 function Calendar(id, containerId, config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1155 this.init.apply(this, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1156 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1157
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1158 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1159 * The path to be used for images loaded for the Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1160 * @property YAHOO.widget.Calendar.IMG_ROOT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1161 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1162 * @deprecated You can now customize images by overriding the calclose, calnavleft and calnavright default CSS classes for the close icon, left arrow and right arrow respectively
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1163 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1164 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1165 Calendar.IMG_ROOT = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1166
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1167 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1168 * Type constant used for renderers to represent an individual date (M/D/Y)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1169 * @property YAHOO.widget.Calendar.DATE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1170 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1171 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1172 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1173 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1174 Calendar.DATE = "D";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1175
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1176 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1177 * Type constant used for renderers to represent an individual date across any year (M/D)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1178 * @property YAHOO.widget.Calendar.MONTH_DAY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1179 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1180 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1181 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1182 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1183 Calendar.MONTH_DAY = "MD";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1184
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1185 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1186 * Type constant used for renderers to represent a weekday
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1187 * @property YAHOO.widget.Calendar.WEEKDAY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1188 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1189 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1190 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1191 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1192 Calendar.WEEKDAY = "WD";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1193
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1194 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1195 * Type constant used for renderers to represent a range of individual dates (M/D/Y-M/D/Y)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1196 * @property YAHOO.widget.Calendar.RANGE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1197 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1198 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1199 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1200 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1201 Calendar.RANGE = "R";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1202
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1203 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1204 * Type constant used for renderers to represent a month across any year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1205 * @property YAHOO.widget.Calendar.MONTH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1206 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1207 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1208 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1209 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1210 Calendar.MONTH = "M";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1211
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1212 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1213 * Constant that represents the total number of date cells that are displayed in a given month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1214 * @property YAHOO.widget.Calendar.DISPLAY_DAYS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1215 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1216 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1217 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1218 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1219 Calendar.DISPLAY_DAYS = 42;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1220
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1221 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1222 * Constant used for halting the execution of the remainder of the render stack
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1223 * @property YAHOO.widget.Calendar.STOP_RENDER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1224 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1225 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1226 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1227 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1228 Calendar.STOP_RENDER = "S";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1229
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1230 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1231 * Constant used to represent short date field string formats (e.g. Tu or Feb)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1232 * @property YAHOO.widget.Calendar.SHORT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1233 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1234 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1235 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1236 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1237 Calendar.SHORT = "short";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1238
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1239 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1240 * Constant used to represent long date field string formats (e.g. Monday or February)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1241 * @property YAHOO.widget.Calendar.LONG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1242 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1243 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1244 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1245 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1246 Calendar.LONG = "long";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1247
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1248 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1249 * Constant used to represent medium date field string formats (e.g. Mon)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1250 * @property YAHOO.widget.Calendar.MEDIUM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1251 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1252 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1253 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1254 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1255 Calendar.MEDIUM = "medium";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1256
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1257 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1258 * Constant used to represent single character date field string formats (e.g. M, T, W)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1259 * @property YAHOO.widget.Calendar.ONE_CHAR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1260 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1261 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1262 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1263 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1264 Calendar.ONE_CHAR = "1char";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1265
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1266 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1267 * The set of default Config property keys and values for the Calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1268 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1269 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1270 * NOTE: This property is made public in order to allow users to change
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1271 * the default values of configuration properties. Users should not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1272 * modify the key string, unless they are overriding the Calendar implementation
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1273 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1274 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1275 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1276 * The property is an object with key/value pairs, the key being the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1277 * uppercase configuration property name and the value being an object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1278 * literal with a key string property, and a value property, specifying the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1279 * default value of the property. To override a default value, you can set
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1280 * the value property, for example, <code>YAHOO.widget.Calendar.DEFAULT_CONFIG.MULTI_SELECT.value = true;</code>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1281 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1282 * @property YAHOO.widget.Calendar.DEFAULT_CONFIG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1283 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1284 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1285 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1286
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1287 Calendar.DEFAULT_CONFIG = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1288 YEAR_OFFSET : {key:"year_offset", value:0, supercedes:["pagedate", "selected", "mindate","maxdate"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1289 TODAY : {key:"today", value:new Date(), supercedes:["pagedate"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1290 PAGEDATE : {key:"pagedate", value:null},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1291 SELECTED : {key:"selected", value:[]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1292 TITLE : {key:"title", value:""},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1293 CLOSE : {key:"close", value:false},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1294 IFRAME : {key:"iframe", value:(YAHOO.env.ua.ie && YAHOO.env.ua.ie <= 6) ? true : false},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1295 MINDATE : {key:"mindate", value:null},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1296 MAXDATE : {key:"maxdate", value:null},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1297 MULTI_SELECT : {key:"multi_select", value:false},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1298 START_WEEKDAY : {key:"start_weekday", value:0},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1299 SHOW_WEEKDAYS : {key:"show_weekdays", value:true},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1300 SHOW_WEEK_HEADER : {key:"show_week_header", value:false},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1301 SHOW_WEEK_FOOTER : {key:"show_week_footer", value:false},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1302 HIDE_BLANK_WEEKS : {key:"hide_blank_weeks", value:false},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1303 NAV_ARROW_LEFT: {key:"nav_arrow_left", value:null} ,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1304 NAV_ARROW_RIGHT : {key:"nav_arrow_right", value:null} ,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1305 MONTHS_SHORT : {key:"months_short", value:["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1306 MONTHS_LONG: {key:"months_long", value:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1307 WEEKDAYS_1CHAR: {key:"weekdays_1char", value:["S", "M", "T", "W", "T", "F", "S"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1308 WEEKDAYS_SHORT: {key:"weekdays_short", value:["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1309 WEEKDAYS_MEDIUM: {key:"weekdays_medium", value:["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1310 WEEKDAYS_LONG: {key:"weekdays_long", value:["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1311 LOCALE_MONTHS:{key:"locale_months", value:"long"},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1312 LOCALE_WEEKDAYS:{key:"locale_weekdays", value:"short"},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1313 DATE_DELIMITER:{key:"date_delimiter", value:","},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1314 DATE_FIELD_DELIMITER:{key:"date_field_delimiter", value:"/"},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1315 DATE_RANGE_DELIMITER:{key:"date_range_delimiter", value:"-"},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1316 MY_MONTH_POSITION:{key:"my_month_position", value:1},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1317 MY_YEAR_POSITION:{key:"my_year_position", value:2},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1318 MD_MONTH_POSITION:{key:"md_month_position", value:1},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1319 MD_DAY_POSITION:{key:"md_day_position", value:2},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1320 MDY_MONTH_POSITION:{key:"mdy_month_position", value:1},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1321 MDY_DAY_POSITION:{key:"mdy_day_position", value:2},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1322 MDY_YEAR_POSITION:{key:"mdy_year_position", value:3},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1323 MY_LABEL_MONTH_POSITION:{key:"my_label_month_position", value:1},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1324 MY_LABEL_YEAR_POSITION:{key:"my_label_year_position", value:2},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1325 MY_LABEL_MONTH_SUFFIX:{key:"my_label_month_suffix", value:" "},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1326 MY_LABEL_YEAR_SUFFIX:{key:"my_label_year_suffix", value:""},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1327 NAV: {key:"navigator", value: null},
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1328 STRINGS : {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1329 key:"strings",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1330 value: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1331 previousMonth : "Previous Month",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1332 nextMonth : "Next Month",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1333 close: "Close"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1334 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1335 supercedes : ["close", "title"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1336 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1337 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1338
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1339 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1340 * The set of default Config property keys and values for the Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1341 * @property YAHOO.widget.Calendar._DEFAULT_CONFIG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1342 * @deprecated Made public. See the public DEFAULT_CONFIG property for details
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1343 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1344 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1345 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1346 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1347 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1348 Calendar._DEFAULT_CONFIG = Calendar.DEFAULT_CONFIG;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1349
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1350 var DEF_CFG = Calendar.DEFAULT_CONFIG;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1351
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1352 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1353 * The set of Custom Event types supported by the Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1354 * @property YAHOO.widget.Calendar._EVENT_TYPES
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1355 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1356 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1357 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1358 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1359 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1360 Calendar._EVENT_TYPES = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1361 BEFORE_SELECT : "beforeSelect",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1362 SELECT : "select",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1363 BEFORE_DESELECT : "beforeDeselect",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1364 DESELECT : "deselect",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1365 CHANGE_PAGE : "changePage",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1366 BEFORE_RENDER : "beforeRender",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1367 RENDER : "render",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1368 BEFORE_DESTROY : "beforeDestroy",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1369 DESTROY : "destroy",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1370 RESET : "reset",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1371 CLEAR : "clear",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1372 BEFORE_HIDE : "beforeHide",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1373 HIDE : "hide",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1374 BEFORE_SHOW : "beforeShow",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1375 SHOW : "show",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1376 BEFORE_HIDE_NAV : "beforeHideNav",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1377 HIDE_NAV : "hideNav",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1378 BEFORE_SHOW_NAV : "beforeShowNav",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1379 SHOW_NAV : "showNav",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1380 BEFORE_RENDER_NAV : "beforeRenderNav",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1381 RENDER_NAV : "renderNav"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1382 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1383
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1384 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1385 * The set of default style constants for the Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1386 * @property YAHOO.widget.Calendar.STYLES
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1387 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1388 * @type Object An object with name/value pairs for the class name identifier/value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1389 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1390 Calendar.STYLES = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1391 CSS_ROW_HEADER: "calrowhead",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1392 CSS_ROW_FOOTER: "calrowfoot",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1393 CSS_CELL : "calcell",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1394 CSS_CELL_SELECTOR : "selector",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1395 CSS_CELL_SELECTED : "selected",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1396 CSS_CELL_SELECTABLE : "selectable",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1397 CSS_CELL_RESTRICTED : "restricted",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1398 CSS_CELL_TODAY : "today",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1399 CSS_CELL_OOM : "oom",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1400 CSS_CELL_OOB : "previous",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1401 CSS_HEADER : "calheader",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1402 CSS_HEADER_TEXT : "calhead",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1403 CSS_BODY : "calbody",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1404 CSS_WEEKDAY_CELL : "calweekdaycell",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1405 CSS_WEEKDAY_ROW : "calweekdayrow",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1406 CSS_FOOTER : "calfoot",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1407 CSS_CALENDAR : "yui-calendar",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1408 CSS_SINGLE : "single",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1409 CSS_CONTAINER : "yui-calcontainer",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1410 CSS_NAV_LEFT : "calnavleft",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1411 CSS_NAV_RIGHT : "calnavright",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1412 CSS_NAV : "calnav",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1413 CSS_CLOSE : "calclose",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1414 CSS_CELL_TOP : "calcelltop",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1415 CSS_CELL_LEFT : "calcellleft",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1416 CSS_CELL_RIGHT : "calcellright",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1417 CSS_CELL_BOTTOM : "calcellbottom",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1418 CSS_CELL_HOVER : "calcellhover",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1419 CSS_CELL_HIGHLIGHT1 : "highlight1",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1420 CSS_CELL_HIGHLIGHT2 : "highlight2",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1421 CSS_CELL_HIGHLIGHT3 : "highlight3",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1422 CSS_CELL_HIGHLIGHT4 : "highlight4",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1423 CSS_WITH_TITLE: "withtitle",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1424 CSS_FIXED_SIZE: "fixedsize",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1425 CSS_LINK_CLOSE: "link-close"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1426 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1427
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1428 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1429 * The set of default style constants for the Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1430 * @property YAHOO.widget.Calendar._STYLES
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1431 * @deprecated Made public. See the public STYLES property for details
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1432 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1433 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1434 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1435 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1436 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1437 Calendar._STYLES = Calendar.STYLES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1438
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1439 Calendar.prototype = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1440
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1441 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1442 * The configuration object used to set up the calendars various locale and style options.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1443 * @property Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1444 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1445 * @deprecated Configuration properties should be set by calling Calendar.cfg.setProperty.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1446 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1447 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1448 Config : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1449
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1450 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1451 * The parent CalendarGroup, only to be set explicitly by the parent group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1452 * @property parent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1453 * @type CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1454 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1455 parent : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1456
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1457 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1458 * The index of this item in the parent group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1459 * @property index
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1460 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1461 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1462 index : -1,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1463
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1464 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1465 * The collection of calendar table cells
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1466 * @property cells
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1467 * @type HTMLTableCellElement[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1468 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1469 cells : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1470
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1471 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1472 * 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].
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1473 * @property cellDates
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1474 * @type Array[](Number[])
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1475 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1476 cellDates : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1477
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1478 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1479 * The id that uniquely identifies this Calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1480 * @property id
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1481 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1482 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1483 id : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1484
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1485 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1486 * The unique id associated with the Calendar's container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1487 * @property containerId
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1488 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1489 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1490 containerId: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1491
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1492 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1493 * 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.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1494 * @property oDomContainer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1495 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1496 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1497 oDomContainer : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1498
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1499 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1500 * A Date object representing today's date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1501 * @deprecated Use the "today" configuration property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1502 * @property today
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1503 * @type Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1504 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1505 today : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1506
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1507 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1508 * The list of render functions, along with required parameters, used to render cells.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1509 * @property renderStack
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1510 * @type Array[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1511 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1512 renderStack : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1513
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1514 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1515 * A copy of the initial render functions created before rendering.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1516 * @property _renderStack
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1517 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1518 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1519 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1520 _renderStack : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1521
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1522 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1523 * A reference to the CalendarNavigator instance created for this Calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1524 * Will be null if the "navigator" configuration property has not been set
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1525 * @property oNavigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1526 * @type CalendarNavigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1527 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1528 oNavigator : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1529
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1530 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1531 * The private list of initially selected dates.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1532 * @property _selectedDates
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1533 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1534 * @type Array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1535 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1536 _selectedDates : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1537
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1538 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1539 * A map of DOM event handlers to attach to cells associated with specific CSS class names
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1540 * @property domEventMap
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1541 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1542 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1543 domEventMap : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1544
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1545 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1546 * Protected helper used to parse Calendar constructor/init arguments.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1547 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1548 * As of 2.4.0, Calendar supports a simpler constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1549 * signature. This method reconciles arguments
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1550 * received in the pre 2.4.0 and 2.4.0 formats.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1551 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1552 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1553 * @method _parseArgs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1554 * @param {Array} Function "arguments" array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1555 * @return {Object} Object with id, container, config properties containing
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1556 * the reconciled argument values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1557 **/
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1558 _parseArgs : function(args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1559 /*
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1560 2.4.0 Constructors signatures
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1561
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1562 new Calendar(String)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1563 new Calendar(HTMLElement)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1564 new Calendar(String, ConfigObject)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1565 new Calendar(HTMLElement, ConfigObject)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1566
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1567 Pre 2.4.0 Constructor signatures
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1568
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1569 new Calendar(String, String)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1570 new Calendar(String, HTMLElement)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1571 new Calendar(String, String, ConfigObject)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1572 new Calendar(String, HTMLElement, ConfigObject)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1573 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1574 var nArgs = {id:null, container:null, config:null};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1575
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1576 if (args && args.length && args.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1577 switch (args.length) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1578 case 1:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1579 nArgs.id = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1580 nArgs.container = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1581 nArgs.config = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1582 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1583 case 2:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1584 if (Lang.isObject(args[1]) && !args[1].tagName && !(args[1] instanceof String)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1585 nArgs.id = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1586 nArgs.container = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1587 nArgs.config = args[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1588 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1589 nArgs.id = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1590 nArgs.container = args[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1591 nArgs.config = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1592 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1593 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1594 default: // 3+
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1595 nArgs.id = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1596 nArgs.container = args[1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1597 nArgs.config = args[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1598 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1599 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1600 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1601 this.logger.log("Invalid constructor/init arguments", "error");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1602 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1603 return nArgs;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1604 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1605
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1606 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1607 * Initializes the Calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1608 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1609 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1610 * @param {String} id optional The id of the table element that will represent the Calendar widget. As of 2.4.0, this argument is optional.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1611 * @param {String | HTMLElement} container The id of the container div element that will wrap the Calendar table, or a reference to a DIV element which exists in the document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1612 * @param {Object} config optional The configuration object containing the initial configuration values for the Calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1613 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1614 init : function(id, container, config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1615 // Normalize 2.4.0, pre 2.4.0 args
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1616 var nArgs = this._parseArgs(arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1617
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1618 id = nArgs.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1619 container = nArgs.container;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1620 config = nArgs.config;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1621
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1622 this.oDomContainer = Dom.get(container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1623 if (!this.oDomContainer) { this.logger.log("Container not found in document.", "error"); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1624
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1625 if (!this.oDomContainer.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1626 this.oDomContainer.id = Dom.generateId();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1627 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1628 if (!id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1629 id = this.oDomContainer.id + "_t";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1630 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1631
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1632 this.id = id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1633 this.containerId = this.oDomContainer.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1634
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1635 this.logger = new YAHOO.widget.LogWriter("Calendar " + this.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1636 this.initEvents();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1637
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1638 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1639 * The Config object used to hold the configuration variables for the Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1640 * @property cfg
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1641 * @type YAHOO.util.Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1642 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1643 this.cfg = new YAHOO.util.Config(this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1644
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1645 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1646 * The local object which contains the Calendar's options
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1647 * @property Options
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1648 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1649 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1650 this.Options = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1651
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1652 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1653 * The local object which contains the Calendar's locale settings
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1654 * @property Locale
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1655 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1656 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1657 this.Locale = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1658
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1659 this.initStyles();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1660
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1661 Dom.addClass(this.oDomContainer, this.Style.CSS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1662 Dom.addClass(this.oDomContainer, this.Style.CSS_SINGLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1663
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1664 this.cellDates = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1665 this.cells = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1666 this.renderStack = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1667 this._renderStack = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1668
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1669 this.setupConfig();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1670
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1671 if (config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1672 this.cfg.applyConfig(config, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1673 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1674
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1675 this.cfg.fireQueue();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1676
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1677 this.today = this.cfg.getProperty("today");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1678 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1679
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1680 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1681 * Default Config listener for the iframe property. If the iframe config property is set to true,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1682 * renders the built-in IFRAME shim if the container is relatively or absolutely positioned.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1683 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1684 * @method configIframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1685 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1686 configIframe : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1687 var useIframe = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1688
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1689 if (!this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1690 if (Dom.inDocument(this.oDomContainer)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1691 if (useIframe) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1692 var pos = Dom.getStyle(this.oDomContainer, "position");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1693
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1694 if (pos == "absolute" || pos == "relative") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1695
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1696 if (!Dom.inDocument(this.iframe)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1697 this.iframe = document.createElement("iframe");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1698 this.iframe.src = "javascript:false;";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1699
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1700 Dom.setStyle(this.iframe, "opacity", "0");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1701
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1702 if (YAHOO.env.ua.ie && YAHOO.env.ua.ie <= 6) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1703 Dom.addClass(this.iframe, this.Style.CSS_FIXED_SIZE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1704 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1705
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1706 this.oDomContainer.insertBefore(this.iframe, this.oDomContainer.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1707 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1708 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1709 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1710 if (this.iframe) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1711 if (this.iframe.parentNode) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1712 this.iframe.parentNode.removeChild(this.iframe);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1713 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1714 this.iframe = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1715 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1716 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1717 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1718 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1719 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1720
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1721 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1722 * Default handler for the "title" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1723 * @method configTitle
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1724 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1725 configTitle : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1726 var title = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1727
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1728 // "" disables title bar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1729 if (title) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1730 this.createTitleBar(title);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1731 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1732 var close = this.cfg.getProperty(DEF_CFG.CLOSE.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1733 if (!close) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1734 this.removeTitleBar();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1735 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1736 this.createTitleBar("&#160;");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1737 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1738 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1739 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1740
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1741 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1742 * Default handler for the "close" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1743 * @method configClose
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1744 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1745 configClose : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1746 var close = args[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1747 title = this.cfg.getProperty(DEF_CFG.TITLE.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1748
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1749 if (close) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1750 if (!title) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1751 this.createTitleBar("&#160;");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1752 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1753 this.createCloseButton();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1754 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1755 this.removeCloseButton();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1756 if (!title) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1757 this.removeTitleBar();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1758 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1759 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1760 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1761
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1762 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1763 * Initializes Calendar's built-in CustomEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1764 * @method initEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1765 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1766 initEvents : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1767
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1768 var defEvents = Calendar._EVENT_TYPES,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1769 CE = YAHOO.util.CustomEvent,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1770 cal = this; // To help with minification
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1771
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1772 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1773 * Fired before a date selection is made
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1774 * @event beforeSelectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1775 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1776 cal.beforeSelectEvent = new CE(defEvents.BEFORE_SELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1777
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1778 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1779 * Fired when a date selection is made
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1780 * @event selectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1781 * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1782 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1783 cal.selectEvent = new CE(defEvents.SELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1784
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1785 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1786 * Fired before a date or set of dates is deselected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1787 * @event beforeDeselectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1788 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1789 cal.beforeDeselectEvent = new CE(defEvents.BEFORE_DESELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1790
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1791 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1792 * Fired when a date or set of dates is deselected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1793 * @event deselectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1794 * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1795 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1796 cal.deselectEvent = new CE(defEvents.DESELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1797
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1798 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1799 * Fired when the Calendar page is changed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1800 * @event changePageEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1801 * @param {Date} prevDate The date before the page was changed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1802 * @param {Date} newDate The date after the page was changed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1803 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1804 cal.changePageEvent = new CE(defEvents.CHANGE_PAGE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1805
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1806 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1807 * Fired before the Calendar is rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1808 * @event beforeRenderEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1809 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1810 cal.beforeRenderEvent = new CE(defEvents.BEFORE_RENDER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1811
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1812 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1813 * Fired when the Calendar is rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1814 * @event renderEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1815 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1816 cal.renderEvent = new CE(defEvents.RENDER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1817
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1818 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1819 * Fired just before the Calendar is to be destroyed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1820 * @event beforeDestroyEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1821 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1822 cal.beforeDestroyEvent = new CE(defEvents.BEFORE_DESTROY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1823
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1824 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1825 * Fired after the Calendar is destroyed. This event should be used
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1826 * for notification only. When this event is fired, important Calendar instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1827 * properties, dom references and event listeners have already been
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1828 * removed/dereferenced, and hence the Calendar instance is not in a usable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1829 * state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1830 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1831 * @event destroyEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1832 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1833 cal.destroyEvent = new CE(defEvents.DESTROY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1834
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1835 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1836 * Fired when the Calendar is reset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1837 * @event resetEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1838 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1839 cal.resetEvent = new CE(defEvents.RESET);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1840
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1841 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1842 * Fired when the Calendar is cleared
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1843 * @event clearEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1844 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1845 cal.clearEvent = new CE(defEvents.CLEAR);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1846
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1847 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1848 * Fired just before the Calendar is to be shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1849 * @event beforeShowEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1850 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1851 cal.beforeShowEvent = new CE(defEvents.BEFORE_SHOW);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1852
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1853 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1854 * Fired after the Calendar is shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1855 * @event showEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1856 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1857 cal.showEvent = new CE(defEvents.SHOW);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1858
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1859 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1860 * Fired just before the Calendar is to be hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1861 * @event beforeHideEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1862 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1863 cal.beforeHideEvent = new CE(defEvents.BEFORE_HIDE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1864
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1865 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1866 * Fired after the Calendar is hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1867 * @event hideEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1868 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1869 cal.hideEvent = new CE(defEvents.HIDE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1870
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1871 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1872 * Fired just before the CalendarNavigator is to be shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1873 * @event beforeShowNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1874 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1875 cal.beforeShowNavEvent = new CE(defEvents.BEFORE_SHOW_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1876
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1877 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1878 * Fired after the CalendarNavigator is shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1879 * @event showNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1880 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1881 cal.showNavEvent = new CE(defEvents.SHOW_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1882
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1883 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1884 * Fired just before the CalendarNavigator is to be hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1885 * @event beforeHideNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1886 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1887 cal.beforeHideNavEvent = new CE(defEvents.BEFORE_HIDE_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1889 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1890 * Fired after the CalendarNavigator is hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1891 * @event hideNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1892 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1893 cal.hideNavEvent = new CE(defEvents.HIDE_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1894
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1895 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1896 * Fired just before the CalendarNavigator is to be rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1897 * @event beforeRenderNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1898 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1899 cal.beforeRenderNavEvent = new CE(defEvents.BEFORE_RENDER_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1900
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1901 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1902 * Fired after the CalendarNavigator is rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1903 * @event renderNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1904 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1905 cal.renderNavEvent = new CE(defEvents.RENDER_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1906
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1907 cal.beforeSelectEvent.subscribe(cal.onBeforeSelect, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1908 cal.selectEvent.subscribe(cal.onSelect, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1909 cal.beforeDeselectEvent.subscribe(cal.onBeforeDeselect, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1910 cal.deselectEvent.subscribe(cal.onDeselect, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1911 cal.changePageEvent.subscribe(cal.onChangePage, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1912 cal.renderEvent.subscribe(cal.onRender, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1913 cal.resetEvent.subscribe(cal.onReset, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1914 cal.clearEvent.subscribe(cal.onClear, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1915 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1916
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1917 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1918 * The default event handler for clicks on the "Previous Month" navigation UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1919 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1920 * @method doPreviousMonthNav
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1921 * @param {DOMEvent} e The DOM event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1922 * @param {Calendar} cal A reference to the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1923 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1924 doPreviousMonthNav : function(e, cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1925 Event.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1926 // previousMonth invoked in a timeout, to allow
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1927 // event to bubble up, with correct target. Calling
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1928 // previousMonth, will call render which will remove
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1929 // HTML which generated the event, resulting in an
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1930 // invalid event target in certain browsers.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1931 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1932 cal.previousMonth();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1933 var navs = Dom.getElementsByClassName(cal.Style.CSS_NAV_LEFT, "a", cal.oDomContainer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1934 if (navs && navs[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1935 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1936 navs[0].focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1937 } catch (ex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1938 // ignore
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1939 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1940 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1941 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1942 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1943
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1944 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1945 * The default event handler for clicks on the "Next Month" navigation UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1946 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1947 * @method doNextMonthNav
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1948 * @param {DOMEvent} e The DOM event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1949 * @param {Calendar} cal A reference to the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1950 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1951 doNextMonthNav : function(e, cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1952 Event.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1953 setTimeout(function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1954 cal.nextMonth();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1955 var navs = Dom.getElementsByClassName(cal.Style.CSS_NAV_RIGHT, "a", cal.oDomContainer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1956 if (navs && navs[0]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1957 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1958 navs[0].focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1959 } catch (ex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1960 // ignore
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1961 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1962 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1963 }, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1964 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1965
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1966 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1967 * The default event handler for date cell selection. Currently attached to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1968 * the Calendar's bounding box, referenced by it's <a href="#property_oDomContainer">oDomContainer</a> property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1969 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1970 * @method doSelectCell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1971 * @param {DOMEvent} e The DOM event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1972 * @param {Calendar} cal A reference to the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1973 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1974 doSelectCell : function(e, cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1975 var cell, d, date, index;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1976
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1977 var target = Event.getTarget(e),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1978 tagName = target.tagName.toLowerCase(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1979 defSelector = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1980
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1981 while (tagName != "td" && !Dom.hasClass(target, cal.Style.CSS_CELL_SELECTABLE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1982
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1983 if (!defSelector && tagName == "a" && Dom.hasClass(target, cal.Style.CSS_CELL_SELECTOR)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1984 defSelector = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1985 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1986
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1987 target = target.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1988 tagName = target.tagName.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1989
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1990 if (target == this.oDomContainer || tagName == "html") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1991 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1992 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1993 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1994
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1995 if (defSelector) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1996 // Stop link href navigation for default renderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1997 Event.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1998 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
1999
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2000 cell = target;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2001
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2002 if (Dom.hasClass(cell, cal.Style.CSS_CELL_SELECTABLE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2003 index = cal.getIndexFromId(cell.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2004 if (index > -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2005 d = cal.cellDates[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2006 if (d) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2007 date = DateMath.getDate(d[0],d[1]-1,d[2]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2008
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2009 var link;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2010
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2011 cal.logger.log("Selecting cell " + index + " via click", "info");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2012 if (cal.Options.MULTI_SELECT) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2013 link = cell.getElementsByTagName("a")[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2014 if (link) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2015 link.blur();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2016 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2017
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2018 var cellDate = cal.cellDates[index];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2019 var cellDateIndex = cal._indexOfSelectedFieldArray(cellDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2020
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2021 if (cellDateIndex > -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2022 cal.deselectCell(index);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2023 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2024 cal.selectCell(index);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2025 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2026
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2027 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2028 link = cell.getElementsByTagName("a")[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2029 if (link) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2030 link.blur();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2031 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2032 cal.selectCell(index);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2033 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2034 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2035 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2036 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2037 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2038
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2039 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2040 * The event that is executed when the user hovers over a cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2041 * @method doCellMouseOver
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2042 * @param {DOMEvent} e The event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2043 * @param {Calendar} cal A reference to the calendar passed by the Event utility
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2044 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2045 doCellMouseOver : function(e, cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2046 var target;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2047 if (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2048 target = Event.getTarget(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2049 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2050 target = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2051 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2052
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2053 while (target.tagName && target.tagName.toLowerCase() != "td") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2054 target = target.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2055 if (!target.tagName || target.tagName.toLowerCase() == "html") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2056 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2057 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2058 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2059
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2060 if (Dom.hasClass(target, cal.Style.CSS_CELL_SELECTABLE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2061 Dom.addClass(target, cal.Style.CSS_CELL_HOVER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2062 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2063 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2064
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2065 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2066 * The event that is executed when the user moves the mouse out of a cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2067 * @method doCellMouseOut
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2068 * @param {DOMEvent} e The event
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2069 * @param {Calendar} cal A reference to the calendar passed by the Event utility
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2070 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2071 doCellMouseOut : function(e, cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2072 var target;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2073 if (e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2074 target = Event.getTarget(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2075 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2076 target = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2077 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2078
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2079 while (target.tagName && target.tagName.toLowerCase() != "td") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2080 target = target.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2081 if (!target.tagName || target.tagName.toLowerCase() == "html") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2082 return;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2083 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2084 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2085
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2086 if (Dom.hasClass(target, cal.Style.CSS_CELL_SELECTABLE)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2087 Dom.removeClass(target, cal.Style.CSS_CELL_HOVER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2088 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2089 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2090
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2091 setupConfig : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2092
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2093 var cfg = this.cfg;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2094
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2095 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2096 * The date to use to represent "Today".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2097 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2098 * @config today
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2099 * @type Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2100 * @default The client side date (new Date()) when the Calendar is instantiated.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2101 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2102 cfg.addProperty(DEF_CFG.TODAY.key, { value: new Date(DEF_CFG.TODAY.value.getTime()), supercedes:DEF_CFG.TODAY.supercedes, handler:this.configToday, suppressEvent:true } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2103
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2104 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2105 * The month/year representing the current visible Calendar date (mm/yyyy)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2106 * @config pagedate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2107 * @type String | Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2108 * @default Today's date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2109 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2110 cfg.addProperty(DEF_CFG.PAGEDATE.key, { value: DEF_CFG.PAGEDATE.value || new Date(DEF_CFG.TODAY.value.getTime()), handler:this.configPageDate } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2111
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2112 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2113 * The date or range of dates representing the current Calendar selection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2114 * @config selected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2115 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2116 * @default []
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2117 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2118 cfg.addProperty(DEF_CFG.SELECTED.key, { value:DEF_CFG.SELECTED.value.concat(), handler:this.configSelected } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2119
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2120 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2121 * The title to display above the Calendar's month header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2122 * @config title
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2123 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2124 * @default ""
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2125 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2126 cfg.addProperty(DEF_CFG.TITLE.key, { value:DEF_CFG.TITLE.value, handler:this.configTitle } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2127
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2128 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2129 * Whether or not a close button should be displayed for this Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2130 * @config close
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2131 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2132 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2133 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2134 cfg.addProperty(DEF_CFG.CLOSE.key, { value:DEF_CFG.CLOSE.value, handler:this.configClose } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2135
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2136 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2137 * 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.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2138 * This property is enabled by default for IE6 and below. It is disabled by default for other browsers for performance reasons, but can be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2139 * enabled if required.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2140 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2141 * @config iframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2142 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2143 * @default true for IE6 and below, false for all other browsers
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2144 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2145 cfg.addProperty(DEF_CFG.IFRAME.key, { value:DEF_CFG.IFRAME.value, handler:this.configIframe, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2146
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2147 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2148 * The minimum selectable date in the current Calendar (mm/dd/yyyy)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2149 * @config mindate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2150 * @type String | Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2151 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2152 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2153 cfg.addProperty(DEF_CFG.MINDATE.key, { value:DEF_CFG.MINDATE.value, handler:this.configMinDate } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2154
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2155 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2156 * The maximum selectable date in the current Calendar (mm/dd/yyyy)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2157 * @config maxdate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2158 * @type String | Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2159 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2160 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2161 cfg.addProperty(DEF_CFG.MAXDATE.key, { value:DEF_CFG.MAXDATE.value, handler:this.configMaxDate } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2162
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2163 // Options properties
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2164
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2165 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2166 * True if the Calendar should allow multiple selections. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2167 * @config MULTI_SELECT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2168 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2169 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2170 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2171 cfg.addProperty(DEF_CFG.MULTI_SELECT.key, { value:DEF_CFG.MULTI_SELECT.value, handler:this.configOptions, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2172
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2173 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2174 * The weekday the week begins on. Default is 0 (Sunday = 0, Monday = 1 ... Saturday = 6).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2175 * @config START_WEEKDAY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2176 * @type number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2177 * @default 0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2178 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2179 cfg.addProperty(DEF_CFG.START_WEEKDAY.key, { value:DEF_CFG.START_WEEKDAY.value, handler:this.configOptions, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2180
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2181 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2182 * True if the Calendar should show weekday labels. True by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2183 * @config SHOW_WEEKDAYS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2184 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2185 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2186 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2187 cfg.addProperty(DEF_CFG.SHOW_WEEKDAYS.key, { value:DEF_CFG.SHOW_WEEKDAYS.value, handler:this.configOptions, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2188
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2189 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2190 * True if the Calendar should show week row headers. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2191 * @config SHOW_WEEK_HEADER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2192 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2193 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2194 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2195 cfg.addProperty(DEF_CFG.SHOW_WEEK_HEADER.key, { value:DEF_CFG.SHOW_WEEK_HEADER.value, handler:this.configOptions, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2196
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2197 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2198 * True if the Calendar should show week row footers. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2199 * @config SHOW_WEEK_FOOTER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2200 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2201 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2202 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2203 cfg.addProperty(DEF_CFG.SHOW_WEEK_FOOTER.key,{ value:DEF_CFG.SHOW_WEEK_FOOTER.value, handler:this.configOptions, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2204
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2205 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2206 * True if the Calendar should suppress weeks that are not a part of the current month. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2207 * @config HIDE_BLANK_WEEKS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2208 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2209 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2210 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2211 cfg.addProperty(DEF_CFG.HIDE_BLANK_WEEKS.key, { value:DEF_CFG.HIDE_BLANK_WEEKS.value, handler:this.configOptions, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2212
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2213 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2214 * The image that should be used for the left navigation arrow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2215 * @config NAV_ARROW_LEFT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2216 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2217 * @deprecated You can customize the image by overriding the default CSS class for the left arrow - "calnavleft"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2218 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2219 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2220 cfg.addProperty(DEF_CFG.NAV_ARROW_LEFT.key, { value:DEF_CFG.NAV_ARROW_LEFT.value, handler:this.configOptions } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2221
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2222 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2223 * The image that should be used for the right navigation arrow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2224 * @config NAV_ARROW_RIGHT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2225 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2226 * @deprecated You can customize the image by overriding the default CSS class for the right arrow - "calnavright"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2227 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2228 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2229 cfg.addProperty(DEF_CFG.NAV_ARROW_RIGHT.key, { value:DEF_CFG.NAV_ARROW_RIGHT.value, handler:this.configOptions } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2230
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2231 // Locale properties
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2232
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2233 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2234 * The short month labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2235 * @config MONTHS_SHORT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2236 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2237 * @default ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2238 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2239 cfg.addProperty(DEF_CFG.MONTHS_SHORT.key, { value:DEF_CFG.MONTHS_SHORT.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2240
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2241 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2242 * The long month labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2243 * @config MONTHS_LONG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2244 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2245 * @default ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2246 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2247 cfg.addProperty(DEF_CFG.MONTHS_LONG.key, { value:DEF_CFG.MONTHS_LONG.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2248
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2249 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2250 * The 1-character weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2251 * @config WEEKDAYS_1CHAR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2252 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2253 * @default ["S", "M", "T", "W", "T", "F", "S"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2254 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2255 cfg.addProperty(DEF_CFG.WEEKDAYS_1CHAR.key, { value:DEF_CFG.WEEKDAYS_1CHAR.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2256
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2257 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2258 * The short weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2259 * @config WEEKDAYS_SHORT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2260 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2261 * @default ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2262 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2263 cfg.addProperty(DEF_CFG.WEEKDAYS_SHORT.key, { value:DEF_CFG.WEEKDAYS_SHORT.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2264
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2265 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2266 * The medium weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2267 * @config WEEKDAYS_MEDIUM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2268 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2269 * @default ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2270 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2271 cfg.addProperty(DEF_CFG.WEEKDAYS_MEDIUM.key, { value:DEF_CFG.WEEKDAYS_MEDIUM.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2272
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2273 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2274 * The long weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2275 * @config WEEKDAYS_LONG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2276 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2277 * @default ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2278 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2279 cfg.addProperty(DEF_CFG.WEEKDAYS_LONG.key, { value:DEF_CFG.WEEKDAYS_LONG.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2280
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2281 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2282 * Refreshes the locale values used to build the Calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2283 * @method refreshLocale
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2284 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2285 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2286 var refreshLocale = function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2287 cfg.refireEvent(DEF_CFG.LOCALE_MONTHS.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2288 cfg.refireEvent(DEF_CFG.LOCALE_WEEKDAYS.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2289 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2290
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2291 cfg.subscribeToConfigEvent(DEF_CFG.START_WEEKDAY.key, refreshLocale, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2292 cfg.subscribeToConfigEvent(DEF_CFG.MONTHS_SHORT.key, refreshLocale, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2293 cfg.subscribeToConfigEvent(DEF_CFG.MONTHS_LONG.key, refreshLocale, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2294 cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_1CHAR.key, refreshLocale, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2295 cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_SHORT.key, refreshLocale, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2296 cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_MEDIUM.key, refreshLocale, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2297 cfg.subscribeToConfigEvent(DEF_CFG.WEEKDAYS_LONG.key, refreshLocale, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2298
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2299 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2300 * The setting that determines which length of month labels should be used. Possible values are "short" and "long".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2301 * @config LOCALE_MONTHS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2302 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2303 * @default "long"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2304 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2305 cfg.addProperty(DEF_CFG.LOCALE_MONTHS.key, { value:DEF_CFG.LOCALE_MONTHS.value, handler:this.configLocaleValues } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2306
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2307 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2308 * The setting that determines which length of weekday labels should be used. Possible values are "1char", "short", "medium", and "long".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2309 * @config LOCALE_WEEKDAYS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2310 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2311 * @default "short"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2312 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2313 cfg.addProperty(DEF_CFG.LOCALE_WEEKDAYS.key, { value:DEF_CFG.LOCALE_WEEKDAYS.value, handler:this.configLocaleValues } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2314
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2315 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2316 * The positive or negative year offset from the Gregorian calendar year (assuming a January 1st rollover) to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2317 * be used when displaying and parsing dates. NOTE: All JS Date objects returned by methods, or expected as input by
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2318 * methods will always represent the Gregorian year, in order to maintain date/month/week values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2319 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2320 * @config YEAR_OFFSET
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2321 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2322 * @default 0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2323 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2324 cfg.addProperty(DEF_CFG.YEAR_OFFSET.key, { value:DEF_CFG.YEAR_OFFSET.value, supercedes:DEF_CFG.YEAR_OFFSET.supercedes, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2325
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2326 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2327 * The value used to delimit individual dates in a date string passed to various Calendar functions.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2328 * @config DATE_DELIMITER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2329 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2330 * @default ","
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2331 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2332 cfg.addProperty(DEF_CFG.DATE_DELIMITER.key, { value:DEF_CFG.DATE_DELIMITER.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2333
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2334 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2335 * The value used to delimit date fields in a date string passed to various Calendar functions.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2336 * @config DATE_FIELD_DELIMITER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2337 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2338 * @default "/"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2339 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2340 cfg.addProperty(DEF_CFG.DATE_FIELD_DELIMITER.key, { value:DEF_CFG.DATE_FIELD_DELIMITER.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2341
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2342 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2343 * The value used to delimit date ranges in a date string passed to various Calendar functions.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2344 * @config DATE_RANGE_DELIMITER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2345 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2346 * @default "-"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2347 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2348 cfg.addProperty(DEF_CFG.DATE_RANGE_DELIMITER.key, { value:DEF_CFG.DATE_RANGE_DELIMITER.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2349
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2350 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2351 * The position of the month in a month/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2352 * @config MY_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2353 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2354 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2355 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2356 cfg.addProperty(DEF_CFG.MY_MONTH_POSITION.key, { value:DEF_CFG.MY_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2357
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2358 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2359 * The position of the year in a month/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2360 * @config MY_YEAR_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2361 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2362 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2363 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2364 cfg.addProperty(DEF_CFG.MY_YEAR_POSITION.key, { value:DEF_CFG.MY_YEAR_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2365
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2366 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2367 * The position of the month in a month/day date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2368 * @config MD_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2369 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2370 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2371 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2372 cfg.addProperty(DEF_CFG.MD_MONTH_POSITION.key, { value:DEF_CFG.MD_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2373
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2374 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2375 * The position of the day in a month/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2376 * @config MD_DAY_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2377 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2378 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2379 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2380 cfg.addProperty(DEF_CFG.MD_DAY_POSITION.key, { value:DEF_CFG.MD_DAY_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2381
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2382 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2383 * The position of the month in a month/day/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2384 * @config MDY_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2385 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2386 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2387 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2388 cfg.addProperty(DEF_CFG.MDY_MONTH_POSITION.key, { value:DEF_CFG.MDY_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2389
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2390 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2391 * The position of the day in a month/day/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2392 * @config MDY_DAY_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2393 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2394 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2395 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2396 cfg.addProperty(DEF_CFG.MDY_DAY_POSITION.key, { value:DEF_CFG.MDY_DAY_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2397
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2398 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2399 * The position of the year in a month/day/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2400 * @config MDY_YEAR_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2401 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2402 * @default 3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2403 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2404 cfg.addProperty(DEF_CFG.MDY_YEAR_POSITION.key, { value:DEF_CFG.MDY_YEAR_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2405
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2406 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2407 * The position of the month in the month year label string used as the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2408 * @config MY_LABEL_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2409 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2410 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2411 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2412 cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_POSITION.key, { value:DEF_CFG.MY_LABEL_MONTH_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2413
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2414 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2415 * The position of the year in the month year label string used as the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2416 * @config MY_LABEL_YEAR_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2417 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2418 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2419 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2420 cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_POSITION.key, { value:DEF_CFG.MY_LABEL_YEAR_POSITION.value, handler:this.configLocale, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2421
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2422 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2423 * The suffix used after the month when rendering the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2424 * @config MY_LABEL_MONTH_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2425 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2426 * @default " "
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2427 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2428 cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_SUFFIX.key, { value:DEF_CFG.MY_LABEL_MONTH_SUFFIX.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2429
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2430 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2431 * The suffix used after the year when rendering the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2432 * @config MY_LABEL_YEAR_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2433 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2434 * @default ""
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2435 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2436 cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_SUFFIX.key, { value:DEF_CFG.MY_LABEL_YEAR_SUFFIX.value, handler:this.configLocale } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2437
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2438 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2439 * Configuration for the Month/Year CalendarNavigator UI which allows the user to jump directly to a
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2440 * specific Month/Year without having to scroll sequentially through months.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2441 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2442 * Setting this property to null (default value) or false, will disable the CalendarNavigator UI.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2443 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2444 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2445 * Setting this property to true will enable the CalendarNavigatior UI with the default CalendarNavigator configuration values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2446 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2447 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2448 * This property can also be set to an object literal containing configuration properties for the CalendarNavigator UI.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2449 * The configuration object expects the the following case-sensitive properties, with the "strings" property being a nested object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2450 * Any properties which are not provided will use the default values (defined in the CalendarNavigator class).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2451 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2452 * <dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2453 * <dt>strings</dt>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2454 * <dd><em>Object</em> : An object with the properties shown below, defining the string labels to use in the Navigator's UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2455 * <dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2456 * <dt>month</dt><dd><em>String</em> : The string to use for the month label. Defaults to "Month".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2457 * <dt>year</dt><dd><em>String</em> : The string to use for the year label. Defaults to "Year".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2458 * <dt>submit</dt><dd><em>String</em> : The string to use for the submit button label. Defaults to "Okay".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2459 * <dt>cancel</dt><dd><em>String</em> : The string to use for the cancel button label. Defaults to "Cancel".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2460 * <dt>invalidYear</dt><dd><em>String</em> : The string to use for invalid year values. Defaults to "Year needs to be a number".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2461 * </dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2462 * </dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2463 * <dt>monthFormat</dt><dd><em>String</em> : The month format to use. Either YAHOO.widget.Calendar.LONG, or YAHOO.widget.Calendar.SHORT. Defaults to YAHOO.widget.Calendar.LONG</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2464 * <dt>initialFocus</dt><dd><em>String</em> : Either "year" or "month" specifying which input control should get initial focus. Defaults to "year"</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2465 * </dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2466 * <p>E.g.</p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2467 * <pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2468 * var navConfig = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2469 * strings: {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2470 * month:"Calendar Month",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2471 * year:"Calendar Year",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2472 * submit: "Submit",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2473 * cancel: "Cancel",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2474 * invalidYear: "Please enter a valid year"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2475 * },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2476 * monthFormat: YAHOO.widget.Calendar.SHORT,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2477 * initialFocus: "month"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2478 * }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2479 * </pre>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2480 * @config navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2481 * @type {Object|Boolean}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2482 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2483 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2484 cfg.addProperty(DEF_CFG.NAV.key, { value:DEF_CFG.NAV.value, handler:this.configNavigator } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2485
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2486 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2487 * The map of UI strings which the Calendar UI uses.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2488 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2489 * @config strings
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2490 * @type {Object}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2491 * @default An object with the properties shown below:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2492 * <dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2493 * <dt>previousMonth</dt><dd><em>String</em> : The string to use for the "Previous Month" navigation UI. Defaults to "Previous Month".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2494 * <dt>nextMonth</dt><dd><em>String</em> : The string to use for the "Next Month" navigation UI. Defaults to "Next Month".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2495 * <dt>close</dt><dd><em>String</em> : The string to use for the close button label. Defaults to "Close".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2496 * </dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2497 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2498 cfg.addProperty(DEF_CFG.STRINGS.key, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2499 value:DEF_CFG.STRINGS.value,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2500 handler:this.configStrings,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2501 validator: function(val) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2502 return Lang.isObject(val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2503 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2504 supercedes:DEF_CFG.STRINGS.supercedes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2505 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2506 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2507
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2508 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2509 * The default handler for the "strings" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2510 * @method configStrings
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2511 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2512 configStrings : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2513 var val = Lang.merge(DEF_CFG.STRINGS.value, args[0]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2514 this.cfg.setProperty(DEF_CFG.STRINGS.key, val, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2515 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2516
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2517 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2518 * The default handler for the "pagedate" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2519 * @method configPageDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2520 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2521 configPageDate : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2522 this.cfg.setProperty(DEF_CFG.PAGEDATE.key, this._parsePageDate(args[0]), true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2523 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2524
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2525 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2526 * The default handler for the "mindate" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2527 * @method configMinDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2528 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2529 configMinDate : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2530 var val = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2531 if (Lang.isString(val)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2532 val = this._parseDate(val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2533 this.cfg.setProperty(DEF_CFG.MINDATE.key, DateMath.getDate(val[0],(val[1]-1),val[2]));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2534 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2535 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2536
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2537 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2538 * The default handler for the "maxdate" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2539 * @method configMaxDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2540 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2541 configMaxDate : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2542 var val = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2543 if (Lang.isString(val)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2544 val = this._parseDate(val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2545 this.cfg.setProperty(DEF_CFG.MAXDATE.key, DateMath.getDate(val[0],(val[1]-1),val[2]));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2546 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2547 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2548
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2549 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2550 * The default handler for the "today" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2551 * @method configToday
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2552 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2553 configToday : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2554 // Only do this for initial set. Changing the today property after the initial
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2555 // set, doesn't affect pagedate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2556 var val = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2557 if (Lang.isString(val)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2558 val = this._parseDate(val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2559 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2560 var today = DateMath.clearTime(val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2561 if (!this.cfg.initialConfig[DEF_CFG.PAGEDATE.key]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2562 this.cfg.setProperty(DEF_CFG.PAGEDATE.key, today);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2563 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2564 this.today = today;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2565 this.cfg.setProperty(DEF_CFG.TODAY.key, today, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2566 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2567
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2568 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2569 * The default handler for the "selected" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2570 * @method configSelected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2571 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2572 configSelected : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2573 var selected = args[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2574 cfgSelected = DEF_CFG.SELECTED.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2575
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2576 if (selected) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2577 if (Lang.isString(selected)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2578 this.cfg.setProperty(cfgSelected, this._parseDates(selected), true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2579 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2580 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2581 if (! this._selectedDates) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2582 this._selectedDates = this.cfg.getProperty(cfgSelected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2583 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2584 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2585
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2586 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2587 * The default handler for all configuration options properties
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2588 * @method configOptions
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2589 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2590 configOptions : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2591 this.Options[type.toUpperCase()] = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2592 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2593
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2594 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2595 * The default handler for all configuration locale properties
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2596 * @method configLocale
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2597 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2598 configLocale : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2599 this.Locale[type.toUpperCase()] = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2600
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2601 this.cfg.refireEvent(DEF_CFG.LOCALE_MONTHS.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2602 this.cfg.refireEvent(DEF_CFG.LOCALE_WEEKDAYS.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2603 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2604
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2605 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2606 * The default handler for all configuration locale field length properties
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2607 * @method configLocaleValues
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2608 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2609 configLocaleValues : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2610
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2611 type = type.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2612
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2613 var val = args[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2614 cfg = this.cfg,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2615 Locale = this.Locale;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2616
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2617 switch (type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2618 case DEF_CFG.LOCALE_MONTHS.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2619 switch (val) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2620 case Calendar.SHORT:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2621 Locale.LOCALE_MONTHS = cfg.getProperty(DEF_CFG.MONTHS_SHORT.key).concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2622 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2623 case Calendar.LONG:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2624 Locale.LOCALE_MONTHS = cfg.getProperty(DEF_CFG.MONTHS_LONG.key).concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2625 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2626 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2627 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2628 case DEF_CFG.LOCALE_WEEKDAYS.key:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2629 switch (val) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2630 case Calendar.ONE_CHAR:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2631 Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_1CHAR.key).concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2632 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2633 case Calendar.SHORT:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2634 Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_SHORT.key).concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2635 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2636 case Calendar.MEDIUM:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2637 Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_MEDIUM.key).concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2638 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2639 case Calendar.LONG:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2640 Locale.LOCALE_WEEKDAYS = cfg.getProperty(DEF_CFG.WEEKDAYS_LONG.key).concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2641 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2642 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2643
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2644 var START_WEEKDAY = cfg.getProperty(DEF_CFG.START_WEEKDAY.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2645
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2646 if (START_WEEKDAY > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2647 for (var w=0; w < START_WEEKDAY; ++w) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2648 Locale.LOCALE_WEEKDAYS.push(Locale.LOCALE_WEEKDAYS.shift());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2649 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2650 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2651 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2652 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2653 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2654
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2655 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2656 * The default handler for the "navigator" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2657 * @method configNavigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2658 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2659 configNavigator : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2660 var val = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2661 if (YAHOO.widget.CalendarNavigator && (val === true || Lang.isObject(val))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2662 if (!this.oNavigator) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2663 this.oNavigator = new YAHOO.widget.CalendarNavigator(this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2664 // Cleanup DOM Refs/Events before innerHTML is removed.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2665 this.beforeRenderEvent.subscribe(function () {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2666 if (!this.pages) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2667 this.oNavigator.erase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2668 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2669 }, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2670 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2671 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2672 if (this.oNavigator) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2673 this.oNavigator.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2674 this.oNavigator = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2675 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2676 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2677 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2678
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2679 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2680 * Defines the style constants for the Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2681 * @method initStyles
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2682 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2683 initStyles : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2684
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2685 var defStyle = Calendar.STYLES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2686
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2687 this.Style = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2688 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2689 * @property Style.CSS_ROW_HEADER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2690 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2691 CSS_ROW_HEADER: defStyle.CSS_ROW_HEADER,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2692 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2693 * @property Style.CSS_ROW_FOOTER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2694 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2695 CSS_ROW_FOOTER: defStyle.CSS_ROW_FOOTER,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2696 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2697 * @property Style.CSS_CELL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2698 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2699 CSS_CELL : defStyle.CSS_CELL,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2700 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2701 * @property Style.CSS_CELL_SELECTOR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2702 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2703 CSS_CELL_SELECTOR : defStyle.CSS_CELL_SELECTOR,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2704 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2705 * @property Style.CSS_CELL_SELECTED
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2706 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2707 CSS_CELL_SELECTED : defStyle.CSS_CELL_SELECTED,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2708 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2709 * @property Style.CSS_CELL_SELECTABLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2710 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2711 CSS_CELL_SELECTABLE : defStyle.CSS_CELL_SELECTABLE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2712 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2713 * @property Style.CSS_CELL_RESTRICTED
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2714 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2715 CSS_CELL_RESTRICTED : defStyle.CSS_CELL_RESTRICTED,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2716 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2717 * @property Style.CSS_CELL_TODAY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2718 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2719 CSS_CELL_TODAY : defStyle.CSS_CELL_TODAY,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2720 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2721 * @property Style.CSS_CELL_OOM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2722 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2723 CSS_CELL_OOM : defStyle.CSS_CELL_OOM,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2724 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2725 * @property Style.CSS_CELL_OOB
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2726 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2727 CSS_CELL_OOB : defStyle.CSS_CELL_OOB,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2728 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2729 * @property Style.CSS_HEADER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2730 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2731 CSS_HEADER : defStyle.CSS_HEADER,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2732 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2733 * @property Style.CSS_HEADER_TEXT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2734 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2735 CSS_HEADER_TEXT : defStyle.CSS_HEADER_TEXT,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2736 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2737 * @property Style.CSS_BODY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2738 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2739 CSS_BODY : defStyle.CSS_BODY,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2740 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2741 * @property Style.CSS_WEEKDAY_CELL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2742 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2743 CSS_WEEKDAY_CELL : defStyle.CSS_WEEKDAY_CELL,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2744 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2745 * @property Style.CSS_WEEKDAY_ROW
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2746 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2747 CSS_WEEKDAY_ROW : defStyle.CSS_WEEKDAY_ROW,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2748 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2749 * @property Style.CSS_FOOTER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2750 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2751 CSS_FOOTER : defStyle.CSS_FOOTER,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2752 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2753 * @property Style.CSS_CALENDAR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2754 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2755 CSS_CALENDAR : defStyle.CSS_CALENDAR,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2756 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2757 * @property Style.CSS_SINGLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2758 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2759 CSS_SINGLE : defStyle.CSS_SINGLE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2760 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2761 * @property Style.CSS_CONTAINER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2762 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2763 CSS_CONTAINER : defStyle.CSS_CONTAINER,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2764 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2765 * @property Style.CSS_NAV_LEFT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2766 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2767 CSS_NAV_LEFT : defStyle.CSS_NAV_LEFT,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2768 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2769 * @property Style.CSS_NAV_RIGHT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2770 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2771 CSS_NAV_RIGHT : defStyle.CSS_NAV_RIGHT,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2772 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2773 * @property Style.CSS_NAV
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2774 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2775 CSS_NAV : defStyle.CSS_NAV,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2776 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2777 * @property Style.CSS_CLOSE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2778 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2779 CSS_CLOSE : defStyle.CSS_CLOSE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2780 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2781 * @property Style.CSS_CELL_TOP
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2782 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2783 CSS_CELL_TOP : defStyle.CSS_CELL_TOP,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2784 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2785 * @property Style.CSS_CELL_LEFT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2786 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2787 CSS_CELL_LEFT : defStyle.CSS_CELL_LEFT,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2788 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2789 * @property Style.CSS_CELL_RIGHT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2790 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2791 CSS_CELL_RIGHT : defStyle.CSS_CELL_RIGHT,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2792 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2793 * @property Style.CSS_CELL_BOTTOM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2794 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2795 CSS_CELL_BOTTOM : defStyle.CSS_CELL_BOTTOM,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2796 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2797 * @property Style.CSS_CELL_HOVER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2798 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2799 CSS_CELL_HOVER : defStyle.CSS_CELL_HOVER,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2800 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2801 * @property Style.CSS_CELL_HIGHLIGHT1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2802 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2803 CSS_CELL_HIGHLIGHT1 : defStyle.CSS_CELL_HIGHLIGHT1,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2804 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2805 * @property Style.CSS_CELL_HIGHLIGHT2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2806 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2807 CSS_CELL_HIGHLIGHT2 : defStyle.CSS_CELL_HIGHLIGHT2,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2808 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2809 * @property Style.CSS_CELL_HIGHLIGHT3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2810 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2811 CSS_CELL_HIGHLIGHT3 : defStyle.CSS_CELL_HIGHLIGHT3,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2812 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2813 * @property Style.CSS_CELL_HIGHLIGHT4
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2814 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2815 CSS_CELL_HIGHLIGHT4 : defStyle.CSS_CELL_HIGHLIGHT4,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2816 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2817 * @property Style.CSS_WITH_TITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2818 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2819 CSS_WITH_TITLE : defStyle.CSS_WITH_TITLE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2820 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2821 * @property Style.CSS_FIXED_SIZE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2822 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2823 CSS_FIXED_SIZE : defStyle.CSS_FIXED_SIZE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2824 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2825 * @property Style.CSS_LINK_CLOSE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2826 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2827 CSS_LINK_CLOSE : defStyle.CSS_LINK_CLOSE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2828 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2829 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2830
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2831 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2832 * Builds the date label that will be displayed in the calendar header or
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2833 * footer, depending on configuration.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2834 * @method buildMonthLabel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2835 * @return {String} The formatted calendar month label
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2836 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2837 buildMonthLabel : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2838 return this._buildMonthLabel(this.cfg.getProperty(DEF_CFG.PAGEDATE.key));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2839 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2840
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2841 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2842 * Helper method, to format a Month Year string, given a JavaScript Date, based on the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2843 * Calendar localization settings
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2844 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2845 * @method _buildMonthLabel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2846 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2847 * @param {Date} date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2848 * @return {String} Formated month, year string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2849 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2850 _buildMonthLabel : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2851 var monthLabel = this.Locale.LOCALE_MONTHS[date.getMonth()] + this.Locale.MY_LABEL_MONTH_SUFFIX,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2852 yearLabel = (date.getFullYear() + this.Locale.YEAR_OFFSET) + this.Locale.MY_LABEL_YEAR_SUFFIX;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2853
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2854 if (this.Locale.MY_LABEL_MONTH_POSITION == 2 || this.Locale.MY_LABEL_YEAR_POSITION == 1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2855 return yearLabel + monthLabel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2856 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2857 return monthLabel + yearLabel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2858 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2859 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2860
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2861 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2862 * Builds the date digit that will be displayed in calendar cells
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2863 * @method buildDayLabel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2864 * @param {Date} workingDate The current working date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2865 * @return {String} The formatted day label
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2866 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2867 buildDayLabel : function(workingDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2868 return workingDate.getDate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2869 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2870
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2871 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2872 * Creates the title bar element and adds it to Calendar container DIV
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2873 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2874 * @method createTitleBar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2875 * @param {String} strTitle The title to display in the title bar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2876 * @return The title bar element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2877 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2878 createTitleBar : function(strTitle) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2879 var tDiv = Dom.getElementsByClassName(YAHOO.widget.CalendarGroup.CSS_2UPTITLE, "div", this.oDomContainer)[0] || document.createElement("div");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2880 tDiv.className = YAHOO.widget.CalendarGroup.CSS_2UPTITLE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2881 tDiv.innerHTML = strTitle;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2882 this.oDomContainer.insertBefore(tDiv, this.oDomContainer.firstChild);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2883
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2884 Dom.addClass(this.oDomContainer, this.Style.CSS_WITH_TITLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2885
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2886 return tDiv;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2887 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2889 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2890 * Removes the title bar element from the DOM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2891 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2892 * @method removeTitleBar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2893 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2894 removeTitleBar : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2895 var tDiv = Dom.getElementsByClassName(YAHOO.widget.CalendarGroup.CSS_2UPTITLE, "div", this.oDomContainer)[0] || null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2896 if (tDiv) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2897 Event.purgeElement(tDiv);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2898 this.oDomContainer.removeChild(tDiv);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2899 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2900 Dom.removeClass(this.oDomContainer, this.Style.CSS_WITH_TITLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2901 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2902
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2903 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2904 * Creates the close button HTML element and adds it to Calendar container DIV
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2905 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2906 * @method createCloseButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2907 * @return The close HTML element created
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2908 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2909 createCloseButton : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2910 var cssClose = YAHOO.widget.CalendarGroup.CSS_2UPCLOSE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2911 cssLinkClose = this.Style.CSS_LINK_CLOSE,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2912 DEPR_CLOSE_PATH = "us/my/bn/x_d.gif",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2913
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2914 lnk = Dom.getElementsByClassName(cssLinkClose, "a", this.oDomContainer)[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2915 strings = this.cfg.getProperty(DEF_CFG.STRINGS.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2916 closeStr = (strings && strings.close) ? strings.close : "";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2917
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2918 if (!lnk) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2919 lnk = document.createElement("a");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2920 Event.addListener(lnk, "click", function(e, cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2921 cal.hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2922 Event.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2923 }, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2924 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2925
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2926 lnk.href = "#";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2927 lnk.className = cssLinkClose;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2928
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2929 if (Calendar.IMG_ROOT !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2930 var img = Dom.getElementsByClassName(cssClose, "img", lnk)[0] || document.createElement("img");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2931 img.src = Calendar.IMG_ROOT + DEPR_CLOSE_PATH;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2932 img.className = cssClose;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2933 lnk.appendChild(img);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2934 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2935 lnk.innerHTML = '<span class="' + cssClose + ' ' + this.Style.CSS_CLOSE + '">' + closeStr + '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2936 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2937 this.oDomContainer.appendChild(lnk);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2938
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2939 return lnk;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2940 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2941
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2942 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2943 * Removes the close button HTML element from the DOM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2944 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2945 * @method removeCloseButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2946 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2947 removeCloseButton : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2948 var btn = Dom.getElementsByClassName(this.Style.CSS_LINK_CLOSE, "a", this.oDomContainer)[0] || null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2949 if (btn) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2950 Event.purgeElement(btn);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2951 this.oDomContainer.removeChild(btn);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2952 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2953 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2954
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2955 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2956 * Renders the calendar header.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2957 * @method renderHeader
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2958 * @param {Array} html The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2959 * @return {Array} The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2960 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2961 renderHeader : function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2962
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2963 this.logger.log("Rendering header", "render");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2964
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2965 var colSpan = 7,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2966 DEPR_NAV_LEFT = "us/tr/callt.gif",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2967 DEPR_NAV_RIGHT = "us/tr/calrt.gif",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2968 cfg = this.cfg,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2969 pageDate = cfg.getProperty(DEF_CFG.PAGEDATE.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2970 strings= cfg.getProperty(DEF_CFG.STRINGS.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2971 prevStr = (strings && strings.previousMonth) ? strings.previousMonth : "",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2972 nextStr = (strings && strings.nextMonth) ? strings.nextMonth : "",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2973 monthLabel;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2974
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2975 if (cfg.getProperty(DEF_CFG.SHOW_WEEK_HEADER.key)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2976 colSpan += 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2977 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2978
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2979 if (cfg.getProperty(DEF_CFG.SHOW_WEEK_FOOTER.key)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2980 colSpan += 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2981 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2982
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2983 html[html.length] = "<thead>";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2984 html[html.length] = "<tr>";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2985 html[html.length] = '<th colspan="' + colSpan + '" class="' + this.Style.CSS_HEADER_TEXT + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2986 html[html.length] = '<div class="' + this.Style.CSS_HEADER + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2987
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2988 var renderLeft, renderRight = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2989
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2990 if (this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2991 if (this.index === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2992 renderLeft = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2993 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2994 if (this.index == (this.parent.cfg.getProperty("pages") -1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2995 renderRight = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2996 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2997 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2998 renderLeft = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
2999 renderRight = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3000 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3001
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3002 if (renderLeft) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3003 monthLabel = this._buildMonthLabel(DateMath.subtract(pageDate, DateMath.MONTH, 1));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3004
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3005 var leftArrow = cfg.getProperty(DEF_CFG.NAV_ARROW_LEFT.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3006 // Check for deprecated customization - If someone set IMG_ROOT, but didn't set NAV_ARROW_LEFT, then set NAV_ARROW_LEFT to the old deprecated value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3007 if (leftArrow === null && Calendar.IMG_ROOT !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3008 leftArrow = Calendar.IMG_ROOT + DEPR_NAV_LEFT;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3009 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3010 var leftStyle = (leftArrow === null) ? "" : ' style="background-image:url(' + leftArrow + ')"';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3011 html[html.length] = '<a class="' + this.Style.CSS_NAV_LEFT + '"' + leftStyle + ' href="#">' + prevStr + ' (' + monthLabel + ')' + '</a>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3012 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3013
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3014 var lbl = this.buildMonthLabel();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3015 var cal = this.parent || this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3016 if (cal.cfg.getProperty("navigator")) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3017 lbl = "<a class=\"" + this.Style.CSS_NAV + "\" href=\"#\">" + lbl + "</a>";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3018 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3019 html[html.length] = lbl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3020
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3021 if (renderRight) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3022 monthLabel = this._buildMonthLabel(DateMath.add(pageDate, DateMath.MONTH, 1));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3023
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3024 var rightArrow = cfg.getProperty(DEF_CFG.NAV_ARROW_RIGHT.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3025 if (rightArrow === null && Calendar.IMG_ROOT !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3026 rightArrow = Calendar.IMG_ROOT + DEPR_NAV_RIGHT;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3027 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3028 var rightStyle = (rightArrow === null) ? "" : ' style="background-image:url(' + rightArrow + ')"';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3029 html[html.length] = '<a class="' + this.Style.CSS_NAV_RIGHT + '"' + rightStyle + ' href="#">' + nextStr + ' (' + monthLabel + ')' + '</a>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3030 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3031
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3032 html[html.length] = '</div>\n</th>\n</tr>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3033
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3034 if (cfg.getProperty(DEF_CFG.SHOW_WEEKDAYS.key)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3035 html = this.buildWeekdays(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3036 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3037
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3038 html[html.length] = '</thead>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3039
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3040 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3041 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3042
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3043 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3044 * Renders the Calendar's weekday headers.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3045 * @method buildWeekdays
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3046 * @param {Array} html The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3047 * @return {Array} The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3048 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3049 buildWeekdays : function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3050
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3051 html[html.length] = '<tr class="' + this.Style.CSS_WEEKDAY_ROW + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3052
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3053 if (this.cfg.getProperty(DEF_CFG.SHOW_WEEK_HEADER.key)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3054 html[html.length] = '<th>&#160;</th>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3055 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3056
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3057 for(var i=0;i < this.Locale.LOCALE_WEEKDAYS.length; ++i) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3058 html[html.length] = '<th class="' + this.Style.CSS_WEEKDAY_CELL + '">' + this.Locale.LOCALE_WEEKDAYS[i] + '</th>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3059 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3060
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3061 if (this.cfg.getProperty(DEF_CFG.SHOW_WEEK_FOOTER.key)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3062 html[html.length] = '<th>&#160;</th>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3063 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3064
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3065 html[html.length] = '</tr>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3066
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3067 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3068 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3069
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3070 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3071 * Renders the calendar body.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3072 * @method renderBody
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3073 * @param {Date} workingDate The current working Date being used for the render process
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3074 * @param {Array} html The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3075 * @return {Array} The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3076 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3077 renderBody : function(workingDate, html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3078 this.logger.log("Rendering body", "render");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3079
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3080 var startDay = this.cfg.getProperty(DEF_CFG.START_WEEKDAY.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3081
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3082 this.preMonthDays = workingDate.getDay();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3083 if (startDay > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3084 this.preMonthDays -= startDay;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3085 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3086 if (this.preMonthDays < 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3087 this.preMonthDays += 7;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3088 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3089
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3090 this.monthDays = DateMath.findMonthEnd(workingDate).getDate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3091 this.postMonthDays = Calendar.DISPLAY_DAYS-this.preMonthDays-this.monthDays;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3092
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3093 this.logger.log(this.preMonthDays + " preciding out-of-month days", "render");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3094 this.logger.log(this.monthDays + " month days", "render");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3095 this.logger.log(this.postMonthDays + " post-month days", "render");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3096
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3097 workingDate = DateMath.subtract(workingDate, DateMath.DAY, this.preMonthDays);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3098 this.logger.log("Calendar page starts on " + workingDate, "render");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3099
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3100 var weekNum,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3101 weekClass,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3102 weekPrefix = "w",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3103 cellPrefix = "_cell",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3104 workingDayPrefix = "wd",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3105 dayPrefix = "d",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3106 cellRenderers,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3107 renderer,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3108 t = this.today,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3109 cfg = this.cfg,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3110 todayYear = t.getFullYear(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3111 todayMonth = t.getMonth(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3112 todayDate = t.getDate(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3113 useDate = cfg.getProperty(DEF_CFG.PAGEDATE.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3114 hideBlankWeeks = cfg.getProperty(DEF_CFG.HIDE_BLANK_WEEKS.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3115 showWeekFooter = cfg.getProperty(DEF_CFG.SHOW_WEEK_FOOTER.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3116 showWeekHeader = cfg.getProperty(DEF_CFG.SHOW_WEEK_HEADER.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3117 mindate = cfg.getProperty(DEF_CFG.MINDATE.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3118 maxdate = cfg.getProperty(DEF_CFG.MAXDATE.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3119 yearOffset = this.Locale.YEAR_OFFSET;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3120
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3121 if (mindate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3122 mindate = DateMath.clearTime(mindate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3123 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3124 if (maxdate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3125 maxdate = DateMath.clearTime(maxdate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3126 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3127
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3128 html[html.length] = '<tbody class="m' + (useDate.getMonth()+1) + ' ' + this.Style.CSS_BODY + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3129
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3130 var i = 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3131 tempDiv = document.createElement("div"),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3132 cell = document.createElement("td");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3133
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3134 tempDiv.appendChild(cell);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3135
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3136 var cal = this.parent || this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3137
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3138 for (var r=0;r<6;r++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3139 weekNum = DateMath.getWeekNumber(workingDate, startDay);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3140 weekClass = weekPrefix + weekNum;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3141
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3142 // Local OOM check for performance, since we already have pagedate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3143 if (r !== 0 && hideBlankWeeks === true && workingDate.getMonth() != useDate.getMonth()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3144 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3145 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3146 html[html.length] = '<tr class="' + weekClass + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3147
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3148 if (showWeekHeader) { html = this.renderRowHeader(weekNum, html); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3149
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3150 for (var d=0; d < 7; d++){ // Render actual days
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3151
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3152 cellRenderers = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3153
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3154 this.clearElement(cell);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3155 cell.className = this.Style.CSS_CELL;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3156 cell.id = this.id + cellPrefix + i;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3157 this.logger.log("Rendering cell " + cell.id + " (" + workingDate.getFullYear() + yearOffset + "-" + (workingDate.getMonth()+1) + "-" + workingDate.getDate() + ")", "cellrender");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3158
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3159 if (workingDate.getDate() == todayDate &&
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3160 workingDate.getMonth() == todayMonth &&
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3161 workingDate.getFullYear() == todayYear) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3162 cellRenderers[cellRenderers.length]=cal.renderCellStyleToday;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3163 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3164
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3165 var workingArray = [workingDate.getFullYear(),workingDate.getMonth()+1,workingDate.getDate()];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3166 this.cellDates[this.cellDates.length] = workingArray; // Add this date to cellDates
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3167
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3168 // Local OOM check for performance, since we already have pagedate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3169 if (workingDate.getMonth() != useDate.getMonth()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3170 cellRenderers[cellRenderers.length]=cal.renderCellNotThisMonth;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3171 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3172 Dom.addClass(cell, workingDayPrefix + workingDate.getDay());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3173 Dom.addClass(cell, dayPrefix + workingDate.getDate());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3174
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3175 for (var s=0;s<this.renderStack.length;++s) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3176
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3177 renderer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3178
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3179 var rArray = this.renderStack[s],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3180 type = rArray[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3181 month,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3182 day,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3183 year;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3184
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3185 switch (type) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3186 case Calendar.DATE:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3187 month = rArray[1][1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3188 day = rArray[1][2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3189 year = rArray[1][0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3190
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3191 if (workingDate.getMonth()+1 == month && workingDate.getDate() == day && workingDate.getFullYear() == year) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3192 renderer = rArray[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3193 this.renderStack.splice(s,1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3194 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3195 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3196 case Calendar.MONTH_DAY:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3197 month = rArray[1][0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3198 day = rArray[1][1];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3199
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3200 if (workingDate.getMonth()+1 == month && workingDate.getDate() == day) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3201 renderer = rArray[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3202 this.renderStack.splice(s,1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3203 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3204 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3205 case Calendar.RANGE:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3206 var date1 = rArray[1][0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3207 date2 = rArray[1][1],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3208 d1month = date1[1],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3209 d1day = date1[2],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3210 d1year = date1[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3211 d1 = DateMath.getDate(d1year, d1month-1, d1day),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3212 d2month = date2[1],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3213 d2day = date2[2],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3214 d2year = date2[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3215 d2 = DateMath.getDate(d2year, d2month-1, d2day);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3216
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3217 if (workingDate.getTime() >= d1.getTime() && workingDate.getTime() <= d2.getTime()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3218 renderer = rArray[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3219
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3220 if (workingDate.getTime()==d2.getTime()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3221 this.renderStack.splice(s,1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3222 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3223 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3224 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3225 case Calendar.WEEKDAY:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3226 var weekday = rArray[1][0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3227 if (workingDate.getDay()+1 == weekday) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3228 renderer = rArray[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3229 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3230 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3231 case Calendar.MONTH:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3232 month = rArray[1][0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3233 if (workingDate.getMonth()+1 == month) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3234 renderer = rArray[2];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3235 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3236 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3237 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3238
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3239 if (renderer) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3240 cellRenderers[cellRenderers.length]=renderer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3241 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3242 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3243
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3244 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3245
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3246 if (this._indexOfSelectedFieldArray(workingArray) > -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3247 cellRenderers[cellRenderers.length]=cal.renderCellStyleSelected;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3248 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3249
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3250 if ((mindate && (workingDate.getTime() < mindate.getTime())) ||
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3251 (maxdate && (workingDate.getTime() > maxdate.getTime()))
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3252 ) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3253 cellRenderers[cellRenderers.length]=cal.renderOutOfBoundsDate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3254 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3255 cellRenderers[cellRenderers.length]=cal.styleCellDefault;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3256 cellRenderers[cellRenderers.length]=cal.renderCellDefault;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3257 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3258
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3259 for (var x=0; x < cellRenderers.length; ++x) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3260 this.logger.log("renderer[" + x + "] for (" + workingDate.getFullYear() + yearOffset + "-" + (workingDate.getMonth()+1) + "-" + workingDate.getDate() + ")", "cellrender");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3261 if (cellRenderers[x].call(cal, workingDate, cell) == Calendar.STOP_RENDER) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3262 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3263 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3264 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3265
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3266 workingDate.setTime(workingDate.getTime() + DateMath.ONE_DAY_MS);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3267 // Just in case we crossed DST/Summertime boundaries
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3268 workingDate = DateMath.clearTime(workingDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3269
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3270 if (i >= 0 && i <= 6) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3271 Dom.addClass(cell, this.Style.CSS_CELL_TOP);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3272 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3273 if ((i % 7) === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3274 Dom.addClass(cell, this.Style.CSS_CELL_LEFT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3275 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3276 if (((i+1) % 7) === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3277 Dom.addClass(cell, this.Style.CSS_CELL_RIGHT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3278 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3279
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3280 var postDays = this.postMonthDays;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3281 if (hideBlankWeeks && postDays >= 7) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3282 var blankWeeks = Math.floor(postDays/7);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3283 for (var p=0;p<blankWeeks;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3284 postDays -= 7;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3285 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3286 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3287
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3288 if (i >= ((this.preMonthDays+postDays+this.monthDays)-7)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3289 Dom.addClass(cell, this.Style.CSS_CELL_BOTTOM);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3290 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3291
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3292 html[html.length] = tempDiv.innerHTML;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3293 i++;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3294 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3295
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3296 if (showWeekFooter) { html = this.renderRowFooter(weekNum, html); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3297
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3298 html[html.length] = '</tr>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3299 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3300 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3301
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3302 html[html.length] = '</tbody>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3303
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3304 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3305 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3306
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3307 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3308 * Renders the calendar footer. In the default implementation, there is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3309 * no footer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3310 * @method renderFooter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3311 * @param {Array} html The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3312 * @return {Array} The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3313 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3314 renderFooter : function(html) { return html; },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3315
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3316 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3317 * Renders the calendar after it has been configured. The render() method has a specific call chain that will execute
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3318 * when the method is called: renderHeader, renderBody, renderFooter.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3319 * Refer to the documentation for those methods for information on
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3320 * individual render tasks.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3321 * @method render
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3322 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3323 render : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3324 this.beforeRenderEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3325
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3326 // Find starting day of the current month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3327 var workingDate = DateMath.findMonthStart(this.cfg.getProperty(DEF_CFG.PAGEDATE.key));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3328
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3329 this.resetRenderers();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3330 this.cellDates.length = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3331
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3332 Event.purgeElement(this.oDomContainer, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3333
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3334 var html = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3335
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3336 html[html.length] = '<table cellSpacing="0" class="' + this.Style.CSS_CALENDAR + ' y' + (workingDate.getFullYear() + this.Locale.YEAR_OFFSET) +'" id="' + this.id + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3337 html = this.renderHeader(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3338 html = this.renderBody(workingDate, html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3339 html = this.renderFooter(html);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3340 html[html.length] = '</table>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3341
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3342 this.oDomContainer.innerHTML = html.join("\n");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3343
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3344 this.applyListeners();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3345 this.cells = Dom.getElementsByClassName(this.Style.CSS_CELL, "td", this.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3346
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3347 this.cfg.refireEvent(DEF_CFG.TITLE.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3348 this.cfg.refireEvent(DEF_CFG.CLOSE.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3349 this.cfg.refireEvent(DEF_CFG.IFRAME.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3350
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3351 this.renderEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3352 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3353
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3354 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3355 * Applies the Calendar's DOM listeners to applicable elements.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3356 * @method applyListeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3357 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3358 applyListeners : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3359 var root = this.oDomContainer,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3360 cal = this.parent || this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3361 anchor = "a",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3362 click = "click";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3363
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3364 var linkLeft = Dom.getElementsByClassName(this.Style.CSS_NAV_LEFT, anchor, root),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3365 linkRight = Dom.getElementsByClassName(this.Style.CSS_NAV_RIGHT, anchor, root);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3366
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3367 if (linkLeft && linkLeft.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3368 this.linkLeft = linkLeft[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3369 Event.addListener(this.linkLeft, click, this.doPreviousMonthNav, cal, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3370 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3371
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3372 if (linkRight && linkRight.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3373 this.linkRight = linkRight[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3374 Event.addListener(this.linkRight, click, this.doNextMonthNav, cal, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3375 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3376
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3377 if (cal.cfg.getProperty("navigator") !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3378 this.applyNavListeners();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3379 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3380
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3381 if (this.domEventMap) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3382 var el,elements;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3383 for (var cls in this.domEventMap) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3384 if (Lang.hasOwnProperty(this.domEventMap, cls)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3385 var items = this.domEventMap[cls];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3386
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3387 if (! (items instanceof Array)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3388 items = [items];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3389 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3390
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3391 for (var i=0;i<items.length;i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3392 var item = items[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3393 elements = Dom.getElementsByClassName(cls, item.tag, this.oDomContainer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3394
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3395 for (var c=0;c<elements.length;c++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3396 el = elements[c];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3397 Event.addListener(el, item.event, item.handler, item.scope, item.correct );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3398 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3399 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3400 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3401 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3402 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3403
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3404 Event.addListener(this.oDomContainer, "click", this.doSelectCell, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3405 Event.addListener(this.oDomContainer, "mouseover", this.doCellMouseOver, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3406 Event.addListener(this.oDomContainer, "mouseout", this.doCellMouseOut, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3407 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3408
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3409 applyNavListeners : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3410 var calParent = this.parent || this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3411 cal = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3412 navBtns = Dom.getElementsByClassName(this.Style.CSS_NAV, "a", this.oDomContainer);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3413
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3414 if (navBtns.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3415
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3416 Event.addListener(navBtns, "click", function (e, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3417 var target = Event.getTarget(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3418 // this == navBtn
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3419 if (this === target || Dom.isAncestor(this, target)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3420 Event.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3421 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3422 var navigator = calParent.oNavigator;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3423 if (navigator) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3424 var pgdate = cal.cfg.getProperty("pagedate");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3425 navigator.setYear(pgdate.getFullYear() + cal.Locale.YEAR_OFFSET);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3426 navigator.setMonth(pgdate.getMonth());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3427 navigator.show();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3428 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3429 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3430 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3431 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3432
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3433 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3434 * Retrieves the Date object for the specified Calendar cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3435 * @method getDateByCellId
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3436 * @param {String} id The id of the cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3437 * @return {Date} The Date object for the specified Calendar cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3438 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3439 getDateByCellId : function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3440 var date = this.getDateFieldsByCellId(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3441 return (date) ? DateMath.getDate(date[0],date[1]-1,date[2]) : null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3442 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3443
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3444 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3445 * Retrieves the Date object for the specified Calendar cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3446 * @method getDateFieldsByCellId
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3447 * @param {String} id The id of the cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3448 * @return {Array} The array of Date fields for the specified Calendar cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3449 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3450 getDateFieldsByCellId : function(id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3451 id = this.getIndexFromId(id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3452 return (id > -1) ? this.cellDates[id] : null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3453 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3454
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3455 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3456 * Find the Calendar's cell index for a given date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3457 * If the date is not found, the method returns -1.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3458 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3459 * The returned index can be used to lookup the cell HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3460 * using the Calendar's cells array or passed to selectCell to select
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3461 * cells by index.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3462 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3463 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3464 * See <a href="#cells">cells</a>, <a href="#selectCell">selectCell</a>.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3465 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3466 * @method getCellIndex
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3467 * @param {Date} date JavaScript Date object, for which to find a cell index.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3468 * @return {Number} The index of the date in Calendars cellDates/cells arrays, or -1 if the date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3469 * is not on the curently rendered Calendar page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3470 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3471 getCellIndex : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3472 var idx = -1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3473 if (date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3474 var m = date.getMonth(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3475 y = date.getFullYear(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3476 d = date.getDate(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3477 dates = this.cellDates;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3478
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3479 for (var i = 0; i < dates.length; ++i) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3480 var cellDate = dates[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3481 if (cellDate[0] === y && cellDate[1] === m+1 && cellDate[2] === d) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3482 idx = i;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3483 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3484 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3485 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3486 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3487 return idx;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3488 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3489
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3490 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3491 * Given the id used to mark each Calendar cell, this method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3492 * extracts the index number from the id.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3493 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3494 * @param {String} strId The cell id
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3495 * @return {Number} The index of the cell, or -1 if id does not contain an index number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3496 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3497 getIndexFromId : function(strId) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3498 var idx = -1,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3499 li = strId.lastIndexOf("_cell");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3500
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3501 if (li > -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3502 idx = parseInt(strId.substring(li + 5), 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3503 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3504
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3505 return idx;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3506 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3507
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3508 // BEGIN BUILT-IN TABLE CELL RENDERERS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3509
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3510 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3511 * Renders a cell that falls before the minimum date or after the maximum date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3512 * widget class.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3513 * @method renderOutOfBoundsDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3514 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3515 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3516 * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3517 * should not be terminated
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3518 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3519 renderOutOfBoundsDate : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3520 Dom.addClass(cell, this.Style.CSS_CELL_OOB);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3521 cell.innerHTML = workingDate.getDate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3522 return Calendar.STOP_RENDER;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3523 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3524
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3525 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3526 * Renders the row header for a week.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3527 * @method renderRowHeader
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3528 * @param {Number} weekNum The week number of the current row
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3529 * @param {Array} cell The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3530 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3531 renderRowHeader : function(weekNum, html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3532 html[html.length] = '<th class="' + this.Style.CSS_ROW_HEADER + '">' + weekNum + '</th>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3533 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3534 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3535
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3536 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3537 * Renders the row footer for a week.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3538 * @method renderRowFooter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3539 * @param {Number} weekNum The week number of the current row
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3540 * @param {Array} cell The current working HTML array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3541 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3542 renderRowFooter : function(weekNum, html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3543 html[html.length] = '<th class="' + this.Style.CSS_ROW_FOOTER + '">' + weekNum + '</th>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3544 return html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3545 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3546
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3547 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3548 * Renders a single standard calendar cell in the calendar widget table.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3549 * All logic for determining how a standard default cell will be rendered is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3550 * encapsulated in this method, and must be accounted for when extending the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3551 * widget class.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3552 * @method renderCellDefault
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3553 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3554 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3555 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3556 renderCellDefault : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3557 cell.innerHTML = '<a href="#" class="' + this.Style.CSS_CELL_SELECTOR + '">' + this.buildDayLabel(workingDate) + "</a>";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3558 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3559
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3560 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3561 * Styles a selectable cell.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3562 * @method styleCellDefault
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3563 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3564 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3565 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3566 styleCellDefault : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3567 Dom.addClass(cell, this.Style.CSS_CELL_SELECTABLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3568 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3569
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3570
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3571 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3572 * Renders a single standard calendar cell using the CSS hightlight1 style
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3573 * @method renderCellStyleHighlight1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3574 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3575 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3576 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3577 renderCellStyleHighlight1 : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3578 Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3579 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3580
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3581 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3582 * Renders a single standard calendar cell using the CSS hightlight2 style
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3583 * @method renderCellStyleHighlight2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3584 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3585 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3586 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3587 renderCellStyleHighlight2 : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3588 Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT2);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3589 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3590
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3591 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3592 * Renders a single standard calendar cell using the CSS hightlight3 style
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3593 * @method renderCellStyleHighlight3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3594 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3595 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3596 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3597 renderCellStyleHighlight3 : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3598 Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT3);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3599 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3600
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3601 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3602 * Renders a single standard calendar cell using the CSS hightlight4 style
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3603 * @method renderCellStyleHighlight4
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3604 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3605 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3606 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3607 renderCellStyleHighlight4 : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3608 Dom.addClass(cell, this.Style.CSS_CELL_HIGHLIGHT4);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3609 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3610
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3611 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3612 * Applies the default style used for rendering today's date to the current calendar cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3613 * @method renderCellStyleToday
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3614 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3615 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3616 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3617 renderCellStyleToday : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3618 Dom.addClass(cell, this.Style.CSS_CELL_TODAY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3619 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3620
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3621 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3622 * Applies the default style used for rendering selected dates to the current calendar cell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3623 * @method renderCellStyleSelected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3624 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3625 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3626 * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3627 * should not be terminated
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3628 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3629 renderCellStyleSelected : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3630 Dom.addClass(cell, this.Style.CSS_CELL_SELECTED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3631 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3632
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3633 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3634 * Applies the default style used for rendering dates that are not a part of the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3635 * month (preceding or trailing the cells for the current month)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3636 * @method renderCellNotThisMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3637 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3638 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3639 * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3640 * should not be terminated
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3641 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3642 renderCellNotThisMonth : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3643 Dom.addClass(cell, this.Style.CSS_CELL_OOM);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3644 cell.innerHTML=workingDate.getDate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3645 return Calendar.STOP_RENDER;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3646 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3647
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3648 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3649 * Renders the current calendar cell as a non-selectable "black-out" date using the default
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3650 * restricted style.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3651 * @method renderBodyCellRestricted
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3652 * @param {Date} workingDate The current working Date object being used to generate the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3653 * @param {HTMLTableCellElement} cell The current working cell in the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3654 * @return {String} YAHOO.widget.Calendar.STOP_RENDER if rendering should stop with this style, null or nothing if rendering
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3655 * should not be terminated
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3656 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3657 renderBodyCellRestricted : function(workingDate, cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3658 Dom.addClass(cell, this.Style.CSS_CELL);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3659 Dom.addClass(cell, this.Style.CSS_CELL_RESTRICTED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3660 cell.innerHTML=workingDate.getDate();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3661 return Calendar.STOP_RENDER;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3662 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3663
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3664 // END BUILT-IN TABLE CELL RENDERERS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3665
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3666 // BEGIN MONTH NAVIGATION METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3667
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3668 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3669 * Adds the designated number of months to the current calendar month, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3670 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3671 * @method addMonths
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3672 * @param {Number} count The number of months to add to the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3673 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3674 addMonths : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3675 var cfgPageDate = DEF_CFG.PAGEDATE.key,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3676
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3677 prevDate = this.cfg.getProperty(cfgPageDate),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3678 newDate = DateMath.add(prevDate, DateMath.MONTH, count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3679
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3680 this.cfg.setProperty(cfgPageDate, newDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3681 this.resetRenderers();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3682 this.changePageEvent.fire(prevDate, newDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3683 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3684
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3685 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3686 * Subtracts the designated number of months from the current calendar month, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3687 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3688 * @method subtractMonths
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3689 * @param {Number} count The number of months to subtract from the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3690 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3691 subtractMonths : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3692 this.addMonths(-1*count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3693 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3694
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3695 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3696 * Adds the designated number of years to the current calendar, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3697 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3698 * @method addYears
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3699 * @param {Number} count The number of years to add to the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3700 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3701 addYears : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3702 var cfgPageDate = DEF_CFG.PAGEDATE.key,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3703
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3704 prevDate = this.cfg.getProperty(cfgPageDate),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3705 newDate = DateMath.add(prevDate, DateMath.YEAR, count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3706
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3707 this.cfg.setProperty(cfgPageDate, newDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3708 this.resetRenderers();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3709 this.changePageEvent.fire(prevDate, newDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3710 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3711
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3712 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3713 * Subtcats the designated number of years from the current calendar, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3714 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3715 * @method subtractYears
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3716 * @param {Number} count The number of years to subtract from the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3717 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3718 subtractYears : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3719 this.addYears(-1*count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3720 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3721
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3722 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3723 * Navigates to the next month page in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3724 * @method nextMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3725 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3726 nextMonth : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3727 this.addMonths(1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3728 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3729
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3730 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3731 * Navigates to the previous month page in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3732 * @method previousMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3733 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3734 previousMonth : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3735 this.addMonths(-1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3736 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3737
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3738 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3739 * Navigates to the next year in the currently selected month in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3740 * @method nextYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3741 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3742 nextYear : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3743 this.addYears(1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3744 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3745
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3746 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3747 * Navigates to the previous year in the currently selected month in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3748 * @method previousYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3749 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3750 previousYear : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3751 this.addYears(-1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3752 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3753
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3754 // END MONTH NAVIGATION METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3755
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3756 // BEGIN SELECTION METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3757
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3758 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3759 * Resets the calendar widget to the originally selected month and year, and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3760 * sets the calendar to the initial selection(s).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3761 * @method reset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3762 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3763 reset : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3764 this.cfg.resetProperty(DEF_CFG.SELECTED.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3765 this.cfg.resetProperty(DEF_CFG.PAGEDATE.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3766 this.resetEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3767 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3768
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3769 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3770 * Clears the selected dates in the current calendar widget and sets the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3771 * to the current month and year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3772 * @method clear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3773 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3774 clear : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3775 this.cfg.setProperty(DEF_CFG.SELECTED.key, []);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3776 this.cfg.setProperty(DEF_CFG.PAGEDATE.key, new Date(this.today.getTime()));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3777 this.clearEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3778 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3779
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3780 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3781 * Selects a date or a collection of dates on the current calendar. This method, by default,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3782 * does not call the render method explicitly. Once selection has completed, render must be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3783 * called for the changes to be reflected visually.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3784 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3785 * Any dates which are OOB (out of bounds, not selectable) will not be selected and the array of
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3786 * selected dates passed to the selectEvent will not contain OOB dates.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3787 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3788 * If all dates are OOB, the no state change will occur; beforeSelect and select events will not be fired.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3789 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3790 * @method select
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3791 * @param {String/Date/Date[]} date The date string of dates to select in the current calendar. Valid formats are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3792 * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3793 * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3794 * This method can also take a JavaScript Date object or an array of Date objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3795 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3796 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3797 select : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3798 this.logger.log("Select: " + date, "info");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3799
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3800 var aToBeSelected = this._toFieldArray(date),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3801 validDates = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3802 selected = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3803 cfgSelected = DEF_CFG.SELECTED.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3804
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3805 this.logger.log("Selection field array: " + aToBeSelected, "info");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3806
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3807 for (var a=0; a < aToBeSelected.length; ++a) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3808 var toSelect = aToBeSelected[a];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3809
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3810 if (!this.isDateOOB(this._toDate(toSelect))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3811
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3812 if (validDates.length === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3813 this.beforeSelectEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3814 selected = this.cfg.getProperty(cfgSelected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3815 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3816 validDates.push(toSelect);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3817
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3818 if (this._indexOfSelectedFieldArray(toSelect) == -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3819 selected[selected.length] = toSelect;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3820 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3821 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3822 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3823
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3824 if (validDates.length === 0) { this.logger.log("All provided dates were OOB. beforeSelect and select events not fired", "info"); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3825
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3826 if (validDates.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3827 if (this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3828 this.parent.cfg.setProperty(cfgSelected, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3829 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3830 this.cfg.setProperty(cfgSelected, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3831 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3832 this.selectEvent.fire(validDates);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3833 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3834
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3835 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3836 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3837
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3838 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3839 * Selects a date on the current calendar by referencing the index of the cell that should be selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3840 * This method is used to easily select a single cell (usually with a mouse click) without having to do
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3841 * a full render. The selected style is applied to the cell directly.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3842 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3843 * If the cell is not marked with the CSS_CELL_SELECTABLE class (as is the case by default for out of month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3844 * or out of bounds cells), it will not be selected and in such a case beforeSelect and select events will not be fired.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3845 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3846 * @method selectCell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3847 * @param {Number} cellIndex The index of the cell to select in the current calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3848 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3849 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3850 selectCell : function(cellIndex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3851
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3852 var cell = this.cells[cellIndex],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3853 cellDate = this.cellDates[cellIndex],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3854 dCellDate = this._toDate(cellDate),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3855 selectable = Dom.hasClass(cell, this.Style.CSS_CELL_SELECTABLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3856
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3857 this.logger.log("Select: " + dCellDate, "info");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3858 if (!selectable) {this.logger.log("The cell at cellIndex:" + cellIndex + " is not a selectable cell. beforeSelect, select events not fired", "info"); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3859
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3860 if (selectable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3861
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3862 this.beforeSelectEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3863
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3864 var cfgSelected = DEF_CFG.SELECTED.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3865 var selected = this.cfg.getProperty(cfgSelected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3866
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3867 var selectDate = cellDate.concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3868
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3869 if (this._indexOfSelectedFieldArray(selectDate) == -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3870 selected[selected.length] = selectDate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3871 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3872 if (this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3873 this.parent.cfg.setProperty(cfgSelected, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3874 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3875 this.cfg.setProperty(cfgSelected, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3876 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3877 this.renderCellStyleSelected(dCellDate,cell);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3878 this.selectEvent.fire([selectDate]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3879
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3880 this.doCellMouseOut.call(cell, null, this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3881 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3882
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3883 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3884 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3885
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3886 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3887 * Deselects a date or a collection of dates on the current calendar. This method, by default,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3888 * does not call the render method explicitly. Once deselection has completed, render must be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3889 * called for the changes to be reflected visually.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3890 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3891 * The method will not attempt to deselect any dates which are OOB (out of bounds, and hence not selectable)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3892 * and the array of deselected dates passed to the deselectEvent will not contain any OOB dates.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3893 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3894 * If all dates are OOB, beforeDeselect and deselect events will not be fired.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3895 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3896 * @method deselect
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3897 * @param {String/Date/Date[]} date The date string of dates to deselect in the current calendar. Valid formats are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3898 * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3899 * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3900 * This method can also take a JavaScript Date object or an array of Date objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3901 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3902 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3903 deselect : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3904 this.logger.log("Deselect: " + date, "info");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3905
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3906 var aToBeDeselected = this._toFieldArray(date),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3907 validDates = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3908 selected = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3909 cfgSelected = DEF_CFG.SELECTED.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3910
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3911 this.logger.log("Deselection field array: " + aToBeDeselected, "info");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3912
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3913 for (var a=0; a < aToBeDeselected.length; ++a) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3914 var toDeselect = aToBeDeselected[a];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3915
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3916 if (!this.isDateOOB(this._toDate(toDeselect))) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3917
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3918 if (validDates.length === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3919 this.beforeDeselectEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3920 selected = this.cfg.getProperty(cfgSelected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3921 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3922
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3923 validDates.push(toDeselect);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3924
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3925 var index = this._indexOfSelectedFieldArray(toDeselect);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3926 if (index != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3927 selected.splice(index,1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3928 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3929 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3930 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3931
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3932 if (validDates.length === 0) { this.logger.log("All provided dates were OOB. beforeDeselect and deselect events not fired");}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3933
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3934 if (validDates.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3935 if (this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3936 this.parent.cfg.setProperty(cfgSelected, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3937 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3938 this.cfg.setProperty(cfgSelected, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3939 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3940 this.deselectEvent.fire(validDates);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3941 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3942
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3943 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3944 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3945
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3946 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3947 * Deselects a date on the current calendar by referencing the index of the cell that should be deselected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3948 * This method is used to easily deselect a single cell (usually with a mouse click) without having to do
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3949 * a full render. The selected style is removed from the cell directly.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3950 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3951 * If the cell is not marked with the CSS_CELL_SELECTABLE class (as is the case by default for out of month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3952 * or out of bounds cells), the method will not attempt to deselect it and in such a case, beforeDeselect and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3953 * deselect events will not be fired.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3954 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3955 * @method deselectCell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3956 * @param {Number} cellIndex The index of the cell to deselect in the current calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3957 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3958 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3959 deselectCell : function(cellIndex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3960 var cell = this.cells[cellIndex],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3961 cellDate = this.cellDates[cellIndex],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3962 cellDateIndex = this._indexOfSelectedFieldArray(cellDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3963
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3964 var selectable = Dom.hasClass(cell, this.Style.CSS_CELL_SELECTABLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3965 if (!selectable) { this.logger.log("The cell at cellIndex:" + cellIndex + " is not a selectable/deselectable cell", "info"); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3966
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3967 if (selectable) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3968
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3969 this.beforeDeselectEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3970
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3971 var selected = this.cfg.getProperty(DEF_CFG.SELECTED.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3972 dCellDate = this._toDate(cellDate),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3973 selectDate = cellDate.concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3974
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3975 if (cellDateIndex > -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3976 if (this.cfg.getProperty(DEF_CFG.PAGEDATE.key).getMonth() == dCellDate.getMonth() &&
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3977 this.cfg.getProperty(DEF_CFG.PAGEDATE.key).getFullYear() == dCellDate.getFullYear()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3978 Dom.removeClass(cell, this.Style.CSS_CELL_SELECTED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3979 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3980 selected.splice(cellDateIndex, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3981 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3982
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3983 if (this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3984 this.parent.cfg.setProperty(DEF_CFG.SELECTED.key, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3985 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3986 this.cfg.setProperty(DEF_CFG.SELECTED.key, selected);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3987 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3988
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3989 this.deselectEvent.fire([selectDate]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3990 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3991
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3992 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3993 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3994
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3995 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3996 * Deselects all dates on the current calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3997 * @method deselectAll
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3998 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
3999 * Assuming that this function executes properly, the return value should be an empty array.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4000 * However, the empty array is returned for the sake of being able to check the selection status
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4001 * of the calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4002 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4003 deselectAll : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4004 this.beforeDeselectEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4005
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4006 var cfgSelected = DEF_CFG.SELECTED.key,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4007 selected = this.cfg.getProperty(cfgSelected),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4008 count = selected.length,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4009 sel = selected.concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4010
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4011 if (this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4012 this.parent.cfg.setProperty(cfgSelected, []);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4013 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4014 this.cfg.setProperty(cfgSelected, []);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4015 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4016
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4017 if (count > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4018 this.deselectEvent.fire(sel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4019 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4020
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4021 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4022 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4023
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4024 // END SELECTION METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4025
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4026 // BEGIN TYPE CONVERSION METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4027
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4028 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4029 * Converts a date (either a JavaScript Date object, or a date string) to the internal data structure
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4030 * used to represent dates: [[yyyy,mm,dd],[yyyy,mm,dd]].
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4031 * @method _toFieldArray
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4032 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4033 * @param {String/Date/Date[]} date The date string of dates to deselect in the current calendar. Valid formats are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4034 * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4035 * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4036 * This method can also take a JavaScript Date object or an array of Date objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4037 * @return {Array[](Number[])} Array of date field arrays
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4038 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4039 _toFieldArray : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4040 var returnDate = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4041
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4042 if (date instanceof Date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4043 returnDate = [[date.getFullYear(), date.getMonth()+1, date.getDate()]];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4044 } else if (Lang.isString(date)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4045 returnDate = this._parseDates(date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4046 } else if (Lang.isArray(date)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4047 for (var i=0;i<date.length;++i) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4048 var d = date[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4049 returnDate[returnDate.length] = [d.getFullYear(),d.getMonth()+1,d.getDate()];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4050 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4051 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4052
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4053 return returnDate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4054 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4055
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4056 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4057 * Converts a date field array [yyyy,mm,dd] to a JavaScript Date object. The date field array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4058 * is the format in which dates are as provided as arguments to selectEvent and deselectEvent listeners.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4059 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4060 * @method toDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4061 * @param {Number[]} dateFieldArray The date field array to convert to a JavaScript Date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4062 * @return {Date} JavaScript Date object representing the date field array.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4063 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4064 toDate : function(dateFieldArray) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4065 return this._toDate(dateFieldArray);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4066 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4067
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4068 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4069 * Converts a date field array [yyyy,mm,dd] to a JavaScript Date object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4070 * @method _toDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4071 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4072 * @deprecated Made public, toDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4073 * @param {Number[]} dateFieldArray The date field array to convert to a JavaScript Date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4074 * @return {Date} JavaScript Date object representing the date field array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4075 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4076 _toDate : function(dateFieldArray) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4077 if (dateFieldArray instanceof Date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4078 return dateFieldArray;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4079 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4080 return DateMath.getDate(dateFieldArray[0],dateFieldArray[1]-1,dateFieldArray[2]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4081 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4082 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4083
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4084 // END TYPE CONVERSION METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4085
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4086 // BEGIN UTILITY METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4087
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4088 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4089 * Determines if 2 field arrays are equal.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4090 * @method _fieldArraysAreEqual
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4091 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4092 * @param {Number[]} array1 The first date field array to compare
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4093 * @param {Number[]} array2 The first date field array to compare
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4094 * @return {Boolean} The boolean that represents the equality of the two arrays
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4095 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4096 _fieldArraysAreEqual : function(array1, array2) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4097 var match = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4098
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4099 if (array1[0]==array2[0]&&array1[1]==array2[1]&&array1[2]==array2[2]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4100 match=true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4101 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4102
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4103 return match;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4104 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4105
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4106 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4107 * Gets the index of a date field array [yyyy,mm,dd] in the current list of selected dates.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4108 * @method _indexOfSelectedFieldArray
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4109 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4110 * @param {Number[]} find The date field array to search for
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4111 * @return {Number} The index of the date field array within the collection of selected dates.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4112 * -1 will be returned if the date is not found.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4113 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4114 _indexOfSelectedFieldArray : function(find) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4115 var selected = -1,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4116 seldates = this.cfg.getProperty(DEF_CFG.SELECTED.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4117
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4118 for (var s=0;s<seldates.length;++s) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4119 var sArray = seldates[s];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4120 if (find[0]==sArray[0]&&find[1]==sArray[1]&&find[2]==sArray[2]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4121 selected = s;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4122 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4123 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4124 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4125
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4126 return selected;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4127 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4128
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4129 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4130 * Determines whether a given date is OOM (out of month).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4131 * @method isDateOOM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4132 * @param {Date} date The JavaScript Date object for which to check the OOM status
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4133 * @return {Boolean} true if the date is OOM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4134 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4135 isDateOOM : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4136 return (date.getMonth() != this.cfg.getProperty(DEF_CFG.PAGEDATE.key).getMonth());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4137 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4138
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4139 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4140 * Determines whether a given date is OOB (out of bounds - less than the mindate or more than the maxdate).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4141 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4142 * @method isDateOOB
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4143 * @param {Date} date The JavaScript Date object for which to check the OOB status
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4144 * @return {Boolean} true if the date is OOB
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4145 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4146 isDateOOB : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4147 var minDate = this.cfg.getProperty(DEF_CFG.MINDATE.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4148 maxDate = this.cfg.getProperty(DEF_CFG.MAXDATE.key),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4149 dm = DateMath;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4150
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4151 if (minDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4152 minDate = dm.clearTime(minDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4153 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4154 if (maxDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4155 maxDate = dm.clearTime(maxDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4156 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4157
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4158 var clearedDate = new Date(date.getTime());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4159 clearedDate = dm.clearTime(clearedDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4160
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4161 return ((minDate && clearedDate.getTime() < minDate.getTime()) || (maxDate && clearedDate.getTime() > maxDate.getTime()));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4162 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4163
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4164 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4165 * Parses a pagedate configuration property value. The value can either be specified as a string of form "mm/yyyy" or a Date object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4166 * and is parsed into a Date object normalized to the first day of the month. If no value is passed in, the month and year from today's date are used to create the Date object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4167 * @method _parsePageDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4168 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4169 * @param {Date|String} date Pagedate value which needs to be parsed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4170 * @return {Date} The Date object representing the pagedate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4171 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4172 _parsePageDate : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4173 var parsedDate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4174
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4175 if (date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4176 if (date instanceof Date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4177 parsedDate = DateMath.findMonthStart(date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4178 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4179 var month, year, aMonthYear;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4180 aMonthYear = date.split(this.cfg.getProperty(DEF_CFG.DATE_FIELD_DELIMITER.key));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4181 month = parseInt(aMonthYear[this.cfg.getProperty(DEF_CFG.MY_MONTH_POSITION.key)-1], 10)-1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4182 year = parseInt(aMonthYear[this.cfg.getProperty(DEF_CFG.MY_YEAR_POSITION.key)-1], 10) - this.Locale.YEAR_OFFSET;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4183
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4184 parsedDate = DateMath.getDate(year, month, 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4185 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4186 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4187 parsedDate = DateMath.getDate(this.today.getFullYear(), this.today.getMonth(), 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4188 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4189 return parsedDate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4190 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4191
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4192 // END UTILITY METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4193
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4194 // BEGIN EVENT HANDLERS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4195
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4196 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4197 * Event executed before a date is selected in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4198 * @deprecated Event handlers for this event should be susbcribed to beforeSelectEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4199 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4200 onBeforeSelect : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4201 if (this.cfg.getProperty(DEF_CFG.MULTI_SELECT.key) === false) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4202 if (this.parent) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4203 this.parent.callChildFunction("clearAllBodyCellStyles", this.Style.CSS_CELL_SELECTED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4204 this.parent.deselectAll();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4205 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4206 this.clearAllBodyCellStyles(this.Style.CSS_CELL_SELECTED);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4207 this.deselectAll();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4208 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4209 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4210 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4211
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4212 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4213 * Event executed when a date is selected in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4214 * @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] ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4215 * @deprecated Event handlers for this event should be susbcribed to selectEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4216 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4217 onSelect : function(selected) { },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4218
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4219 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4220 * Event executed before a date is deselected in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4221 * @deprecated Event handlers for this event should be susbcribed to beforeDeselectEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4222 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4223 onBeforeDeselect : function() { },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4224
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4225 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4226 * Event executed when a date is deselected in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4227 * @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] ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4228 * @deprecated Event handlers for this event should be susbcribed to deselectEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4229 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4230 onDeselect : function(deselected) { },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4231
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4232 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4233 * Event executed when the user navigates to a different calendar page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4234 * @deprecated Event handlers for this event should be susbcribed to changePageEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4235 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4236 onChangePage : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4237 this.render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4238 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4239
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4240 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4241 * Event executed when the calendar widget is rendered.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4242 * @deprecated Event handlers for this event should be susbcribed to renderEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4243 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4244 onRender : function() { },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4245
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4246 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4247 * Event executed when the calendar widget is reset to its original state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4248 * @deprecated Event handlers for this event should be susbcribed to resetEvemt.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4249 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4250 onReset : function() { this.render(); },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4251
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4252 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4253 * Event executed when the calendar widget is completely cleared to the current month with no selections.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4254 * @deprecated Event handlers for this event should be susbcribed to clearEvent.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4255 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4256 onClear : function() { this.render(); },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4257
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4258 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4259 * Validates the calendar widget. This method has no default implementation
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4260 * and must be extended by subclassing the widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4261 * @return Should return true if the widget validates, and false if
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4262 * it doesn't.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4263 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4264 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4265 validate : function() { return true; },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4266
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4267 // END EVENT HANDLERS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4268
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4269 // BEGIN DATE PARSE METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4270
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4271 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4272 * Converts a date string to a date field array
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4273 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4274 * @param {String} sDate Date string. Valid formats are mm/dd and mm/dd/yyyy.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4275 * @return A date field array representing the string passed to the method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4276 * @type Array[](Number[])
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4277 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4278 _parseDate : function(sDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4279 var aDate = sDate.split(this.Locale.DATE_FIELD_DELIMITER),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4280 rArray;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4281
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4282 if (aDate.length == 2) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4283 rArray = [aDate[this.Locale.MD_MONTH_POSITION-1],aDate[this.Locale.MD_DAY_POSITION-1]];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4284 rArray.type = Calendar.MONTH_DAY;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4285 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4286 rArray = [aDate[this.Locale.MDY_YEAR_POSITION-1] - this.Locale.YEAR_OFFSET, aDate[this.Locale.MDY_MONTH_POSITION-1],aDate[this.Locale.MDY_DAY_POSITION-1]];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4287 rArray.type = Calendar.DATE;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4288 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4289
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4290 for (var i=0;i<rArray.length;i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4291 rArray[i] = parseInt(rArray[i], 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4292 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4293
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4294 return rArray;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4295 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4296
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4297 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4298 * Converts a multi or single-date string to an array of date field arrays
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4299 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4300 * @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
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4301 * @return An array of date field arrays
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4302 * @type Array[](Number[])
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4303 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4304 _parseDates : function(sDates) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4305 var aReturn = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4306 aDates = sDates.split(this.Locale.DATE_DELIMITER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4307
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4308 for (var d=0;d<aDates.length;++d) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4309 var sDate = aDates[d];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4310
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4311 if (sDate.indexOf(this.Locale.DATE_RANGE_DELIMITER) != -1) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4312 // This is a range
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4313 var aRange = sDate.split(this.Locale.DATE_RANGE_DELIMITER),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4314 dateStart = this._parseDate(aRange[0]),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4315 dateEnd = this._parseDate(aRange[1]),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4316 fullRange = this._parseRange(dateStart, dateEnd);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4317
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4318 aReturn = aReturn.concat(fullRange);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4319 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4320 // This is not a range
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4321 var aDate = this._parseDate(sDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4322 aReturn.push(aDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4323 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4324 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4325 return aReturn;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4326 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4327
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4328 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4329 * Converts a date range to the full list of included dates
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4330 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4331 * @param {Number[]} startDate Date field array representing the first date in the range
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4332 * @param {Number[]} endDate Date field array representing the last date in the range
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4333 * @return An array of date field arrays
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4334 * @type Array[](Number[])
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4335 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4336 _parseRange : function(startDate, endDate) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4337 var dCurrent = DateMath.add(DateMath.getDate(startDate[0],startDate[1]-1,startDate[2]),DateMath.DAY,1),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4338 dEnd = DateMath.getDate(endDate[0], endDate[1]-1, endDate[2]),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4339 results = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4340
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4341 results.push(startDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4342 while (dCurrent.getTime() <= dEnd.getTime()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4343 results.push([dCurrent.getFullYear(),dCurrent.getMonth()+1,dCurrent.getDate()]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4344 dCurrent = DateMath.add(dCurrent,DateMath.DAY,1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4345 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4346 return results;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4347 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4348
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4349 // END DATE PARSE METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4350
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4351 // BEGIN RENDERER METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4352
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4353 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4354 * Resets the render stack of the current calendar to its original pre-render value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4355 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4356 resetRenderers : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4357 this.renderStack = this._renderStack.concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4358 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4359
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4360 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4361 * Removes all custom renderers added to the Calendar through the addRenderer, addMonthRenderer and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4362 * addWeekdayRenderer methods. Calendar's render method needs to be called after removing renderers
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4363 * to re-render the Calendar without custom renderers applied.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4364 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4365 removeRenderers : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4366 this._renderStack = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4367 this.renderStack = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4368 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4369
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4370 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4371 * Clears the inner HTML, CSS class and style information from the specified cell.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4372 * @method clearElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4373 * @param {HTMLTableCellElement} cell The cell to clear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4374 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4375 clearElement : function(cell) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4376 cell.innerHTML = "&#160;";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4377 cell.className="";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4378 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4379
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4380 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4381 * Adds a renderer to the render stack. The function reference passed to this method will be executed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4382 * when a date cell matches the conditions specified in the date string for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4383 * @method addRenderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4384 * @param {String} sDates A date string to associate with the specified renderer. Valid formats
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4385 * include date (12/24/2005), month/day (12/24), and range (12/1/2004-1/1/2005)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4386 * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4387 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4388 addRenderer : function(sDates, fnRender) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4389 var aDates = this._parseDates(sDates);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4390 for (var i=0;i<aDates.length;++i) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4391 var aDate = aDates[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4392
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4393 if (aDate.length == 2) { // this is either a range or a month/day combo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4394 if (aDate[0] instanceof Array) { // this is a range
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4395 this._addRenderer(Calendar.RANGE,aDate,fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4396 } else { // this is a month/day combo
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4397 this._addRenderer(Calendar.MONTH_DAY,aDate,fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4398 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4399 } else if (aDate.length == 3) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4400 this._addRenderer(Calendar.DATE,aDate,fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4401 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4402 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4403 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4404
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4405 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4406 * The private method used for adding cell renderers to the local render stack.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4407 * This method is called by other methods that set the renderer type prior to the method call.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4408 * @method _addRenderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4409 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4410 * @param {String} type The type string that indicates the type of date renderer being added.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4411 * Values are YAHOO.widget.Calendar.DATE, YAHOO.widget.Calendar.MONTH_DAY, YAHOO.widget.Calendar.WEEKDAY,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4412 * YAHOO.widget.Calendar.RANGE, YAHOO.widget.Calendar.MONTH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4413 * @param {Array} aDates An array of dates used to construct the renderer. The format varies based
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4414 * on the renderer type
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4415 * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4416 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4417 _addRenderer : function(type, aDates, fnRender) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4418 var add = [type,aDates,fnRender];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4419 this.renderStack.unshift(add);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4420 this._renderStack = this.renderStack.concat();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4421 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4422
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4423 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4424 * Adds a month to the render stack. The function reference passed to this method will be executed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4425 * when a date cell matches the month passed to this method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4426 * @method addMonthRenderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4427 * @param {Number} month The month (1-12) to associate with this renderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4428 * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4429 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4430 addMonthRenderer : function(month, fnRender) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4431 this._addRenderer(Calendar.MONTH,[month],fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4432 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4433
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4434 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4435 * Adds a weekday to the render stack. The function reference passed to this method will be executed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4436 * when a date cell matches the weekday passed to this method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4437 * @method addWeekdayRenderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4438 * @param {Number} weekday The weekday (Sunday = 1, Monday = 2 ... Saturday = 7) to associate with this renderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4439 * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4440 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4441 addWeekdayRenderer : function(weekday, fnRender) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4442 this._addRenderer(Calendar.WEEKDAY,[weekday],fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4443 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4444
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4445 // END RENDERER METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4446
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4447 // BEGIN CSS METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4448
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4449 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4450 * Removes all styles from all body cells in the current calendar table.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4451 * @method clearAllBodyCellStyles
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4452 * @param {style} style The CSS class name to remove from all calendar body cells
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4453 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4454 clearAllBodyCellStyles : function(style) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4455 for (var c=0;c<this.cells.length;++c) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4456 Dom.removeClass(this.cells[c],style);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4457 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4458 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4459
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4460 // END CSS METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4461
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4462 // BEGIN GETTER/SETTER METHODS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4463 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4464 * Sets the calendar's month explicitly
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4465 * @method setMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4466 * @param {Number} month The numeric month, from 0 (January) to 11 (December)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4467 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4468 setMonth : function(month) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4469 var cfgPageDate = DEF_CFG.PAGEDATE.key,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4470 current = this.cfg.getProperty(cfgPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4471 current.setMonth(parseInt(month, 10));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4472 this.cfg.setProperty(cfgPageDate, current);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4473 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4474
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4475 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4476 * Sets the calendar's year explicitly.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4477 * @method setYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4478 * @param {Number} year The numeric 4-digit year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4479 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4480 setYear : function(year) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4481 var cfgPageDate = DEF_CFG.PAGEDATE.key,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4482 current = this.cfg.getProperty(cfgPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4483
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4484 current.setFullYear(parseInt(year, 10) - this.Locale.YEAR_OFFSET);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4485 this.cfg.setProperty(cfgPageDate, current);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4486 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4487
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4488 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4489 * Gets the list of currently selected dates from the calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4490 * @method getSelectedDates
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4491 * @return {Date[]} An array of currently selected JavaScript Date objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4492 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4493 getSelectedDates : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4494 var returnDates = [],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4495 selected = this.cfg.getProperty(DEF_CFG.SELECTED.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4496
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4497 for (var d=0;d<selected.length;++d) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4498 var dateArray = selected[d];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4499
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4500 var date = DateMath.getDate(dateArray[0],dateArray[1]-1,dateArray[2]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4501 returnDates.push(date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4502 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4503
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4504 returnDates.sort( function(a,b) { return a-b; } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4505 return returnDates;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4506 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4507
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4508 /// END GETTER/SETTER METHODS ///
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4509
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4510 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4511 * Hides the Calendar's outer container from view.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4512 * @method hide
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4513 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4514 hide : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4515 if (this.beforeHideEvent.fire()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4516 this.oDomContainer.style.display = "none";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4517 this.hideEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4518 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4519 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4520
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4521 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4522 * Shows the Calendar's outer container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4523 * @method show
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4524 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4525 show : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4526 if (this.beforeShowEvent.fire()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4527 this.oDomContainer.style.display = "block";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4528 this.showEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4529 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4530 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4531
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4532 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4533 * Returns a string representing the current browser.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4534 * @deprecated As of 2.3.0, environment information is available in YAHOO.env.ua
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4535 * @see YAHOO.env.ua
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4536 * @property browser
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4537 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4538 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4539 browser : (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4540 var ua = navigator.userAgent.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4541 if (ua.indexOf('opera')!=-1) { // Opera (check first in case of spoof)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4542 return 'opera';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4543 } else if (ua.indexOf('msie 7')!=-1) { // IE7
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4544 return 'ie7';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4545 } else if (ua.indexOf('msie') !=-1) { // IE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4546 return 'ie';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4547 } else if (ua.indexOf('safari')!=-1) { // Safari (check before Gecko because it includes "like Gecko")
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4548 return 'safari';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4549 } else if (ua.indexOf('gecko') != -1) { // Gecko
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4550 return 'gecko';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4551 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4552 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4553 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4554 })(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4555 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4556 * Returns a string representation of the object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4557 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4558 * @return {String} A string representation of the Calendar object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4559 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4560 toString : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4561 return "Calendar " + this.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4562 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4563
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4564 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4565 * Destroys the Calendar instance. The method will remove references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4566 * to HTML elements, remove any event listeners added by the Calendar,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4567 * and destroy the Config and CalendarNavigator instances it has created.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4568 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4569 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4570 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4571 destroy : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4572
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4573 if (this.beforeDestroyEvent.fire()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4574 var cal = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4575
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4576 // Child objects
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4577 if (cal.navigator) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4578 cal.navigator.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4579 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4580
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4581 if (cal.cfg) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4582 cal.cfg.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4583 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4584
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4585 // DOM event listeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4586 Event.purgeElement(cal.oDomContainer, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4587
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4588 // Generated markup/DOM - Not removing the container DIV since we didn't create it.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4589 Dom.removeClass(cal.oDomContainer, cal.Style.CSS_WITH_TITLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4590 Dom.removeClass(cal.oDomContainer, cal.Style.CSS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4591 Dom.removeClass(cal.oDomContainer, cal.Style.CSS_SINGLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4592 cal.oDomContainer.innerHTML = "";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4593
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4594 // JS-to-DOM references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4595 cal.oDomContainer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4596 cal.cells = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4597
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4598 this.destroyEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4599 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4600 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4601 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4602
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4603 YAHOO.widget.Calendar = Calendar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4604
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4605 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4606 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4607 * @class Calendar_Core
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4608 * @extends YAHOO.widget.Calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4609 * @deprecated The old Calendar_Core class is no longer necessary.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4610 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4611 YAHOO.widget.Calendar_Core = YAHOO.widget.Calendar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4612
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4613 YAHOO.widget.Cal_Core = YAHOO.widget.Calendar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4614
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4615 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4616 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4617
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4618 var Dom = YAHOO.util.Dom,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4619 DateMath = YAHOO.widget.DateMath,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4620 Event = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4621 Lang = YAHOO.lang,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4622 Calendar = YAHOO.widget.Calendar;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4623
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4624 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4625 * YAHOO.widget.CalendarGroup is a special container class for YAHOO.widget.Calendar. This class facilitates
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4626 * the ability to have multi-page calendar views that share a single dataset and are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4627 * dependent on each other.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4628 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4629 * The calendar group instance will refer to each of its elements using a 0-based index.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4630 * For example, to construct the placeholder for a calendar group widget with id "cal1" and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4631 * containerId of "cal1Container", the markup would be as follows:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4632 * <xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4633 * <div id="cal1Container_0"></div>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4634 * <div id="cal1Container_1"></div>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4635 * </xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4636 * The tables for the calendars ("cal1_0" and "cal1_1") will be inserted into those containers.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4637 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4638 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4639 * <strong>NOTE: As of 2.4.0, the constructor's ID argument is optional.</strong>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4640 * The CalendarGroup can be constructed by simply providing a container ID string,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4641 * or a reference to a container DIV HTMLElement (the element needs to exist
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4642 * in the document).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4643 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4644 * E.g.:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4645 * <xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4646 * var c = new YAHOO.widget.CalendarGroup("calContainer", configOptions);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4647 * </xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4648 * or:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4649 * <xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4650 * var containerDiv = YAHOO.util.Dom.get("calContainer");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4651 * var c = new YAHOO.widget.CalendarGroup(containerDiv, configOptions);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4652 * </xmp>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4653 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4654 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4655 * If not provided, the ID will be generated from the container DIV ID by adding an "_t" suffix.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4656 * For example if an ID is not provided, and the container's ID is "calContainer", the CalendarGroup's ID will be set to "calContainer_t".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4657 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4658 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4659 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4660 * @class CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4661 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4662 * @param {String} id optional The id of the table element that will represent the CalendarGroup widget. As of 2.4.0, this argument is optional.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4663 * @param {String | HTMLElement} container The id of the container div element that will wrap the CalendarGroup table, or a reference to a DIV element which exists in the document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4664 * @param {Object} config optional The configuration object containing the initial configuration values for the CalendarGroup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4665 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4666 function CalendarGroup(id, containerId, config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4667 if (arguments.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4668 this.init.apply(this, arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4669 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4670 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4671
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4672 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4673 * The set of default Config property keys and values for the CalendarGroup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4674 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4675 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4676 * NOTE: This property is made public in order to allow users to change
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4677 * the default values of configuration properties. Users should not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4678 * modify the key string, unless they are overriding the Calendar implementation
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4679 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4680 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4681 * @property YAHOO.widget.CalendarGroup.DEFAULT_CONFIG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4682 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4683 * @type Object An object with key/value pairs, the key being the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4684 * uppercase configuration property name and the value being an objec
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4685 * literal with a key string property, and a value property, specifying the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4686 * default value of the property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4687 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4688
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4689 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4690 * The set of default Config property keys and values for the CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4691 * @property YAHOO.widget.CalendarGroup._DEFAULT_CONFIG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4692 * @deprecated Made public. See the public DEFAULT_CONFIG property for details
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4693 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4694 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4695 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4696 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4697 CalendarGroup.DEFAULT_CONFIG = CalendarGroup._DEFAULT_CONFIG = Calendar.DEFAULT_CONFIG;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4698 CalendarGroup.DEFAULT_CONFIG.PAGES = {key:"pages", value:2};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4699
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4700 var DEF_CFG = CalendarGroup.DEFAULT_CONFIG;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4701
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4702 CalendarGroup.prototype = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4703
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4704 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4705 * Initializes the calendar group. All subclasses must call this method in order for the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4706 * group to be initialized properly.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4707 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4708 * @param {String} id optional The id of the table element that will represent the CalendarGroup widget. As of 2.4.0, this argument is optional.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4709 * @param {String | HTMLElement} container The id of the container div element that will wrap the CalendarGroup table, or a reference to a DIV element which exists in the document.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4710 * @param {Object} config optional The configuration object containing the initial configuration values for the CalendarGroup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4711 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4712 init : function(id, container, config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4713
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4714 // Normalize 2.4.0, pre 2.4.0 args
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4715 var nArgs = this._parseArgs(arguments);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4716
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4717 id = nArgs.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4718 container = nArgs.container;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4719 config = nArgs.config;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4720
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4721 this.oDomContainer = Dom.get(container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4722 if (!this.oDomContainer) { this.logger.log("Container not found in document.", "error"); }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4723
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4724 if (!this.oDomContainer.id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4725 this.oDomContainer.id = Dom.generateId();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4726 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4727 if (!id) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4728 id = this.oDomContainer.id + "_t";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4729 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4730
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4731 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4732 * The unique id associated with the CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4733 * @property id
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4734 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4735 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4736 this.id = id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4737
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4738 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4739 * The unique id associated with the CalendarGroup container
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4740 * @property containerId
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4741 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4742 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4743 this.containerId = this.oDomContainer.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4744
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4745 this.logger = new YAHOO.widget.LogWriter("CalendarGroup " + this.id);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4746 this.initEvents();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4747 this.initStyles();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4748
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4749 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4750 * The collection of Calendar pages contained within the CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4751 * @property pages
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4752 * @type YAHOO.widget.Calendar[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4753 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4754 this.pages = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4755
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4756 Dom.addClass(this.oDomContainer, CalendarGroup.CSS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4757 Dom.addClass(this.oDomContainer, CalendarGroup.CSS_MULTI_UP);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4758
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4759 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4760 * The Config object used to hold the configuration variables for the CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4761 * @property cfg
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4762 * @type YAHOO.util.Config
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4763 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4764 this.cfg = new YAHOO.util.Config(this);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4765
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4766 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4767 * The local object which contains the CalendarGroup's options
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4768 * @property Options
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4769 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4770 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4771 this.Options = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4772
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4773 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4774 * The local object which contains the CalendarGroup's locale settings
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4775 * @property Locale
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4776 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4777 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4778 this.Locale = {};
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4779
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4780 this.setupConfig();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4781
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4782 if (config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4783 this.cfg.applyConfig(config, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4784 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4785
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4786 this.cfg.fireQueue();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4787
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4788 // OPERA HACK FOR MISWRAPPED FLOATS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4789 if (YAHOO.env.ua.opera){
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4790 this.renderEvent.subscribe(this._fixWidth, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4791 this.showEvent.subscribe(this._fixWidth, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4792 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4793
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4794 this.logger.log("Initialized " + this.pages.length + "-page CalendarGroup", "info");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4795 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4796
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4797 setupConfig : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4798
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4799 var cfg = this.cfg;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4800
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4801 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4802 * The number of pages to include in the CalendarGroup. This value can only be set once, in the CalendarGroup's constructor arguments.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4803 * @config pages
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4804 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4805 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4806 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4807 cfg.addProperty(DEF_CFG.PAGES.key, { value:DEF_CFG.PAGES.value, validator:cfg.checkNumber, handler:this.configPages } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4808
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4809 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4810 * The positive or negative year offset from the Gregorian calendar year (assuming a January 1st rollover) to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4811 * be used when displaying or parsing dates. NOTE: All JS Date objects returned by methods, or expected as input by
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4812 * methods will always represent the Gregorian year, in order to maintain date/month/week values.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4813 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4814 * @config year_offset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4815 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4816 * @default 0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4817 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4818 cfg.addProperty(DEF_CFG.YEAR_OFFSET.key, { value:DEF_CFG.YEAR_OFFSET.value, handler: this.delegateConfig, supercedes:DEF_CFG.YEAR_OFFSET.supercedes, suppressEvent:true } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4819
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4820 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4821 * The date to use to represent "Today".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4822 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4823 * @config today
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4824 * @type Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4825 * @default Today's date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4826 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4827 cfg.addProperty(DEF_CFG.TODAY.key, { value: new Date(DEF_CFG.TODAY.value.getTime()), supercedes:DEF_CFG.TODAY.supercedes, handler: this.configToday, suppressEvent:false } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4828
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4829 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4830 * The month/year representing the current visible Calendar date (mm/yyyy)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4831 * @config pagedate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4832 * @type String | Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4833 * @default Today's date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4834 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4835 cfg.addProperty(DEF_CFG.PAGEDATE.key, { value: DEF_CFG.PAGEDATE.value || new Date(DEF_CFG.TODAY.value.getTime()), handler:this.configPageDate } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4836
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4837 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4838 * The date or range of dates representing the current Calendar selection
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4839 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4840 * @config selected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4841 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4842 * @default []
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4843 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4844 cfg.addProperty(DEF_CFG.SELECTED.key, { value:[], handler:this.configSelected } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4845
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4846 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4847 * The title to display above the CalendarGroup's month header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4848 * @config title
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4849 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4850 * @default ""
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4851 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4852 cfg.addProperty(DEF_CFG.TITLE.key, { value:DEF_CFG.TITLE.value, handler:this.configTitle } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4853
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4854 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4855 * Whether or not a close button should be displayed for this CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4856 * @config close
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4857 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4858 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4859 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4860 cfg.addProperty(DEF_CFG.CLOSE.key, { value:DEF_CFG.CLOSE.value, handler:this.configClose } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4861
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4862 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4863 * 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.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4864 * This property is enabled by default for IE6 and below. It is disabled by default for other browsers for performance reasons, but can be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4865 * enabled if required.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4866 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4867 * @config iframe
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4868 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4869 * @default true for IE6 and below, false for all other browsers
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4870 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4871 cfg.addProperty(DEF_CFG.IFRAME.key, { value:DEF_CFG.IFRAME.value, handler:this.configIframe, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4872
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4873 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4874 * The minimum selectable date in the current Calendar (mm/dd/yyyy)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4875 * @config mindate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4876 * @type String | Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4877 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4878 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4879 cfg.addProperty(DEF_CFG.MINDATE.key, { value:DEF_CFG.MINDATE.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4880
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4881 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4882 * The maximum selectable date in the current Calendar (mm/dd/yyyy)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4883 * @config maxdate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4884 * @type String | Date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4885 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4886 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4887 cfg.addProperty(DEF_CFG.MAXDATE.key, { value:DEF_CFG.MAXDATE.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4889 // Options properties
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4890
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4891 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4892 * True if the Calendar should allow multiple selections. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4893 * @config MULTI_SELECT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4894 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4895 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4896 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4897 cfg.addProperty(DEF_CFG.MULTI_SELECT.key, { value:DEF_CFG.MULTI_SELECT.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4898
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4899 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4900 * The weekday the week begins on. Default is 0 (Sunday).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4901 * @config START_WEEKDAY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4902 * @type number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4903 * @default 0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4904 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4905 cfg.addProperty(DEF_CFG.START_WEEKDAY.key, { value:DEF_CFG.START_WEEKDAY.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4906
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4907 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4908 * True if the Calendar should show weekday labels. True by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4909 * @config SHOW_WEEKDAYS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4910 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4911 * @default true
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4912 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4913 cfg.addProperty(DEF_CFG.SHOW_WEEKDAYS.key, { value:DEF_CFG.SHOW_WEEKDAYS.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4914
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4915 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4916 * True if the Calendar should show week row headers. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4917 * @config SHOW_WEEK_HEADER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4918 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4919 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4920 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4921 cfg.addProperty(DEF_CFG.SHOW_WEEK_HEADER.key,{ value:DEF_CFG.SHOW_WEEK_HEADER.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4922
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4923 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4924 * True if the Calendar should show week row footers. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4925 * @config SHOW_WEEK_FOOTER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4926 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4927 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4928 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4929 cfg.addProperty(DEF_CFG.SHOW_WEEK_FOOTER.key,{ value:DEF_CFG.SHOW_WEEK_FOOTER.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4930
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4931 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4932 * True if the Calendar should suppress weeks that are not a part of the current month. False by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4933 * @config HIDE_BLANK_WEEKS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4934 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4935 * @default false
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4936 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4937 cfg.addProperty(DEF_CFG.HIDE_BLANK_WEEKS.key,{ value:DEF_CFG.HIDE_BLANK_WEEKS.value, handler:this.delegateConfig, validator:cfg.checkBoolean } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4938
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4939 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4940 * The image that should be used for the left navigation arrow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4941 * @config NAV_ARROW_LEFT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4942 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4943 * @deprecated You can customize the image by overriding the default CSS class for the left arrow - "calnavleft"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4944 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4945 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4946 cfg.addProperty(DEF_CFG.NAV_ARROW_LEFT.key, { value:DEF_CFG.NAV_ARROW_LEFT.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4947
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4948 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4949 * The image that should be used for the right navigation arrow.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4950 * @config NAV_ARROW_RIGHT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4951 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4952 * @deprecated You can customize the image by overriding the default CSS class for the right arrow - "calnavright"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4953 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4954 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4955 cfg.addProperty(DEF_CFG.NAV_ARROW_RIGHT.key, { value:DEF_CFG.NAV_ARROW_RIGHT.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4956
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4957 // Locale properties
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4958
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4959 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4960 * The short month labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4961 * @config MONTHS_SHORT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4962 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4963 * @default ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4964 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4965 cfg.addProperty(DEF_CFG.MONTHS_SHORT.key, { value:DEF_CFG.MONTHS_SHORT.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4966
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4967 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4968 * The long month labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4969 * @config MONTHS_LONG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4970 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4971 * @default ["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4972 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4973 cfg.addProperty(DEF_CFG.MONTHS_LONG.key, { value:DEF_CFG.MONTHS_LONG.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4974
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4975 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4976 * The 1-character weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4977 * @config WEEKDAYS_1CHAR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4978 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4979 * @default ["S", "M", "T", "W", "T", "F", "S"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4980 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4981 cfg.addProperty(DEF_CFG.WEEKDAYS_1CHAR.key, { value:DEF_CFG.WEEKDAYS_1CHAR.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4982
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4983 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4984 * The short weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4985 * @config WEEKDAYS_SHORT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4986 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4987 * @default ["Su", "Mo", "Tu", "We", "Th", "Fr", "Sa"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4988 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4989 cfg.addProperty(DEF_CFG.WEEKDAYS_SHORT.key, { value:DEF_CFG.WEEKDAYS_SHORT.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4990
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4991 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4992 * The medium weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4993 * @config WEEKDAYS_MEDIUM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4994 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4995 * @default ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4996 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4997 cfg.addProperty(DEF_CFG.WEEKDAYS_MEDIUM.key, { value:DEF_CFG.WEEKDAYS_MEDIUM.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4998
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
4999 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5000 * The long weekday labels for the current locale.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5001 * @config WEEKDAYS_LONG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5002 * @type String[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5003 * @default ["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5004 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5005 cfg.addProperty(DEF_CFG.WEEKDAYS_LONG.key, { value:DEF_CFG.WEEKDAYS_LONG.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5006
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5007 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5008 * The setting that determines which length of month labels should be used. Possible values are "short" and "long".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5009 * @config LOCALE_MONTHS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5010 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5011 * @default "long"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5012 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5013 cfg.addProperty(DEF_CFG.LOCALE_MONTHS.key, { value:DEF_CFG.LOCALE_MONTHS.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5014
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5015 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5016 * The setting that determines which length of weekday labels should be used. Possible values are "1char", "short", "medium", and "long".
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5017 * @config LOCALE_WEEKDAYS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5018 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5019 * @default "short"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5020 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5021 cfg.addProperty(DEF_CFG.LOCALE_WEEKDAYS.key, { value:DEF_CFG.LOCALE_WEEKDAYS.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5022
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5023 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5024 * The value used to delimit individual dates in a date string passed to various Calendar functions.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5025 * @config DATE_DELIMITER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5026 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5027 * @default ","
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5028 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5029 cfg.addProperty(DEF_CFG.DATE_DELIMITER.key, { value:DEF_CFG.DATE_DELIMITER.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5030
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5031 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5032 * The value used to delimit date fields in a date string passed to various Calendar functions.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5033 * @config DATE_FIELD_DELIMITER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5034 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5035 * @default "/"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5036 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5037 cfg.addProperty(DEF_CFG.DATE_FIELD_DELIMITER.key,{ value:DEF_CFG.DATE_FIELD_DELIMITER.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5038
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5039 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5040 * The value used to delimit date ranges in a date string passed to various Calendar functions.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5041 * @config DATE_RANGE_DELIMITER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5042 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5043 * @default "-"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5044 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5045 cfg.addProperty(DEF_CFG.DATE_RANGE_DELIMITER.key,{ value:DEF_CFG.DATE_RANGE_DELIMITER.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5046
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5047 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5048 * The position of the month in a month/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5049 * @config MY_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5050 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5051 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5052 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5053 cfg.addProperty(DEF_CFG.MY_MONTH_POSITION.key, { value:DEF_CFG.MY_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5054
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5055 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5056 * The position of the year in a month/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5057 * @config MY_YEAR_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5058 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5059 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5060 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5061 cfg.addProperty(DEF_CFG.MY_YEAR_POSITION.key, { value:DEF_CFG.MY_YEAR_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5062
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5063 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5064 * The position of the month in a month/day date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5065 * @config MD_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5066 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5067 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5068 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5069 cfg.addProperty(DEF_CFG.MD_MONTH_POSITION.key, { value:DEF_CFG.MD_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5070
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5071 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5072 * The position of the day in a month/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5073 * @config MD_DAY_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5074 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5075 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5076 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5077 cfg.addProperty(DEF_CFG.MD_DAY_POSITION.key, { value:DEF_CFG.MD_DAY_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5078
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5079 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5080 * The position of the month in a month/day/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5081 * @config MDY_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5082 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5083 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5084 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5085 cfg.addProperty(DEF_CFG.MDY_MONTH_POSITION.key, { value:DEF_CFG.MDY_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5086
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5087 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5088 * The position of the day in a month/day/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5089 * @config MDY_DAY_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5090 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5091 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5092 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5093 cfg.addProperty(DEF_CFG.MDY_DAY_POSITION.key, { value:DEF_CFG.MDY_DAY_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5094
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5095 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5096 * The position of the year in a month/day/year date string
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5097 * @config MDY_YEAR_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5098 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5099 * @default 3
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5100 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5101 cfg.addProperty(DEF_CFG.MDY_YEAR_POSITION.key, { value:DEF_CFG.MDY_YEAR_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5102
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5103 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5104 * The position of the month in the month year label string used as the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5105 * @config MY_LABEL_MONTH_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5106 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5107 * @default 1
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5108 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5109 cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_POSITION.key, { value:DEF_CFG.MY_LABEL_MONTH_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5110
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5111 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5112 * The position of the year in the month year label string used as the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5113 * @config MY_LABEL_YEAR_POSITION
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5114 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5115 * @default 2
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5116 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5117 cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_POSITION.key, { value:DEF_CFG.MY_LABEL_YEAR_POSITION.value, handler:this.delegateConfig, validator:cfg.checkNumber } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5118
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5119 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5120 * The suffix used after the month when rendering the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5121 * @config MY_LABEL_MONTH_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5122 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5123 * @default " "
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5124 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5125 cfg.addProperty(DEF_CFG.MY_LABEL_MONTH_SUFFIX.key, { value:DEF_CFG.MY_LABEL_MONTH_SUFFIX.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5126
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5127 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5128 * The suffix used after the year when rendering the Calendar header
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5129 * @config MY_LABEL_YEAR_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5130 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5131 * @default ""
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5132 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5133 cfg.addProperty(DEF_CFG.MY_LABEL_YEAR_SUFFIX.key, { value:DEF_CFG.MY_LABEL_YEAR_SUFFIX.value, handler:this.delegateConfig } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5134
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5135 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5136 * Configuration for the Month Year Navigation UI. By default it is disabled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5137 * @config NAV
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5138 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5139 * @default null
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5140 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5141 cfg.addProperty(DEF_CFG.NAV.key, { value:DEF_CFG.NAV.value, handler:this.configNavigator } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5142
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5143 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5144 * The map of UI strings which the CalendarGroup UI uses.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5145 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5146 * @config strings
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5147 * @type {Object}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5148 * @default An object with the properties shown below:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5149 * <dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5150 * <dt>previousMonth</dt><dd><em>String</em> : The string to use for the "Previous Month" navigation UI. Defaults to "Previous Month".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5151 * <dt>nextMonth</dt><dd><em>String</em> : The string to use for the "Next Month" navigation UI. Defaults to "Next Month".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5152 * <dt>close</dt><dd><em>String</em> : The string to use for the close button label. Defaults to "Close".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5153 * </dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5154 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5155 cfg.addProperty(DEF_CFG.STRINGS.key, {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5156 value:DEF_CFG.STRINGS.value,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5157 handler:this.configStrings,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5158 validator: function(val) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5159 return Lang.isObject(val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5160 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5161 supercedes: DEF_CFG.STRINGS.supercedes
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5162 });
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5163 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5164
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5165 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5166 * Initializes CalendarGroup's built-in CustomEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5167 * @method initEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5168 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5169 initEvents : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5170
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5171 var me = this,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5172 strEvent = "Event",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5173 CE = YAHOO.util.CustomEvent;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5174
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5175 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5176 * Proxy subscriber to subscribe to the CalendarGroup's child Calendars' CustomEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5177 * @method sub
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5178 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5179 * @param {Function} fn The function to subscribe to this CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5180 * @param {Object} obj The CustomEvent's scope object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5181 * @param {Boolean} bOverride Whether or not to apply scope correction
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5182 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5183 var sub = function(fn, obj, bOverride) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5184 for (var p=0;p<me.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5185 var cal = me.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5186 cal[this.type + strEvent].subscribe(fn, obj, bOverride);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5187 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5188 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5189
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5190 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5191 * Proxy unsubscriber to unsubscribe from the CalendarGroup's child Calendars' CustomEvents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5192 * @method unsub
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5193 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5194 * @param {Function} fn The function to subscribe to this CustomEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5195 * @param {Object} obj The CustomEvent's scope object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5196 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5197 var unsub = function(fn, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5198 for (var p=0;p<me.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5199 var cal = me.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5200 cal[this.type + strEvent].unsubscribe(fn, obj);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5201 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5202 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5203
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5204 var defEvents = Calendar._EVENT_TYPES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5205
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5206 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5207 * Fired before a date selection is made
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5208 * @event beforeSelectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5209 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5210 me.beforeSelectEvent = new CE(defEvents.BEFORE_SELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5211 me.beforeSelectEvent.subscribe = sub; me.beforeSelectEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5212
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5213 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5214 * Fired when a date selection is made
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5215 * @event selectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5216 * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5217 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5218 me.selectEvent = new CE(defEvents.SELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5219 me.selectEvent.subscribe = sub; me.selectEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5220
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5221 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5222 * Fired before a date or set of dates is deselected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5223 * @event beforeDeselectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5224 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5225 me.beforeDeselectEvent = new CE(defEvents.BEFORE_DESELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5226 me.beforeDeselectEvent.subscribe = sub; me.beforeDeselectEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5227
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5228 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5229 * Fired when a date or set of dates has been deselected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5230 * @event deselectEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5231 * @param {Array} Array of Date field arrays in the format [YYYY, MM, DD].
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5232 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5233 me.deselectEvent = new CE(defEvents.DESELECT);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5234 me.deselectEvent.subscribe = sub; me.deselectEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5235
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5236 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5237 * Fired when the Calendar page is changed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5238 * @event changePageEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5239 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5240 me.changePageEvent = new CE(defEvents.CHANGE_PAGE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5241 me.changePageEvent.subscribe = sub; me.changePageEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5242
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5243 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5244 * Fired before the Calendar is rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5245 * @event beforeRenderEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5246 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5247 me.beforeRenderEvent = new CE(defEvents.BEFORE_RENDER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5248 me.beforeRenderEvent.subscribe = sub; me.beforeRenderEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5249
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5250 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5251 * Fired when the Calendar is rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5252 * @event renderEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5253 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5254 me.renderEvent = new CE(defEvents.RENDER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5255 me.renderEvent.subscribe = sub; me.renderEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5256
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5257 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5258 * Fired when the Calendar is reset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5259 * @event resetEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5260 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5261 me.resetEvent = new CE(defEvents.RESET);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5262 me.resetEvent.subscribe = sub; me.resetEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5263
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5264 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5265 * Fired when the Calendar is cleared
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5266 * @event clearEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5267 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5268 me.clearEvent = new CE(defEvents.CLEAR);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5269 me.clearEvent.subscribe = sub; me.clearEvent.unsubscribe = unsub;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5270
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5271 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5272 * Fired just before the CalendarGroup is to be shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5273 * @event beforeShowEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5274 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5275 me.beforeShowEvent = new CE(defEvents.BEFORE_SHOW);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5276
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5277 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5278 * Fired after the CalendarGroup is shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5279 * @event showEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5280 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5281 me.showEvent = new CE(defEvents.SHOW);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5282
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5283 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5284 * Fired just before the CalendarGroup is to be hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5285 * @event beforeHideEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5286 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5287 me.beforeHideEvent = new CE(defEvents.BEFORE_HIDE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5288
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5289 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5290 * Fired after the CalendarGroup is hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5291 * @event hideEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5292 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5293 me.hideEvent = new CE(defEvents.HIDE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5294
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5295 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5296 * Fired just before the CalendarNavigator is to be shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5297 * @event beforeShowNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5298 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5299 me.beforeShowNavEvent = new CE(defEvents.BEFORE_SHOW_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5300
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5301 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5302 * Fired after the CalendarNavigator is shown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5303 * @event showNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5304 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5305 me.showNavEvent = new CE(defEvents.SHOW_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5306
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5307 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5308 * Fired just before the CalendarNavigator is to be hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5309 * @event beforeHideNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5310 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5311 me.beforeHideNavEvent = new CE(defEvents.BEFORE_HIDE_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5312
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5313 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5314 * Fired after the CalendarNavigator is hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5315 * @event hideNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5316 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5317 me.hideNavEvent = new CE(defEvents.HIDE_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5318
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5319 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5320 * Fired just before the CalendarNavigator is to be rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5321 * @event beforeRenderNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5322 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5323 me.beforeRenderNavEvent = new CE(defEvents.BEFORE_RENDER_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5324
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5325 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5326 * Fired after the CalendarNavigator is rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5327 * @event renderNavEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5328 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5329 me.renderNavEvent = new CE(defEvents.RENDER_NAV);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5330
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5331 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5332 * Fired just before the CalendarGroup is to be destroyed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5333 * @event beforeDestroyEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5334 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5335 me.beforeDestroyEvent = new CE(defEvents.BEFORE_DESTROY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5336
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5337 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5338 * Fired after the CalendarGroup is destroyed. This event should be used
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5339 * for notification only. When this event is fired, important CalendarGroup instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5340 * properties, dom references and event listeners have already been
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5341 * removed/dereferenced, and hence the CalendarGroup instance is not in a usable
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5342 * state.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5343 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5344 * @event destroyEvent
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5345 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5346 me.destroyEvent = new CE(defEvents.DESTROY);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5347 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5348
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5349 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5350 * The default Config handler for the "pages" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5351 * @method configPages
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5352 * @param {String} type The CustomEvent type (usually the property name)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5353 * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5354 * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5355 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5356 configPages : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5357 var pageCount = args[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5358 cfgPageDate = DEF_CFG.PAGEDATE.key,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5359 sep = "_",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5360 caldate,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5361 firstPageDate = null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5362 groupCalClass = "groupcal",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5363 firstClass = "first-of-type",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5364 lastClass = "last-of-type";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5365
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5366 for (var p=0;p<pageCount;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5367 var calId = this.id + sep + p,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5368 calContainerId = this.containerId + sep + p,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5369 childConfig = this.cfg.getConfig();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5370
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5371 childConfig.close = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5372 childConfig.title = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5373 childConfig.navigator = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5374
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5375 if (p > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5376 caldate = new Date(firstPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5377 this._setMonthOnDate(caldate, caldate.getMonth() + p);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5378 childConfig.pageDate = caldate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5379 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5380
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5381 var cal = this.constructChild(calId, calContainerId, childConfig);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5382
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5383 Dom.removeClass(cal.oDomContainer, this.Style.CSS_SINGLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5384 Dom.addClass(cal.oDomContainer, groupCalClass);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5385
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5386 if (p===0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5387 firstPageDate = cal.cfg.getProperty(cfgPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5388 Dom.addClass(cal.oDomContainer, firstClass);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5389 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5390
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5391 if (p==(pageCount-1)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5392 Dom.addClass(cal.oDomContainer, lastClass);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5393 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5394
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5395 cal.parent = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5396 cal.index = p;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5397
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5398 this.pages[this.pages.length] = cal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5399 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5400 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5401
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5402 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5403 * The default Config handler for the "pagedate" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5404 * @method configPageDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5405 * @param {String} type The CustomEvent type (usually the property name)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5406 * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5407 * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5408 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5409 configPageDate : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5410 var val = args[0],
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5411 firstPageDate;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5412
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5413 var cfgPageDate = DEF_CFG.PAGEDATE.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5414
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5415 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5416 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5417 if (p === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5418 firstPageDate = cal._parsePageDate(val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5419 cal.cfg.setProperty(cfgPageDate, firstPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5420 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5421 var pageDate = new Date(firstPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5422 this._setMonthOnDate(pageDate, pageDate.getMonth() + p);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5423 cal.cfg.setProperty(cfgPageDate, pageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5424 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5425 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5426 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5427
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5428 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5429 * The default Config handler for the CalendarGroup "selected" property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5430 * @method configSelected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5431 * @param {String} type The CustomEvent type (usually the property name)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5432 * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5433 * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5434 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5435 configSelected : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5436 var cfgSelected = DEF_CFG.SELECTED.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5437 this.delegateConfig(type, args, obj);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5438 var selected = (this.pages.length > 0) ? this.pages[0].cfg.getProperty(cfgSelected) : [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5439 this.cfg.setProperty(cfgSelected, selected, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5440 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5441
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5442
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5443 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5444 * Delegates a configuration property to the CustomEvents associated with the CalendarGroup's children
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5445 * @method delegateConfig
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5446 * @param {String} type The CustomEvent type (usually the property name)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5447 * @param {Object[]} args The CustomEvent arguments. For configuration handlers, args[0] will equal the newly applied value for the property.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5448 * @param {Object} obj The scope object. For configuration handlers, this will usually equal the owner.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5449 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5450 delegateConfig : function(type, args, obj) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5451 var val = args[0];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5452 var cal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5453
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5454 for (var p=0;p<this.pages.length;p++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5455 cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5456 cal.cfg.setProperty(type, val);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5457 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5458 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5459
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5460 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5461 * Adds a function to all child Calendars within this CalendarGroup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5462 * @method setChildFunction
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5463 * @param {String} fnName The name of the function
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5464 * @param {Function} fn The function to apply to each Calendar page object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5465 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5466 setChildFunction : function(fnName, fn) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5467 var pageCount = this.cfg.getProperty(DEF_CFG.PAGES.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5468
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5469 for (var p=0;p<pageCount;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5470 this.pages[p][fnName] = fn;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5471 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5472 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5473
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5474 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5475 * Calls a function within all child Calendars within this CalendarGroup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5476 * @method callChildFunction
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5477 * @param {String} fnName The name of the function
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5478 * @param {Array} args The arguments to pass to the function
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5479 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5480 callChildFunction : function(fnName, args) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5481 var pageCount = this.cfg.getProperty(DEF_CFG.PAGES.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5482
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5483 for (var p=0;p<pageCount;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5484 var page = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5485 if (page[fnName]) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5486 var fn = page[fnName];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5487 fn.call(page, args);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5488 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5489 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5490 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5491
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5492 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5493 * Constructs a child calendar. This method can be overridden if a subclassed version of the default
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5494 * calendar is to be used.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5495 * @method constructChild
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5496 * @param {String} id The id of the table element that will represent the calendar widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5497 * @param {String} containerId The id of the container div element that will wrap the calendar table
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5498 * @param {Object} config The configuration object containing the Calendar's arguments
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5499 * @return {YAHOO.widget.Calendar} The YAHOO.widget.Calendar instance that is constructed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5500 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5501 constructChild : function(id,containerId,config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5502 var container = document.getElementById(containerId);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5503 if (! container) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5504 container = document.createElement("div");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5505 container.id = containerId;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5506 this.oDomContainer.appendChild(container);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5507 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5508 return new Calendar(id,containerId,config);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5509 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5510
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5511 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5512 * Sets the calendar group's month explicitly. This month will be set into the first
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5513 * page of the multi-page calendar, and all other months will be iterated appropriately.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5514 * @method setMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5515 * @param {Number} month The numeric month, from 0 (January) to 11 (December)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5516 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5517 setMonth : function(month) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5518 month = parseInt(month, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5519 var currYear;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5520
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5521 var cfgPageDate = DEF_CFG.PAGEDATE.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5522
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5523 for (var p=0; p<this.pages.length; ++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5524 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5525 var pageDate = cal.cfg.getProperty(cfgPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5526 if (p === 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5527 currYear = pageDate.getFullYear();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5528 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5529 pageDate.setFullYear(currYear);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5530 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5531 this._setMonthOnDate(pageDate, month+p);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5532 cal.cfg.setProperty(cfgPageDate, pageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5533 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5534 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5535
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5536 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5537 * Sets the calendar group's year explicitly. This year will be set into the first
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5538 * page of the multi-page calendar, and all other months will be iterated appropriately.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5539 * @method setYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5540 * @param {Number} year The numeric 4-digit year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5541 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5542 setYear : function(year) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5543
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5544 var cfgPageDate = DEF_CFG.PAGEDATE.key;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5545
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5546 year = parseInt(year, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5547 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5548 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5549 var pageDate = cal.cfg.getProperty(cfgPageDate);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5550
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5551 if ((pageDate.getMonth()+1) == 1 && p>0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5552 year+=1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5553 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5554 cal.setYear(year);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5555 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5556 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5557
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5558 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5559 * Calls the render function of all child calendars within the group.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5560 * @method render
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5561 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5562 render : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5563 this.renderHeader();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5564 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5565 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5566 cal.render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5567 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5568 this.renderFooter();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5569 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5570
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5571 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5572 * Selects a date or a collection of dates on the current calendar. This method, by default,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5573 * does not call the render method explicitly. Once selection has completed, render must be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5574 * called for the changes to be reflected visually.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5575 * @method select
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5576 * @param {String/Date/Date[]} date The date string of dates to select in the current calendar. Valid formats are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5577 * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5578 * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5579 * This method can also take a JavaScript Date object or an array of Date objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5580 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5581 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5582 select : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5583 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5584 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5585 cal.select(date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5586 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5587 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5588 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5589
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5590 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5591 * Selects dates in the CalendarGroup based on the cell index provided. This method is used to select cells without having to do a full render. The selected style is applied to the cells directly.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5592 * The value of the MULTI_SELECT Configuration attribute will determine the set of dates which get selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5593 * <ul>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5594 * <li>If MULTI_SELECT is false, selectCell will select the cell at the specified index for only the last displayed Calendar page.</li>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5595 * <li>If MULTI_SELECT is true, selectCell will select the cell at the specified index, on each displayed Calendar page.</li>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5596 * </ul>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5597 * @method selectCell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5598 * @param {Number} cellIndex The index of the cell to be selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5599 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5600 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5601 selectCell : function(cellIndex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5602 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5603 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5604 cal.selectCell(cellIndex);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5605 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5606 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5607 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5608
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5609 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5610 * Deselects a date or a collection of dates on the current calendar. This method, by default,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5611 * does not call the render method explicitly. Once deselection has completed, render must be
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5612 * called for the changes to be reflected visually.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5613 * @method deselect
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5614 * @param {String/Date/Date[]} date The date string of dates to deselect in the current calendar. Valid formats are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5615 * individual date(s) (12/24/2005,12/26/2005) or date range(s) (12/24/2005-1/1/2006).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5616 * Multiple comma-delimited dates can also be passed to this method (12/24/2005,12/11/2005-12/13/2005).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5617 * This method can also take a JavaScript Date object or an array of Date objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5618 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5619 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5620 deselect : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5621 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5622 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5623 cal.deselect(date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5624 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5625 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5626 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5627
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5628 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5629 * Deselects all dates on the current calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5630 * @method deselectAll
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5631 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5632 * Assuming that this function executes properly, the return value should be an empty array.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5633 * However, the empty array is returned for the sake of being able to check the selection status
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5634 * of the calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5635 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5636 deselectAll : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5637 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5638 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5639 cal.deselectAll();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5640 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5641 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5642 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5643
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5644 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5645 * Deselects dates in the CalendarGroup based on the cell index provided. This method is used to select cells without having to do a full render. The selected style is applied to the cells directly.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5646 * deselectCell will deselect the cell at the specified index on each displayed Calendar page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5647 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5648 * @method deselectCell
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5649 * @param {Number} cellIndex The index of the cell to deselect.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5650 * @return {Date[]} Array of JavaScript Date objects representing all individual dates that are currently selected.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5651 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5652 deselectCell : function(cellIndex) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5653 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5654 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5655 cal.deselectCell(cellIndex);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5656 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5657 return this.getSelectedDates();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5658 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5659
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5660 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5661 * Resets the calendar widget to the originally selected month and year, and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5662 * sets the calendar to the initial selection(s).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5663 * @method reset
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5664 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5665 reset : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5666 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5667 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5668 cal.reset();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5669 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5670 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5671
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5672 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5673 * Clears the selected dates in the current calendar widget and sets the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5674 * to the current month and year.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5675 * @method clear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5676 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5677 clear : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5678 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5679 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5680 cal.clear();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5681 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5682
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5683 this.cfg.setProperty(DEF_CFG.SELECTED.key, []);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5684 this.cfg.setProperty(DEF_CFG.PAGEDATE.key, new Date(this.pages[0].today.getTime()));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5685 this.render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5686 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5687
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5688 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5689 * Navigates to the next month page in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5690 * @method nextMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5691 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5692 nextMonth : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5693 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5694 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5695 cal.nextMonth();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5696 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5697 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5698
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5699 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5700 * Navigates to the previous month page in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5701 * @method previousMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5702 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5703 previousMonth : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5704 for (var p=this.pages.length-1;p>=0;--p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5705 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5706 cal.previousMonth();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5707 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5708 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5709
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5710 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5711 * Navigates to the next year in the currently selected month in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5712 * @method nextYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5713 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5714 nextYear : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5715 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5716 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5717 cal.nextYear();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5718 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5719 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5720
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5721 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5722 * Navigates to the previous year in the currently selected month in the calendar widget.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5723 * @method previousYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5724 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5725 previousYear : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5726 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5727 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5728 cal.previousYear();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5729 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5730 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5731
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5732 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5733 * Gets the list of currently selected dates from the calendar.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5734 * @return An array of currently selected JavaScript Date objects.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5735 * @type Date[]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5736 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5737 getSelectedDates : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5738 var returnDates = [];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5739 var selected = this.cfg.getProperty(DEF_CFG.SELECTED.key);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5740 for (var d=0;d<selected.length;++d) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5741 var dateArray = selected[d];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5742
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5743 var date = DateMath.getDate(dateArray[0],dateArray[1]-1,dateArray[2]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5744 returnDates.push(date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5745 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5746
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5747 returnDates.sort( function(a,b) { return a-b; } );
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5748 return returnDates;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5749 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5750
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5751 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5752 * Adds a renderer to the render stack. The function reference passed to this method will be executed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5753 * when a date cell matches the conditions specified in the date string for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5754 * @method addRenderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5755 * @param {String} sDates A date string to associate with the specified renderer. Valid formats
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5756 * include date (12/24/2005), month/day (12/24), and range (12/1/2004-1/1/2005)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5757 * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5758 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5759 addRenderer : function(sDates, fnRender) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5760 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5761 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5762 cal.addRenderer(sDates, fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5763 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5764 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5765
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5766 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5767 * Adds a month to the render stack. The function reference passed to this method will be executed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5768 * when a date cell matches the month passed to this method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5769 * @method addMonthRenderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5770 * @param {Number} month The month (1-12) to associate with this renderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5771 * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5772 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5773 addMonthRenderer : function(month, fnRender) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5774 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5775 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5776 cal.addMonthRenderer(month, fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5777 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5778 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5779
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5780 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5781 * Adds a weekday to the render stack. The function reference passed to this method will be executed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5782 * when a date cell matches the weekday passed to this method.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5783 * @method addWeekdayRenderer
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5784 * @param {Number} weekday The weekday (1-7) to associate with this renderer. 1=Sunday, 2=Monday etc.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5785 * @param {Function} fnRender The function executed to render cells that match the render rules for this renderer.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5786 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5787 addWeekdayRenderer : function(weekday, fnRender) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5788 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5789 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5790 cal.addWeekdayRenderer(weekday, fnRender);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5791 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5792 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5793
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5794 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5795 * Removes all custom renderers added to the CalendarGroup through the addRenderer, addMonthRenderer and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5796 * addWeekRenderer methods. CalendarGroup's render method needs to be called to after removing renderers
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5797 * to see the changes applied.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5798 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5799 * @method removeRenderers
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5800 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5801 removeRenderers : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5802 this.callChildFunction("removeRenderers");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5803 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5804
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5805 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5806 * Renders the header for the CalendarGroup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5807 * @method renderHeader
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5808 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5809 renderHeader : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5810 // EMPTY DEFAULT IMPL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5811 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5812
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5813 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5814 * Renders a footer for the 2-up calendar container. By default, this method is
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5815 * unimplemented.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5816 * @method renderFooter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5817 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5818 renderFooter : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5819 // EMPTY DEFAULT IMPL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5820 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5821
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5822 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5823 * Adds the designated number of months to the current calendar month, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5824 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5825 * @method addMonths
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5826 * @param {Number} count The number of months to add to the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5827 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5828 addMonths : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5829 this.callChildFunction("addMonths", count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5830 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5831
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5832 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5833 * Subtracts the designated number of months from the current calendar month, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5834 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5835 * @method subtractMonths
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5836 * @param {Number} count The number of months to subtract from the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5837 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5838 subtractMonths : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5839 this.callChildFunction("subtractMonths", count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5840 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5841
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5842 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5843 * Adds the designated number of years to the current calendar, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5844 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5845 * @method addYears
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5846 * @param {Number} count The number of years to add to the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5847 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5848 addYears : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5849 this.callChildFunction("addYears", count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5850 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5851
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5852 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5853 * Subtcats the designated number of years from the current calendar, and sets the current
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5854 * calendar page date to the new month.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5855 * @method subtractYears
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5856 * @param {Number} count The number of years to subtract from the current calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5857 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5858 subtractYears : function(count) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5859 this.callChildFunction("subtractYears", count);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5860 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5861
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5862 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5863 * Returns the Calendar page instance which has a pagedate (month/year) matching the given date.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5864 * Returns null if no match is found.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5865 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5866 * @method getCalendarPage
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5867 * @param {Date} date The JavaScript Date object for which a Calendar page is to be found.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5868 * @return {Calendar} The Calendar page instance representing the month to which the date
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5869 * belongs.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5870 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5871 getCalendarPage : function(date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5872 var cal = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5873 if (date) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5874 var y = date.getFullYear(),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5875 m = date.getMonth();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5876
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5877 var pages = this.pages;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5878 for (var i = 0; i < pages.length; ++i) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5879 var pageDate = pages[i].cfg.getProperty("pagedate");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5880 if (pageDate.getFullYear() === y && pageDate.getMonth() === m) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5881 cal = pages[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5882 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5883 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5884 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5885 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5886 return cal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5887 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5889 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5890 * Sets the month on a Date object, taking into account year rollover if the month is less than 0 or greater than 11.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5891 * The Date object passed in is modified. It should be cloned before passing it into this method if the original value needs to be maintained
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5892 * @method _setMonthOnDate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5893 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5894 * @param {Date} date The Date object on which to set the month index
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5895 * @param {Number} iMonth The month index to set
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5896 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5897 _setMonthOnDate : function(date, iMonth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5898 // Bug in Safari 1.3, 2.0 (WebKit build < 420), Date.setMonth does not work consistently if iMonth is not 0-11
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5899 if (YAHOO.env.ua.webkit && YAHOO.env.ua.webkit < 420 && (iMonth < 0 || iMonth > 11)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5900 var newDate = DateMath.add(date, DateMath.MONTH, iMonth-date.getMonth());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5901 date.setTime(newDate.getTime());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5902 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5903 date.setMonth(iMonth);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5904 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5905 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5906
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5907 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5908 * Fixes the width of the CalendarGroup container element, to account for miswrapped floats
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5909 * @method _fixWidth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5910 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5911 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5912 _fixWidth : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5913 var w = 0;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5914 for (var p=0;p<this.pages.length;++p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5915 var cal = this.pages[p];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5916 w += cal.oDomContainer.offsetWidth;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5917 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5918 if (w > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5919 this.oDomContainer.style.width = w + "px";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5920 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5921 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5922
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5923 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5924 * Returns a string representation of the object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5925 * @method toString
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5926 * @return {String} A string representation of the CalendarGroup object.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5927 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5928 toString : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5929 return "CalendarGroup " + this.id;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5930 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5931
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5932 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5933 * Destroys the CalendarGroup instance. The method will remove references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5934 * to HTML elements, remove any event listeners added by the CalendarGroup.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5935 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5936 * It will also destroy the Config and CalendarNavigator instances created by the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5937 * CalendarGroup and the individual Calendar instances created for each page.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5938 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5939 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5940 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5941 destroy : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5942
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5943 if (this.beforeDestroyEvent.fire()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5944
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5945 var cal = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5946
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5947 // Child objects
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5948 if (cal.navigator) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5949 cal.navigator.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5950 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5951
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5952 if (cal.cfg) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5953 cal.cfg.destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5954 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5955
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5956 // DOM event listeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5957 Event.purgeElement(cal.oDomContainer, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5958
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5959 // Generated markup/DOM - Not removing the container DIV since we didn't create it.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5960 Dom.removeClass(cal.oDomContainer, CalendarGroup.CSS_CONTAINER);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5961 Dom.removeClass(cal.oDomContainer, CalendarGroup.CSS_MULTI_UP);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5962
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5963 for (var i = 0, l = cal.pages.length; i < l; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5964 cal.pages[i].destroy();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5965 cal.pages[i] = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5966 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5967
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5968 cal.oDomContainer.innerHTML = "";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5969
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5970 // JS-to-DOM references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5971 cal.oDomContainer = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5972
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5973 this.destroyEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5974 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5975 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5976 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5977
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5978 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5979 * CSS class representing the container for the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5980 * @property YAHOO.widget.CalendarGroup.CSS_CONTAINER
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5981 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5982 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5983 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5984 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5985 CalendarGroup.CSS_CONTAINER = "yui-calcontainer";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5986
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5987 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5988 * CSS class representing the container for the calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5989 * @property YAHOO.widget.CalendarGroup.CSS_MULTI_UP
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5990 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5991 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5992 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5993 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5994 CalendarGroup.CSS_MULTI_UP = "multi";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5995
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5996 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5997 * CSS class representing the title for the 2-up calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5998 * @property YAHOO.widget.CalendarGroup.CSS_2UPTITLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
5999 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6000 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6001 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6002 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6003 CalendarGroup.CSS_2UPTITLE = "title";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6004
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6005 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6006 * CSS class representing the close icon for the 2-up calendar
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6007 * @property YAHOO.widget.CalendarGroup.CSS_2UPCLOSE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6008 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6009 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6010 * @deprecated Along with Calendar.IMG_ROOT and NAV_ARROW_LEFT, NAV_ARROW_RIGHT configuration properties.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6011 * Calendar's <a href="YAHOO.widget.Calendar.html#Style.CSS_CLOSE">Style.CSS_CLOSE</a> property now represents the CSS class used to render the close icon
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6012 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6013 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6014 CalendarGroup.CSS_2UPCLOSE = "close-icon";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6015
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6016 YAHOO.lang.augmentProto(CalendarGroup, Calendar, "buildDayLabel",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6017 "buildMonthLabel",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6018 "renderOutOfBoundsDate",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6019 "renderRowHeader",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6020 "renderRowFooter",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6021 "renderCellDefault",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6022 "styleCellDefault",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6023 "renderCellStyleHighlight1",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6024 "renderCellStyleHighlight2",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6025 "renderCellStyleHighlight3",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6026 "renderCellStyleHighlight4",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6027 "renderCellStyleToday",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6028 "renderCellStyleSelected",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6029 "renderCellNotThisMonth",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6030 "renderBodyCellRestricted",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6031 "initStyles",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6032 "configTitle",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6033 "configClose",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6034 "configIframe",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6035 "configStrings",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6036 "configToday",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6037 "configNavigator",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6038 "createTitleBar",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6039 "createCloseButton",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6040 "removeTitleBar",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6041 "removeCloseButton",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6042 "hide",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6043 "show",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6044 "toDate",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6045 "_toDate",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6046 "_parseArgs",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6047 "browser");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6048
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6049 YAHOO.widget.CalGrp = CalendarGroup;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6050 YAHOO.widget.CalendarGroup = CalendarGroup;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6051
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6052 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6053 * @class YAHOO.widget.Calendar2up
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6054 * @extends YAHOO.widget.CalendarGroup
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6055 * @deprecated The old Calendar2up class is no longer necessary, since CalendarGroup renders in a 2up view by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6056 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6057 YAHOO.widget.Calendar2up = function(id, containerId, config) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6058 this.init(id, containerId, config);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6059 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6060
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6061 YAHOO.extend(YAHOO.widget.Calendar2up, CalendarGroup);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6062
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6063 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6064 * @deprecated The old Calendar2up class is no longer necessary, since CalendarGroup renders in a 2up view by default.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6065 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6066 YAHOO.widget.Cal2up = YAHOO.widget.Calendar2up;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6067
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6068 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6069 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6070 * The CalendarNavigator is used along with a Calendar/CalendarGroup to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6071 * provide a Month/Year popup navigation control, allowing the user to navigate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6072 * to a specific month/year in the Calendar/CalendarGroup without having to
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6073 * scroll through months sequentially
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6074 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6075 * @namespace YAHOO.widget
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6076 * @class CalendarNavigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6077 * @constructor
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6078 * @param {Calendar|CalendarGroup} cal The instance of the Calendar or CalendarGroup to which this CalendarNavigator should be attached.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6079 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6080 YAHOO.widget.CalendarNavigator = function(cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6081 this.init(cal);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6082 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6083
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6084 (function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6085 // Setup static properties (inside anon fn, so that we can use shortcuts)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6086 var CN = YAHOO.widget.CalendarNavigator;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6087
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6088 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6089 * YAHOO.widget.CalendarNavigator.CLASSES contains constants
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6090 * for the class values applied to the CalendarNaviatgator's
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6091 * DOM elements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6092 * @property YAHOO.widget.CalendarNavigator.CLASSES
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6093 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6094 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6095 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6096 CN.CLASSES = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6097 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6098 * Class applied to the Calendar Navigator's bounding box
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6099 * @property YAHOO.widget.CalendarNavigator.CLASSES.NAV
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6100 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6101 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6102 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6103 NAV :"yui-cal-nav",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6104 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6105 * Class applied to the Calendar/CalendarGroup's bounding box to indicate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6106 * the Navigator is currently visible
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6107 * @property YAHOO.widget.CalendarNavigator.CLASSES.NAV_VISIBLE
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6108 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6109 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6110 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6111 NAV_VISIBLE: "yui-cal-nav-visible",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6112 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6113 * Class applied to the Navigator mask's bounding box
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6114 * @property YAHOO.widget.CalendarNavigator.CLASSES.MASK
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6115 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6116 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6117 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6118 MASK : "yui-cal-nav-mask",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6119 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6120 * Class applied to the year label/control bounding box
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6121 * @property YAHOO.widget.CalendarNavigator.CLASSES.YEAR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6122 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6123 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6124 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6125 YEAR : "yui-cal-nav-y",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6126 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6127 * Class applied to the month label/control bounding box
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6128 * @property YAHOO.widget.CalendarNavigator.CLASSES.MONTH
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6129 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6130 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6131 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6132 MONTH : "yui-cal-nav-m",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6133 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6134 * Class applied to the submit/cancel button's bounding box
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6135 * @property YAHOO.widget.CalendarNavigator.CLASSES.BUTTONS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6136 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6137 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6138 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6139 BUTTONS : "yui-cal-nav-b",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6140 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6141 * Class applied to buttons wrapping element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6142 * @property YAHOO.widget.CalendarNavigator.CLASSES.BUTTON
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6143 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6144 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6145 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6146 BUTTON : "yui-cal-nav-btn",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6147 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6148 * Class applied to the validation error area's bounding box
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6149 * @property YAHOO.widget.CalendarNavigator.CLASSES.ERROR
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6150 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6151 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6152 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6153 ERROR : "yui-cal-nav-e",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6154 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6155 * Class applied to the year input control
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6156 * @property YAHOO.widget.CalendarNavigator.CLASSES.YEAR_CTRL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6157 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6158 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6159 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6160 YEAR_CTRL : "yui-cal-nav-yc",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6161 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6162 * Class applied to the month input control
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6163 * @property YAHOO.widget.CalendarNavigator.CLASSES.MONTH_CTRL
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6164 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6165 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6166 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6167 MONTH_CTRL : "yui-cal-nav-mc",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6168 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6169 * Class applied to controls with invalid data (e.g. a year input field with invalid an year)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6170 * @property YAHOO.widget.CalendarNavigator.CLASSES.INVALID
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6171 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6172 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6173 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6174 INVALID : "yui-invalid",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6175 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6176 * Class applied to default controls
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6177 * @property YAHOO.widget.CalendarNavigator.CLASSES.DEFAULT
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6178 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6179 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6180 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6181 DEFAULT : "yui-default"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6182 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6183
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6184 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6185 * Object literal containing the default configuration values for the CalendarNavigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6186 * The configuration object is expected to follow the format below, with the properties being
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6187 * case sensitive.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6188 * <dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6189 * <dt>strings</dt>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6190 * <dd><em>Object</em> : An object with the properties shown below, defining the string labels to use in the Navigator's UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6191 * <dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6192 * <dt>month</dt><dd><em>String</em> : The string to use for the month label. Defaults to "Month".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6193 * <dt>year</dt><dd><em>String</em> : The string to use for the year label. Defaults to "Year".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6194 * <dt>submit</dt><dd><em>String</em> : The string to use for the submit button label. Defaults to "Okay".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6195 * <dt>cancel</dt><dd><em>String</em> : The string to use for the cancel button label. Defaults to "Cancel".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6196 * <dt>invalidYear</dt><dd><em>String</em> : The string to use for invalid year values. Defaults to "Year needs to be a number".</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6197 * </dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6198 * </dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6199 * <dt>monthFormat</dt><dd><em>String</em> : The month format to use. Either YAHOO.widget.Calendar.LONG, or YAHOO.widget.Calendar.SHORT. Defaults to YAHOO.widget.Calendar.LONG</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6200 * <dt>initialFocus</dt><dd><em>String</em> : Either "year" or "month" specifying which input control should get initial focus. Defaults to "year"</dd>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6201 * </dl>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6202 * @property DEFAULT_CONFIG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6203 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6204 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6205 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6206 CN.DEFAULT_CONFIG = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6207 strings : {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6208 month: "Month",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6209 year: "Year",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6210 submit: "Okay",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6211 cancel: "Cancel",
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6212 invalidYear : "Year needs to be a number"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6213 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6214 monthFormat: YAHOO.widget.Calendar.LONG,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6215 initialFocus: "year"
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6216 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6217
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6218 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6219 * Object literal containing the default configuration values for the CalendarNavigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6220 * @property _DEFAULT_CFG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6221 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6222 * @deprecated Made public. See the public DEFAULT_CONFIG property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6223 * @type Object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6224 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6225 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6226 CN._DEFAULT_CFG = CN.DEFAULT_CONFIG;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6227
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6228
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6229 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6230 * The suffix added to the Calendar/CalendarGroup's ID, to generate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6231 * a unique ID for the Navigator and it's bounding box.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6232 * @property YAHOO.widget.CalendarNavigator.ID_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6233 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6234 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6235 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6236 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6237 CN.ID_SUFFIX = "_nav";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6238 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6239 * The suffix added to the Navigator's ID, to generate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6240 * a unique ID for the month control.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6241 * @property YAHOO.widget.CalendarNavigator.MONTH_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6242 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6243 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6244 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6245 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6246 CN.MONTH_SUFFIX = "_month";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6247 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6248 * The suffix added to the Navigator's ID, to generate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6249 * a unique ID for the year control.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6250 * @property YAHOO.widget.CalendarNavigator.YEAR_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6251 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6252 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6253 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6254 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6255 CN.YEAR_SUFFIX = "_year";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6256 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6257 * The suffix added to the Navigator's ID, to generate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6258 * a unique ID for the error bounding box.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6259 * @property YAHOO.widget.CalendarNavigator.ERROR_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6260 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6261 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6262 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6263 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6264 CN.ERROR_SUFFIX = "_error";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6265 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6266 * The suffix added to the Navigator's ID, to generate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6267 * a unique ID for the "Cancel" button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6268 * @property YAHOO.widget.CalendarNavigator.CANCEL_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6269 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6270 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6271 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6272 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6273 CN.CANCEL_SUFFIX = "_cancel";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6274 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6275 * The suffix added to the Navigator's ID, to generate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6276 * a unique ID for the "Submit" button.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6277 * @property YAHOO.widget.CalendarNavigator.SUBMIT_SUFFIX
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6278 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6279 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6280 * @final
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6281 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6282 CN.SUBMIT_SUFFIX = "_submit";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6283
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6284 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6285 * The number of digits to which the year input control is to be limited.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6286 * @property YAHOO.widget.CalendarNavigator.YR_MAX_DIGITS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6287 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6288 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6289 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6290 CN.YR_MAX_DIGITS = 4;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6291
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6292 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6293 * The amount by which to increment the current year value,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6294 * when the arrow up/down key is pressed on the year control
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6295 * @property YAHOO.widget.CalendarNavigator.YR_MINOR_INC
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6296 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6297 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6298 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6299 CN.YR_MINOR_INC = 1;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6300
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6301 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6302 * The amount by which to increment the current year value,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6303 * when the page up/down key is pressed on the year control
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6304 * @property YAHOO.widget.CalendarNavigator.YR_MAJOR_INC
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6305 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6306 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6307 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6308 CN.YR_MAJOR_INC = 10;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6309
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6310 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6311 * Artificial delay (in ms) between the time the Navigator is hidden
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6312 * and the Calendar/CalendarGroup state is updated. Allows the user
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6313 * the see the Calendar/CalendarGroup page changing. If set to 0
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6314 * the Calendar/CalendarGroup page will be updated instantly
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6315 * @property YAHOO.widget.CalendarNavigator.UPDATE_DELAY
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6316 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6317 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6318 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6319 CN.UPDATE_DELAY = 50;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6320
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6321 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6322 * Regular expression used to validate the year input
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6323 * @property YAHOO.widget.CalendarNavigator.YR_PATTERN
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6324 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6325 * @type RegExp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6326 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6327 CN.YR_PATTERN = /^\d+$/;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6328 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6329 * Regular expression used to trim strings
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6330 * @property YAHOO.widget.CalendarNavigator.TRIM
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6331 * @static
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6332 * @type RegExp
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6333 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6334 CN.TRIM = /^\s*(.*?)\s*$/;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6335 })();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6336
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6337 YAHOO.widget.CalendarNavigator.prototype = {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6338
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6339 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6340 * The unique ID for this CalendarNavigator instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6341 * @property id
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6342 * @type String
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6343 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6344 id : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6345
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6346 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6347 * The Calendar/CalendarGroup instance to which the navigator belongs
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6348 * @property cal
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6349 * @type {Calendar|CalendarGroup}
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6350 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6351 cal : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6352
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6353 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6354 * Reference to the HTMLElement used to render the navigator's bounding box
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6355 * @property navEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6356 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6357 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6358 navEl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6359
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6360 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6361 * Reference to the HTMLElement used to render the navigator's mask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6362 * @property maskEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6363 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6364 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6365 maskEl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6366
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6367 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6368 * Reference to the HTMLElement used to input the year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6369 * @property yearEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6370 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6371 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6372 yearEl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6373
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6374 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6375 * Reference to the HTMLElement used to input the month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6376 * @property monthEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6377 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6378 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6379 monthEl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6380
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6381 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6382 * Reference to the HTMLElement used to display validation errors
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6383 * @property errorEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6384 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6385 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6386 errorEl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6387
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6388 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6389 * Reference to the HTMLElement used to update the Calendar/Calendar group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6390 * with the month/year values
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6391 * @property submitEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6392 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6393 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6394 submitEl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6395
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6396 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6397 * Reference to the HTMLElement used to hide the navigator without updating the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6398 * Calendar/Calendar group
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6399 * @property cancelEl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6400 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6401 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6402 cancelEl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6403
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6404 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6405 * Reference to the first focusable control in the navigator (by default monthEl)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6406 * @property firstCtrl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6407 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6408 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6409 firstCtrl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6410
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6411 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6412 * Reference to the last focusable control in the navigator (by default cancelEl)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6413 * @property lastCtrl
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6414 * @type HTMLElement
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6415 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6416 lastCtrl : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6417
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6418 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6419 * The document containing the Calendar/Calendar group instance
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6420 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6421 * @property _doc
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6422 * @type HTMLDocument
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6423 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6424 _doc : null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6425
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6426 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6427 * Internal state property for the current year displayed in the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6428 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6429 * @property _year
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6430 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6431 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6432 _year: null,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6433
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6434 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6435 * Internal state property for the current month index displayed in the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6436 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6437 * @property _month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6438 * @type Number
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6439 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6440 _month: 0,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6441
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6442 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6443 * Private internal state property which indicates whether or not the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6444 * Navigator has been rendered.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6445 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6446 * @property __rendered
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6447 * @type Boolean
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6448 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6449 __rendered: false,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6450
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6451 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6452 * Init lifecycle method called as part of construction
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6453 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6454 * @method init
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6455 * @param {Calendar} cal The instance of the Calendar or CalendarGroup to which this CalendarNavigator should be attached
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6456 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6457 init : function(cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6458 var calBox = cal.oDomContainer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6459
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6460 this.cal = cal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6461 this.id = calBox.id + YAHOO.widget.CalendarNavigator.ID_SUFFIX;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6462 this._doc = calBox.ownerDocument;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6463
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6464 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6465 * Private flag, to identify IE Quirks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6466 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6467 * @property __isIEQuirks
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6468 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6469 var ie = YAHOO.env.ua.ie;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6470 this.__isIEQuirks = (ie && ((ie <= 6) || (this._doc.compatMode == "BackCompat")));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6471 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6472
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6473 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6474 * Displays the navigator and mask, updating the input controls to reflect the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6475 * currently set month and year. The show method will invoke the render method
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6476 * if the navigator has not been renderered already, allowing for lazy rendering
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6477 * of the control.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6478 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6479 * The show method will fire the Calendar/CalendarGroup's beforeShowNav and showNav events
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6480 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6481 * @method show
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6482 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6483 show : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6484 var CLASSES = YAHOO.widget.CalendarNavigator.CLASSES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6485
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6486 if (this.cal.beforeShowNavEvent.fire()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6487 if (!this.__rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6488 this.render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6489 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6490 this.clearErrors();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6491
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6492 this._updateMonthUI();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6493 this._updateYearUI();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6494 this._show(this.navEl, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6495
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6496 this.setInitialFocus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6497 this.showMask();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6498
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6499 YAHOO.util.Dom.addClass(this.cal.oDomContainer, CLASSES.NAV_VISIBLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6500 this.cal.showNavEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6501 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6502 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6503
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6504 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6505 * Hides the navigator and mask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6506 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6507 * The show method will fire the Calendar/CalendarGroup's beforeHideNav event and hideNav events
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6508 * @method hide
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6509 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6510 hide : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6511 var CLASSES = YAHOO.widget.CalendarNavigator.CLASSES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6512
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6513 if (this.cal.beforeHideNavEvent.fire()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6514 this._show(this.navEl, false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6515 this.hideMask();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6516 YAHOO.util.Dom.removeClass(this.cal.oDomContainer, CLASSES.NAV_VISIBLE);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6517 this.cal.hideNavEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6518 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6519 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6520
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6521
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6522 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6523 * Displays the navigator's mask element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6524 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6525 * @method showMask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6526 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6527 showMask : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6528 this._show(this.maskEl, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6529 if (this.__isIEQuirks) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6530 this._syncMask();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6531 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6532 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6533
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6534 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6535 * Hides the navigator's mask element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6536 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6537 * @method hideMask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6538 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6539 hideMask : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6540 this._show(this.maskEl, false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6541 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6542
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6543 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6544 * Returns the current month set on the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6545 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6546 * Note: This may not be the month set in the UI, if
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6547 * the UI contains an invalid value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6548 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6549 * @method getMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6550 * @return {Number} The Navigator's current month index
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6551 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6552 getMonth: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6553 return this._month;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6554 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6555
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6556 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6557 * Returns the current year set on the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6558 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6559 * Note: This may not be the year set in the UI, if
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6560 * the UI contains an invalid value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6561 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6562 * @method getYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6563 * @return {Number} The Navigator's current year value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6564 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6565 getYear: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6566 return this._year;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6567 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6568
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6569 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6570 * Sets the current month on the Navigator, and updates the UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6571 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6572 * @method setMonth
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6573 * @param {Number} nMonth The month index, from 0 (Jan) through 11 (Dec).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6574 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6575 setMonth : function(nMonth) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6576 if (nMonth >= 0 && nMonth < 12) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6577 this._month = nMonth;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6578 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6579 this._updateMonthUI();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6580 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6581
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6582 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6583 * Sets the current year on the Navigator, and updates the UI. If the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6584 * provided year is invalid, it will not be set.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6585 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6586 * @method setYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6587 * @param {Number} nYear The full year value to set the Navigator to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6588 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6589 setYear : function(nYear) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6590 var yrPattern = YAHOO.widget.CalendarNavigator.YR_PATTERN;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6591 if (YAHOO.lang.isNumber(nYear) && yrPattern.test(nYear+"")) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6592 this._year = nYear;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6593 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6594 this._updateYearUI();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6595 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6596
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6597 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6598 * Renders the HTML for the navigator, adding it to the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6599 * document and attaches event listeners if it has not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6600 * already been rendered.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6601 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6602 * @method render
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6603 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6604 render: function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6605 this.cal.beforeRenderNavEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6606 if (!this.__rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6607 this.createNav();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6608 this.createMask();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6609 this.applyListeners();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6610 this.__rendered = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6611 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6612 this.cal.renderNavEvent.fire();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6613 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6614
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6615 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6616 * Creates the navigator's containing HTMLElement, it's contents, and appends
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6617 * the containg element to the Calendar/CalendarGroup's container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6618 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6619 * @method createNav
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6620 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6621 createNav : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6622 var NAV = YAHOO.widget.CalendarNavigator;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6623 var doc = this._doc;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6624
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6625 var d = doc.createElement("div");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6626 d.className = NAV.CLASSES.NAV;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6627
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6628 var htmlBuf = this.renderNavContents([]);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6629
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6630 d.innerHTML = htmlBuf.join('');
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6631 this.cal.oDomContainer.appendChild(d);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6632
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6633 this.navEl = d;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6634
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6635 this.yearEl = doc.getElementById(this.id + NAV.YEAR_SUFFIX);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6636 this.monthEl = doc.getElementById(this.id + NAV.MONTH_SUFFIX);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6637 this.errorEl = doc.getElementById(this.id + NAV.ERROR_SUFFIX);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6638 this.submitEl = doc.getElementById(this.id + NAV.SUBMIT_SUFFIX);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6639 this.cancelEl = doc.getElementById(this.id + NAV.CANCEL_SUFFIX);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6640
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6641 if (YAHOO.env.ua.gecko && this.yearEl && this.yearEl.type == "text") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6642 // Avoid XUL error on focus, select [ https://bugzilla.mozilla.org/show_bug.cgi?id=236791,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6643 // supposedly fixed in 1.8.1, but there are reports of it still being around for methods other than blur ]
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6644 this.yearEl.setAttribute("autocomplete", "off");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6645 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6646
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6647 this._setFirstLastElements();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6648 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6649
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6650 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6651 * Creates the Mask HTMLElement and appends it to the Calendar/CalendarGroups
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6652 * container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6653 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6654 * @method createMask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6655 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6656 createMask : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6657 var C = YAHOO.widget.CalendarNavigator.CLASSES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6658
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6659 var d = this._doc.createElement("div");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6660 d.className = C.MASK;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6661
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6662 this.cal.oDomContainer.appendChild(d);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6663 this.maskEl = d;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6664 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6665
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6666 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6667 * Used to set the width/height of the mask in pixels to match the Calendar Container.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6668 * Currently only used for IE6 or IE in quirks mode. The other A-Grade browser are handled using CSS (width/height 100%).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6669 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6670 * The method is also registered as an HTMLElement resize listener on the Calendars container element.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6671 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6672 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6673 * @method _syncMask
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6674 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6675 _syncMask : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6676 var c = this.cal.oDomContainer;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6677 if (c && this.maskEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6678 var r = YAHOO.util.Dom.getRegion(c);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6679 YAHOO.util.Dom.setStyle(this.maskEl, "width", r.right - r.left + "px");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6680 YAHOO.util.Dom.setStyle(this.maskEl, "height", r.bottom - r.top + "px");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6681 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6682 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6683
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6684 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6685 * Renders the contents of the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6686 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6687 * @method renderNavContents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6688 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6689 * @param {Array} html The HTML buffer to append the HTML to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6690 * @return {Array} A reference to the buffer passed in.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6691 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6692 renderNavContents : function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6693 var NAV = YAHOO.widget.CalendarNavigator,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6694 C = NAV.CLASSES,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6695 h = html; // just to use a shorter name
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6696
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6697 h[h.length] = '<div class="' + C.MONTH + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6698 this.renderMonth(h);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6699 h[h.length] = '</div>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6700 h[h.length] = '<div class="' + C.YEAR + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6701 this.renderYear(h);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6702 h[h.length] = '</div>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6703 h[h.length] = '<div class="' + C.BUTTONS + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6704 this.renderButtons(h);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6705 h[h.length] = '</div>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6706 h[h.length] = '<div class="' + C.ERROR + '" id="' + this.id + NAV.ERROR_SUFFIX + '"></div>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6707
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6708 return h;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6709 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6710
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6711 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6712 * Renders the month label and control for the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6713 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6714 * @method renderNavContents
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6715 * @param {Array} html The HTML buffer to append the HTML to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6716 * @return {Array} A reference to the buffer passed in.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6717 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6718 renderMonth : function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6719 var NAV = YAHOO.widget.CalendarNavigator,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6720 C = NAV.CLASSES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6721
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6722 var id = this.id + NAV.MONTH_SUFFIX,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6723 mf = this.__getCfg("monthFormat"),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6724 months = this.cal.cfg.getProperty((mf == YAHOO.widget.Calendar.SHORT) ? "MONTHS_SHORT" : "MONTHS_LONG"),
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6725 h = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6726
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6727 if (months && months.length > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6728 h[h.length] = '<label for="' + id + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6729 h[h.length] = this.__getCfg("month", true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6730 h[h.length] = '</label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6731 h[h.length] = '<select name="' + id + '" id="' + id + '" class="' + C.MONTH_CTRL + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6732 for (var i = 0; i < months.length; i++) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6733 h[h.length] = '<option value="' + i + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6734 h[h.length] = months[i];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6735 h[h.length] = '</option>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6736 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6737 h[h.length] = '</select>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6738 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6739 return h;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6740 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6741
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6742 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6743 * Renders the year label and control for the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6744 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6745 * @method renderYear
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6746 * @param {Array} html The HTML buffer to append the HTML to.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6747 * @return {Array} A reference to the buffer passed in.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6748 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6749 renderYear : function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6750 var NAV = YAHOO.widget.CalendarNavigator,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6751 C = NAV.CLASSES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6752
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6753 var id = this.id + NAV.YEAR_SUFFIX,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6754 size = NAV.YR_MAX_DIGITS,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6755 h = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6756
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6757 h[h.length] = '<label for="' + id + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6758 h[h.length] = this.__getCfg("year", true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6759 h[h.length] = '</label>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6760 h[h.length] = '<input type="text" name="' + id + '" id="' + id + '" class="' + C.YEAR_CTRL + '" maxlength="' + size + '"/>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6761 return h;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6762 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6763
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6764 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6765 * Renders the submit/cancel buttons for the navigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6766 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6767 * @method renderButton
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6768 * @return {String} The HTML created for the Button UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6769 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6770 renderButtons : function(html) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6771 var C = YAHOO.widget.CalendarNavigator.CLASSES;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6772 var h = html;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6773
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6774 h[h.length] = '<span class="' + C.BUTTON + ' ' + C.DEFAULT + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6775 h[h.length] = '<button type="button" id="' + this.id + '_submit' + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6776 h[h.length] = this.__getCfg("submit", true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6777 h[h.length] = '</button>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6778 h[h.length] = '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6779 h[h.length] = '<span class="' + C.BUTTON +'">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6780 h[h.length] = '<button type="button" id="' + this.id + '_cancel' + '">';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6781 h[h.length] = this.__getCfg("cancel", true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6782 h[h.length] = '</button>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6783 h[h.length] = '</span>';
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6784
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6785 return h;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6786 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6787
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6788 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6789 * Attaches DOM event listeners to the rendered elements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6790 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6791 * The method will call applyKeyListeners, to setup keyboard specific
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6792 * listeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6793 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6794 * @method applyListeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6795 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6796 applyListeners : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6797 var E = YAHOO.util.Event;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6798
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6799 function yearUpdateHandler() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6800 if (this.validate()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6801 this.setYear(this._getYearFromUI());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6802 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6803 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6804
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6805 function monthUpdateHandler() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6806 this.setMonth(this._getMonthFromUI());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6807 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6808
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6809 E.on(this.submitEl, "click", this.submit, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6810 E.on(this.cancelEl, "click", this.cancel, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6811 E.on(this.yearEl, "blur", yearUpdateHandler, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6812 E.on(this.monthEl, "change", monthUpdateHandler, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6813
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6814 if (this.__isIEQuirks) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6815 YAHOO.util.Event.on(this.cal.oDomContainer, "resize", this._syncMask, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6816 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6817
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6818 this.applyKeyListeners();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6819 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6820
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6821 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6822 * Removes/purges DOM event listeners from the rendered elements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6823 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6824 * @method purgeListeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6825 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6826 purgeListeners : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6827 var E = YAHOO.util.Event;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6828 E.removeListener(this.submitEl, "click", this.submit);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6829 E.removeListener(this.cancelEl, "click", this.cancel);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6830 E.removeListener(this.yearEl, "blur");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6831 E.removeListener(this.monthEl, "change");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6832 if (this.__isIEQuirks) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6833 E.removeListener(this.cal.oDomContainer, "resize", this._syncMask);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6834 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6835
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6836 this.purgeKeyListeners();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6837 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6838
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6839 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6840 * Attaches DOM listeners for keyboard support.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6841 * Tab/Shift-Tab looping, Enter Key Submit on Year element,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6842 * Up/Down/PgUp/PgDown year increment on Year element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6843 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6844 * NOTE: MacOSX Safari 2.x doesn't let you tab to buttons and
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6845 * MacOSX Gecko does not let you tab to buttons or select controls,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6846 * so for these browsers, Tab/Shift-Tab looping is limited to the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6847 * elements which can be reached using the tab key.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6848 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6849 * @method applyKeyListeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6850 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6851 applyKeyListeners : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6852 var E = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6853 ua = YAHOO.env.ua;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6854
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6855 // IE/Safari 3.1 doesn't fire keypress for arrow/pg keys (non-char keys)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6856 var arrowEvt = (ua.ie || ua.webkit) ? "keydown" : "keypress";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6857
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6858 // - IE/Safari 3.1 doesn't fire keypress for non-char keys
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6859 // - Opera doesn't allow us to cancel keydown or keypress for tab, but
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6860 // changes focus successfully on keydown (keypress is too late to change focus - opera's already moved on).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6861 var tabEvt = (ua.ie || ua.opera || ua.webkit) ? "keydown" : "keypress";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6862
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6863 // Everyone likes keypress for Enter (char keys) - whoo hoo!
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6864 E.on(this.yearEl, "keypress", this._handleEnterKey, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6865
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6866 E.on(this.yearEl, arrowEvt, this._handleDirectionKeys, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6867 E.on(this.lastCtrl, tabEvt, this._handleTabKey, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6868 E.on(this.firstCtrl, tabEvt, this._handleShiftTabKey, this, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6869 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6870
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6871 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6872 * Removes/purges DOM listeners for keyboard support
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6873 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6874 * @method purgeKeyListeners
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6875 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6876 purgeKeyListeners : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6877 var E = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6878 ua = YAHOO.env.ua;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6879
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6880 var arrowEvt = (ua.ie || ua.webkit) ? "keydown" : "keypress";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6881 var tabEvt = (ua.ie || ua.opera || ua.webkit) ? "keydown" : "keypress";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6882
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6883 E.removeListener(this.yearEl, "keypress", this._handleEnterKey);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6884 E.removeListener(this.yearEl, arrowEvt, this._handleDirectionKeys);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6885 E.removeListener(this.lastCtrl, tabEvt, this._handleTabKey);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6886 E.removeListener(this.firstCtrl, tabEvt, this._handleShiftTabKey);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6887 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6888
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6889 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6890 * Updates the Calendar/CalendarGroup's pagedate with the currently set month and year if valid.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6891 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6892 * If the currently set month/year is invalid, a validation error will be displayed and the
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6893 * Calendar/CalendarGroup's pagedate will not be updated.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6894 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6895 * @method submit
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6896 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6897 submit : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6898 if (this.validate()) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6899 this.hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6900
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6901 this.setMonth(this._getMonthFromUI());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6902 this.setYear(this._getYearFromUI());
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6903
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6904 var cal = this.cal;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6905
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6906 // Artificial delay, just to help the user see something changed
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6907 var delay = YAHOO.widget.CalendarNavigator.UPDATE_DELAY;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6908 if (delay > 0) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6909 var nav = this;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6910 window.setTimeout(function(){ nav._update(cal); }, delay);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6911 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6912 this._update(cal);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6913 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6914 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6915 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6916
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6917 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6918 * Updates the Calendar rendered state, based on the state of the CalendarNavigator
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6919 * @method _update
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6920 * @param cal The Calendar instance to update
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6921 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6922 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6923 _update : function(cal) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6924 var date = YAHOO.widget.DateMath.getDate(this.getYear() - cal.cfg.getProperty("YEAR_OFFSET"), this.getMonth(), 1);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6925 cal.cfg.setProperty("pagedate", date);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6926 cal.render();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6927 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6928
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6929 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6930 * Hides the navigator and mask, without updating the Calendar/CalendarGroup's state
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6931 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6932 * @method cancel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6933 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6934 cancel : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6935 this.hide();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6936 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6937
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6938 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6939 * Validates the current state of the UI controls
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6940 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6941 * @method validate
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6942 * @return {Boolean} true, if the current UI state contains valid values, false if not
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6943 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6944 validate : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6945 if (this._getYearFromUI() !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6946 this.clearErrors();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6947 return true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6948 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6949 this.setYearError();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6950 this.setError(this.__getCfg("invalidYear", true));
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6951 return false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6952 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6953 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6954
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6955 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6956 * Displays an error message in the Navigator's error panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6957 * @method setError
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6958 * @param {String} msg The error message to display
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6959 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6960 setError : function(msg) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6961 if (this.errorEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6962 this.errorEl.innerHTML = msg;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6963 this._show(this.errorEl, true);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6964 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6965 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6966
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6967 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6968 * Clears the navigator's error message and hides the error panel
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6969 * @method clearError
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6970 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6971 clearError : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6972 if (this.errorEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6973 this.errorEl.innerHTML = "";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6974 this._show(this.errorEl, false);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6975 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6976 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6977
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6978 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6979 * Displays the validation error UI for the year control
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6980 * @method setYearError
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6981 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6982 setYearError : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6983 YAHOO.util.Dom.addClass(this.yearEl, YAHOO.widget.CalendarNavigator.CLASSES.INVALID);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6984 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6985
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6986 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6987 * Removes the validation error UI for the year control
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6988 * @method clearYearError
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6989 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6990 clearYearError : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6991 YAHOO.util.Dom.removeClass(this.yearEl, YAHOO.widget.CalendarNavigator.CLASSES.INVALID);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6992 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6993
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6994 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6995 * Clears all validation and error messages in the UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6996 * @method clearErrors
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6997 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6998 clearErrors : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
6999 this.clearError();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7000 this.clearYearError();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7001 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7002
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7003 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7004 * Sets the initial focus, based on the configured value
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7005 * @method setInitialFocus
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7006 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7007 setInitialFocus : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7008 var el = this.submitEl,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7009 f = this.__getCfg("initialFocus");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7010
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7011 if (f && f.toLowerCase) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7012 f = f.toLowerCase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7013 if (f == "year") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7014 el = this.yearEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7015 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7016 this.yearEl.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7017 } catch (selErr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7018 // Ignore;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7019 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7020 } else if (f == "month") {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7021 el = this.monthEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7022 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7023 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7024
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7025 if (el && YAHOO.lang.isFunction(el.focus)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7026 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7027 el.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7028 } catch (focusErr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7029 // TODO: Fall back if focus fails?
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7030 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7031 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7032 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7033
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7034 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7035 * Removes all renderered HTML elements for the Navigator from
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7036 * the DOM, purges event listeners and clears (nulls) any property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7037 * references to HTML references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7038 * @method erase
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7039 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7040 erase : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7041 if (this.__rendered) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7042 this.purgeListeners();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7043
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7044 // Clear out innerHTML references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7045 this.yearEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7046 this.monthEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7047 this.errorEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7048 this.submitEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7049 this.cancelEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7050 this.firstCtrl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7051 this.lastCtrl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7052 if (this.navEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7053 this.navEl.innerHTML = "";
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7054 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7055
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7056 var p = this.navEl.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7057 if (p) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7058 p.removeChild(this.navEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7059 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7060 this.navEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7061
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7062 var pm = this.maskEl.parentNode;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7063 if (pm) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7064 pm.removeChild(this.maskEl);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7065 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7066 this.maskEl = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7067 this.__rendered = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7068 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7069 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7070
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7071 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7072 * Destroys the Navigator object and any HTML references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7073 * @method destroy
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7074 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7075 destroy : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7076 this.erase();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7077 this._doc = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7078 this.cal = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7079 this.id = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7080 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7081
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7082 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7083 * Protected implementation to handle how UI elements are
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7084 * hidden/shown.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7085 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7086 * @method _show
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7087 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7088 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7089 _show : function(el, bShow) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7090 if (el) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7091 YAHOO.util.Dom.setStyle(el, "display", (bShow) ? "block" : "none");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7092 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7093 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7094
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7095 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7096 * Returns the month value (index), from the month UI element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7097 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7098 * @method _getMonthFromUI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7099 * @return {Number} The month index, or 0 if a UI element for the month
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7100 * is not found
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7101 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7102 _getMonthFromUI : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7103 if (this.monthEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7104 return this.monthEl.selectedIndex;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7105 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7106 return 0; // Default to Jan
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7107 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7108 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7109
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7110 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7111 * Returns the year value, from the Navitator's year UI element
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7112 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7113 * @method _getYearFromUI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7114 * @return {Number} The year value set in the UI, if valid. null is returned if
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7115 * the UI does not contain a valid year value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7116 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7117 _getYearFromUI : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7118 var NAV = YAHOO.widget.CalendarNavigator;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7119
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7120 var yr = null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7121 if (this.yearEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7122 var value = this.yearEl.value;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7123 value = value.replace(NAV.TRIM, "$1");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7124
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7125 if (NAV.YR_PATTERN.test(value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7126 yr = parseInt(value, 10);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7127 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7128 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7129 return yr;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7130 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7131
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7132 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7133 * Updates the Navigator's year UI, based on the year value set on the Navigator object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7134 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7135 * @method _updateYearUI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7136 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7137 _updateYearUI : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7138 if (this.yearEl && this._year !== null) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7139 this.yearEl.value = this._year;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7140 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7141 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7142
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7143 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7144 * Updates the Navigator's month UI, based on the month value set on the Navigator object
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7145 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7146 * @method _updateMonthUI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7147 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7148 _updateMonthUI : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7149 if (this.monthEl) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7150 this.monthEl.selectedIndex = this._month;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7151 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7152 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7153
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7154 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7155 * Sets up references to the first and last focusable element in the Navigator's UI
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7156 * in terms of tab order (Naviagator's firstEl and lastEl properties). The references
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7157 * are used to control modality by looping around from the first to the last control
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7158 * and visa versa for tab/shift-tab navigation.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7159 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7160 * See <a href="#applyKeyListeners">applyKeyListeners</a>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7161 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7162 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7163 * @method _setFirstLastElements
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7164 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7165 _setFirstLastElements : function() {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7166 this.firstCtrl = this.monthEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7167 this.lastCtrl = this.cancelEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7168
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7169 // Special handling for MacOSX.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7170 // - Safari 2.x can't focus on buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7171 // - Gecko can't focus on select boxes or buttons
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7172 if (this.__isMac) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7173 if (YAHOO.env.ua.webkit && YAHOO.env.ua.webkit < 420){
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7174 this.firstCtrl = this.monthEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7175 this.lastCtrl = this.yearEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7176 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7177 if (YAHOO.env.ua.gecko) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7178 this.firstCtrl = this.yearEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7179 this.lastCtrl = this.yearEl;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7180 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7181 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7182 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7183
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7184 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7185 * Default Keyboard event handler to capture Enter
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7186 * on the Navigator's year control (yearEl)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7187 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7188 * @method _handleEnterKey
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7189 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7190 * @param {Event} e The DOM event being handled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7191 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7192 _handleEnterKey : function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7193 var KEYS = YAHOO.util.KeyListener.KEY;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7194
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7195 if (YAHOO.util.Event.getCharCode(e) == KEYS.ENTER) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7196 YAHOO.util.Event.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7197 this.submit();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7198 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7199 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7200
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7201 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7202 * Default Keyboard event handler to capture up/down/pgup/pgdown
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7203 * on the Navigator's year control (yearEl).
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7204 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7205 * @method _handleDirectionKeys
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7206 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7207 * @param {Event} e The DOM event being handled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7208 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7209 _handleDirectionKeys : function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7210 var E = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7211 KEYS = YAHOO.util.KeyListener.KEY,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7212 NAV = YAHOO.widget.CalendarNavigator;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7213
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7214 var value = (this.yearEl.value) ? parseInt(this.yearEl.value, 10) : null;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7215 if (isFinite(value)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7216 var dir = false;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7217 switch(E.getCharCode(e)) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7218 case KEYS.UP:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7219 this.yearEl.value = value + NAV.YR_MINOR_INC;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7220 dir = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7221 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7222 case KEYS.DOWN:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7223 this.yearEl.value = Math.max(value - NAV.YR_MINOR_INC, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7224 dir = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7225 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7226 case KEYS.PAGE_UP:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7227 this.yearEl.value = value + NAV.YR_MAJOR_INC;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7228 dir = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7229 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7230 case KEYS.PAGE_DOWN:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7231 this.yearEl.value = Math.max(value - NAV.YR_MAJOR_INC, 0);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7232 dir = true;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7233 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7234 default:
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7235 break;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7236 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7237 if (dir) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7238 E.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7239 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7240 this.yearEl.select();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7241 } catch(err) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7242 // Ignore
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7243 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7244 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7245 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7246 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7247
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7248 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7249 * Default Keyboard event handler to capture Tab
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7250 * on the last control (lastCtrl) in the Navigator.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7251 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7252 * @method _handleTabKey
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7253 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7254 * @param {Event} e The DOM event being handled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7255 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7256 _handleTabKey : function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7257 var E = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7258 KEYS = YAHOO.util.KeyListener.KEY;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7259
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7260 if (E.getCharCode(e) == KEYS.TAB && !e.shiftKey) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7261 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7262 E.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7263 this.firstCtrl.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7264 } catch (err) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7265 // Ignore - mainly for focus edge cases
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7266 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7267 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7268 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7269
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7270 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7271 * Default Keyboard event handler to capture Shift-Tab
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7272 * on the first control (firstCtrl) in the Navigator.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7273 *
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7274 * @method _handleShiftTabKey
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7275 * @protected
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7276 * @param {Event} e The DOM event being handled
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7277 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7278 _handleShiftTabKey : function(e) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7279 var E = YAHOO.util.Event,
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7280 KEYS = YAHOO.util.KeyListener.KEY;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7281
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7282 if (e.shiftKey && E.getCharCode(e) == KEYS.TAB) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7283 try {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7284 E.preventDefault(e);
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7285 this.lastCtrl.focus();
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7286 } catch (err) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7287 // Ignore - mainly for focus edge cases
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7288 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7289 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7290 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7291
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7292 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7293 * Retrieve Navigator configuration values from
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7294 * the parent Calendar/CalendarGroup's config value.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7295 * <p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7296 * If it has not been set in the user provided configuration, the method will
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7297 * return the default value of the configuration property, as set in DEFAULT_CONFIG
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7298 * </p>
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7299 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7300 * @method __getCfg
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7301 * @param {String} Case sensitive property name.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7302 * @param {Boolean} true, if the property is a string property, false if not.
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7303 * @return The value of the configuration property
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7304 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7305 __getCfg : function(prop, bIsStr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7306 var DEF_CFG = YAHOO.widget.CalendarNavigator.DEFAULT_CONFIG;
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7307 var cfg = this.cal.cfg.getProperty("navigator");
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7308
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7309 if (bIsStr) {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7310 return (cfg !== true && cfg.strings && cfg.strings[prop]) ? cfg.strings[prop] : DEF_CFG.strings[prop];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7311 } else {
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7312 return (cfg !== true && cfg[prop]) ? cfg[prop] : DEF_CFG[prop];
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7313 }
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7314 },
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7315
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7316 /**
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7317 * Private flag, to identify MacOS
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7318 * @private
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7319 * @property __isMac
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7320 */
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7321 __isMac : (navigator.userAgent.toLowerCase().indexOf("macintosh") != -1)
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7322
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7323 };
564e40829f80 initial commit.
Marcin Kuzminski
parents:
diff changeset
7324 YAHOO.register("calendar", YAHOO.widget.Calendar, {version: "2.8.0r4", build: "2449"});