You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/02/24 09:46:18 UTC
[5/9] WICKET-4410 The datepicker components stops popup in Chrome 17.
http://git-wip-us.apache.org/repos/asf/wicket/blob/e4194d49/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/event/event.js
----------------------------------------------------------------------
diff --git a/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/event/event.js b/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/event/event.js
index 65f553a..3b5c86d 100644
--- a/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/event/event.js
+++ b/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/event/event.js
@@ -1,8 +1,8 @@
/*
-Copyright (c) 2010, Yahoo! Inc. All rights reserved.
+Copyright (c) 2011, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
-version: 2.8.2r1
+version: 2.9.0
*/
/**
@@ -12,17 +12,17 @@ version: 2.8.2r1
* @param {String} type The type of event, which is passed to the callback
* when the event fires
* @param {Object} context The context the event will fire from. "this" will
- * refer to this object in the callback. Default value:
+ * refer to this object in the callback. Default value:
* the window object. The listener can override this.
* @param {boolean} silent pass true to prevent the event from writing to
* the debugsystem
* @param {int} signature the signature that the custom event subscriber
- * will receive. YAHOO.util.CustomEvent.LIST or
+ * will receive. YAHOO.util.CustomEvent.LIST or
* YAHOO.util.CustomEvent.FLAT. The default is
* YAHOO.util.CustomEvent.LIST.
- * @param fireOnce {boolean} If configured to fire once, the custom event
- * will only notify subscribers a single time regardless of how many times
- * the event is fired. In addition, new subscribers will be notified
+ * @param fireOnce {boolean} If configured to fire once, the custom event
+ * will only notify subscribers a single time regardless of how many times
+ * the event is fired. In addition, new subscribers will be notified
* immediately if the event has already been fired.
* @namespace YAHOO.util
* @class CustomEvent
@@ -45,7 +45,7 @@ YAHOO.util.CustomEvent = function(type, context, silent, signature, fireOnce) {
this.scope = context || window;
/**
- * By default all custom events are logged in the debug build. Set silent to true
+ * By default all custom events are logged in the debug build. Set silent to true
* to disable debug output for this event.
* @property silent
* @type boolean
@@ -81,9 +81,9 @@ YAHOO.util.CustomEvent = function(type, context, silent, signature, fireOnce) {
/**
* Custom events support two styles of arguments provided to the event
- * subscribers.
+ * subscribers.
* <ul>
- * <li>YAHOO.util.CustomEvent.LIST:
+ * <li>YAHOO.util.CustomEvent.LIST:
* <ul>
* <li>param1: event name</li>
* <li>param2: array of arguments sent to fire</li>
@@ -115,7 +115,7 @@ YAHOO.util.CustomEvent = function(type, context, silent, signature, fireOnce) {
var onsubscribeType = "_YUICEOnSubscribe";
- // Only add subscribe events for events that are not generated by
+ // Only add subscribe events for events that are not generated by
// CustomEvent
if (type !== onsubscribeType) {
@@ -123,21 +123,21 @@ YAHOO.util.CustomEvent = function(type, context, silent, signature, fireOnce) {
* Custom events provide a custom event that fires whenever there is
* a new subscriber to the event. This provides an opportunity to
* handle the case where there is a non-repeating event that has
- * already fired has a new subscriber.
+ * already fired has a new subscriber.
*
* @event subscribeEvent
* @type YAHOO.util.CustomEvent
* @param fn {Function} The function to execute
- * @param obj <Object> An object to be passed along when the event fires.
+ * @param obj <Object> An object to be passed along when the event fires.
* Defaults to the custom event.
- * @param override <boolean|Object> If true, the obj passed in becomes the
- * execution context of the listener. If an object, that object becomes
+ * @param override <boolean|Object> If true, the obj passed in becomes the
+ * execution context of the listener. If an object, that object becomes
* the execution context. Defaults to the custom event.
*/
- this.subscribeEvent =
+ this.subscribeEvent =
new YAHOO.util.CustomEvent(onsubscribeType, this, true);
- }
+ }
/**
@@ -162,7 +162,7 @@ YAHOO.util.CustomEvent.LIST = 0;
/**
* Subscriber listener sigature constant. The FLAT type returns two
- * parameters: the first argument passed to fire and the optional
+ * parameters: the first argument passed to fire and the optional
* custom object
* @property YAHOO.util.CustomEvent.FLAT
* @static
@@ -176,9 +176,12 @@ YAHOO.util.CustomEvent.prototype = {
* Subscribes the caller to this event
* @method subscribe
* @param {Function} fn The function to execute
- * @param {Object} obj An object to be passed along when the event fires.
- * overrideContext <boolean|Object> If true, the obj passed in becomes the execution
- * context of the listener. If an object, that object becomes the execution context.
+ * @param {Object} obj An object to be passed along when the event
+ * fires.
+ * @param {boolean|Object} overrideContext If true, the obj passed in
+ * becomes the execution.
+ * context of the listener. If an object, that object becomes the execution
+ * context.
*/
subscribe: function(fn, obj, overrideContext) {
@@ -231,18 +234,18 @@ throw new Error("Invalid callback for subscriber to '" + this.type + "'");
/**
* Notifies the subscribers. The callback functions will be executed
- * from the context specified when the event was created, and with the
+ * from the context specified when the event was created, and with the
* following parameters:
* <ul>
* <li>The type of event</li>
* <li>All of the arguments fire() was executed with as an array</li>
- * <li>The custom object (if any) that was passed into the subscribe()
+ * <li>The custom object (if any) that was passed into the subscribe()
* method</li>
* </ul>
- * @method fire
- * @param {Object*} arguments an arbitrary set of parameters to pass to
+ * @method fire
+ * @param {Object*} arguments an arbitrary set of parameters to pass to
* the handler.
- * @return {boolean} false if one of the subscribers returned false,
+ * @return {boolean} false if one of the subscribers returned false,
* true otherwise
*/
fire: function() {
@@ -278,7 +281,7 @@ throw new Error("Invalid callback for subscriber to '" + this.type + "'");
for (i=0; i<len; ++i) {
var s = subs[i];
- if (!s) {
+ if (!s || !s.fn) {
rebuild=true;
} else {
@@ -368,7 +371,7 @@ throw new Error("Invalid callback for subscriber to '" + this.type + "'");
* @method toString
*/
toString: function() {
- return "CustomEvent: " + "'" + this.type + "', " +
+ return "CustomEvent: " + "'" + this.type + "', " +
"context: " + this.scope;
}
@@ -406,7 +409,7 @@ YAHOO.util.Subscriber = function(fn, obj, overrideContext) {
* The default execution context for the event listener is defined when the
* event is created (usually the object which contains the event).
* By setting overrideContext to true, the execution context becomes the custom
- * object passed in by the subscriber. If overrideContext is an object, that
+ * object passed in by the subscriber. If overrideContext is an object, that
* object becomes the context.
* @property overrideContext
* @type boolean|object
@@ -441,7 +444,7 @@ YAHOO.util.Subscriber.prototype.getScope = function(defaultScope) {
* @method contains
* @param {Function} fn the function to execute
* @param {Object} obj an object to be passed along when the event fires
- * @return {boolean} true if the supplied arguments match this
+ * @return {boolean} true if the supplied arguments match this
* subscriber's signature.
*/
YAHOO.util.Subscriber.prototype.contains = function(fn, obj) {
@@ -456,7 +459,7 @@ YAHOO.util.Subscriber.prototype.contains = function(fn, obj) {
* @method toString
*/
YAHOO.util.Subscriber.prototype.toString = function() {
- return "Subscriber { obj: " + this.obj +
+ return "Subscriber { obj: " + this.obj +
", overrideContext: " + (this.overrideContext || "no") + " }";
};
@@ -540,7 +543,7 @@ if (!YAHOO.util.Event) {
* @private
*/
counter = 0,
-
+
/**
* Normalized keycodes for webkit/safari
* @property webkitKeymap
@@ -560,12 +563,12 @@ if (!YAHOO.util.Event) {
// this case, even though the shiftKey modifier is set)
},
- isIE = YAHOO.env.ua.ie,
+ isIE = YAHOO.env.ua.ie,
// String constants used by the addFocusListener and removeFocusListener methods
-
- FOCUSIN = "focusin",
- FOCUSOUT = "focusout";
+
+ FOCUSIN = "focusin",
+ FOCUSOUT = "focusout";
return {
@@ -628,7 +631,7 @@ if (!YAHOO.util.Event) {
WFN: 3,
/**
- * Object passed in by the user that will be returned as a
+ * Object passed in by the user that will be returned as a
* parameter to the callback, int constant. Specific to
* unload listeners
* @property OBJ
@@ -673,7 +676,7 @@ if (!YAHOO.util.Event) {
* @static
* @final
*/
- CAPTURE: 7,
+ CAPTURE: 7,
/**
* addListener/removeListener can throw errors in unexpected scenarios.
@@ -693,7 +696,7 @@ if (!YAHOO.util.Event) {
* @deprecated use YAHOO.env.ua.webkit
*/
isSafari: YAHOO.env.ua.webkit,
-
+
/**
* webkit version
* @property webkit
@@ -703,9 +706,9 @@ if (!YAHOO.util.Event) {
* @deprecated use YAHOO.env.ua.webkit
*/
webkit: YAHOO.env.ua.webkit,
-
+
/**
- * IE detection
+ * IE detection
* @property isIE
* @private
* @static
@@ -736,10 +739,10 @@ if (!YAHOO.util.Event) {
* @static
* @private
*/
- _specialTypes: {
- focusin: (isIE ? "focusin" : "focus"),
- focusout: (isIE ? "focusout" : "blur")
- },
+ _specialTypes: {
+ focusin: (isIE ? "focusin" : "focus"),
+ focusout: (isIE ? "focusout" : "blur")
+ },
/**
@@ -805,10 +808,10 @@ if (!YAHOO.util.Event) {
var a = (YAHOO.lang.isString(id)) ? [id] : id;
for (var i=0; i<a.length; i=i+1) {
- onAvailStack.push({id: a[i],
- fn: fn,
- obj: obj,
- overrideContext: overrideContext,
+ onAvailStack.push({id: a[i],
+ fn: fn,
+ obj: obj,
+ overrideContext: overrideContext,
checkReady: checkContent });
}
@@ -847,12 +850,12 @@ if (!YAHOO.util.Event) {
* fired. @todo the DOMContentReady event does not fire when the
* script is dynamically injected into the page. This means the
* DOMReady custom event will never fire in FireFox or Opera when the
- * library is injected. It _will_ fire in Safari, and the IE
+ * library is injected. It _will_ fire in Safari, and the IE
* implementation would allow for us to fire it if the defered script
* is not available. We want this to behave the same in all browsers.
- * Is there a way to identify when the script has been injected
- * instead of included inline? Is there a way to know whether the
- * window onload event has fired without having had a listener attached
+ * Is there a way to identify when the script has been injected
+ * instead of included inline? Is there a way to know whether the
+ * window onload event has fired without having had a listener attached
* to it when it did so?
*
* <p>The callback is a CustomEvent, so the signature is:</p>
@@ -884,12 +887,12 @@ if (!YAHOO.util.Event) {
*
* @method _addListener
*
- * @param {String|HTMLElement|Array|NodeList} el An id, an element
- * reference, or a collection of ids and/or elements to assign the
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * reference, or a collection of ids and/or elements to assign the
* listener to.
* @param {String} sType The type of event to append
* @param {Function} fn The method the event invokes
- * @param {Object} obj An arbitrary object that will be
+ * @param {Object} obj An arbitrary object that will be
* passed as a parameter to the handler
* @param {Boolean|object} overrideContext If true, the obj passed in becomes
* the execution context of the listener. If an
@@ -897,7 +900,7 @@ if (!YAHOO.util.Event) {
* context.
* @param {boolen} capture capture or bubble phase
* @return {Boolean} True if the action was successful or defered,
- * false if one or more of the elements
+ * false if one or more of the elements
* could not have the listener attached,
* or if the operation throws an exception.
* @private
@@ -913,22 +916,22 @@ if (!YAHOO.util.Event) {
if ( this._isValidCollection(el)) {
var ok = true;
for (var i=0,len=el.length; i<len; ++i) {
- ok = this.on(el[i],
- sType,
- fn,
- obj,
+ ok = this.on(el[i],
+ sType,
+ fn,
+ obj,
overrideContext) && ok;
}
return ok;
} else if (YAHOO.lang.isString(el)) {
var oEl = this.getEl(el);
- // If the el argument is a string, we assume it is
+ // If the el argument is a string, we assume it is
// actually the id of the element. If the page is loaded
- // we convert el to the actual element, otherwise we
+ // we convert el to the actual element, otherwise we
// defer attaching the event until onload event fires
- // check to see if we need to delay hooking up the event
+ // check to see if we need to delay hooking up the event
// until after the page loads.
if (oEl) {
el = oEl;
@@ -942,14 +945,14 @@ if (!YAHOO.util.Event) {
}
}
- // Element should be an html element or an array if we get
+ // Element should be an html element or an array if we get
// here.
if (!el) {
return false;
}
- // we need to make sure we fire registered unload events
- // prior to automatically unhooking them. So we hang on to
+ // we need to make sure we fire registered unload events
+ // prior to automatically unhooking them. So we hang on to
// these instead of attaching them to the window and fire the
// handles explicitly during our one unload event.
if ("unload" == sType && obj !== this) {
@@ -974,7 +977,7 @@ if (!YAHOO.util.Event) {
// wrap the function so we can return the obj object when
// the event fires;
var wrappedFn = function(e) {
- return fn.call(context, YAHOO.util.Event.getEvent(e, el),
+ return fn.call(context, YAHOO.util.Event.getEvent(e, el),
obj);
};
@@ -994,24 +997,24 @@ if (!YAHOO.util.Event) {
}
return true;
-
+
},
/**
- * Checks to see if the type requested is a special type
- * (as defined by the _specialTypes hash), and (if so) returns
- * the special type name.
+ * Checks to see if the type requested is a special type
+ * (as defined by the _specialTypes hash), and (if so) returns
+ * the special type name.
*
* @method _getType
*
* @param {String} sType The type to look up
* @private
*/
- _getType: function (type) {
-
- return this._specialTypes[type] || type;
-
- },
+ _getType: function (type) {
+
+ return this._specialTypes[type] || type;
+
+ },
/**
@@ -1019,129 +1022,129 @@ if (!YAHOO.util.Event) {
*
* @method addListener
*
- * @param {String|HTMLElement|Array|NodeList} el An id, an element
- * reference, or a collection of ids and/or elements to assign the
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * reference, or a collection of ids and/or elements to assign the
* listener to.
* @param {String} sType The type of event to append
* @param {Function} fn The method the event invokes
- * @param {Object} obj An arbitrary object that will be
+ * @param {Object} obj An arbitrary object that will be
* passed as a parameter to the handler
* @param {Boolean|object} overrideContext If true, the obj passed in becomes
* the execution context of the listener. If an
* object, this object becomes the execution
* context.
* @return {Boolean} True if the action was successful or defered,
- * false if one or more of the elements
+ * false if one or more of the elements
* could not have the listener attached,
* or if the operation throws an exception.
* @static
*/
addListener: function (el, sType, fn, obj, overrideContext) {
- var capture = ((sType == FOCUSIN || sType == FOCUSOUT) && !YAHOO.env.ua.ie) ? true : false;
+ var capture = ((sType == FOCUSIN || sType == FOCUSOUT) && !YAHOO.env.ua.ie) ? true : false;
return this._addListener(el, this._getType(sType), fn, obj, overrideContext, capture);
- },
+ },
/**
- * Attaches a focusin event listener to the specified element for
- * the purpose of listening for the focus event on the element's
+ * Attaches a focusin event listener to the specified element for
+ * the purpose of listening for the focus event on the element's
* descendants.
* @method addFocusListener
*
- * @param {String|HTMLElement|Array|NodeList} el An id, an element
- * reference, or a collection of ids and/or elements to assign the
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * reference, or a collection of ids and/or elements to assign the
* listener to.
* @param {Function} fn The method the event invokes
- * @param {Object} obj An arbitrary object that will be
+ * @param {Object} obj An arbitrary object that will be
* passed as a parameter to the handler
* @param {Boolean|object} overrideContext If true, the obj passed in becomes
* the execution context of the listener. If an
* object, this object becomes the execution
* context.
* @return {Boolean} True if the action was successful or defered,
- * false if one or more of the elements
+ * false if one or more of the elements
* could not have the listener attached,
* or if the operation throws an exception.
* @static
- * @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
+ * @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
*/
addFocusListener: function (el, fn, obj, overrideContext) {
return this.on(el, FOCUSIN, fn, obj, overrideContext);
- },
+ },
/**
- * Removes a focusin event listener to the specified element for
- * the purpose of listening for the focus event on the element's
+ * Removes a focusin event listener to the specified element for
+ * the purpose of listening for the focus event on the element's
* descendants.
*
* @method removeFocusListener
*
- * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
* reference, or a collection of ids and/or elements to remove
* the listener from.
* @param {Function} fn the method the event invokes. If fn is
- * undefined, then all event handlers for the type of event are
+ * undefined, then all event handlers for the type of event are
* removed.
- * @return {boolean} true if the unbind was successful, false
+ * @return {boolean} true if the unbind was successful, false
* otherwise.
* @static
- * @deprecated use YAHOO.util.Event.removeListener and specify "focusin" as the event type.
+ * @deprecated use YAHOO.util.Event.removeListener and specify "focusin" as the event type.
*/
- removeFocusListener: function (el, fn) {
+ removeFocusListener: function (el, fn) {
return this.removeListener(el, FOCUSIN, fn);
},
/**
- * Attaches a focusout event listener to the specified element for
- * the purpose of listening for the blur event on the element's
- * descendants.
+ * Attaches a focusout event listener to the specified element for
+ * the purpose of listening for the blur event on the element's
+ * descendants.
*
* @method addBlurListener
*
- * @param {String|HTMLElement|Array|NodeList} el An id, an element
- * reference, or a collection of ids and/or elements to assign the
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * reference, or a collection of ids and/or elements to assign the
* listener to.
* @param {Function} fn The method the event invokes
- * @param {Object} obj An arbitrary object that will be
+ * @param {Object} obj An arbitrary object that will be
* passed as a parameter to the handler
* @param {Boolean|object} overrideContext If true, the obj passed in becomes
* the execution context of the listener. If an
* object, this object becomes the execution
* context.
* @return {Boolean} True if the action was successful or defered,
- * false if one or more of the elements
+ * false if one or more of the elements
* could not have the listener attached,
* or if the operation throws an exception.
* @static
- * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
+ * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
*/
addBlurListener: function (el, fn, obj, overrideContext) {
return this.on(el, FOCUSOUT, fn, obj, overrideContext);
- },
+ },
/**
- * Removes a focusout event listener to the specified element for
- * the purpose of listening for the blur event on the element's
- * descendants.
+ * Removes a focusout event listener to the specified element for
+ * the purpose of listening for the blur event on the element's
+ * descendants.
*
* @method removeBlurListener
*
- * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
* reference, or a collection of ids and/or elements to remove
* the listener from.
* @param {Function} fn the method the event invokes. If fn is
- * undefined, then all event handlers for the type of event are
+ * undefined, then all event handlers for the type of event are
* removed.
- * @return {boolean} true if the unbind was successful, false
+ * @return {boolean} true if the unbind was successful, false
* otherwise.
* @static
- * @deprecated use YAHOO.util.Event.removeListener and specify "focusout" as the event type.
+ * @deprecated use YAHOO.util.Event.removeListener and specify "focusout" as the event type.
*/
- removeBlurListener: function (el, fn) {
+ removeBlurListener: function (el, fn) {
return this.removeListener(el, FOCUSOUT, fn);
},
@@ -1150,21 +1153,21 @@ if (!YAHOO.util.Event) {
*
* @method removeListener
*
- * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
* reference, or a collection of ids and/or elements to remove
* the listener from.
* @param {String} sType the type of event to remove.
* @param {Function} fn the method the event invokes. If fn is
- * undefined, then all event handlers for the type of event are
+ * undefined, then all event handlers for the type of event are
* removed.
- * @return {boolean} true if the unbind was successful, false
+ * @return {boolean} true if the unbind was successful, false
* otherwise.
* @static
*/
removeListener: function(el, sType, fn) {
var i, len, li;
- sType = this._getType(sType);
+ sType = this._getType(sType);
// The el argument can be a string
if (typeof el == "string") {
@@ -1187,9 +1190,9 @@ if (!YAHOO.util.Event) {
for (i=unloadListeners.length-1; i>-1; i--) {
li = unloadListeners[i];
- if (li &&
- li[0] == el &&
- li[1] == sType &&
+ if (li &&
+ li[0] == el &&
+ li[1] == sType &&
li[2] == fn) {
unloadListeners.splice(i, 1);
// unloadListeners[i]=null;
@@ -1206,7 +1209,7 @@ if (!YAHOO.util.Event) {
// the method signature because it was tempting users to
// try and take advantage of it, which is not possible.
var index = arguments[3];
-
+
if ("undefined" === typeof index) {
index = this._getCacheIndex(listeners, el, sType, fn);
}
@@ -1220,7 +1223,7 @@ if (!YAHOO.util.Event) {
}
- var bCapture = cacheItem[this.CAPTURE] === true ? true : false;
+ var bCapture = cacheItem[this.CAPTURE] === true ? true : false;
try {
this._simpleRemove(el, sType, cacheItem[this.WFN], bCapture);
@@ -1246,7 +1249,7 @@ if (!YAHOO.util.Event) {
* @method getTarget
* @param {Event} ev the event
* @param {boolean} resolveTextNode when set to true the target's
- * parent will be returned if the target is a
+ * parent will be returned if the target is a
* text node. @deprecated, the text node is
* now resolved automatically
* @return {HTMLElement} the event's target
@@ -1261,6 +1264,15 @@ if (!YAHOO.util.Event) {
* In some cases, some browsers will return a text node inside
* the actual element that was targeted. This normalizes the
* return value for getTarget and getRelatedTarget.
+ *
+ * If accessing a property of the node throws an error, this is
+ * probably the anonymous div wrapper Gecko adds inside text
+ * nodes. This likely will only occur when attempting to access
+ * the relatedTarget. In this case, we now return null because
+ * the anonymous div is completely useless and we do not know
+ * what the related target was because we can't even get to
+ * the element's parent node.
+ *
* @method resolveTextNode
* @param {HTMLElement} node node to resolve
* @return {HTMLElement} the normized node
@@ -1271,7 +1283,9 @@ if (!YAHOO.util.Event) {
if (n && 3 == n.nodeType) {
return n.parentNode;
}
- } catch(e) { }
+ } catch(e) {
+ return null;
+ }
return n;
},
@@ -1329,7 +1343,7 @@ if (!YAHOO.util.Event) {
},
/**
- * Returns the event's related target
+ * Returns the event's related target
* @method getRelatedTarget
* @param {Event} ev the event
* @return {HTMLElement} the event's relatedTarget
@@ -1361,7 +1375,7 @@ if (!YAHOO.util.Event) {
var t = new Date().getTime();
try {
ev.time = t;
- } catch(ex) {
+ } catch(ex) {
this.lastError = ex;
return t;
}
@@ -1408,7 +1422,7 @@ if (!YAHOO.util.Event) {
ev.returnValue = false;
}
},
-
+
/**
* Finds the event in the window object, the caller's arguments, or
* in the arguments of another method in the callstack. This is
@@ -1418,7 +1432,7 @@ if (!YAHOO.util.Event) {
* @method getEvent
* @param {Event} e the event parameter from the handler
* @param {HTMLElement} boundEl the element the listener is attached to
- * @return {Event} the event
+ * @return {Event} the event
* @static
*/
getEvent: function(e, boundEl) {
@@ -1465,9 +1479,9 @@ if (!YAHOO.util.Event) {
_getCacheIndex: function(a, el, sType, fn) {
for (var i=0, l=a.length; i<l; i=i+1) {
var li = a[i];
- if ( li &&
- li[this.FN] == fn &&
- li[this.EL] == el &&
+ if ( li &&
+ li[this.FN] == fn &&
+ li[this.EL] == el &&
li[this.TYPE] == sType ) {
return i;
}
@@ -1477,7 +1491,7 @@ if (!YAHOO.util.Event) {
},
/**
- * Generates an unique ID for the element if it does not already
+ * Generates an unique ID for the element if it does not already
* have one.
* @method generateId
* @param el the element to create the id for
@@ -1499,9 +1513,9 @@ if (!YAHOO.util.Event) {
/**
* We want to be able to use getElementsByTagName as a collection
- * to attach a group of events to. Unfortunately, different
+ * to attach a group of events to. Unfortunately, different
* browsers return different types of collections. This function
- * tests to determine if the object is array-like. It will also
+ * tests to determine if the object is array-like. It will also
* fail if the object is an array, but is empty.
* @method _isValidCollection
* @param o the object to test
@@ -1534,7 +1548,7 @@ if (!YAHOO.util.Event) {
elCache: {},
/**
- * We cache elements bound by id because when the unload event
+ * We cache elements bound by id because when the unload event
* fires, we can no longer use document.getElementById
* @method getEl
* @static
@@ -1605,8 +1619,8 @@ if (!YAHOO.util.Event) {
},
/**
- * Polling function that runs before the onload event fires,
- * attempting to attach to DOM Nodes as soon as they are
+ * Polling function that runs before the onload event fires,
+ * attempting to attach to DOM Nodes as soon as they are
* available
* @method _tryPreloadAttach
* @static
@@ -1620,7 +1634,7 @@ if (!YAHOO.util.Event) {
// clearInterval(this._interval);
this._interval.cancel();
this._interval = null;
- }
+ }
return;
}
@@ -1641,9 +1655,9 @@ if (!YAHOO.util.Event) {
this.locked = true;
- // keep trying until after the page is loaded. We need to
- // check the page load state prior to trying to bind the
- // elements so that we can be certain all elements have been
+ // keep trying until after the page is loaded. We need to
+ // check the page load state prior to trying to bind the
+ // elements so that we can be certain all elements have been
// tested appropriately
var tryAgain = !loadComplete;
if (!tryAgain) {
@@ -1687,7 +1701,7 @@ if (!YAHOO.util.Event) {
}
}
}
-
+
// make sure onContentReady fires after onAvailable
for (i=0, len=ready.length; i<len; i=i+1) {
item = ready[i];
@@ -1751,7 +1765,7 @@ if (!YAHOO.util.Event) {
* Returns all listeners attached to the given element via addListener.
* Optionally, you can specify a specific type of event to return.
* @method getListeners
- * @param el {HTMLElement|string} the element or element id to inspect
+ * @param el {HTMLElement|string} the element or element id to inspect
* @param sType {string} optional type of listener to return. If
* left out, all listeners will be returned
* @return {Object} the listener. Contains the following fields:
@@ -1762,7 +1776,7 @@ if (!YAHOO.util.Event) {
* scope: (boolean) the derived context based on the adjust parameter
* index: (int) its position in the Event util listener cache
* @static
- */
+ */
getListeners: function(el, sType) {
var results=[], searchLists;
if (!sType) {
@@ -1770,7 +1784,7 @@ if (!YAHOO.util.Event) {
} else if (sType === "unload") {
searchLists = [unloadListeners];
} else {
- sType = this._getType(sType);
+ sType = this._getType(sType);
searchLists = [listeners];
}
@@ -1781,7 +1795,7 @@ if (!YAHOO.util.Event) {
if (searchList) {
for (var i=0,len=searchList.length; i<len ; ++i) {
var l = searchList[i];
- if ( l && l[this.EL] === oEl &&
+ if ( l && l[this.EL] === oEl &&
(!sType || sType === l[this.TYPE]) ) {
results.push({
type: l[this.TYPE],
@@ -1800,7 +1814,7 @@ if (!YAHOO.util.Event) {
},
/**
- * Removes all listeners registered by pe.event. Called
+ * Removes all listeners registered by pe.event. Called
* automatically during the unload event.
* @method _unload
* @static
@@ -1815,15 +1829,17 @@ if (!YAHOO.util.Event) {
for (i=0, len=unloadListeners.length; i<len; ++i) {
l = ul[i];
if (l) {
- context = window;
- if (l[EU.ADJ_SCOPE]) {
- if (l[EU.ADJ_SCOPE] === true) {
- context = l[EU.UNLOAD_OBJ];
- } else {
- context = l[EU.ADJ_SCOPE];
+ try {
+ context = window;
+ if (l[EU.ADJ_SCOPE]) {
+ if (l[EU.ADJ_SCOPE] === true) {
+ context = l[EU.UNLOAD_OBJ];
+ } else {
+ context = l[EU.ADJ_SCOPE];
+ }
}
- }
- l[EU.FN].call(context, EU.getEvent(e, l[EU.EL]), l[EU.UNLOAD_OBJ] );
+ l[EU.FN].call(context, EU.getEvent(e, l[EU.EL]), l[EU.UNLOAD_OBJ] );
+ } catch(e1) {}
ul[i] = null;
}
}
@@ -1841,13 +1857,18 @@ if (!YAHOO.util.Event) {
for (j=listeners.length-1; j>-1; j--) {
l = listeners[j];
if (l) {
- EU.removeListener(l[EU.EL], l[EU.TYPE], l[EU.FN], j);
- }
+ try {
+ EU.removeListener(l[EU.EL], l[EU.TYPE], l[EU.FN], j);
+ } catch(e2) {}
+ }
}
l=null;
}
- EU._simpleRemove(window, "unload", EU._unload);
+ try {
+ EU._simpleRemove(window, "unload", EU._unload);
+ EU._simpleRemove(window, "load", EU._load);
+ } catch(e3) {}
},
@@ -1872,7 +1893,7 @@ if (!YAHOO.util.Event) {
},
/**
- * Returns the scrollTop and scrollLeft. Used to calculate the
+ * Returns the scrollTop and scrollLeft. Used to calculate the
* pageX and pageY in Internet Explorer
* @method _getScroll
* @static
@@ -1888,7 +1909,7 @@ if (!YAHOO.util.Event) {
return [0, 0];
}
},
-
+
/**
* Used by old versions of CustomEvent, restored for backwards
* compatibility
@@ -1956,9 +1977,25 @@ if (!YAHOO.util.Event) {
var EU = YAHOO.util.Event;
/**
- * YAHOO.util.Event.on is an alias for addListener
+ * Appends an event handler. This is an alias for <code>addListener</code>
+ *
* @method on
- * @see addListener
+ *
+ * @param {String|HTMLElement|Array|NodeList} el An id, an element
+ * reference, or a collection of ids and/or elements to assign the
+ * listener to.
+ * @param {String} sType The type of event to append
+ * @param {Function} fn The method the event invokes
+ * @param {Object} obj An arbitrary object that will be
+ * passed as a parameter to the handler
+ * @param {Boolean|object} overrideContext If true, the obj passed in becomes
+ * the execution context of the listener. If an
+ * object, this object becomes the execution
+ * context.
+ * @return {Boolean} True if the action was successful or defered,
+ * false if one or more of the elements
+ * could not have the listener attached,
+ * or if the operation throws an exception.
* @static
*/
EU.on = EU.addListener;
@@ -1968,7 +2005,7 @@ if (!YAHOO.util.Event) {
* @method onFocus
* @see addFocusListener
* @static
- * @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
+ * @deprecated use YAHOO.util.Event.on and specify "focusin" as the event type.
*/
EU.onFocus = EU.addFocusListener;
@@ -1977,8 +2014,8 @@ if (!YAHOO.util.Event) {
* @method onBlur
* @see addBlurListener
* @static
- * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
- */
+ * @deprecated use YAHOO.util.Event.on and specify "focusout" as the event type.
+ */
EU.onBlur = EU.addBlurListener;
/*! DOMReady: based on work by: Dean Edwards/John Resig/Matthias Miller/Diego Perini */
@@ -1997,13 +2034,13 @@ if (!YAHOO.util.Event) {
};
} else {
- // Process onAvailable/onContentReady items when the
+ // Process onAvailable/onContentReady items when the
// DOM is ready.
YAHOO.util.Event.onDOMReady(
YAHOO.util.Event._tryPreloadAttach,
YAHOO.util.Event, true);
-
- var n = document.createElement('p');
+
+ var n = document.createElement('p');
EU._dri = setInterval(function() {
try {
@@ -2013,9 +2050,9 @@ if (!YAHOO.util.Event) {
EU._dri = null;
EU._ready();
n = null;
- } catch (ex) {
+ } catch (ex) {
}
- }, EU.POLL_INTERVAL);
+ }, EU.POLL_INTERVAL);
}
// The document's readyState in Safari currently will
@@ -2029,7 +2066,7 @@ if (!YAHOO.util.Event) {
EU._dri = null;
EU._ready();
}
- }, EU.POLL_INTERVAL);
+ }, EU.POLL_INTERVAL);
// FireFox and Opera: These browsers provide a event for this
// moment. The latest WebKit releases now support this event.
@@ -2048,8 +2085,8 @@ if (!YAHOO.util.Event) {
}
/**
- * EventProvider is designed to be used with YAHOO.augment to wrap
- * CustomEvents in an interface that allows events to be subscribed to
+ * EventProvider is designed to be used with YAHOO.augment to wrap
+ * CustomEvents in an interface that allows events to be subscribed to
* and fired by name. This makes it possible for implementing code to
* subscribe to an event that either has not been created yet, or will
* not be created at all.
@@ -2075,16 +2112,16 @@ YAHOO.util.EventProvider.prototype = {
* @private
*/
__yui_subscribers: null,
-
+
/**
* Subscribe to a CustomEvent by event type
*
* @method subscribe
* @param p_type {string} the type, or name of the event
* @param p_fn {function} the function to exectute when the event fires
- * @param p_obj {Object} An object to be passed along when the event
+ * @param p_obj {Object} An object to be passed along when the event
* fires
- * @param overrideContext {boolean} If true, the obj passed in becomes the
+ * @param overrideContext {boolean} If true, the obj passed in becomes the
* execution scope of the listener
*/
subscribe: function(p_type, p_fn, p_obj, overrideContext) {
@@ -2140,7 +2177,7 @@ YAHOO.util.EventProvider.prototype = {
return false;
},
-
+
/**
* Removes all listeners from the specified event. If the event type
* is not specified, all listeners from all hosted custom events will
@@ -2155,7 +2192,7 @@ YAHOO.util.EventProvider.prototype = {
/**
* Creates a new custom event of the specified type. If a custom event
* by that name already exists, it will not be re-created. In either
- * case the custom event is returned.
+ * case the custom event is returned.
*
* @method createEvent
*
@@ -2223,19 +2260,19 @@ YAHOO.util.EventProvider.prototype = {
/**
* Fire a custom event by name. The callback functions will be executed
- * from the scope specified when the event was created, and with the
+ * from the scope specified when the event was created, and with the
* following parameters:
* <ul>
* <li>The first argument fire() was executed with</li>
- * <li>The custom object (if any) that was passed into the subscribe()
+ * <li>The custom object (if any) that was passed into the subscribe()
* method</li>
* </ul>
* @method fireEvent
* @param p_type {string} the type, or name of the event
- * @param arguments {Object*} an arbitrary set of parameters to pass to
+ * @param arguments {Object*} an arbitrary set of parameters to pass to
* the handler.
* @return {boolean} the return value from CustomEvent.fire
- *
+ *
*/
fireEvent: function(p_type) {
@@ -2280,19 +2317,19 @@ YAHOO.util.EventProvider.prototype = {
* @namespace YAHOO.util
* @class KeyListener
* @constructor
-* @param {HTMLElement} attachTo The element or element ID to which the key
+* @param {HTMLElement} attachTo The element or element ID to which the key
* event should be attached
* @param {String} attachTo The element or element ID to which the key
* event should be attached
-* @param {Object} keyData The object literal representing the key(s)
-* to detect. Possible attributes are
-* shift(boolean), alt(boolean), ctrl(boolean)
-* and keys(either an int or an array of ints
+* @param {Object} keyData The object literal representing the key(s)
+* to detect. Possible attributes are
+* shift(boolean), alt(boolean), ctrl(boolean)
+* and keys(either an int or an array of ints
* representing keycodes).
-* @param {Function} handler The CustomEvent handler to fire when the
+* @param {Function} handler The CustomEvent handler to fire when the
* key event is detected
-* @param {Object} handler An object literal representing the handler.
-* @param {String} event Optional. The event (keydown or keyup) to
+* @param {Object} handler An object literal representing the handler.
+* @param {String} event Optional. The event (keydown or keyup) to
* listen for. Defaults automatically to keydown.
*
* @knownissue the "keypress" event is completely broken in Safari 2.x and below.
@@ -2308,8 +2345,8 @@ YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
if (!attachTo) {
} else if (!keyData) {
} else if (!handler) {
- }
-
+ }
+
if (!event) {
event = YAHOO.util.KeyListener.KEYDOWN;
}
@@ -2318,31 +2355,31 @@ YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
* The CustomEvent fired internally when a key is pressed
* @event keyEvent
* @private
- * @param {Object} keyData The object literal representing the key(s) to
- * detect. Possible attributes are shift(boolean),
- * alt(boolean), ctrl(boolean) and keys(either an
+ * @param {Object} keyData The object literal representing the key(s) to
+ * detect. Possible attributes are shift(boolean),
+ * alt(boolean), ctrl(boolean) and keys(either an
* int or an array of ints representing keycodes).
*/
var keyEvent = new YAHOO.util.CustomEvent("keyPressed");
-
+
/**
- * The CustomEvent fired when the KeyListener is enabled via the enable()
+ * The CustomEvent fired when the KeyListener is enabled via the enable()
* function
* @event enabledEvent
- * @param {Object} keyData The object literal representing the key(s) to
- * detect. Possible attributes are shift(boolean),
- * alt(boolean), ctrl(boolean) and keys(either an
+ * @param {Object} keyData The object literal representing the key(s) to
+ * detect. Possible attributes are shift(boolean),
+ * alt(boolean), ctrl(boolean) and keys(either an
* int or an array of ints representing keycodes).
*/
this.enabledEvent = new YAHOO.util.CustomEvent("enabled");
/**
- * The CustomEvent fired when the KeyListener is disabled via the
+ * The CustomEvent fired when the KeyListener is disabled via the
* disable() function
* @event disabledEvent
- * @param {Object} keyData The object literal representing the key(s) to
- * detect. Possible attributes are shift(boolean),
- * alt(boolean), ctrl(boolean) and keys(either an
+ * @param {Object} keyData The object literal representing the key(s) to
+ * detect. Possible attributes are shift(boolean),
+ * alt(boolean), ctrl(boolean) and keys(either an
* int or an array of ints representing keycodes).
*/
this.disabledEvent = new YAHOO.util.CustomEvent("disabled");
@@ -2365,10 +2402,10 @@ YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
* @private
*/
function handleKeyPress(e, obj) {
- if (! keyData.shift) {
- keyData.shift = false;
+ if (! keyData.shift) {
+ keyData.shift = false;
}
- if (! keyData.alt) {
+ if (! keyData.alt) {
keyData.alt = false;
}
if (! keyData.ctrl) {
@@ -2376,10 +2413,10 @@ YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
}
// check held down modifying keys first
- if (e.shiftKey == keyData.shift &&
+ if (e.shiftKey == keyData.shift &&
e.altKey == keyData.alt &&
e.ctrlKey == keyData.ctrl) { // if we pass this, all modifiers match
-
+
var dataItem, keys = keyData.keys, key;
if (YAHOO.lang.isArray(keys)) {
@@ -2402,7 +2439,7 @@ YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
}
/**
- * Enables the KeyListener by attaching the DOM event listeners to the
+ * Enables the KeyListener by attaching the DOM event listeners to the
* target DOM element
* @method enable
*/
@@ -2420,7 +2457,7 @@ YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
};
/**
- * Disables the KeyListener by removing the DOM event listeners from the
+ * Disables the KeyListener by removing the DOM event listeners from the
* target DOM element
* @method disable
*/
@@ -2436,9 +2473,9 @@ YAHOO.util.KeyListener = function(attachTo, keyData, handler, event) {
* Returns a String representation of the object.
* @method toString
* @return {String} The string representation of the KeyListener
- */
+ */
this.toString = function() {
- return "KeyListener [" + keyData.keys + "] " + attachTo.tagName +
+ return "KeyListener [" + keyData.keys + "] " + attachTo.tagName +
(attachTo.id ? "[" + attachTo.id + "]" : "");
};
@@ -2485,7 +2522,7 @@ KeyListener.KEY = {
META : 224,
NUM_LOCK : 144,
PAGE_DOWN : 34,
- PAGE_UP : 33,
+ PAGE_UP : 33,
PAUSE : 19,
PRINTSCREEN : 44,
RIGHT : 39,
@@ -2497,4 +2534,4 @@ KeyListener.KEY = {
};
})();
-YAHOO.register("event", YAHOO.util.Event, {version: "2.8.2r1", build: "7"});
+YAHOO.register("event", YAHOO.util.Event, {version: "2.9.0", build: "2800"});
http://git-wip-us.apache.org/repos/asf/wicket/blob/e4194d49/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/yahoo/yahoo-min.js
----------------------------------------------------------------------
diff --git a/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/yahoo/yahoo-min.js b/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/yahoo/yahoo-min.js
index eb944a6..4f18140 100644
--- a/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/yahoo/yahoo-min.js
+++ b/wicket-datetime/src/main/java/org/apache/wicket/extensions/yui/yahoo/yahoo-min.js
@@ -1,7 +1,8 @@
/*
-Copyright (c) 2010, Yahoo! Inc. All rights reserved.
+Copyright (c) 2011, Yahoo! Inc. All rights reserved.
Code licensed under the BSD License:
http://developer.yahoo.com/yui/license.html
-version: 2.8.2r1
+version: 2.9.0
*/
-if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var A=arguments,E=null,C,B,D;for(C=0;C<A.length;C=C+1){D=(""+A[C]).split(".");E=YAHOO;for(B=(D[0]=="YAHOO")?1:0;B<D.length;B=B+1){E[D[B]]=E[D[B]]||{};E=E[D[B]];}}return E;};YAHOO.log=function(D,A,C){var B=YAHOO.widget.Logger;if(B&&B.log){return B.log(D,A,C);}else{return false;}};YAHOO.register=function(A,E,D){var I=YAHOO.env.modules,B,H,G,F,C;if(!I[A]){I[A]={versions:[],builds:[]};}B=I[A];H=D.version;G=D.build;F=YAHOO.env.listeners;B.name=A;B.version=H;B.build=G;B.versions.push(H);B.builds.push(G);B.mainClass=E;for(C=0;C<F.length;C=C+1){F[C](B);}if(E){E.VERSION=H;E.BUILD=G;}else{YAHOO.log("mainClass is undefined for module "+A,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(A){return YAHOO.env.modules[A]||null;};YAHOO.env.ua=function(){var D=function(H){var I=0;return parseFloat(H.replace(/\./g,function(){return(I++==1)?"":".";}));},G=navigator,F={ie:0,opera
:0,gecko:0,webkit:0,mobile:null,air:0,caja:G.cajaVersion,secure:false,os:null},C=navigator&&navigator.userAgent,E=window&&window.location,B=E&&E.href,A;F.secure=B&&(B.toLowerCase().indexOf("https")===0);if(C){if((/windows|win32/i).test(C)){F.os="windows";}else{if((/macintosh/i).test(C)){F.os="macintosh";}}if((/KHTML/).test(C)){F.webkit=1;}A=C.match(/AppleWebKit\/([^\s]*)/);if(A&&A[1]){F.webkit=D(A[1]);if(/ Mobile\//.test(C)){F.mobile="Apple";}else{A=C.match(/NokiaN[^\/]*/);if(A){F.mobile=A[0];}}A=C.match(/AdobeAIR\/([^\s]*)/);if(A){F.air=A[0];}}if(!F.webkit){A=C.match(/Opera[\s\/]([^\s]*)/);if(A&&A[1]){F.opera=D(A[1]);A=C.match(/Opera Mini[^;]*/);if(A){F.mobile=A[0];}}else{A=C.match(/MSIE\s([^;]*)/);if(A&&A[1]){F.ie=D(A[1]);}else{A=C.match(/Gecko\/([^\s]*)/);if(A){F.gecko=1;A=C.match(/rv:([^\s\)]*)/);if(A&&A[1]){F.gecko=D(A[1]);}}}}}}return F;}();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var B=YAHOO_config.listener,A=YAHOO.e
nv.listeners,D=true,C;if(B){for(C=0;C<A.length;C++){if(A[C]==B){D=false;break;}}if(D){A.push(B);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var B=YAHOO.lang,A=Object.prototype,H="[object Array]",C="[object Function]",G="[object Object]",E=[],F=["toString","valueOf"],D={isArray:function(I){return A.toString.apply(I)===H;},isBoolean:function(I){return typeof I==="boolean";},isFunction:function(I){return(typeof I==="function")||A.toString.apply(I)===C;},isNull:function(I){return I===null;},isNumber:function(I){return typeof I==="number"&&isFinite(I);},isObject:function(I){return(I&&(typeof I==="object"||B.isFunction(I)))||false;},isString:function(I){return typeof I==="string";},isUndefined:function(I){return typeof I==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(K,J){var I,M,L;for(I=0;I<F.length;I=I+1){M=F[I];L=J[M];if(B.isFunction(L)&&L!=A[M]){K[M]=L;}}}:function(){},extend:function(L,M,K){if(!M||!L){throw new Error("extend failed, please check that "+"all dependenc
ies are included.");}var J=function(){},I;J.prototype=M.prototype;L.prototype=new J();L.prototype.constructor=L;L.superclass=M.prototype;if(M.prototype.constructor==A.constructor){M.prototype.constructor=M;}if(K){for(I in K){if(B.hasOwnProperty(K,I)){L.prototype[I]=K[I];}}B._IEEnumFix(L.prototype,K);}},augmentObject:function(M,L){if(!L||!M){throw new Error("Absorb failed, verify dependencies.");}var I=arguments,K,N,J=I[2];if(J&&J!==true){for(K=2;K<I.length;K=K+1){M[I[K]]=L[I[K]];}}else{for(N in L){if(J||!(N in M)){M[N]=L[N];}}B._IEEnumFix(M,L);}},augmentProto:function(L,K){if(!K||!L){throw new Error("Augment failed, verify dependencies.");}var I=[L.prototype,K.prototype],J;for(J=2;J<arguments.length;J=J+1){I.push(arguments[J]);}B.augmentObject.apply(this,I);},dump:function(I,N){var K,M,P=[],Q="{...}",J="f(){...}",O=", ",L=" => ";if(!B.isObject(I)){return I+"";}else{if(I instanceof Date||("nodeType" in I&&"tagName" in I)){return I;}else{if(B.isFunction(I)){return J;}}}N=(B.is
Number(N))?N:3;if(B.isArray(I)){P.push("[");for(K=0,M=I.length;K<M;K=K+1){if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}if(P.length>1){P.pop();}P.push("]");}else{P.push("{");for(K in I){if(B.hasOwnProperty(I,K)){P.push(K+L);if(B.isObject(I[K])){P.push((N>0)?B.dump(I[K],N-1):Q);}else{P.push(I[K]);}P.push(O);}}if(P.length>1){P.pop();}P.push("}");}return P.join("");},substitute:function(Y,J,R){var N,M,L,U,V,X,T=[],K,O="dump",S=" ",I="{",W="}",Q,P;for(;;){N=Y.lastIndexOf(I);if(N<0){break;}M=Y.indexOf(W,N);if(N+1>=M){break;}K=Y.substring(N+1,M);U=K;X=null;L=U.indexOf(S);if(L>-1){X=U.substring(L+1);U=U.substring(0,L);}V=J[U];if(R){V=R(U,V,X);}if(B.isObject(V)){if(B.isArray(V)){V=B.dump(V,parseInt(X,10));}else{X=X||"";Q=X.indexOf(O);if(Q>-1){X=X.substring(4);}P=V.toString();if(P===G||Q>-1){V=B.dump(V,parseInt(X,10));}else{V=P;}}}else{if(!B.isString(V)&&!B.isNumber(V)){V="~-"+T.length+"-~";T[T.length]=K;}}Y=Y.substring(0,N)+V+Y.substring(M+1);}
for(N=T.length-1;N>=0;N=N-1){Y=Y.replace(new RegExp("~-"+N+"-~"),"{"+T[N]+"}","g");}return Y;},trim:function(I){try{return I.replace(/^\s+|\s+$/g,"");}catch(J){return I;}},merge:function(){var L={},J=arguments,I=J.length,K;for(K=0;K<I;K=K+1){B.augmentObject(L,J[K],true);}return L;},later:function(P,J,Q,L,M){P=P||0;J=J||{};var K=Q,O=L,N,I;if(B.isString(Q)){K=J[Q];}if(!K){throw new TypeError("method undefined");}if(O&&!B.isArray(O)){O=[L];}N=function(){K.apply(J,O||E);};I=(M)?setInterval(N,P):setTimeout(N,P);return{interval:M,cancel:function(){if(this.interval){clearInterval(I);}else{clearTimeout(I);}}};},isValue:function(I){return(B.isObject(I)||B.isString(I)||B.isNumber(I)||B.isBoolean(I));}};B.hasOwnProperty=(A.hasOwnProperty)?function(I,J){return I&&I.hasOwnProperty(J);}:function(I,J){return !B.isUndefined(I[J])&&I.constructor.prototype[J]!==I[J];};D.augmentObject(B,D,true);YAHOO.util.Lang=B;B.augment=B.augmentProto;YAHOO.augment=B.augmentProto;YAHOO.extend=B.extend;})();Y
AHOO.register("yahoo",YAHOO,{version:"2.8.2r1",build:"7"});
+if(typeof YAHOO=="undefined"||!YAHOO){var YAHOO={};}YAHOO.namespace=function(){var b=arguments,g=null,e,c,f;for(e=0;e<b.length;e=e+1){f=(""+b[e]).split(".");g=YAHOO;for(c=(f[0]=="YAHOO")?1:0;c<f.length;c=c+1){g[f[c]]=g[f[c]]||{};g=g[f[c]];}}return g;};YAHOO.log=function(d,a,c){var b=YAHOO.widget.Logger;if(b&&b.log){return b.log(d,a,c);}else{return false;}};YAHOO.register=function(a,f,e){var k=YAHOO.env.modules,c,j,h,g,d;if(!k[a]){k[a]={versions:[],builds:[]};}c=k[a];j=e.version;h=e.build;g=YAHOO.env.listeners;c.name=a;c.version=j;c.build=h;c.versions.push(j);c.builds.push(h);c.mainClass=f;for(d=0;d<g.length;d=d+1){g[d](c);}if(f){f.VERSION=j;f.BUILD=h;}else{YAHOO.log("mainClass is undefined for module "+a,"warn");}};YAHOO.env=YAHOO.env||{modules:[],listeners:[]};YAHOO.env.getVersion=function(a){return YAHOO.env.modules[a]||null;};YAHOO.env.parseUA=function(d){var e=function(i){var j=0;return parseFloat(i.replace(/\./g,function(){return(j++==1)?"":".";}));},h=navigator,g={ie:0
,opera:0,gecko:0,webkit:0,chrome:0,mobile:null,air:0,ipad:0,iphone:0,ipod:0,ios:null,android:0,webos:0,caja:h&&h.cajaVersion,secure:false,os:null},c=d||(navigator&&navigator.userAgent),f=window&&window.location,b=f&&f.href,a;g.secure=b&&(b.toLowerCase().indexOf("https")===0);if(c){if((/windows|win32/i).test(c)){g.os="windows";}else{if((/macintosh/i).test(c)){g.os="macintosh";}else{if((/rhino/i).test(c)){g.os="rhino";}}}if((/KHTML/).test(c)){g.webkit=1;}a=c.match(/AppleWebKit\/([^\s]*)/);if(a&&a[1]){g.webkit=e(a[1]);if(/ Mobile\//.test(c)){g.mobile="Apple";a=c.match(/OS ([^\s]*)/);if(a&&a[1]){a=e(a[1].replace("_","."));}g.ios=a;g.ipad=g.ipod=g.iphone=0;a=c.match(/iPad|iPod|iPhone/);if(a&&a[0]){g[a[0].toLowerCase()]=g.ios;}}else{a=c.match(/NokiaN[^\/]*|Android \d\.\d|webOS\/\d\.\d/);if(a){g.mobile=a[0];}if(/webOS/.test(c)){g.mobile="WebOS";a=c.match(/webOS\/([^\s]*);/);if(a&&a[1]){g.webos=e(a[1]);}}if(/ Android/.test(c)){g.mobile="Android";a=c.match(/Android ([^\s]*);/);if(a&&
a[1]){g.android=e(a[1]);}}}a=c.match(/Chrome\/([^\s]*)/);if(a&&a[1]){g.chrome=e(a[1]);}else{a=c.match(/AdobeAIR\/([^\s]*)/);if(a){g.air=a[0];}}}if(!g.webkit){a=c.match(/Opera[\s\/]([^\s]*)/);if(a&&a[1]){g.opera=e(a[1]);a=c.match(/Version\/([^\s]*)/);if(a&&a[1]){g.opera=e(a[1]);}a=c.match(/Opera Mini[^;]*/);if(a){g.mobile=a[0];}}else{a=c.match(/MSIE\s([^;]*)/);if(a&&a[1]){g.ie=e(a[1]);}else{a=c.match(/Gecko\/([^\s]*)/);if(a){g.gecko=1;a=c.match(/rv:([^\s\)]*)/);if(a&&a[1]){g.gecko=e(a[1]);}}}}}}return g;};YAHOO.env.ua=YAHOO.env.parseUA();(function(){YAHOO.namespace("util","widget","example");if("undefined"!==typeof YAHOO_config){var b=YAHOO_config.listener,a=YAHOO.env.listeners,d=true,c;if(b){for(c=0;c<a.length;c++){if(a[c]==b){d=false;break;}}if(d){a.push(b);}}}})();YAHOO.lang=YAHOO.lang||{};(function(){var f=YAHOO.lang,a=Object.prototype,c="[object Array]",h="[object Function]",i="[object Object]",b=[],g={"&":"&","<":"<",">":">",'"':""","'":"'","/":"
F;","`":"`"},d=["toString","valueOf"],e={isArray:function(j){return a.toString.apply(j)===c;},isBoolean:function(j){return typeof j==="boolean";},isFunction:function(j){return(typeof j==="function")||a.toString.apply(j)===h;},isNull:function(j){return j===null;},isNumber:function(j){return typeof j==="number"&&isFinite(j);},isObject:function(j){return(j&&(typeof j==="object"||f.isFunction(j)))||false;},isString:function(j){return typeof j==="string";},isUndefined:function(j){return typeof j==="undefined";},_IEEnumFix:(YAHOO.env.ua.ie)?function(l,k){var j,n,m;for(j=0;j<d.length;j=j+1){n=d[j];m=k[n];if(f.isFunction(m)&&m!=a[n]){l[n]=m;}}}:function(){},escapeHTML:function(j){return j.replace(/[&<>"'\/`]/g,function(k){return g[k];});},extend:function(m,n,l){if(!n||!m){throw new Error("extend failed, please check that "+"all dependencies are included.");}var k=function(){},j;k.prototype=n.prototype;m.prototype=new k();m.prototype.constructor=m;m.superclass=n.prototype;if(n.p
rototype.constructor==a.constructor){n.prototype.constructor=n;}if(l){for(j in l){if(f.hasOwnProperty(l,j)){m.prototype[j]=l[j];}}f._IEEnumFix(m.prototype,l);}},augmentObject:function(n,m){if(!m||!n){throw new Error("Absorb failed, verify dependencies.");}var j=arguments,l,o,k=j[2];if(k&&k!==true){for(l=2;l<j.length;l=l+1){n[j[l]]=m[j[l]];}}else{for(o in m){if(k||!(o in n)){n[o]=m[o];}}f._IEEnumFix(n,m);}return n;},augmentProto:function(m,l){if(!l||!m){throw new Error("Augment failed, verify dependencies.");}var j=[m.prototype,l.prototype],k;for(k=2;k<arguments.length;k=k+1){j.push(arguments[k]);}f.augmentObject.apply(this,j);return m;},dump:function(j,p){var l,n,r=[],t="{...}",k="f(){...}",q=", ",m=" => ";if(!f.isObject(j)){return j+"";}else{if(j instanceof Date||("nodeType" in j&&"tagName" in j)){return j;}else{if(f.isFunction(j)){return k;}}}p=(f.isNumber(p))?p:3;if(f.isArray(j)){r.push("[");for(l=0,n=j.length;l<n;l=l+1){if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):
t);}else{r.push(j[l]);}r.push(q);}if(r.length>1){r.pop();}r.push("]");}else{r.push("{");for(l in j){if(f.hasOwnProperty(j,l)){r.push(l+m);if(f.isObject(j[l])){r.push((p>0)?f.dump(j[l],p-1):t);}else{r.push(j[l]);}r.push(q);}}if(r.length>1){r.pop();}r.push("}");}return r.join("");},substitute:function(x,y,E,l){var D,C,B,G,t,u,F=[],p,z=x.length,A="dump",r=" ",q="{",m="}",n,w;for(;;){D=x.lastIndexOf(q,z);if(D<0){break;}C=x.indexOf(m,D);if(D+1>C){break;}p=x.substring(D+1,C);G=p;u=null;B=G.indexOf(r);if(B>-1){u=G.substring(B+1);G=G.substring(0,B);}t=y[G];if(E){t=E(G,t,u);}if(f.isObject(t)){if(f.isArray(t)){t=f.dump(t,parseInt(u,10));}else{u=u||"";n=u.indexOf(A);if(n>-1){u=u.substring(4);}w=t.toString();if(w===i||n>-1){t=f.dump(t,parseInt(u,10));}else{t=w;}}}else{if(!f.isString(t)&&!f.isNumber(t)){t="~-"+F.length+"-~";F[F.length]=p;}}x=x.substring(0,D)+t+x.substring(C+1);if(l===false){z=D-1;}}for(D=F.length-1;D>=0;D=D-1){x=x.replace(new RegExp("~-"+D+"-~"),"{"+F[D]+"}","g");}return
x;},trim:function(j){try{return j.replace(/^\s+|\s+$/g,"");}catch(k){return j;
+}},merge:function(){var n={},k=arguments,j=k.length,m;for(m=0;m<j;m=m+1){f.augmentObject(n,k[m],true);}return n;},later:function(t,k,u,n,p){t=t||0;k=k||{};var l=u,s=n,q,j;if(f.isString(u)){l=k[u];}if(!l){throw new TypeError("method undefined");}if(!f.isUndefined(n)&&!f.isArray(s)){s=[n];}q=function(){l.apply(k,s||b);};j=(p)?setInterval(q,t):setTimeout(q,t);return{interval:p,cancel:function(){if(this.interval){clearInterval(j);}else{clearTimeout(j);}}};},isValue:function(j){return(f.isObject(j)||f.isString(j)||f.isNumber(j)||f.isBoolean(j));}};f.hasOwnProperty=(a.hasOwnProperty)?function(j,k){return j&&j.hasOwnProperty&&j.hasOwnProperty(k);}:function(j,k){return !f.isUndefined(j[k])&&j.constructor.prototype[k]!==j[k];};e.augmentObject(f,e,true);YAHOO.util.Lang=f;f.augment=f.augmentProto;YAHOO.augment=f.augmentProto;YAHOO.extend=f.extend;})();YAHOO.register("yahoo",YAHOO,{version:"2.9.0",build:"2800"});
\ No newline at end of file