/* automatically generated by JSCoverage - do not edit */
try {
  if (typeof top === 'object' && top !== null && typeof top.opener === 'object' && top.opener !== null) {
    // this is a browser window that was opened from another window

    if (! top.opener._$jscoverage) {
      top.opener._$jscoverage = {};
    }
  }
}
catch (e) {}

try {
  if (typeof top === 'object' && top !== null) {
    // this is a browser window

    try {
      if (typeof top.opener === 'object' && top.opener !== null && top.opener._$jscoverage) {
        top._$jscoverage = top.opener._$jscoverage;
      }
    }
    catch (e) {}

    if (! top._$jscoverage) {
      top._$jscoverage = {};
    }
  }
}
catch (e) {}

try {
  if (typeof top === 'object' && top !== null && top._$jscoverage) {
    this._$jscoverage = top._$jscoverage;
  }
}
catch (e) {}
if (! this._$jscoverage) {
  this._$jscoverage = {};
}
if (! _$jscoverage['build/yahoo/yahoo.js']) {
  _$jscoverage['build/yahoo/yahoo.js'] = [];
  _$jscoverage['build/yahoo/yahoo.js'][64] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][72] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][105] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][106] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][107] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][108] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][109] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][112] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][113] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][114] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][118] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][134] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][135] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][136] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][137] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][139] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][157] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][158] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][160] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][161] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][167] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][168] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][169] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][170] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][172] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][173] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][174] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][175] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][176] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][177] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][180] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][181] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][184] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][185] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][186] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][188] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][198] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][236] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][237] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][252] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][254] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][255] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][256] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][257] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][375] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][377] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][379] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][380] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][381] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][382] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][386] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][387] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][391] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][392] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][393] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][396] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][397] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][399] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][400] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][401] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][405] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][406] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][407] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][412] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][414] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][415] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][416] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][417] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][418] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][419] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][422] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][423] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][424] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][426] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][427] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][428] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][429] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][430] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][431] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][439] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][450] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][451] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][453] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][454] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][455] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][459] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][460] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][461] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][462] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][466] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][467] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][476] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][478] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][481] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][501] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][511] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][532] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][542] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][552] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][563] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][573] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][583] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][598] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][599] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][601] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][602] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][604] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][605] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][625] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][626] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][629] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][630] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][631] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][632] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][633] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][634] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][635] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][638] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][639] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][640] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][641] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][645] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][672] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][673] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][675] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][676] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][677] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][678] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][681] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][682] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][683] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][687] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][706] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][707] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][710] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][711] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][712] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][714] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][730] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][737] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][738] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][739] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][740] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][741] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][742] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][746] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][749] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][750] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][751] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][752] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][753] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][755] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][757] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][759] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][760] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][762] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][765] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][766] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][767] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][768] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][769] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][770] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][772] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][774] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][777] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][778] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][780] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][783] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][810] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][815] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][816] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][817] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][818] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][820] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][821] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][822] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][826] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][827] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][828] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][829] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][830] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][831] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][832] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][836] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][839] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][840] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][843] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][844] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][845] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][847] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][850] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][851] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][852] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][855] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][859] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][860] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][862] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][865] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][867] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][868] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][873] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][879] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][880] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][883] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][896] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][897] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][899] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][913] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][914] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][915] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][917] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][942] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][943] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][944] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][946] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][947] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][950] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][951] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][954] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][955] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][958] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][959] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][962] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][964] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][967] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][968] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][970] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][987] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1013] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1015] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1017] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1022] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1028] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1046] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1060] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1072] = 0;
  _$jscoverage['build/yahoo/yahoo.js'][1075] = 0;
}
_$jscoverage['build/yahoo/yahoo.js'].source = ["<span class=\"c\">/*</span>","<span class=\"c\">Copyright (c) 2009, Yahoo! Inc. All rights reserved.</span>","<span class=\"c\">Code licensed under the BSD License:</span>","<span class=\"c\">http://developer.yahoo.net/yui/license.txt</span>","<span class=\"c\">version: 2.8.0r4</span>","<span class=\"c\">*/</span>","<span class=\"c\">/**</span>","<span class=\"c\"> * The YAHOO object is the single global object used by YUI Library.  It</span>","<span class=\"c\"> * contains utility function for setting up namespaces, inheritance, and</span>","<span class=\"c\"> * logging.  YAHOO.util, YAHOO.widget, and YAHOO.example are namespaces</span>","<span class=\"c\"> * created automatically for and used by the library.</span>","<span class=\"c\"> * @module yahoo</span>","<span class=\"c\"> * @title  YAHOO Global</span>","<span class=\"c\"> */</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * YAHOO_config is not included as part of the library.  Instead it is an </span>","<span class=\"c\"> * object that can be defined by the implementer immediately before </span>","<span class=\"c\"> * including the YUI library.  The properties included in this object</span>","<span class=\"c\"> * will be used to configure global properties needed as soon as the </span>","<span class=\"c\"> * library begins to load.</span>","<span class=\"c\"> * @class YAHOO_config</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * A reference to a function that will be executed every time a YAHOO module</span>","<span class=\"c\"> * is loaded.  As parameter, this function will receive the version</span>","<span class=\"c\"> * information for the module. See &lt;a href=\"YAHOO.env.html#getVersion\"&gt;</span>","<span class=\"c\"> * YAHOO.env.getVersion&lt;/a&gt; for the description of the version data structure.</span>","<span class=\"c\"> * @property listener</span>","<span class=\"c\"> * @type Function</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @default undefined</span>","<span class=\"c\"> */</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Set to true if the library will be dynamically loaded after window.onload.</span>","<span class=\"c\"> * Defaults to false </span>","<span class=\"c\"> * @property injecting</span>","<span class=\"c\"> * @type boolean</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @default undefined</span>","<span class=\"c\"> */</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Instructs the yuiloader component to dynamically load yui components and</span>","<span class=\"c\"> * their dependencies.  See the yuiloader documentation for more information</span>","<span class=\"c\"> * about dynamic loading</span>","<span class=\"c\"> * @property load</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @default undefined</span>","<span class=\"c\"> * @see yuiloader</span>","<span class=\"c\"> */</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Forces the use of the supplied locale where applicable in the library</span>","<span class=\"c\"> * @property locale</span>","<span class=\"c\"> * @type string</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @default undefined</span>","<span class=\"c\"> */</span>","","<span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> YAHOO <span class=\"k\">==</span> <span class=\"s\">\"undefined\"</span> <span class=\"k\">||</span> <span class=\"k\">!</span>YAHOO<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"c\">/**</span>","<span class=\"c\">     * The YAHOO global namespace object.  If YAHOO is already defined, the</span>","<span class=\"c\">     * existing YAHOO object will not be overwritten so that defined</span>","<span class=\"c\">     * namespaces are preserved.</span>","<span class=\"c\">     * @class YAHOO</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     */</span>","    <span class=\"k\">var</span> YAHOO <span class=\"k\">=</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","<span class=\"k\">}</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Returns the namespace specified and creates it if it doesn't exist</span>","<span class=\"c\"> * &lt;pre&gt;</span>","<span class=\"c\"> * YAHOO.namespace(\"property.package\");</span>","<span class=\"c\"> * YAHOO.namespace(\"YAHOO.property.package\");</span>","<span class=\"c\"> * &lt;/pre&gt;</span>","<span class=\"c\"> * Either of the above would create YAHOO.property, then</span>","<span class=\"c\"> * YAHOO.property.package</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * Be careful when naming packages. Reserved words may work in some browsers</span>","<span class=\"c\"> * and not others. For instance, the following will fail in Safari:</span>","<span class=\"c\"> * &lt;pre&gt;</span>","<span class=\"c\"> * YAHOO.namespace(\"really.long.nested.namespace\");</span>","<span class=\"c\"> * &lt;/pre&gt;</span>","<span class=\"c\"> * This fails because \"long\" is a future reserved word in ECMAScript</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * For implementation code that uses YUI, do not create your components</span>","<span class=\"c\"> * in the namespaces defined by YUI (</span>","<span class=\"c\"> * &lt;code&gt;YAHOO.util&lt;/code&gt;, </span>","<span class=\"c\"> * &lt;code&gt;YAHOO.widget&lt;/code&gt;, </span>","<span class=\"c\"> * &lt;code&gt;YAHOO.lang&lt;/code&gt;, </span>","<span class=\"c\"> * &lt;code&gt;YAHOO.tool&lt;/code&gt;, </span>","<span class=\"c\"> * &lt;code&gt;YAHOO.example&lt;/code&gt;, </span>","<span class=\"c\"> * &lt;code&gt;YAHOO.env&lt;/code&gt;) -- create your own namespace (e.g., 'companyname').</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @method namespace</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @param  {String*} arguments 1-n namespaces to create </span>","<span class=\"c\"> * @return {Object}  A reference to the last namespace object created</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>namespace <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","    <span class=\"k\">var</span> a<span class=\"k\">=</span>arguments<span class=\"k\">,</span> o<span class=\"k\">=</span><span class=\"k\">null</span><span class=\"k\">,</span> i<span class=\"k\">,</span> j<span class=\"k\">,</span> d<span class=\"k\">;</span>","    <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>a<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","        d<span class=\"k\">=(</span><span class=\"s\">\"\"</span><span class=\"k\">+</span>a<span class=\"k\">[</span>i<span class=\"k\">]).</span>split<span class=\"k\">(</span><span class=\"s\">\".\"</span><span class=\"k\">);</span>","        o<span class=\"k\">=</span>YAHOO<span class=\"k\">;</span>","","        <span class=\"c\">// YAHOO is implied, so it is ignored if it is included</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span>j<span class=\"k\">=(</span>d<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">]</span> <span class=\"k\">==</span> <span class=\"s\">\"YAHOO\"</span><span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"s\">1</span> <span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">;</span> j<span class=\"k\">&lt;</span>d<span class=\"k\">.</span>length<span class=\"k\">;</span> j<span class=\"k\">=</span>j<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","            o<span class=\"k\">[</span>d<span class=\"k\">[</span>j<span class=\"k\">]]=</span>o<span class=\"k\">[</span>d<span class=\"k\">[</span>j<span class=\"k\">]]</span> <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","            o<span class=\"k\">=</span>o<span class=\"k\">[</span>d<span class=\"k\">[</span>j<span class=\"k\">]];</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span>","","    <span class=\"k\">return</span> o<span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Uses YAHOO.widget.Logger to output a log message, if the widget is</span>","<span class=\"c\"> * available.</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @method log</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @param  {String}  msg  The message to log.</span>","<span class=\"c\"> * @param  {String}  cat  The log category for the message.  Default</span>","<span class=\"c\"> *                        categories are \"info\", \"warn\", \"error\", time\".</span>","<span class=\"c\"> *                        Custom categories can be used as well. (opt)</span>","<span class=\"c\"> * @param  {String}  src  The source of the the message (opt)</span>","<span class=\"c\"> * @return {Boolean}      True if the log operation was successful.</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>log <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>msg<span class=\"k\">,</span> cat<span class=\"k\">,</span> src<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">var</span> l<span class=\"k\">=</span>YAHOO<span class=\"k\">.</span>widget<span class=\"k\">.</span>Logger<span class=\"k\">;</span>","    <span class=\"k\">if</span><span class=\"k\">(</span>l <span class=\"k\">&amp;&amp;</span> l<span class=\"k\">.</span>log<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> l<span class=\"k\">.</span>log<span class=\"k\">(</span>msg<span class=\"k\">,</span> cat<span class=\"k\">,</span> src<span class=\"k\">);</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">false</span><span class=\"k\">;</span>","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Registers a module with the YAHOO object</span>","<span class=\"c\"> * @method register</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @param {String}   name    the name of the module (event, slider, etc)</span>","<span class=\"c\"> * @param {Function} mainClass a reference to class in the module.  This</span>","<span class=\"c\"> *                             class will be tagged with the version info</span>","<span class=\"c\"> *                             so that it will be possible to identify the</span>","<span class=\"c\"> *                             version that is in use when multiple versions</span>","<span class=\"c\"> *                             have loaded</span>","<span class=\"c\"> * @param {Object}   data      metadata object for the module.  Currently it</span>","<span class=\"c\"> *                             is expected to contain a \"version\" property</span>","<span class=\"c\"> *                             and a \"build\" property at minimum.</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>register <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>name<span class=\"k\">,</span> mainClass<span class=\"k\">,</span> data<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">var</span> mods <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>modules<span class=\"k\">,</span> m<span class=\"k\">,</span> v<span class=\"k\">,</span> b<span class=\"k\">,</span> ls<span class=\"k\">,</span> i<span class=\"k\">;</span>","","    <span class=\"k\">if</span> <span class=\"k\">(!</span>mods<span class=\"k\">[</span>name<span class=\"k\">])</span> <span class=\"k\">{</span>","        mods<span class=\"k\">[</span>name<span class=\"k\">]</span> <span class=\"k\">=</span> <span class=\"k\">{</span> ","            versions<span class=\"k\">:[],</span> ","            builds<span class=\"k\">:[]</span> ","        <span class=\"k\">}</span><span class=\"k\">;</span>","    <span class=\"k\">}</span>","","    m  <span class=\"k\">=</span> mods<span class=\"k\">[</span>name<span class=\"k\">];</span>","    v  <span class=\"k\">=</span> data<span class=\"k\">.</span>version<span class=\"k\">;</span>","    b  <span class=\"k\">=</span> data<span class=\"k\">.</span>build<span class=\"k\">;</span>","    ls <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>listeners<span class=\"k\">;</span>","","    m<span class=\"k\">.</span>name <span class=\"k\">=</span> name<span class=\"k\">;</span>","    m<span class=\"k\">.</span>version <span class=\"k\">=</span> v<span class=\"k\">;</span>","    m<span class=\"k\">.</span>build <span class=\"k\">=</span> b<span class=\"k\">;</span>","    m<span class=\"k\">.</span>versions<span class=\"k\">.</span>push<span class=\"k\">(</span>v<span class=\"k\">);</span>","    m<span class=\"k\">.</span>builds<span class=\"k\">.</span>push<span class=\"k\">(</span>b<span class=\"k\">);</span>","    m<span class=\"k\">.</span>mainClass <span class=\"k\">=</span> mainClass<span class=\"k\">;</span>","","    <span class=\"c\">// fire the module load listeners</span>","    <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span>i<span class=\"k\">&lt;</span>ls<span class=\"k\">.</span>length<span class=\"k\">;</span>i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","        ls<span class=\"k\">[</span>i<span class=\"k\">](</span>m<span class=\"k\">);</span>","    <span class=\"k\">}</span>","    <span class=\"c\">// label the main class</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span>mainClass<span class=\"k\">)</span> <span class=\"k\">{</span>","        mainClass<span class=\"k\">.</span>VERSION <span class=\"k\">=</span> v<span class=\"k\">;</span>","        mainClass<span class=\"k\">.</span>BUILD <span class=\"k\">=</span> b<span class=\"k\">;</span>","    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","        YAHOO<span class=\"k\">.</span>log<span class=\"k\">(</span><span class=\"s\">\"mainClass is undefined for module \"</span> <span class=\"k\">+</span> name<span class=\"k\">,</span> <span class=\"s\">\"warn\"</span><span class=\"k\">);</span>","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * YAHOO.env is used to keep track of what is known about the YUI library and</span>","<span class=\"c\"> * the browsing environment</span>","<span class=\"c\"> * @class YAHOO.env</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>env <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>env <span class=\"k\">||</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Keeps the version info for all YUI modules that have reported themselves</span>","<span class=\"c\">     * @property modules</span>","<span class=\"c\">     * @type Object[]</span>","<span class=\"c\">     */</span>","    modules<span class=\"k\">:</span> <span class=\"k\">[],</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * List of functions that should be executed every time a YUI module</span>","<span class=\"c\">     * reports itself.</span>","<span class=\"c\">     * @property listeners</span>","<span class=\"c\">     * @type Function[]</span>","<span class=\"c\">     */</span>","    listeners<span class=\"k\">:</span> <span class=\"k\">[]</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Returns the version data for the specified module:</span>","<span class=\"c\"> *      &lt;dl&gt;</span>","<span class=\"c\"> *      &lt;dt&gt;name:&lt;/dt&gt;      &lt;dd&gt;The name of the module&lt;/dd&gt;</span>","<span class=\"c\"> *      &lt;dt&gt;version:&lt;/dt&gt;   &lt;dd&gt;The version in use&lt;/dd&gt;</span>","<span class=\"c\"> *      &lt;dt&gt;build:&lt;/dt&gt;     &lt;dd&gt;The build number in use&lt;/dd&gt;</span>","<span class=\"c\"> *      &lt;dt&gt;versions:&lt;/dt&gt;  &lt;dd&gt;All versions that were registered&lt;/dd&gt;</span>","<span class=\"c\"> *      &lt;dt&gt;builds:&lt;/dt&gt;    &lt;dd&gt;All builds that were registered.&lt;/dd&gt;</span>","<span class=\"c\"> *      &lt;dt&gt;mainClass:&lt;/dt&gt; &lt;dd&gt;An object that was was stamped with the</span>","<span class=\"c\"> *                 current version and build. If </span>","<span class=\"c\"> *                 mainClass.VERSION != version or mainClass.BUILD != build,</span>","<span class=\"c\"> *                 multiple versions of pieces of the library have been</span>","<span class=\"c\"> *                 loaded, potentially causing issues.&lt;/dd&gt;</span>","<span class=\"c\"> *       &lt;/dl&gt;</span>","<span class=\"c\"> *</span>","<span class=\"c\"> * @method getVersion</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @param {String}  name the name of the module (event, slider, etc)</span>","<span class=\"c\"> * @return {Object} The version info</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>getVersion <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>name<span class=\"k\">)</span> <span class=\"k\">{</span>","    <span class=\"k\">return</span> YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>modules<span class=\"k\">[</span>name<span class=\"k\">]</span> <span class=\"k\">||</span> <span class=\"k\">null</span><span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Do not fork for a browser if it can be avoided.  Use feature detection when</span>","<span class=\"c\"> * you can.  Use the user agent as a last resort.  YAHOO.env.ua stores a version</span>","<span class=\"c\"> * number for the browser engine, 0 otherwise.  This value may or may not map</span>","<span class=\"c\"> * to the version number of the browser using the engine.  The value is </span>","<span class=\"c\"> * presented as a float so that it can easily be used for boolean evaluation </span>","<span class=\"c\"> * as well as for looking for a particular range of versions.  Because of this, </span>","<span class=\"c\"> * some of the granularity of the version info may be lost (e.g., Gecko 1.8.0.9 </span>","<span class=\"c\"> * reports 1.8).</span>","<span class=\"c\"> * @class YAHOO.env.ua</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","","        <span class=\"k\">var</span> numberfy <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">(</span>s<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> c <span class=\"k\">=</span> <span class=\"s\">0</span><span class=\"k\">;</span>","            <span class=\"k\">return</span> parseFloat<span class=\"k\">(</span>s<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"s\">/\\./g</span><span class=\"k\">,</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">return</span> <span class=\"k\">(</span>c<span class=\"k\">++</span> <span class=\"k\">==</span> <span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"s\">''</span> <span class=\"k\">:</span> <span class=\"s\">'.'</span><span class=\"k\">;</span>","            <span class=\"k\">}</span><span class=\"k\">));</span>","        <span class=\"k\">}</span><span class=\"k\">,</span>","","        nav <span class=\"k\">=</span> navigator<span class=\"k\">,</span>","","        o <span class=\"k\">=</span> <span class=\"k\">{</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Internet Explorer version number or 0.  Example: 6</span>","<span class=\"c\">         * @property ie</span>","<span class=\"c\">         * @type float</span>","<span class=\"c\">         */</span>","        ie<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Opera version number or 0.  Example: 9.2</span>","<span class=\"c\">         * @property opera</span>","<span class=\"c\">         * @type float</span>","<span class=\"c\">         */</span>","        opera<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Gecko engine revision number.  Will evaluate to 1 if Gecko </span>","<span class=\"c\">         * is detected but the revision could not be found. Other browsers</span>","<span class=\"c\">         * will be 0.  Example: 1.8</span>","<span class=\"c\">         * &lt;pre&gt;</span>","<span class=\"c\">         * Firefox 1.0.0.4: 1.7.8   &lt;-- Reports 1.7</span>","<span class=\"c\">         * Firefox 1.5.0.9: 1.8.0.9 &lt;-- Reports 1.8</span>","<span class=\"c\">         * Firefox 2.0.0.3: 1.8.1.3 &lt;-- Reports 1.8</span>","<span class=\"c\">         * Firefox 3 alpha: 1.9a4   &lt;-- Reports 1.9</span>","<span class=\"c\">         * &lt;/pre&gt;</span>","<span class=\"c\">         * @property gecko</span>","<span class=\"c\">         * @type float</span>","<span class=\"c\">         */</span>","        gecko<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * AppleWebKit version.  KHTML browsers that are not WebKit browsers </span>","<span class=\"c\">         * will evaluate to 1, other browsers 0.  Example: 418.9.1</span>","<span class=\"c\">         * &lt;pre&gt;</span>","<span class=\"c\">         * Safari 1.3.2 (312.6): 312.8.1 &lt;-- Reports 312.8 -- currently the </span>","<span class=\"c\">         *                                   latest available for Mac OSX 10.3.</span>","<span class=\"c\">         * Safari 2.0.2:         416     &lt;-- hasOwnProperty introduced</span>","<span class=\"c\">         * Safari 2.0.4:         418     &lt;-- preventDefault fixed</span>","<span class=\"c\">         * Safari 2.0.4 (419.3): 418.9.1 &lt;-- One version of Safari may run</span>","<span class=\"c\">         *                                   different versions of webkit</span>","<span class=\"c\">         * Safari 2.0.4 (419.3): 419     &lt;-- Tiger installations that have been</span>","<span class=\"c\">         *                                   updated, but not updated</span>","<span class=\"c\">         *                                   to the latest patch.</span>","<span class=\"c\">         * Webkit 212 nightly:   522+    &lt;-- Safari 3.0 precursor (with native SVG</span>","<span class=\"c\">         *                                   and many major issues fixed).  </span>","<span class=\"c\">         * 3.x yahoo.com, flickr:422     &lt;-- Safari 3.x hacks the user agent</span>","<span class=\"c\">         *                                   string when hitting yahoo.com and </span>","<span class=\"c\">         *                                   flickr.com.</span>","<span class=\"c\">         * Safari 3.0.4 (523.12):523.12  &lt;-- First Tiger release - automatic update</span>","<span class=\"c\">         *                                   from 2.x via the 10.4.11 OS patch</span>","<span class=\"c\">         * Webkit nightly 1/2008:525+    &lt;-- Supports DOMContentLoaded event.</span>","<span class=\"c\">         *                                   yahoo.com user agent hack removed.</span>","<span class=\"c\">         *                                   </span>","<span class=\"c\">         * &lt;/pre&gt;</span>","<span class=\"c\">         * http://developer.apple.com/internet/safari/uamatrix.html</span>","<span class=\"c\">         * @property webkit</span>","<span class=\"c\">         * @type float</span>","<span class=\"c\">         */</span>","        webkit<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * The mobile property will be set to a string containing any relevant</span>","<span class=\"c\">         * user agent information when a modern mobile browser is detected.</span>","<span class=\"c\">         * Currently limited to Safari on the iPhone/iPod Touch, Nokia N-series</span>","<span class=\"c\">         * devices with the WebKit-based browser, and Opera Mini.  </span>","<span class=\"c\">         * @property mobile </span>","<span class=\"c\">         * @type string</span>","<span class=\"c\">         */</span>","        mobile<span class=\"k\">:</span> <span class=\"k\">null</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Adobe AIR version number or 0.  Only populated if webkit is detected.</span>","<span class=\"c\">         * Example: 1.0</span>","<span class=\"c\">         * @property air</span>","<span class=\"c\">         * @type float</span>","<span class=\"c\">         */</span>","        air<span class=\"k\">:</span> <span class=\"s\">0</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Google Caja version number or 0.</span>","<span class=\"c\">         * @property caja</span>","<span class=\"c\">         * @type float</span>","<span class=\"c\">         */</span>","        caja<span class=\"k\">:</span> nav<span class=\"k\">.</span>cajaVersion<span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * Set to true if the page appears to be in SSL</span>","<span class=\"c\">         * @property secure</span>","<span class=\"c\">         * @type boolean</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        secure<span class=\"k\">:</span> <span class=\"k\">false</span><span class=\"k\">,</span>","","        <span class=\"c\">/**</span>","<span class=\"c\">         * The operating system.  Currently only detecting windows or macintosh</span>","<span class=\"c\">         * @property os</span>","<span class=\"c\">         * @type string</span>","<span class=\"c\">         * @static</span>","<span class=\"c\">         */</span>","        os<span class=\"k\">:</span> <span class=\"k\">null</span>","","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    ua <span class=\"k\">=</span> navigator <span class=\"k\">&amp;&amp;</span> navigator<span class=\"k\">.</span>userAgent<span class=\"k\">,</span> ","    ","    loc <span class=\"k\">=</span> window <span class=\"k\">&amp;&amp;</span> window<span class=\"k\">.</span>location<span class=\"k\">,</span>","","    href <span class=\"k\">=</span> loc <span class=\"k\">&amp;&amp;</span> loc<span class=\"k\">.</span>href<span class=\"k\">,</span>","    ","    m<span class=\"k\">;</span>","","    o<span class=\"k\">.</span>secure <span class=\"k\">=</span> href <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span>href<span class=\"k\">.</span>toLowerCase<span class=\"k\">().</span>indexOf<span class=\"k\">(</span><span class=\"s\">\"https\"</span><span class=\"k\">)</span> <span class=\"k\">===</span> <span class=\"s\">0</span><span class=\"k\">);</span>","","    <span class=\"k\">if</span> <span class=\"k\">(</span>ua<span class=\"k\">)</span> <span class=\"k\">{</span>","","        <span class=\"k\">if</span> <span class=\"k\">((</span><span class=\"s\">/windows|win32/i</span><span class=\"k\">).</span>test<span class=\"k\">(</span>ua<span class=\"k\">))</span> <span class=\"k\">{</span>","            o<span class=\"k\">.</span>os <span class=\"k\">=</span> <span class=\"s\">'windows'</span><span class=\"k\">;</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">((</span><span class=\"s\">/macintosh/i</span><span class=\"k\">).</span>test<span class=\"k\">(</span>ua<span class=\"k\">))</span> <span class=\"k\">{</span>","            o<span class=\"k\">.</span>os <span class=\"k\">=</span> <span class=\"s\">'macintosh'</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","    ","        <span class=\"c\">// Modern KHTML browsers should qualify as Safari X-Grade</span>","        <span class=\"k\">if</span> <span class=\"k\">((</span><span class=\"s\">/KHTML/</span><span class=\"k\">).</span>test<span class=\"k\">(</span>ua<span class=\"k\">))</span> <span class=\"k\">{</span>","            o<span class=\"k\">.</span>webkit<span class=\"k\">=</span><span class=\"s\">1</span><span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"c\">// Modern WebKit browsers are at least X-Grade</span>","        m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/AppleWebKit\\/([^\\s]*)/</span><span class=\"k\">);</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">&amp;&amp;</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">])</span> <span class=\"k\">{</span>","            o<span class=\"k\">.</span>webkit<span class=\"k\">=</span>numberfy<span class=\"k\">(</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">]);</span>","","            <span class=\"c\">// Mobile browser check</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">/ Mobile\\//</span><span class=\"k\">.</span>test<span class=\"k\">(</span>ua<span class=\"k\">))</span> <span class=\"k\">{</span>","                o<span class=\"k\">.</span>mobile <span class=\"k\">=</span> <span class=\"s\">\"Apple\"</span><span class=\"k\">;</span> <span class=\"c\">// iPhone or iPod Touch</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/NokiaN[^\\/]*/</span><span class=\"k\">);</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">)</span> <span class=\"k\">{</span>","                    o<span class=\"k\">.</span>mobile <span class=\"k\">=</span> m<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">];</span> <span class=\"c\">// Nokia N-series, ex: NokiaN95</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","","            m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/AdobeAIR\\/([^\\s]*)/</span><span class=\"k\">);</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">)</span> <span class=\"k\">{</span>","                o<span class=\"k\">.</span>air <span class=\"k\">=</span> m<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">];</span> <span class=\"c\">// Adobe AIR 1.0 or better</span>","            <span class=\"k\">}</span>","","        <span class=\"k\">}</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span>o<span class=\"k\">.</span>webkit<span class=\"k\">)</span> <span class=\"k\">{</span> <span class=\"c\">// not webkit</span>","            <span class=\"c\">// @todo check Opera/8.01 (J2ME/MIDP; Opera Mini/2.0.4509/1316; fi; U; ssr)</span>","            m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/Opera[\\s\\/]([^\\s]*)/</span><span class=\"k\">);</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">&amp;&amp;</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">])</span> <span class=\"k\">{</span>","                o<span class=\"k\">.</span>opera<span class=\"k\">=</span>numberfy<span class=\"k\">(</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">]);</span>","                m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/Opera Mini[^;]*/</span><span class=\"k\">);</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">)</span> <span class=\"k\">{</span>","                    o<span class=\"k\">.</span>mobile <span class=\"k\">=</span> m<span class=\"k\">[</span><span class=\"s\">0</span><span class=\"k\">];</span> <span class=\"c\">// ex: Opera Mini/2.0.4509/1316</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span> <span class=\"c\">// not opera or webkit</span>","                m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/MSIE\\s([^;]*)/</span><span class=\"k\">);</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">&amp;&amp;</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">])</span> <span class=\"k\">{</span>","                    o<span class=\"k\">.</span>ie<span class=\"k\">=</span>numberfy<span class=\"k\">(</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">]);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span> <span class=\"c\">// not opera, webkit, or ie</span>","                    m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/Gecko\\/([^\\s]*)/</span><span class=\"k\">);</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">)</span> <span class=\"k\">{</span>","                        o<span class=\"k\">.</span>gecko<span class=\"k\">=</span><span class=\"s\">1</span><span class=\"k\">;</span> <span class=\"c\">// Gecko detected, look for revision</span>","                        m<span class=\"k\">=</span>ua<span class=\"k\">.</span>match<span class=\"k\">(</span><span class=\"s\">/rv:([^\\s\\)]*)/</span><span class=\"k\">);</span>","                        <span class=\"k\">if</span> <span class=\"k\">(</span>m<span class=\"k\">&amp;&amp;</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">])</span> <span class=\"k\">{</span>","                            o<span class=\"k\">.</span>gecko<span class=\"k\">=</span>numberfy<span class=\"k\">(</span>m<span class=\"k\">[</span><span class=\"s\">1</span><span class=\"k\">]);</span>","                        <span class=\"k\">}</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span>","","    <span class=\"k\">return</span> o<span class=\"k\">;</span>","<span class=\"k\">}</span><span class=\"k\">();</span>","","<span class=\"c\">/*</span>","<span class=\"c\"> * Initializes the global by creating the default namespaces and applying</span>","<span class=\"c\"> * any new configuration information that is detected.  This is the setup</span>","<span class=\"c\"> * for env.</span>","<span class=\"c\"> * @method init</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @private</span>","<span class=\"c\"> */</span>","<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","    YAHOO<span class=\"k\">.</span>namespace<span class=\"k\">(</span><span class=\"s\">\"util\"</span><span class=\"k\">,</span> <span class=\"s\">\"widget\"</span><span class=\"k\">,</span> <span class=\"s\">\"example\"</span><span class=\"k\">);</span>","    <span class=\"c\">/*global YAHOO_config*/</span>","    <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"s\">\"undefined\"</span> <span class=\"k\">!==</span> <span class=\"k\">typeof</span> YAHOO_config<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> l<span class=\"k\">=</span>YAHOO_config<span class=\"k\">.</span>listener<span class=\"k\">,</span> ls<span class=\"k\">=</span>YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>listeners<span class=\"k\">,</span>unique<span class=\"k\">=</span><span class=\"k\">true</span><span class=\"k\">,</span> i<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>l<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"c\">// if YAHOO is loaded multiple times we need to check to see if</span>","            <span class=\"c\">// this is a new config object.  If it is, add the new component</span>","            <span class=\"c\">// load listener to the stack</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>ls<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">++)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>ls<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">==</span> l<span class=\"k\">)</span> <span class=\"k\">{</span>","                    unique <span class=\"k\">=</span> <span class=\"k\">false</span><span class=\"k\">;</span>","                    <span class=\"k\">break</span><span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","","            <span class=\"k\">if</span> <span class=\"k\">(</span>unique<span class=\"k\">)</span> <span class=\"k\">{</span>","                ls<span class=\"k\">.</span>push<span class=\"k\">(</span>l<span class=\"k\">);</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span>","<span class=\"k\">}</span><span class=\"k\">)();</span>","<span class=\"c\">/**</span>","<span class=\"c\"> * Provides the language utilites and extensions used by the library</span>","<span class=\"c\"> * @class YAHOO.lang</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>lang <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>lang <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","","<span class=\"k\">(</span><span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","","","<span class=\"k\">var</span> L <span class=\"k\">=</span> YAHOO<span class=\"k\">.</span>lang<span class=\"k\">,</span>","","    OP <span class=\"k\">=</span> Object<span class=\"k\">.</span>prototype<span class=\"k\">,</span>","    ARRAY_TOSTRING <span class=\"k\">=</span> <span class=\"s\">'[object Array]'</span><span class=\"k\">,</span>","    FUNCTION_TOSTRING <span class=\"k\">=</span> <span class=\"s\">'[object Function]'</span><span class=\"k\">,</span>","    OBJECT_TOSTRING <span class=\"k\">=</span> <span class=\"s\">'[object Object]'</span><span class=\"k\">,</span>","    NOTHING <span class=\"k\">=</span> <span class=\"k\">[],</span>","","    <span class=\"c\">// ADD = [\"toString\", \"valueOf\", \"hasOwnProperty\"],</span>","    ADD <span class=\"k\">=</span> <span class=\"k\">[</span><span class=\"s\">\"toString\"</span><span class=\"k\">,</span> <span class=\"s\">\"valueOf\"</span><span class=\"k\">],</span>","","    OB <span class=\"k\">=</span> <span class=\"k\">{</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines wheather or not the provided object is an array.</span>","<span class=\"c\">     * @method isArray</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>","    isArray<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span> ","        <span class=\"k\">return</span> OP<span class=\"k\">.</span>toString<span class=\"k\">.</span>apply<span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">===</span> ARRAY_TOSTRING<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines whether or not the provided object is a boolean</span>","<span class=\"c\">     * @method isBoolean</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>","    isBoolean<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">typeof</span> o <span class=\"k\">===</span> <span class=\"s\">'boolean'</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines whether or not the provided object is a function.</span>","<span class=\"c\">     * Note: Internet Explorer thinks certain functions are objects:</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * var obj = document.createElement(\"object\");</span>","<span class=\"c\">     * YAHOO.lang.isFunction(obj.getAttribute) // reports false in IE</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * var input = document.createElement(\"input\"); // append to body</span>","<span class=\"c\">     * YAHOO.lang.isFunction(input.focus) // reports false in IE</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * You will have to implement additional tests if these functions</span>","<span class=\"c\">     * matter to you.</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * @method isFunction</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>","    isFunction<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> o <span class=\"k\">===</span> <span class=\"s\">'function'</span><span class=\"k\">)</span> <span class=\"k\">||</span> OP<span class=\"k\">.</span>toString<span class=\"k\">.</span>apply<span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">===</span> FUNCTION_TOSTRING<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines whether or not the provided object is null</span>","<span class=\"c\">     * @method isNull</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>","    isNull<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> o <span class=\"k\">===</span> <span class=\"k\">null</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines whether or not the provided object is a legal number</span>","<span class=\"c\">     * @method isNumber</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>","    isNumber<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">typeof</span> o <span class=\"k\">===</span> <span class=\"s\">'number'</span> <span class=\"k\">&amp;&amp;</span> isFinite<span class=\"k\">(</span>o<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","      ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines whether or not the provided object is of type object</span>","<span class=\"c\">     * or function</span>","<span class=\"c\">     * @method isObject</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>  ","    isObject<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","<span class=\"k\">return</span> <span class=\"k\">(</span>o <span class=\"k\">&amp;&amp;</span> <span class=\"k\">(</span><span class=\"k\">typeof</span> o <span class=\"k\">===</span> <span class=\"s\">'object'</span> <span class=\"k\">||</span> L<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>o<span class=\"k\">)))</span> <span class=\"k\">||</span> <span class=\"k\">false</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines whether or not the provided object is a string</span>","<span class=\"c\">     * @method isString</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>","    isString<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">typeof</span> o <span class=\"k\">===</span> <span class=\"s\">'string'</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","        ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Determines whether or not the provided object is undefined</span>","<span class=\"c\">     * @method isUndefined</span>","<span class=\"c\">     * @param {any} o The object being testing</span>","<span class=\"c\">     * @return {boolean} the result</span>","<span class=\"c\">     */</span>","    isUndefined<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">typeof</span> o <span class=\"k\">===</span> <span class=\"s\">'undefined'</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    "," ","    <span class=\"c\">/**</span>","<span class=\"c\">     * IE will not enumerate native functions in a derived object even if the</span>","<span class=\"c\">     * function was overridden.  This is a workaround for specific functions </span>","<span class=\"c\">     * we care about on the Object prototype. </span>","<span class=\"c\">     * @property _IEEnumFix</span>","<span class=\"c\">     * @param {Function} r  the object to receive the augmentation</span>","<span class=\"c\">     * @param {Function} s  the object that supplies the properties to augment</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @private</span>","<span class=\"c\">     */</span>","    _IEEnumFix<span class=\"k\">:</span> <span class=\"k\">(</span>YAHOO<span class=\"k\">.</span>env<span class=\"k\">.</span>ua<span class=\"k\">.</span>ie<span class=\"k\">)</span> <span class=\"k\">?</span> <span class=\"k\">function</span><span class=\"k\">(</span>r<span class=\"k\">,</span> s<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">var</span> i<span class=\"k\">,</span> fname<span class=\"k\">,</span> f<span class=\"k\">;</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span>i<span class=\"k\">&lt;</span>ADD<span class=\"k\">.</span>length<span class=\"k\">;</span>i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","","                fname <span class=\"k\">=</span> ADD<span class=\"k\">[</span>i<span class=\"k\">];</span>","                f <span class=\"k\">=</span> s<span class=\"k\">[</span>fname<span class=\"k\">];</span>","","                <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>f<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> f<span class=\"k\">!=</span>OP<span class=\"k\">[</span>fname<span class=\"k\">])</span> <span class=\"k\">{</span>","                    r<span class=\"k\">[</span>fname<span class=\"k\">]=</span>f<span class=\"k\">;</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","    <span class=\"k\">}</span> <span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span><span class=\"k\">{}</span><span class=\"k\">,</span>","       ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Utility to set up the prototype, constructor and superclass properties to</span>","<span class=\"c\">     * support an inheritance strategy that can chain constructors and methods.</span>","<span class=\"c\">     * Static members will not be inherited.</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * @method extend</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @param {Function} subc   the object to modify</span>","<span class=\"c\">     * @param {Function} superc the object to inherit</span>","<span class=\"c\">     * @param {Object} overrides  additional properties/methods to add to the</span>","<span class=\"c\">     *                              subclass prototype.  These will override the</span>","<span class=\"c\">     *                              matching items obtained from the superclass </span>","<span class=\"c\">     *                              if present.</span>","<span class=\"c\">     */</span>","    extend<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>subc<span class=\"k\">,</span> superc<span class=\"k\">,</span> overrides<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>superc<span class=\"k\">||!</span>subc<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> Error<span class=\"k\">(</span><span class=\"s\">\"extend failed, please check that \"</span> <span class=\"k\">+</span>","                            <span class=\"s\">\"all dependencies are included.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">var</span> F <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{}</span><span class=\"k\">,</span> i<span class=\"k\">;</span>","        F<span class=\"k\">.</span>prototype<span class=\"k\">=</span>superc<span class=\"k\">.</span>prototype<span class=\"k\">;</span>","        subc<span class=\"k\">.</span>prototype<span class=\"k\">=</span><span class=\"k\">new</span> F<span class=\"k\">();</span>","        subc<span class=\"k\">.</span>prototype<span class=\"k\">.</span>constructor<span class=\"k\">=</span>subc<span class=\"k\">;</span>","        subc<span class=\"k\">.</span>superclass<span class=\"k\">=</span>superc<span class=\"k\">.</span>prototype<span class=\"k\">;</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>superc<span class=\"k\">.</span>prototype<span class=\"k\">.</span>constructor <span class=\"k\">==</span> OP<span class=\"k\">.</span>constructor<span class=\"k\">)</span> <span class=\"k\">{</span>","            superc<span class=\"k\">.</span>prototype<span class=\"k\">.</span>constructor<span class=\"k\">=</span>superc<span class=\"k\">;</span>","        <span class=\"k\">}</span>","    ","        <span class=\"k\">if</span> <span class=\"k\">(</span>overrides<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span>i <span class=\"k\">in</span> overrides<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>overrides<span class=\"k\">,</span> i<span class=\"k\">))</span> <span class=\"k\">{</span>","                    subc<span class=\"k\">.</span>prototype<span class=\"k\">[</span>i<span class=\"k\">]=</span>overrides<span class=\"k\">[</span>i<span class=\"k\">];</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","","            L<span class=\"k\">.</span>_IEEnumFix<span class=\"k\">(</span>subc<span class=\"k\">.</span>prototype<span class=\"k\">,</span> overrides<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","   ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Applies all properties in the supplier to the receiver if the</span>","<span class=\"c\">     * receiver does not have these properties yet.  Optionally, one or </span>","<span class=\"c\">     * more methods/properties can be specified (as additional </span>","<span class=\"c\">     * parameters).  This option will overwrite the property if receiver </span>","<span class=\"c\">     * has it already.  If true is passed as the third parameter, all </span>","<span class=\"c\">     * properties will be applied and _will_ overwrite properties in </span>","<span class=\"c\">     * the receiver.</span>","<span class=\"c\">     *</span>","<span class=\"c\">     * @method augmentObject</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @since 2.3.0</span>","<span class=\"c\">     * @param {Function} r  the object to receive the augmentation</span>","<span class=\"c\">     * @param {Function} s  the object that supplies the properties to augment</span>","<span class=\"c\">     * @param {String*|boolean}  arguments zero or more properties methods </span>","<span class=\"c\">     *        to augment the receiver with.  If none specified, everything</span>","<span class=\"c\">     *        in the supplier will be used unless it would</span>","<span class=\"c\">     *        overwrite an existing property in the receiver. If true</span>","<span class=\"c\">     *        is specified as the third parameter, all properties will</span>","<span class=\"c\">     *        be applied and will overwrite an existing property in</span>","<span class=\"c\">     *        the receiver</span>","<span class=\"c\">     */</span>","    augmentObject<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>r<span class=\"k\">,</span> s<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>s<span class=\"k\">||!</span>r<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> Error<span class=\"k\">(</span><span class=\"s\">\"Absorb failed, verify dependencies.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">var</span> a<span class=\"k\">=</span>arguments<span class=\"k\">,</span> i<span class=\"k\">,</span> p<span class=\"k\">,</span> overrideList<span class=\"k\">=</span>a<span class=\"k\">[</span><span class=\"s\">2</span><span class=\"k\">];</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>overrideList <span class=\"k\">&amp;&amp;</span> overrideList<span class=\"k\">!==</span><span class=\"k\">true</span><span class=\"k\">)</span> <span class=\"k\">{</span> <span class=\"c\">// only absorb the specified properties</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">2</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>a<span class=\"k\">.</span>length<span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                r<span class=\"k\">[</span>a<span class=\"k\">[</span>i<span class=\"k\">]]</span> <span class=\"k\">=</span> s<span class=\"k\">[</span>a<span class=\"k\">[</span>i<span class=\"k\">]];</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span> <span class=\"c\">// take everything, overwriting only if the third parameter is true</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span>p <span class=\"k\">in</span> s<span class=\"k\">)</span> <span class=\"k\">{</span> ","                <span class=\"k\">if</span> <span class=\"k\">(</span>overrideList <span class=\"k\">||</span> <span class=\"k\">!(</span>p <span class=\"k\">in</span> r<span class=\"k\">))</span> <span class=\"k\">{</span>","                    r<span class=\"k\">[</span>p<span class=\"k\">]</span> <span class=\"k\">=</span> s<span class=\"k\">[</span>p<span class=\"k\">];</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","            ","            L<span class=\"k\">.</span>_IEEnumFix<span class=\"k\">(</span>r<span class=\"k\">,</span> s<span class=\"k\">);</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>"," ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Same as YAHOO.lang.augmentObject, except it only applies prototype properties</span>","<span class=\"c\">     * @see YAHOO.lang.augmentObject</span>","<span class=\"c\">     * @method augmentProto</span>","<span class=\"c\">     * @static</span>","<span class=\"c\">     * @param {Function} r  the object to receive the augmentation</span>","<span class=\"c\">     * @param {Function} s  the object that supplies the properties to augment</span>","<span class=\"c\">     * @param {String*|boolean}  arguments zero or more properties methods </span>","<span class=\"c\">     *        to augment the receiver with.  If none specified, everything </span>","<span class=\"c\">     *        in the supplier will be used unless it would overwrite an existing </span>","<span class=\"c\">     *        property in the receiver.  if true is specified as the third </span>","<span class=\"c\">     *        parameter, all properties will be applied and will overwrite an </span>","<span class=\"c\">     *        existing property in the receiver</span>","<span class=\"c\">     */</span>","    augmentProto<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>r<span class=\"k\">,</span> s<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>s<span class=\"k\">||!</span>r<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> Error<span class=\"k\">(</span><span class=\"s\">\"Augment failed, verify dependencies.\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"c\">//var a=[].concat(arguments);</span>","        <span class=\"k\">var</span> a<span class=\"k\">=[</span>r<span class=\"k\">.</span>prototype<span class=\"k\">,</span>s<span class=\"k\">.</span>prototype<span class=\"k\">],</span> i<span class=\"k\">;</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">2</span><span class=\"k\">;</span>i<span class=\"k\">&lt;</span>arguments<span class=\"k\">.</span>length<span class=\"k\">;</span>i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","            a<span class=\"k\">.</span>push<span class=\"k\">(</span>arguments<span class=\"k\">[</span>i<span class=\"k\">]);</span>","        <span class=\"k\">}</span>","        L<span class=\"k\">.</span>augmentObject<span class=\"k\">.</span>apply<span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">,</span> a<span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","      ","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns a simple string representation of the object or array.</span>","<span class=\"c\">     * Other types of objects will be returned unprocessed.  Arrays</span>","<span class=\"c\">     * are expected to be indexed.  Use object notation for</span>","<span class=\"c\">     * associative arrays.</span>","<span class=\"c\">     * @method dump</span>","<span class=\"c\">     * @since 2.3.0</span>","<span class=\"c\">     * @param o {Object} The object to dump</span>","<span class=\"c\">     * @param d {int} How deep to recurse child objects, default 3</span>","<span class=\"c\">     * @return {String} the dump result</span>","<span class=\"c\">     */</span>","    dump<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">,</span> d<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> i<span class=\"k\">,</span>len<span class=\"k\">,</span>s<span class=\"k\">=[],</span>OBJ<span class=\"k\">=</span><span class=\"s\">\"{...}\"</span><span class=\"k\">,</span>FUN<span class=\"k\">=</span><span class=\"s\">\"f(){...}\"</span><span class=\"k\">,</span>","            COMMA<span class=\"k\">=</span><span class=\"s\">', '</span><span class=\"k\">,</span> ARROW<span class=\"k\">=</span><span class=\"s\">' =&gt; '</span><span class=\"k\">;</span>","","        <span class=\"c\">// Cast non-objects to string</span>","        <span class=\"c\">// Skip dates because the std toString is what we want</span>","        <span class=\"c\">// Skip HTMLElement-like objects because trying to dump </span>","        <span class=\"c\">// an element will cause an unhandled exception in FF 2.x</span>","        <span class=\"k\">if</span> <span class=\"k\">(!</span>L<span class=\"k\">.</span>isObject<span class=\"k\">(</span>o<span class=\"k\">))</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> o <span class=\"k\">+</span> <span class=\"s\">\"\"</span><span class=\"k\">;</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(</span>o <span class=\"k\">instanceof</span> Date <span class=\"k\">||</span> <span class=\"k\">(</span><span class=\"s\">\"nodeType\"</span> <span class=\"k\">in</span> o <span class=\"k\">&amp;&amp;</span> <span class=\"s\">\"tagName\"</span> <span class=\"k\">in</span> o<span class=\"k\">))</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> o<span class=\"k\">;</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span>  <span class=\"k\">(</span>L<span class=\"k\">.</span>isFunction<span class=\"k\">(</span>o<span class=\"k\">))</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> FUN<span class=\"k\">;</span>","        <span class=\"k\">}</span>","","        <span class=\"c\">// dig into child objects the depth specifed. Default 3</span>","        d <span class=\"k\">=</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>d<span class=\"k\">))</span> <span class=\"k\">?</span> d <span class=\"k\">:</span> <span class=\"s\">3</span><span class=\"k\">;</span>","","        <span class=\"c\">// arrays [1, 2, 3]</span>","        <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isArray<span class=\"k\">(</span>o<span class=\"k\">))</span> <span class=\"k\">{</span>","            s<span class=\"k\">.</span>push<span class=\"k\">(</span><span class=\"s\">\"[\"</span><span class=\"k\">);</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">,</span>len<span class=\"k\">=</span>o<span class=\"k\">.</span>length<span class=\"k\">;</span>i<span class=\"k\">&lt;</span>len<span class=\"k\">;</span>i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isObject<span class=\"k\">(</span>o<span class=\"k\">[</span>i<span class=\"k\">]))</span> <span class=\"k\">{</span>","                    s<span class=\"k\">.</span>push<span class=\"k\">((</span>d <span class=\"k\">&gt;</span> <span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">?</span> L<span class=\"k\">.</span>dump<span class=\"k\">(</span>o<span class=\"k\">[</span>i<span class=\"k\">],</span> d<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">:</span> OBJ<span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    s<span class=\"k\">.</span>push<span class=\"k\">(</span>o<span class=\"k\">[</span>i<span class=\"k\">]);</span>","                <span class=\"k\">}</span>","                s<span class=\"k\">.</span>push<span class=\"k\">(</span>COMMA<span class=\"k\">);</span>","            <span class=\"k\">}</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>s<span class=\"k\">.</span>length <span class=\"k\">&gt;</span> <span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                s<span class=\"k\">.</span>pop<span class=\"k\">();</span>","            <span class=\"k\">}</span>","            s<span class=\"k\">.</span>push<span class=\"k\">(</span><span class=\"s\">\"]\"</span><span class=\"k\">);</span>","        <span class=\"c\">// objects {k1 =&gt; v1, k2 =&gt; v2}</span>","        <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","            s<span class=\"k\">.</span>push<span class=\"k\">(</span><span class=\"s\">\"{\"</span><span class=\"k\">);</span>","            <span class=\"k\">for</span> <span class=\"k\">(</span>i <span class=\"k\">in</span> o<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>o<span class=\"k\">,</span> i<span class=\"k\">))</span> <span class=\"k\">{</span>","                    s<span class=\"k\">.</span>push<span class=\"k\">(</span>i <span class=\"k\">+</span> ARROW<span class=\"k\">);</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isObject<span class=\"k\">(</span>o<span class=\"k\">[</span>i<span class=\"k\">]))</span> <span class=\"k\">{</span>","                        s<span class=\"k\">.</span>push<span class=\"k\">((</span>d <span class=\"k\">&gt;</span> <span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">?</span> L<span class=\"k\">.</span>dump<span class=\"k\">(</span>o<span class=\"k\">[</span>i<span class=\"k\">],</span> d<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">:</span> OBJ<span class=\"k\">);</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        s<span class=\"k\">.</span>push<span class=\"k\">(</span>o<span class=\"k\">[</span>i<span class=\"k\">]);</span>","                    <span class=\"k\">}</span>","                    s<span class=\"k\">.</span>push<span class=\"k\">(</span>COMMA<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>s<span class=\"k\">.</span>length <span class=\"k\">&gt;</span> <span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                s<span class=\"k\">.</span>pop<span class=\"k\">();</span>","            <span class=\"k\">}</span>","            s<span class=\"k\">.</span>push<span class=\"k\">(</span><span class=\"s\">\"}\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> s<span class=\"k\">.</span>join<span class=\"k\">(</span><span class=\"s\">\"\"</span><span class=\"k\">);</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Does variable substitution on a string. It scans through the string </span>","<span class=\"c\">     * looking for expressions enclosed in { } braces. If an expression </span>","<span class=\"c\">     * is found, it is used a key on the object.  If there is a space in</span>","<span class=\"c\">     * the key, the first word is used for the key and the rest is provided</span>","<span class=\"c\">     * to an optional function to be used to programatically determine the</span>","<span class=\"c\">     * value (the extra information might be used for this decision). If </span>","<span class=\"c\">     * the value for the key in the object, or what is returned from the</span>","<span class=\"c\">     * function has a string value, number value, or object value, it is </span>","<span class=\"c\">     * substituted for the bracket expression and it repeats.  If this</span>","<span class=\"c\">     * value is an object, it uses the Object's toString() if this has</span>","<span class=\"c\">     * been overridden, otherwise it does a shallow dump of the key/value</span>","<span class=\"c\">     * pairs.</span>","<span class=\"c\">     * @method substitute</span>","<span class=\"c\">     * @since 2.3.0</span>","<span class=\"c\">     * @param s {String} The string that will be modified.</span>","<span class=\"c\">     * @param o {Object} An object containing the replacement values</span>","<span class=\"c\">     * @param f {Function} An optional function that can be used to</span>","<span class=\"c\">     *                     process each match.  It receives the key,</span>","<span class=\"c\">     *                     value, and any extra metadata included with</span>","<span class=\"c\">     *                     the key inside of the braces.</span>","<span class=\"c\">     * @return {String} the substituted string</span>","<span class=\"c\">     */</span>","    substitute<span class=\"k\">:</span> <span class=\"k\">function</span> <span class=\"k\">(</span>s<span class=\"k\">,</span> o<span class=\"k\">,</span> f<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> i<span class=\"k\">,</span> j<span class=\"k\">,</span> k<span class=\"k\">,</span> key<span class=\"k\">,</span> v<span class=\"k\">,</span> meta<span class=\"k\">,</span> saved<span class=\"k\">=[],</span> token<span class=\"k\">,</span> ","            DUMP<span class=\"k\">=</span><span class=\"s\">'dump'</span><span class=\"k\">,</span> SPACE<span class=\"k\">=</span><span class=\"s\">' '</span><span class=\"k\">,</span> LBRACE<span class=\"k\">=</span><span class=\"s\">'{'</span><span class=\"k\">,</span> RBRACE<span class=\"k\">=</span><span class=\"s\">'}'</span><span class=\"k\">,</span>","            dump<span class=\"k\">,</span> objstr<span class=\"k\">;</span>","","","        <span class=\"k\">for</span> <span class=\"k\">(;;)</span> <span class=\"k\">{</span>","            i <span class=\"k\">=</span> s<span class=\"k\">.</span>lastIndexOf<span class=\"k\">(</span>LBRACE<span class=\"k\">);</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>i <span class=\"k\">&lt;</span> <span class=\"s\">0</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","            j <span class=\"k\">=</span> s<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>RBRACE<span class=\"k\">,</span> i<span class=\"k\">);</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>i <span class=\"k\">+</span> <span class=\"s\">1</span> <span class=\"k\">&gt;=</span> j<span class=\"k\">)</span> <span class=\"k\">{</span>","                <span class=\"k\">break</span><span class=\"k\">;</span>","            <span class=\"k\">}</span>","","            <span class=\"c\">//Extract key and meta info </span>","            token <span class=\"k\">=</span> s<span class=\"k\">.</span>substring<span class=\"k\">(</span>i <span class=\"k\">+</span> <span class=\"s\">1</span><span class=\"k\">,</span> j<span class=\"k\">);</span>","            key <span class=\"k\">=</span> token<span class=\"k\">;</span>","            meta <span class=\"k\">=</span> <span class=\"k\">null</span><span class=\"k\">;</span>","            k <span class=\"k\">=</span> key<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>SPACE<span class=\"k\">);</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>k <span class=\"k\">&gt;</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                meta <span class=\"k\">=</span> key<span class=\"k\">.</span>substring<span class=\"k\">(</span>k <span class=\"k\">+</span> <span class=\"s\">1</span><span class=\"k\">);</span>","                key <span class=\"k\">=</span> key<span class=\"k\">.</span>substring<span class=\"k\">(</span><span class=\"s\">0</span><span class=\"k\">,</span> k<span class=\"k\">);</span>","            <span class=\"k\">}</span>","","            <span class=\"c\">// lookup the value</span>","            v <span class=\"k\">=</span> o<span class=\"k\">[</span>key<span class=\"k\">];</span>","","            <span class=\"c\">// if a substitution function was provided, execute it</span>","            <span class=\"k\">if</span> <span class=\"k\">(</span>f<span class=\"k\">)</span> <span class=\"k\">{</span>","                v <span class=\"k\">=</span> f<span class=\"k\">(</span>key<span class=\"k\">,</span> v<span class=\"k\">,</span> meta<span class=\"k\">);</span>","            <span class=\"k\">}</span>","","            <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isObject<span class=\"k\">(</span>v<span class=\"k\">))</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isArray<span class=\"k\">(</span>v<span class=\"k\">))</span> <span class=\"k\">{</span>","                    v <span class=\"k\">=</span> L<span class=\"k\">.</span>dump<span class=\"k\">(</span>v<span class=\"k\">,</span> parseInt<span class=\"k\">(</span>meta<span class=\"k\">,</span> <span class=\"s\">10</span><span class=\"k\">));</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    meta <span class=\"k\">=</span> meta <span class=\"k\">||</span> <span class=\"s\">\"\"</span><span class=\"k\">;</span>","","                    <span class=\"c\">// look for the keyword 'dump', if found force obj dump</span>","                    dump <span class=\"k\">=</span> meta<span class=\"k\">.</span>indexOf<span class=\"k\">(</span>DUMP<span class=\"k\">);</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>dump <span class=\"k\">&gt;</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        meta <span class=\"k\">=</span> meta<span class=\"k\">.</span>substring<span class=\"k\">(</span><span class=\"s\">4</span><span class=\"k\">);</span>","                    <span class=\"k\">}</span>","","                    objstr <span class=\"k\">=</span> v<span class=\"k\">.</span>toString<span class=\"k\">();</span>","","                    <span class=\"c\">// use the toString if it is not the Object toString </span>","                    <span class=\"c\">// and the 'dump' meta info was not found</span>","                    <span class=\"k\">if</span> <span class=\"k\">(</span>objstr <span class=\"k\">===</span> OBJECT_TOSTRING <span class=\"k\">||</span> dump <span class=\"k\">&gt;</span> <span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","                        v <span class=\"k\">=</span> L<span class=\"k\">.</span>dump<span class=\"k\">(</span>v<span class=\"k\">,</span> parseInt<span class=\"k\">(</span>meta<span class=\"k\">,</span> <span class=\"s\">10</span><span class=\"k\">));</span>","                    <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                        v <span class=\"k\">=</span> objstr<span class=\"k\">;</span>","                    <span class=\"k\">}</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">if</span> <span class=\"k\">(!</span>L<span class=\"k\">.</span>isString<span class=\"k\">(</span>v<span class=\"k\">)</span> <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>L<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>v<span class=\"k\">))</span> <span class=\"k\">{</span>","                <span class=\"c\">// This {block} has no replace string. Save it for later.</span>","                v <span class=\"k\">=</span> <span class=\"s\">\"~-\"</span> <span class=\"k\">+</span> saved<span class=\"k\">.</span>length <span class=\"k\">+</span> <span class=\"s\">\"-~\"</span><span class=\"k\">;</span>","                saved<span class=\"k\">[</span>saved<span class=\"k\">.</span>length<span class=\"k\">]</span> <span class=\"k\">=</span> token<span class=\"k\">;</span>","","                <span class=\"c\">// break;</span>","            <span class=\"k\">}</span>","","            s <span class=\"k\">=</span> s<span class=\"k\">.</span>substring<span class=\"k\">(</span><span class=\"s\">0</span><span class=\"k\">,</span> i<span class=\"k\">)</span> <span class=\"k\">+</span> v <span class=\"k\">+</span> s<span class=\"k\">.</span>substring<span class=\"k\">(</span>j <span class=\"k\">+</span> <span class=\"s\">1</span><span class=\"k\">);</span>","","","        <span class=\"k\">}</span>","","        <span class=\"c\">// restore saved {block}s</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span>saved<span class=\"k\">.</span>length<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">;</span> i<span class=\"k\">&gt;=</span><span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">-</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","            s <span class=\"k\">=</span> s<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"k\">new</span> RegExp<span class=\"k\">(</span><span class=\"s\">\"~-\"</span> <span class=\"k\">+</span> i <span class=\"k\">+</span> <span class=\"s\">\"-~\"</span><span class=\"k\">),</span> <span class=\"s\">\"{\"</span>  <span class=\"k\">+</span> saved<span class=\"k\">[</span>i<span class=\"k\">]</span> <span class=\"k\">+</span> <span class=\"s\">\"}\"</span><span class=\"k\">,</span> <span class=\"s\">\"g\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">return</span> s<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns a string without any leading or trailing whitespace.  If </span>","<span class=\"c\">     * the input is not a string, the input will be returned untouched.</span>","<span class=\"c\">     * @method trim</span>","<span class=\"c\">     * @since 2.3.0</span>","<span class=\"c\">     * @param s {string} the string to trim</span>","<span class=\"c\">     * @return {string} the trimmed string</span>","<span class=\"c\">     */</span>","    trim<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>s<span class=\"k\">)</span><span class=\"k\">{</span>","        <span class=\"k\">try</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> s<span class=\"k\">.</span>replace<span class=\"k\">(</span><span class=\"s\">/^\\s+|\\s+$/g</span><span class=\"k\">,</span> <span class=\"s\">\"\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span> <span class=\"k\">catch</span><span class=\"k\">(</span>e<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">return</span> s<span class=\"k\">;</span>","        <span class=\"k\">}</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Returns a new object containing all of the properties of</span>","<span class=\"c\">     * all the supplied objects.  The properties from later objects</span>","<span class=\"c\">     * will overwrite those in earlier objects.</span>","<span class=\"c\">     * @method merge</span>","<span class=\"c\">     * @since 2.3.0</span>","<span class=\"c\">     * @param arguments {Object*} the objects to merge</span>","<span class=\"c\">     * @return the new merged object</span>","<span class=\"c\">     */</span>","    merge<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","        <span class=\"k\">var</span> o<span class=\"k\">=</span><span class=\"k\">{}</span><span class=\"k\">,</span> a<span class=\"k\">=</span>arguments<span class=\"k\">,</span> l<span class=\"k\">=</span>a<span class=\"k\">.</span>length<span class=\"k\">,</span> i<span class=\"k\">;</span>","        <span class=\"k\">for</span> <span class=\"k\">(</span>i<span class=\"k\">=</span><span class=\"s\">0</span><span class=\"k\">;</span> i<span class=\"k\">&lt;</span>l<span class=\"k\">;</span> i<span class=\"k\">=</span>i<span class=\"k\">+</span><span class=\"s\">1</span><span class=\"k\">)</span> <span class=\"k\">{</span>","            L<span class=\"k\">.</span>augmentObject<span class=\"k\">(</span>o<span class=\"k\">,</span> a<span class=\"k\">[</span>i<span class=\"k\">],</span> <span class=\"k\">true</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","        <span class=\"k\">return</span> o<span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","","    <span class=\"c\">/**</span>","<span class=\"c\">     * Executes the supplied function in the context of the supplied </span>","<span class=\"c\">     * object 'when' milliseconds later.  Executes the function a </span>","<span class=\"c\">     * single time unless periodic is set to true.</span>","<span class=\"c\">     * @method later</span>","<span class=\"c\">     * @since 2.4.0</span>","<span class=\"c\">     * @param when {int} the number of milliseconds to wait until the fn </span>","<span class=\"c\">     * is executed</span>","<span class=\"c\">     * @param o the context object</span>","<span class=\"c\">     * @param fn {Function|String} the function to execute or the name of </span>","<span class=\"c\">     * the method in the 'o' object to execute</span>","<span class=\"c\">     * @param data [Array] data that is provided to the function.  This accepts</span>","<span class=\"c\">     * either a single item or an array.  If an array is provided, the</span>","<span class=\"c\">     * function is executed with one parameter for each array item.  If</span>","<span class=\"c\">     * you need to pass a single array parameter, it needs to be wrapped in</span>","<span class=\"c\">     * an array [myarray]</span>","<span class=\"c\">     * @param periodic {boolean} if true, executes continuously at supplied </span>","<span class=\"c\">     * interval until canceled</span>","<span class=\"c\">     * @return a timer object. Call the cancel() method on this object to </span>","<span class=\"c\">     * stop the timer.</span>","<span class=\"c\">     */</span>","    later<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>when<span class=\"k\">,</span> o<span class=\"k\">,</span> fn<span class=\"k\">,</span> data<span class=\"k\">,</span> periodic<span class=\"k\">)</span> <span class=\"k\">{</span>","        when <span class=\"k\">=</span> when <span class=\"k\">||</span> <span class=\"s\">0</span><span class=\"k\">;</span> ","        o <span class=\"k\">=</span> o <span class=\"k\">||</span> <span class=\"k\">{}</span><span class=\"k\">;</span>","        <span class=\"k\">var</span> m<span class=\"k\">=</span>fn<span class=\"k\">,</span> d<span class=\"k\">=</span>data<span class=\"k\">,</span> f<span class=\"k\">,</span> r<span class=\"k\">;</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isString<span class=\"k\">(</span>fn<span class=\"k\">))</span> <span class=\"k\">{</span>","            m <span class=\"k\">=</span> o<span class=\"k\">[</span>fn<span class=\"k\">];</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">if</span> <span class=\"k\">(!</span>m<span class=\"k\">)</span> <span class=\"k\">{</span>","            <span class=\"k\">throw</span> <span class=\"k\">new</span> TypeError<span class=\"k\">(</span><span class=\"s\">\"method undefined\"</span><span class=\"k\">);</span>","        <span class=\"k\">}</span>","","        <span class=\"k\">if</span> <span class=\"k\">(</span>d <span class=\"k\">&amp;&amp;</span> <span class=\"k\">!</span>L<span class=\"k\">.</span>isArray<span class=\"k\">(</span>d<span class=\"k\">))</span> <span class=\"k\">{</span>","            d <span class=\"k\">=</span> <span class=\"k\">[</span>data<span class=\"k\">];</span>","        <span class=\"k\">}</span>","","        f <span class=\"k\">=</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","            m<span class=\"k\">.</span>apply<span class=\"k\">(</span>o<span class=\"k\">,</span> d <span class=\"k\">||</span> NOTHING<span class=\"k\">);</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","","        r <span class=\"k\">=</span> <span class=\"k\">(</span>periodic<span class=\"k\">)</span> <span class=\"k\">?</span> setInterval<span class=\"k\">(</span>f<span class=\"k\">,</span> when<span class=\"k\">)</span> <span class=\"k\">:</span> setTimeout<span class=\"k\">(</span>f<span class=\"k\">,</span> when<span class=\"k\">);</span>","","        <span class=\"k\">return</span> <span class=\"k\">{</span>","            interval<span class=\"k\">:</span> periodic<span class=\"k\">,</span>","            cancel<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">()</span> <span class=\"k\">{</span>","                <span class=\"k\">if</span> <span class=\"k\">(</span><span class=\"k\">this</span><span class=\"k\">.</span>interval<span class=\"k\">)</span> <span class=\"k\">{</span>","                    clearInterval<span class=\"k\">(</span>r<span class=\"k\">);</span>","                <span class=\"k\">}</span> <span class=\"k\">else</span> <span class=\"k\">{</span>","                    clearTimeout<span class=\"k\">(</span>r<span class=\"k\">);</span>","                <span class=\"k\">}</span>","            <span class=\"k\">}</span>","        <span class=\"k\">}</span><span class=\"k\">;</span>","    <span class=\"k\">}</span><span class=\"k\">,</span>","    ","    <span class=\"c\">/**</span>","<span class=\"c\">     * A convenience method for detecting a legitimate non-null value.</span>","<span class=\"c\">     * Returns false for null/undefined/NaN, true for other values, </span>","<span class=\"c\">     * including 0/false/''</span>","<span class=\"c\">     * @method isValue</span>","<span class=\"c\">     * @since 2.3.0</span>","<span class=\"c\">     * @param o {any} the item to test</span>","<span class=\"c\">     * @return {boolean} true if it is not null/undefined/NaN || false</span>","<span class=\"c\">     */</span>","    isValue<span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"c\">// return (o || o === false || o === 0 || o === ''); // Infinity fails</span>","<span class=\"k\">return</span> <span class=\"k\">(</span>L<span class=\"k\">.</span>isObject<span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">||</span> L<span class=\"k\">.</span>isString<span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">||</span> L<span class=\"k\">.</span>isNumber<span class=\"k\">(</span>o<span class=\"k\">)</span> <span class=\"k\">||</span> L<span class=\"k\">.</span>isBoolean<span class=\"k\">(</span>o<span class=\"k\">));</span>","    <span class=\"k\">}</span>","","<span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * Determines whether or not the property was added</span>","<span class=\"c\"> * to the object instance.  Returns false if the property is not present</span>","<span class=\"c\"> * in the object, or was inherited from the prototype.</span>","<span class=\"c\"> * This abstraction is provided to enable hasOwnProperty for Safari 1.3.x.</span>","<span class=\"c\"> * There is a discrepancy between YAHOO.lang.hasOwnProperty and</span>","<span class=\"c\"> * Object.prototype.hasOwnProperty when the property is a primitive added to</span>","<span class=\"c\"> * both the instance AND prototype with the same value:</span>","<span class=\"c\"> * &lt;pre&gt;</span>","<span class=\"c\"> * var A = function() {};</span>","<span class=\"c\"> * A.prototype.foo = 'foo';</span>","<span class=\"c\"> * var a = new A();</span>","<span class=\"c\"> * a.foo = 'foo';</span>","<span class=\"c\"> * alert(a.hasOwnProperty('foo')); // true</span>","<span class=\"c\"> * alert(YAHOO.lang.hasOwnProperty(a, 'foo')); // false when using fallback</span>","<span class=\"c\"> * &lt;/pre&gt;</span>","<span class=\"c\"> * @method hasOwnProperty</span>","<span class=\"c\"> * @param {any} o The object being testing</span>","<span class=\"c\"> * @param prop {string} the name of the property to test</span>","<span class=\"c\"> * @return {boolean} the result</span>","<span class=\"c\"> */</span>","L<span class=\"k\">.</span>hasOwnProperty <span class=\"k\">=</span> <span class=\"k\">(</span>OP<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">)</span> <span class=\"k\">?</span>","    <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">,</span> prop<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> o <span class=\"k\">&amp;&amp;</span> o<span class=\"k\">.</span>hasOwnProperty<span class=\"k\">(</span>prop<span class=\"k\">);</span>","    <span class=\"k\">}</span> <span class=\"k\">:</span> <span class=\"k\">function</span><span class=\"k\">(</span>o<span class=\"k\">,</span> prop<span class=\"k\">)</span> <span class=\"k\">{</span>","        <span class=\"k\">return</span> <span class=\"k\">!</span>L<span class=\"k\">.</span>isUndefined<span class=\"k\">(</span>o<span class=\"k\">[</span>prop<span class=\"k\">])</span> <span class=\"k\">&amp;&amp;</span> ","                o<span class=\"k\">.</span>constructor<span class=\"k\">.</span>prototype<span class=\"k\">[</span>prop<span class=\"k\">]</span> <span class=\"k\">!==</span> o<span class=\"k\">[</span>prop<span class=\"k\">];</span>","    <span class=\"k\">}</span><span class=\"k\">;</span>","","<span class=\"c\">// new lang wins</span>","OB<span class=\"k\">.</span>augmentObject<span class=\"k\">(</span>L<span class=\"k\">,</span> OB<span class=\"k\">,</span> <span class=\"k\">true</span><span class=\"k\">);</span>","","<span class=\"c\">/*</span>","<span class=\"c\"> * An alias for &lt;a href=\"YAHOO.lang.html\"&gt;YAHOO.lang&lt;/a&gt;</span>","<span class=\"c\"> * @class YAHOO.util.Lang</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>util<span class=\"k\">.</span>Lang <span class=\"k\">=</span> L<span class=\"k\">;</span>"," ","<span class=\"c\">/**</span>","<span class=\"c\"> * Same as YAHOO.lang.augmentObject, except it only applies prototype </span>","<span class=\"c\"> * properties.  This is an alias for augmentProto.</span>","<span class=\"c\"> * @see YAHOO.lang.augmentObject</span>","<span class=\"c\"> * @method augment</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @param {Function} r  the object to receive the augmentation</span>","<span class=\"c\"> * @param {Function} s  the object that supplies the properties to augment</span>","<span class=\"c\"> * @param {String*|boolean}  arguments zero or more properties methods to </span>","<span class=\"c\"> *        augment the receiver with.  If none specified, everything</span>","<span class=\"c\"> *        in the supplier will be used unless it would</span>","<span class=\"c\"> *        overwrite an existing property in the receiver.  if true</span>","<span class=\"c\"> *        is specified as the third parameter, all properties will</span>","<span class=\"c\"> *        be applied and will overwrite an existing property in</span>","<span class=\"c\"> *        the receiver</span>","<span class=\"c\"> */</span>","L<span class=\"k\">.</span>augment <span class=\"k\">=</span> L<span class=\"k\">.</span>augmentProto<span class=\"k\">;</span>","","<span class=\"c\">/**</span>","<span class=\"c\"> * An alias for &lt;a href=\"YAHOO.lang.html#augment\"&gt;YAHOO.lang.augment&lt;/a&gt;</span>","<span class=\"c\"> * @for YAHOO</span>","<span class=\"c\"> * @method augment</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @param {Function} r  the object to receive the augmentation</span>","<span class=\"c\"> * @param {Function} s  the object that supplies the properties to augment</span>","<span class=\"c\"> * @param {String*}  arguments zero or more properties methods to </span>","<span class=\"c\"> *        augment the receiver with.  If none specified, everything</span>","<span class=\"c\"> *        in the supplier will be used unless it would</span>","<span class=\"c\"> *        overwrite an existing property in the receiver</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>augment <span class=\"k\">=</span> L<span class=\"k\">.</span>augmentProto<span class=\"k\">;</span>","       ","<span class=\"c\">/**</span>","<span class=\"c\"> * An alias for &lt;a href=\"YAHOO.lang.html#extend\"&gt;YAHOO.lang.extend&lt;/a&gt;</span>","<span class=\"c\"> * @method extend</span>","<span class=\"c\"> * @static</span>","<span class=\"c\"> * @param {Function} subc   the object to modify</span>","<span class=\"c\"> * @param {Function} superc the object to inherit</span>","<span class=\"c\"> * @param {Object} overrides  additional properties/methods to add to the</span>","<span class=\"c\"> *        subclass prototype.  These will override the</span>","<span class=\"c\"> *        matching items obtained from the superclass if present.</span>","<span class=\"c\"> */</span>","YAHOO<span class=\"k\">.</span>extend <span class=\"k\">=</span> L<span class=\"k\">.</span>extend<span class=\"k\">;</span>","","<span class=\"k\">}</span><span class=\"k\">)();</span>","YAHOO<span class=\"k\">.</span>register<span class=\"k\">(</span><span class=\"s\">\"yahoo\"</span><span class=\"k\">,</span> YAHOO<span class=\"k\">,</span> <span class=\"k\">{</span>version<span class=\"k\">:</span> <span class=\"s\">\"2.8.0r4\"</span><span class=\"k\">,</span> build<span class=\"k\">:</span> <span class=\"s\">\"2449\"</span><span class=\"k\">}</span><span class=\"k\">);</span>"];
_$jscoverage['build/yahoo/yahoo.js'][64]++;
if ((((typeof YAHOO) == "undefined") || (! YAHOO))) {
  _$jscoverage['build/yahoo/yahoo.js'][72]++;
  var YAHOO = {};
}
_$jscoverage['build/yahoo/yahoo.js'][105]++;
YAHOO.namespace = (function () {
  _$jscoverage['build/yahoo/yahoo.js'][106]++;
  var a = arguments, o = null, i, j, d;
  _$jscoverage['build/yahoo/yahoo.js'][107]++;
  for (i = 0; (i < a.length); (i = (i + 1))) {
    _$jscoverage['build/yahoo/yahoo.js'][108]++;
    d = ("" + a[i]).split(".");
    _$jscoverage['build/yahoo/yahoo.js'][109]++;
    o = YAHOO;
    _$jscoverage['build/yahoo/yahoo.js'][112]++;
    for (j = ((d[0] == "YAHOO")? 1: 0); (j < d.length); (j = (j + 1))) {
      _$jscoverage['build/yahoo/yahoo.js'][113]++;
      o[d[j]] = (o[d[j]] || {});
      _$jscoverage['build/yahoo/yahoo.js'][114]++;
      o = o[d[j]];
}
}
  _$jscoverage['build/yahoo/yahoo.js'][118]++;
  return o;
});
_$jscoverage['build/yahoo/yahoo.js'][134]++;
YAHOO.log = (function (msg, cat, src) {
  _$jscoverage['build/yahoo/yahoo.js'][135]++;
  var l = YAHOO.widget.Logger;
  _$jscoverage['build/yahoo/yahoo.js'][136]++;
  if ((l && l.log)) {
    _$jscoverage['build/yahoo/yahoo.js'][137]++;
    return l.log(msg, cat, src);
  }
  else {
    _$jscoverage['build/yahoo/yahoo.js'][139]++;
    return false;
  }
});
_$jscoverage['build/yahoo/yahoo.js'][157]++;
YAHOO.register = (function (name, mainClass, data) {
  _$jscoverage['build/yahoo/yahoo.js'][158]++;
  var mods = YAHOO.env.modules, m, v, b, ls, i;
  _$jscoverage['build/yahoo/yahoo.js'][160]++;
  if ((! mods[name])) {
    _$jscoverage['build/yahoo/yahoo.js'][161]++;
    mods[name] = {versions: [], builds: []};
  }
  _$jscoverage['build/yahoo/yahoo.js'][167]++;
  m = mods[name];
  _$jscoverage['build/yahoo/yahoo.js'][168]++;
  v = data.version;
  _$jscoverage['build/yahoo/yahoo.js'][169]++;
  b = data.build;
  _$jscoverage['build/yahoo/yahoo.js'][170]++;
  ls = YAHOO.env.listeners;
  _$jscoverage['build/yahoo/yahoo.js'][172]++;
  m.name = name;
  _$jscoverage['build/yahoo/yahoo.js'][173]++;
  m.version = v;
  _$jscoverage['build/yahoo/yahoo.js'][174]++;
  m.build = b;
  _$jscoverage['build/yahoo/yahoo.js'][175]++;
  m.versions.push(v);
  _$jscoverage['build/yahoo/yahoo.js'][176]++;
  m.builds.push(b);
  _$jscoverage['build/yahoo/yahoo.js'][177]++;
  m.mainClass = mainClass;
  _$jscoverage['build/yahoo/yahoo.js'][180]++;
  for (i = 0; (i < ls.length); (i = (i + 1))) {
    _$jscoverage['build/yahoo/yahoo.js'][181]++;
    (ls[i])(m);
}
  _$jscoverage['build/yahoo/yahoo.js'][184]++;
  if (mainClass) {
    _$jscoverage['build/yahoo/yahoo.js'][185]++;
    mainClass.VERSION = v;
    _$jscoverage['build/yahoo/yahoo.js'][186]++;
    mainClass.BUILD = b;
  }
  else {
    _$jscoverage['build/yahoo/yahoo.js'][188]++;
    YAHOO.log(("mainClass is undefined for module " + name), "warn");
  }
});
_$jscoverage['build/yahoo/yahoo.js'][198]++;
YAHOO.env = (YAHOO.env || {modules: [], listeners: []});
_$jscoverage['build/yahoo/yahoo.js'][236]++;
YAHOO.env.getVersion = (function (name) {
  _$jscoverage['build/yahoo/yahoo.js'][237]++;
  return (YAHOO.env.modules[name] || null);
});
_$jscoverage['build/yahoo/yahoo.js'][252]++;
YAHOO.env.ua = (function () {
  _$jscoverage['build/yahoo/yahoo.js'][254]++;
  var numberfy = (function (s) {
  _$jscoverage['build/yahoo/yahoo.js'][255]++;
  var c = 0;
  _$jscoverage['build/yahoo/yahoo.js'][256]++;
  return parseFloat(s.replace(/\./g, (function () {
  _$jscoverage['build/yahoo/yahoo.js'][257]++;
  return (((c++) == 1)? "": ".");
})));
}), nav = navigator, o = {ie: 0, opera: 0, gecko: 0, webkit: 0, mobile: null, air: 0, caja: nav.cajaVersion, secure: false, os: null}, ua = (navigator && navigator.userAgent), loc = (window && window.location), href = (loc && loc.href), m;
  _$jscoverage['build/yahoo/yahoo.js'][375]++;
  o.secure = (href && (href.toLowerCase().indexOf("https") === 0));
  _$jscoverage['build/yahoo/yahoo.js'][377]++;
  if (ua) {
    _$jscoverage['build/yahoo/yahoo.js'][379]++;
    if (/windows|win32/i.test(ua)) {
      _$jscoverage['build/yahoo/yahoo.js'][380]++;
      o.os = "windows";
    }
    else {
      _$jscoverage['build/yahoo/yahoo.js'][381]++;
      if (/macintosh/i.test(ua)) {
        _$jscoverage['build/yahoo/yahoo.js'][382]++;
        o.os = "macintosh";
      }
    }
    _$jscoverage['build/yahoo/yahoo.js'][386]++;
    if (/KHTML/.test(ua)) {
      _$jscoverage['build/yahoo/yahoo.js'][387]++;
      o.webkit = 1;
    }
    _$jscoverage['build/yahoo/yahoo.js'][391]++;
    m = ua.match(/AppleWebKit\/([^\s]*)/);
    _$jscoverage['build/yahoo/yahoo.js'][392]++;
    if ((m && m[1])) {
      _$jscoverage['build/yahoo/yahoo.js'][393]++;
      o.webkit = numberfy(m[1]);
      _$jscoverage['build/yahoo/yahoo.js'][396]++;
      if (/ Mobile\//.test(ua)) {
        _$jscoverage['build/yahoo/yahoo.js'][397]++;
        o.mobile = "Apple";
      }
      else {
        _$jscoverage['build/yahoo/yahoo.js'][399]++;
        m = ua.match(/NokiaN[^\/]*/);
        _$jscoverage['build/yahoo/yahoo.js'][400]++;
        if (m) {
          _$jscoverage['build/yahoo/yahoo.js'][401]++;
          o.mobile = m[0];
        }
      }
      _$jscoverage['build/yahoo/yahoo.js'][405]++;
      m = ua.match(/AdobeAIR\/([^\s]*)/);
      _$jscoverage['build/yahoo/yahoo.js'][406]++;
      if (m) {
        _$jscoverage['build/yahoo/yahoo.js'][407]++;
        o.air = m[0];
      }
    }
    _$jscoverage['build/yahoo/yahoo.js'][412]++;
    if ((! o.webkit)) {
      _$jscoverage['build/yahoo/yahoo.js'][414]++;
      m = ua.match(/Opera[\s\/]([^\s]*)/);
      _$jscoverage['build/yahoo/yahoo.js'][415]++;
      if ((m && m[1])) {
        _$jscoverage['build/yahoo/yahoo.js'][416]++;
        o.opera = numberfy(m[1]);
        _$jscoverage['build/yahoo/yahoo.js'][417]++;
        m = ua.match(/Opera Mini[^;]*/);
        _$jscoverage['build/yahoo/yahoo.js'][418]++;
        if (m) {
          _$jscoverage['build/yahoo/yahoo.js'][419]++;
          o.mobile = m[0];
        }
      }
      else {
        _$jscoverage['build/yahoo/yahoo.js'][422]++;
        m = ua.match(/MSIE\s([^;]*)/);
        _$jscoverage['build/yahoo/yahoo.js'][423]++;
        if ((m && m[1])) {
          _$jscoverage['build/yahoo/yahoo.js'][424]++;
          o.ie = numberfy(m[1]);
        }
        else {
          _$jscoverage['build/yahoo/yahoo.js'][426]++;
          m = ua.match(/Gecko\/([^\s]*)/);
          _$jscoverage['build/yahoo/yahoo.js'][427]++;
          if (m) {
            _$jscoverage['build/yahoo/yahoo.js'][428]++;
            o.gecko = 1;
            _$jscoverage['build/yahoo/yahoo.js'][429]++;
            m = ua.match(/rv:([^\s\)]*)/);
            _$jscoverage['build/yahoo/yahoo.js'][430]++;
            if ((m && m[1])) {
              _$jscoverage['build/yahoo/yahoo.js'][431]++;
              o.gecko = numberfy(m[1]);
            }
          }
        }
      }
    }
  }
  _$jscoverage['build/yahoo/yahoo.js'][439]++;
  return o;
})();
_$jscoverage['build/yahoo/yahoo.js'][450]++;
(function () {
  _$jscoverage['build/yahoo/yahoo.js'][451]++;
  YAHOO.namespace("util", "widget", "example");
  _$jscoverage['build/yahoo/yahoo.js'][453]++;
  if (("undefined" !== (typeof YAHOO_config))) {
    _$jscoverage['build/yahoo/yahoo.js'][454]++;
    var l = YAHOO_config.listener, ls = YAHOO.env.listeners, unique = true, i;
    _$jscoverage['build/yahoo/yahoo.js'][455]++;
    if (l) {
      _$jscoverage['build/yahoo/yahoo.js'][459]++;
      for (i = 0; (i < ls.length); (i++)) {
        _$jscoverage['build/yahoo/yahoo.js'][460]++;
        if ((ls[i] == l)) {
          _$jscoverage['build/yahoo/yahoo.js'][461]++;
          unique = false;
          _$jscoverage['build/yahoo/yahoo.js'][462]++;
          break;
        }
}
      _$jscoverage['build/yahoo/yahoo.js'][466]++;
      if (unique) {
        _$jscoverage['build/yahoo/yahoo.js'][467]++;
        ls.push(l);
      }
    }
  }
})();
_$jscoverage['build/yahoo/yahoo.js'][476]++;
YAHOO.lang = (YAHOO.lang || {});
_$jscoverage['build/yahoo/yahoo.js'][478]++;
(function () {
  _$jscoverage['build/yahoo/yahoo.js'][481]++;
  var L = YAHOO.lang, OP = Object.prototype, ARRAY_TOSTRING = "[object Array]", FUNCTION_TOSTRING = "[object Function]", OBJECT_TOSTRING = "[object Object]", NOTHING = [], ADD = ["toString", "valueOf"], OB = {isArray: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][501]++;
  return (OP.toString.apply(o) === ARRAY_TOSTRING);
}), isBoolean: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][511]++;
  return ((typeof o) === "boolean");
}), isFunction: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][532]++;
  return (((typeof o) === "function") || (OP.toString.apply(o) === FUNCTION_TOSTRING));
}), isNull: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][542]++;
  return (o === null);
}), isNumber: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][552]++;
  return (((typeof o) === "number") && isFinite(o));
}), isObject: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][563]++;
  return ((o && (((typeof o) === "object") || L.isFunction(o))) || false);
}), isString: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][573]++;
  return ((typeof o) === "string");
}), isUndefined: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][583]++;
  return ((typeof o) === "undefined");
}), _IEEnumFix: (YAHOO.env.ua.ie? (function (r, s) {
  _$jscoverage['build/yahoo/yahoo.js'][598]++;
  var i, fname, f;
  _$jscoverage['build/yahoo/yahoo.js'][599]++;
  for (i = 0; (i < ADD.length); (i = (i + 1))) {
    _$jscoverage['build/yahoo/yahoo.js'][601]++;
    fname = ADD[i];
    _$jscoverage['build/yahoo/yahoo.js'][602]++;
    f = s[fname];
    _$jscoverage['build/yahoo/yahoo.js'][604]++;
    if ((L.isFunction(f) && (f != OP[fname]))) {
      _$jscoverage['build/yahoo/yahoo.js'][605]++;
      r[fname] = f;
    }
}
}): (function () {
})), extend: (function (subc, superc, overrides) {
  _$jscoverage['build/yahoo/yahoo.js'][625]++;
  if (((! superc) || (! subc))) {
    _$jscoverage['build/yahoo/yahoo.js'][626]++;
    throw new Error("extend failed, please check that all dependencies are included.");
  }
  _$jscoverage['build/yahoo/yahoo.js'][629]++;
  var F = (function () {
}), i;
  _$jscoverage['build/yahoo/yahoo.js'][630]++;
  F.prototype = superc.prototype;
  _$jscoverage['build/yahoo/yahoo.js'][631]++;
  subc.prototype = new F();
  _$jscoverage['build/yahoo/yahoo.js'][632]++;
  subc.prototype.constructor = subc;
  _$jscoverage['build/yahoo/yahoo.js'][633]++;
  subc.superclass = superc.prototype;
  _$jscoverage['build/yahoo/yahoo.js'][634]++;
  if ((superc.prototype.constructor == OP.constructor)) {
    _$jscoverage['build/yahoo/yahoo.js'][635]++;
    superc.prototype.constructor = superc;
  }
  _$jscoverage['build/yahoo/yahoo.js'][638]++;
  if (overrides) {
    _$jscoverage['build/yahoo/yahoo.js'][639]++;
    for (i in overrides) {
      _$jscoverage['build/yahoo/yahoo.js'][640]++;
      if (L.hasOwnProperty(overrides, i)) {
        _$jscoverage['build/yahoo/yahoo.js'][641]++;
        subc.prototype[i] = overrides[i];
      }
}
    _$jscoverage['build/yahoo/yahoo.js'][645]++;
    L._IEEnumFix(subc.prototype, overrides);
  }
}), augmentObject: (function (r, s) {
  _$jscoverage['build/yahoo/yahoo.js'][672]++;
  if (((! s) || (! r))) {
    _$jscoverage['build/yahoo/yahoo.js'][673]++;
    throw new Error("Absorb failed, verify dependencies.");
  }
  _$jscoverage['build/yahoo/yahoo.js'][675]++;
  var a = arguments, i, p, overrideList = a[2];
  _$jscoverage['build/yahoo/yahoo.js'][676]++;
  if ((overrideList && (overrideList !== true))) {
    _$jscoverage['build/yahoo/yahoo.js'][677]++;
    for (i = 2; (i < a.length); (i = (i + 1))) {
      _$jscoverage['build/yahoo/yahoo.js'][678]++;
      r[a[i]] = s[a[i]];
}
  }
  else {
    _$jscoverage['build/yahoo/yahoo.js'][681]++;
    for (p in s) {
      _$jscoverage['build/yahoo/yahoo.js'][682]++;
      if ((overrideList || (! (p in r)))) {
        _$jscoverage['build/yahoo/yahoo.js'][683]++;
        r[p] = s[p];
      }
}
    _$jscoverage['build/yahoo/yahoo.js'][687]++;
    L._IEEnumFix(r, s);
  }
}), augmentProto: (function (r, s) {
  _$jscoverage['build/yahoo/yahoo.js'][706]++;
  if (((! s) || (! r))) {
    _$jscoverage['build/yahoo/yahoo.js'][707]++;
    throw new Error("Augment failed, verify dependencies.");
  }
  _$jscoverage['build/yahoo/yahoo.js'][710]++;
  var a = [r.prototype, s.prototype], i;
  _$jscoverage['build/yahoo/yahoo.js'][711]++;
  for (i = 2; (i < arguments.length); (i = (i + 1))) {
    _$jscoverage['build/yahoo/yahoo.js'][712]++;
    a.push(arguments[i]);
}
  _$jscoverage['build/yahoo/yahoo.js'][714]++;
  L.augmentObject.apply(this, a);
}), dump: (function (o, d) {
  _$jscoverage['build/yahoo/yahoo.js'][730]++;
  var i, len, s = [], OBJ = "{...}", FUN = "f(){...}", COMMA = ", ", ARROW = " => ";
  _$jscoverage['build/yahoo/yahoo.js'][737]++;
  if ((! L.isObject(o))) {
    _$jscoverage['build/yahoo/yahoo.js'][738]++;
    return (o + "");
  }
  else {
    _$jscoverage['build/yahoo/yahoo.js'][739]++;
    if (((o instanceof Date) || (("nodeType" in o) && ("tagName" in o)))) {
      _$jscoverage['build/yahoo/yahoo.js'][740]++;
      return o;
    }
    else {
      _$jscoverage['build/yahoo/yahoo.js'][741]++;
      if (L.isFunction(o)) {
        _$jscoverage['build/yahoo/yahoo.js'][742]++;
        return FUN;
      }
    }
  }
  _$jscoverage['build/yahoo/yahoo.js'][746]++;
  d = (L.isNumber(d)? d: 3);
  _$jscoverage['build/yahoo/yahoo.js'][749]++;
  if (L.isArray(o)) {
    _$jscoverage['build/yahoo/yahoo.js'][750]++;
    s.push("[");
    _$jscoverage['build/yahoo/yahoo.js'][751]++;
    for (((i = 0), (len = o.length)); (i < len); (i = (i + 1))) {
      _$jscoverage['build/yahoo/yahoo.js'][752]++;
      if (L.isObject(o[i])) {
        _$jscoverage['build/yahoo/yahoo.js'][753]++;
        s.push(((d > 0)? L.dump(o[i], (d - 1)): OBJ));
      }
      else {
        _$jscoverage['build/yahoo/yahoo.js'][755]++;
        s.push(o[i]);
      }
      _$jscoverage['build/yahoo/yahoo.js'][757]++;
      s.push(COMMA);
}
    _$jscoverage['build/yahoo/yahoo.js'][759]++;
    if ((s.length > 1)) {
      _$jscoverage['build/yahoo/yahoo.js'][760]++;
      s.pop();
    }
    _$jscoverage['build/yahoo/yahoo.js'][762]++;
    s.push("]");
  }
  else {
    _$jscoverage['build/yahoo/yahoo.js'][765]++;
    s.push("{");
    _$jscoverage['build/yahoo/yahoo.js'][766]++;
    for (i in o) {
      _$jscoverage['build/yahoo/yahoo.js'][767]++;
      if (L.hasOwnProperty(o, i)) {
        _$jscoverage['build/yahoo/yahoo.js'][768]++;
        s.push((i + ARROW));
        _$jscoverage['build/yahoo/yahoo.js'][769]++;
        if (L.isObject(o[i])) {
          _$jscoverage['build/yahoo/yahoo.js'][770]++;
          s.push(((d > 0)? L.dump(o[i], (d - 1)): OBJ));
        }
        else {
          _$jscoverage['build/yahoo/yahoo.js'][772]++;
          s.push(o[i]);
        }
        _$jscoverage['build/yahoo/yahoo.js'][774]++;
        s.push(COMMA);
      }
}
    _$jscoverage['build/yahoo/yahoo.js'][777]++;
    if ((s.length > 1)) {
      _$jscoverage['build/yahoo/yahoo.js'][778]++;
      s.pop();
    }
    _$jscoverage['build/yahoo/yahoo.js'][780]++;
    s.push("}");
  }
  _$jscoverage['build/yahoo/yahoo.js'][783]++;
  return s.join("");
}), substitute: (function (s, o, f) {
  _$jscoverage['build/yahoo/yahoo.js'][810]++;
  var i, j, k, key, v, meta, saved = [], token, DUMP = "dump", SPACE = " ", LBRACE = "{", RBRACE = "}", dump, objstr;
  _$jscoverage['build/yahoo/yahoo.js'][815]++;
  for (;;) {
    _$jscoverage['build/yahoo/yahoo.js'][816]++;
    i = s.lastIndexOf(LBRACE);
    _$jscoverage['build/yahoo/yahoo.js'][817]++;
    if ((i < 0)) {
      _$jscoverage['build/yahoo/yahoo.js'][818]++;
      break;
    }
    _$jscoverage['build/yahoo/yahoo.js'][820]++;
    j = s.indexOf(RBRACE, i);
    _$jscoverage['build/yahoo/yahoo.js'][821]++;
    if (((i + 1) >= j)) {
      _$jscoverage['build/yahoo/yahoo.js'][822]++;
      break;
    }
    _$jscoverage['build/yahoo/yahoo.js'][826]++;
    token = s.substring((i + 1), j);
    _$jscoverage['build/yahoo/yahoo.js'][827]++;
    key = token;
    _$jscoverage['build/yahoo/yahoo.js'][828]++;
    meta = null;
    _$jscoverage['build/yahoo/yahoo.js'][829]++;
    k = key.indexOf(SPACE);
    _$jscoverage['build/yahoo/yahoo.js'][830]++;
    if ((k > -1)) {
      _$jscoverage['build/yahoo/yahoo.js'][831]++;
      meta = key.substring((k + 1));
      _$jscoverage['build/yahoo/yahoo.js'][832]++;
      key = key.substring(0, k);
    }
    _$jscoverage['build/yahoo/yahoo.js'][836]++;
    v = o[key];
    _$jscoverage['build/yahoo/yahoo.js'][839]++;
    if (f) {
      _$jscoverage['build/yahoo/yahoo.js'][840]++;
      v = f(key, v, meta);
    }
    _$jscoverage['build/yahoo/yahoo.js'][843]++;
    if (L.isObject(v)) {
      _$jscoverage['build/yahoo/yahoo.js'][844]++;
      if (L.isArray(v)) {
        _$jscoverage['build/yahoo/yahoo.js'][845]++;
        v = L.dump(v, parseInt(meta, 10));
      }
      else {
        _$jscoverage['build/yahoo/yahoo.js'][847]++;
        meta = (meta || "");
        _$jscoverage['build/yahoo/yahoo.js'][850]++;
        dump = meta.indexOf(DUMP);
        _$jscoverage['build/yahoo/yahoo.js'][851]++;
        if ((dump > -1)) {
          _$jscoverage['build/yahoo/yahoo.js'][852]++;
          meta = meta.substring(4);
        }
        _$jscoverage['build/yahoo/yahoo.js'][855]++;
        objstr = v.toString();
        _$jscoverage['build/yahoo/yahoo.js'][859]++;
        if (((objstr === OBJECT_TOSTRING) || (dump > -1))) {
          _$jscoverage['build/yahoo/yahoo.js'][860]++;
          v = L.dump(v, parseInt(meta, 10));
        }
        else {
          _$jscoverage['build/yahoo/yahoo.js'][862]++;
          v = objstr;
        }
      }
    }
    else {
      _$jscoverage['build/yahoo/yahoo.js'][865]++;
      if (((! L.isString(v)) && (! L.isNumber(v)))) {
        _$jscoverage['build/yahoo/yahoo.js'][867]++;
        v = ("~-" + saved.length + "-~");
        _$jscoverage['build/yahoo/yahoo.js'][868]++;
        saved[saved.length] = token;
      }
    }
    _$jscoverage['build/yahoo/yahoo.js'][873]++;
    s = (s.substring(0, i) + v + s.substring((j + 1)));
}
  _$jscoverage['build/yahoo/yahoo.js'][879]++;
  for (i = (saved.length - 1); (i >= 0); (i = (i - 1))) {
    _$jscoverage['build/yahoo/yahoo.js'][880]++;
    s = s.replace(new RegExp(("~-" + i + "-~")), ("{" + saved[i] + "}"), "g");
}
  _$jscoverage['build/yahoo/yahoo.js'][883]++;
  return s;
}), trim: (function (s) {
  _$jscoverage['build/yahoo/yahoo.js'][896]++;
  try {
    _$jscoverage['build/yahoo/yahoo.js'][897]++;
    return s.replace(/^\s+|\s+$/g, "");
  }
  catch (e) {
    _$jscoverage['build/yahoo/yahoo.js'][899]++;
    return s;
  }
}), merge: (function () {
  _$jscoverage['build/yahoo/yahoo.js'][913]++;
  var o = {}, a = arguments, l = a.length, i;
  _$jscoverage['build/yahoo/yahoo.js'][914]++;
  for (i = 0; (i < l); (i = (i + 1))) {
    _$jscoverage['build/yahoo/yahoo.js'][915]++;
    L.augmentObject(o, a[i], true);
}
  _$jscoverage['build/yahoo/yahoo.js'][917]++;
  return o;
}), later: (function (when, o, fn, data, periodic) {
  _$jscoverage['build/yahoo/yahoo.js'][942]++;
  when = (when || 0);
  _$jscoverage['build/yahoo/yahoo.js'][943]++;
  o = (o || {});
  _$jscoverage['build/yahoo/yahoo.js'][944]++;
  var m = fn, d = data, f, r;
  _$jscoverage['build/yahoo/yahoo.js'][946]++;
  if (L.isString(fn)) {
    _$jscoverage['build/yahoo/yahoo.js'][947]++;
    m = o[fn];
  }
  _$jscoverage['build/yahoo/yahoo.js'][950]++;
  if ((! m)) {
    _$jscoverage['build/yahoo/yahoo.js'][951]++;
    throw new TypeError("method undefined");
  }
  _$jscoverage['build/yahoo/yahoo.js'][954]++;
  if ((d && (! L.isArray(d)))) {
    _$jscoverage['build/yahoo/yahoo.js'][955]++;
    d = [data];
  }
  _$jscoverage['build/yahoo/yahoo.js'][958]++;
  f = (function () {
  _$jscoverage['build/yahoo/yahoo.js'][959]++;
  m.apply(o, (d || NOTHING));
});
  _$jscoverage['build/yahoo/yahoo.js'][962]++;
  r = (periodic? setInterval(f, when): setTimeout(f, when));
  _$jscoverage['build/yahoo/yahoo.js'][964]++;
  return ({interval: periodic, cancel: (function () {
  _$jscoverage['build/yahoo/yahoo.js'][967]++;
  if (this.interval) {
    _$jscoverage['build/yahoo/yahoo.js'][968]++;
    clearInterval(r);
  }
  else {
    _$jscoverage['build/yahoo/yahoo.js'][970]++;
    clearTimeout(r);
  }
})});
}), isValue: (function (o) {
  _$jscoverage['build/yahoo/yahoo.js'][987]++;
  return (L.isObject(o) || L.isString(o) || L.isNumber(o) || L.isBoolean(o));
})};
  _$jscoverage['build/yahoo/yahoo.js'][1013]++;
  L.hasOwnProperty = (OP.hasOwnProperty? (function (o, prop) {
  _$jscoverage['build/yahoo/yahoo.js'][1015]++;
  return (o && o.hasOwnProperty(prop));
}): (function (o, prop) {
  _$jscoverage['build/yahoo/yahoo.js'][1017]++;
  return ((! L.isUndefined(o[prop])) && (o.constructor.prototype[prop] !== o[prop]));
}));
  _$jscoverage['build/yahoo/yahoo.js'][1022]++;
  OB.augmentObject(L, OB, true);
  _$jscoverage['build/yahoo/yahoo.js'][1028]++;
  YAHOO.util.Lang = L;
  _$jscoverage['build/yahoo/yahoo.js'][1046]++;
  L.augment = L.augmentProto;
  _$jscoverage['build/yahoo/yahoo.js'][1060]++;
  YAHOO.augment = L.augmentProto;
  _$jscoverage['build/yahoo/yahoo.js'][1072]++;
  YAHOO.extend = L.extend;
})();
_$jscoverage['build/yahoo/yahoo.js'][1075]++;
YAHOO.register("yahoo", YAHOO, {version: "2.8.0r4", build: "2449"});

