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

219 lines
18 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>API: yahoo YAHOO.js (YUI Library)</title>
<link rel="stylesheet" type="text/css" href="assets/reset-fonts-grids-min.css">
<link rel="stylesheet" type="text/css" href="assets/api.css">
</head>
<body id="yahoo-com">
<div id="doc3" class="yui-t2">
<div id="hd">
<h1>Yahoo! UI Library</h1>
<h3>YAHOO Global&nbsp;</h3>
<p>
<a href="./index.html">Yahoo! UI Library</a>
&gt; <a href="./module_yahoo.html">yahoo</a>
&gt; YAHOO.js (source view)
</p>
</div>
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<div id="srcout">
<div class="highlight" ><pre><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"> * The YAHOO global namespace object</span>
<span class="c"> * @class YAHOO</span>
<span class="c"> * @static</span>
<span class="c"> */</span>
<span class="k">if</span> <span class="o">(</span><span class="k">typeof</span> <span class="nx">YAHOO</span> <span class="o">==</span> <span class="s2">&quot;undefined&quot;</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">YAHOO</span> <span class="o">=</span> <span class="o">{};</span>
<span class="o">}</span>
<span class="c">/**</span>
<span class="c"> * Returns the namespace specified and creates it if it doesn&#39;t exist</span>
<span class="c"> * &lt;pre&gt;</span>
<span class="c"> * YAHOO.namespace(&quot;property.package&quot;);</span>
<span class="c"> * YAHOO.namespace(&quot;YAHOO.property.package&quot;);</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(&quot;really.long.nested.namespace&quot;);</span>
<span class="c"> * &lt;/pre&gt;</span>
<span class="c"> * This fails because &quot;long&quot; is a future reserved word in ECMAScript</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>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">namespace</span> <span class="o">=</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">a</span><span class="o">=</span><span class="nx">arguments</span><span class="o">,</span> <span class="nx">o</span><span class="o">=</span><span class="kc">null</span><span class="o">,</span> <span class="nx">i</span><span class="o">,</span> <span class="nx">j</span><span class="o">,</span> <span class="nx">d</span><span class="o">;</span>
<span class="k">for</span> <span class="o">(</span><span class="nx">i</span><span class="o">=</span><span class="m">0</span><span class="o">;</span> <span class="nx">i</span><span class="o">&lt;</span><span class="nx">a</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="o">++</span><span class="nx">i</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">d</span><span class="o">=</span><span class="nx">a</span><span class="o">[</span><span class="nx">i</span><span class="o">].</span><span class="nx">split</span><span class="o">(</span><span class="s2">&quot;.&quot;</span><span class="o">);</span>
<span class="nx">o</span><span class="o">=</span><span class="nx">YAHOO</span><span class="o">;</span>
<span class="c">// YAHOO is implied, so it is ignored if it is included</span>
<span class="c"></span> <span class="k">for</span> <span class="o">(</span><span class="nx">j</span><span class="o">=(</span><span class="nx">d</span><span class="o">[</span><span class="m">0</span><span class="o">]</span> <span class="o">==</span> <span class="s2">&quot;YAHOO&quot;</span><span class="o">)</span> <span class="o">?</span> <span class="m">1</span> <span class="o">:</span> <span class="m">0</span><span class="o">;</span> <span class="nx">j</span><span class="o">&lt;</span><span class="nx">d</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="o">++</span><span class="nx">j</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">o</span><span class="o">[</span><span class="nx">d</span><span class="o">[</span><span class="nx">j</span><span class="o">]]=</span><span class="nx">o</span><span class="o">[</span><span class="nx">d</span><span class="o">[</span><span class="nx">j</span><span class="o">]]</span> <span class="o">||</span> <span class="o">{};</span>
<span class="nx">o</span><span class="o">=</span><span class="nx">o</span><span class="o">[</span><span class="nx">d</span><span class="o">[</span><span class="nx">j</span><span class="o">]];</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="k">return</span> <span class="nx">o</span><span class="o">;</span>
<span class="o">};</span>
<span class="c">/**</span>
<span class="c"> * Uses YAHOO.widget.Logger to output a log message, if the widget is 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 &quot;info&quot;, &quot;warn&quot;, &quot;error&quot;, time&quot;.</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>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">msg</span><span class="o">,</span> <span class="nx">cat</span><span class="o">,</span> <span class="nx">src</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">l</span><span class="o">=</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">widget</span><span class="o">.</span><span class="nx">Logger</span><span class="o">;</span>
<span class="k">if</span><span class="o">(</span><span class="nx">l</span> <span class="o">&amp;&amp;</span> <span class="nx">l</span><span class="o">.</span><span class="nx">log</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="nx">l</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="nx">msg</span><span class="o">,</span> <span class="nx">cat</span><span class="o">,</span> <span class="nx">src</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="k">return</span> <span class="kc">false</span><span class="o">;</span>
<span class="o">}</span>
<span class="o">};</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"> *</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 {String[]} 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>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">extend</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">subc</span><span class="o">,</span> <span class="nx">superc</span><span class="o">,</span> <span class="nx">overrides</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">F</span> <span class="o">=</span> <span class="k">function</span><span class="o">()</span> <span class="o">{};</span>
<span class="nx">F</span><span class="o">.</span><span class="nx">prototype</span><span class="o">=</span><span class="nx">superc</span><span class="o">.</span><span class="nx">prototype</span><span class="o">;</span>
<span class="nx">subc</span><span class="o">.</span><span class="nx">prototype</span><span class="o">=</span><span class="k">new</span> <span class="nx">F</span><span class="o">();</span>
<span class="nx">subc</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">constructor</span><span class="o">=</span><span class="nx">subc</span><span class="o">;</span>
<span class="nx">subc</span><span class="o">.</span><span class="nx">superclass</span><span class="o">=</span><span class="nx">superc</span><span class="o">.</span><span class="nx">prototype</span><span class="o">;</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">superc</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">constructor</span> <span class="o">==</span> <span class="nb">Object</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">constructor</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">superc</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">constructor</span><span class="o">=</span><span class="nx">superc</span><span class="o">;</span>
<span class="o">}</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">overrides</span><span class="o">)</span> <span class="o">{</span>
<span class="k">for</span> <span class="o">(</span><span class="k">var</span> <span class="nx">i</span> <span class="k">in</span> <span class="nx">overrides</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">subc</span><span class="o">.</span><span class="nx">prototype</span><span class="o">[</span><span class="nx">i</span><span class="o">]=</span><span class="nx">overrides</span><span class="o">[</span><span class="nx">i</span><span class="o">];</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">};</span>
<span class="c">/**</span>
<span class="c"> * Applies all prototype properties in the supplier to the receiver if the</span>
<span class="c"> * receiver does not have these properties yet. Optionally, one or more</span>
<span class="c"> * methods/properties can be specified (as additional parameters). This</span>
<span class="c"> * option will overwrite the property if receiver has it already.</span>
<span class="c"> *</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 augment the</span>
<span class="c"> * 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>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">augment</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">r</span><span class="o">,</span> <span class="nx">s</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">rp</span><span class="o">=</span><span class="nx">r</span><span class="o">.</span><span class="nx">prototype</span><span class="o">,</span> <span class="nx">sp</span><span class="o">=</span><span class="nx">s</span><span class="o">.</span><span class="nx">prototype</span><span class="o">,</span> <span class="nx">a</span><span class="o">=</span><span class="nx">arguments</span><span class="o">,</span> <span class="nx">i</span><span class="o">,</span> <span class="nx">p</span><span class="o">;</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">a</span><span class="o">[</span><span class="m">2</span><span class="o">])</span> <span class="o">{</span>
<span class="k">for</span> <span class="o">(</span><span class="nx">i</span><span class="o">=</span><span class="m">2</span><span class="o">;</span> <span class="nx">i</span><span class="o">&lt;</span><span class="nx">a</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="o">++</span><span class="nx">i</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">rp</span><span class="o">[</span><span class="nx">a</span><span class="o">[</span><span class="nx">i</span><span class="o">]]</span> <span class="o">=</span> <span class="nx">sp</span><span class="o">[</span><span class="nx">a</span><span class="o">[</span><span class="nx">i</span><span class="o">]];</span>
<span class="o">}</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="k">for</span> <span class="o">(</span><span class="nx">p</span> <span class="k">in</span> <span class="nx">sp</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(!</span><span class="nx">rp</span><span class="o">[</span><span class="nx">p</span><span class="o">])</span> <span class="o">{</span>
<span class="nx">rp</span><span class="o">[</span><span class="nx">p</span><span class="o">]</span> <span class="o">=</span> <span class="nx">sp</span><span class="o">[</span><span class="nx">p</span><span class="o">];</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">};</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">namespace</span><span class="o">(</span><span class="s2">&quot;util&quot;</span><span class="o">,</span> <span class="s2">&quot;widget&quot;</span><span class="o">,</span> <span class="s2">&quot;example&quot;</span><span class="o">);</span>
</pre></div>
</div>
</div>
</div>
<div class="yui-b">
<div class="nav">
<div class="module">
<h4>Modules</h4>
<ul class="content">
<li><a href="module_animation.html">animation</a></li>
<li><a href="module_autocomplete.html">autocomplete</a></li>
<li><a href="module_calendar.html">calendar</a></li>
<li><a href="module_connection.html">connection</a></li>
<li><a href="module_container.html">container</a></li>
<li><a href="module_dom.html">dom</a></li>
<li><a href="module_dragdrop.html">dragdrop</a></li>
<li><a href="module_event.html">event</a></li>
<li><a href="module_logger.html">logger</a></li>
<li><a href="module_menu.html">menu</a></li>
<li><a href="module_slider.html">slider</a></li>
<li><a href="module_tabview.html">tabview</a></li>
<li><a href="module_treeview.html">treeview</a></li>
<li><a href="module_yahoo.html">yahoo</a></li>
</ul>
</div>
<div class="module">
<h4>Classes</h4>
<ul class="content">
<li><a href="YAHOO.html">YAHOO</a></li>
</ul>
</div>
<div class="module">
<h4>Files</h4>
<ul class="content">
<li><a href="YAHOO.js.html">YAHOO.js</a></li>
</ul>
</div>
</div>
</div>
</div>
<div id="ft">
<hr />
Copyright &copy; 2006 Yahoo! Inc. All rights reserved.
</div>
</div>
</body>
</html>