webgui/www/extras/yui/docs/Element.js.html
2008-03-25 16:13:25 +00:00

688 lines
70 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>API: element Element.js (YUI Library)</title>
<link rel="stylesheet" type="text/css" href="assets/api.css">
<script type="text/javascript" src="assets/api-js"></script>
<script type="text/javascript" src="assets/ac-js"></script>
</head>
<body id="yahoo-com">
<div id="doc3" class="yui-t2">
<div id="hd">
<a href="http://developer.yahoo.com/yui/"><h1>Yahoo! UI Library</h1></a>
<h3>element&nbsp; <span class="subtitle">2.5.1</span></h3>
<p>
<a href="./index.html">Yahoo! UI Library</a>
&gt; <a href="./module_element.html">element</a>
&gt; Element.js (source view)
</p>
</div>
<div id="bd">
<div id="yui-main">
<div class="yui-b">
<form name="yui-classopts-form">
<span id="classopts"><input type="checkbox" name="showprivate" id="showprivate" /> Show Private</span>
<span id="classopts"><input type="checkbox" name="showprotected" id="showprotected" /> Show Protected</span>
</form>
<div id="srcout">
<style>
#doc3 #classopts { display:none; }
</style>
<div class="highlight" ><pre><span class="o">(</span><span class="k">function</span><span class="o">()</span> <span class="o">{</span>
<span class="c">// internal shorthand</span>
<span class="c"></span><span class="k">var</span> <span class="nx">Dom</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Dom</span><span class="o">,</span>
<span class="nx">AttributeProvider</span> <span class="o">=</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">AttributeProvider</span><span class="o">;</span>
<span class="c">/**</span>
<span class="c"> * Element provides an wrapper object to simplify adding</span>
<span class="c"> * event listeners, using dom methods, and managing attributes. </span>
<span class="c"> * @module element</span>
<span class="c"> * @namespace YAHOO.util</span>
<span class="c"> * @requires yahoo, dom, event</span>
<span class="c"> * @beta</span>
<span class="c"> */</span>
<span class="c">/**</span>
<span class="c"> * Element provides an wrapper object to simplify adding</span>
<span class="c"> * event listeners, using dom methods, and managing attributes. </span>
<span class="c"> * @class Element</span>
<span class="c"> * @uses YAHOO.util.AttributeProvider</span>
<span class="c"> * @constructor</span>
<span class="c"> * @param el {HTMLElement | String} The html element that </span>
<span class="c"> * represents the Element.</span>
<span class="c"> * @param {Object} map A key-value map of initial config names and values</span>
<span class="c"> */</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Element</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">el</span><span class="o">,</span> <span class="nx">map</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">arguments</span><span class="o">.</span><span class="nx">length</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">init</span><span class="o">(</span><span class="nx">el</span><span class="o">,</span> <span class="nx">map</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">util</span><span class="o">.</span><span class="nx">Element</span><span class="o">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="o">{</span>
<span class="c">/**</span>
<span class="c"> * Dom events supported by the Element instance.</span>
<span class="c"> * @property DOM_EVENTS</span>
<span class="c"> * @type Object</span>
<span class="c"> */</span>
<span class="nx">DOM_EVENTS</span><span class="o">:</span> <span class="kc">null</span><span class="o">,</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for HTMLElement method.</span>
<span class="c"> * @method appendChild</span>
<span class="c"> * @param {YAHOO.util.Element || HTMLElement} child The element to append. </span>
<span class="c"> */</span>
<span class="nx">appendChild</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">child</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">child</span> <span class="o">=</span> <span class="nx">child</span><span class="o">.</span><span class="nx">get</span> <span class="o">?</span> <span class="nx">child</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">child</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">).</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">child</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for HTMLElement method.</span>
<span class="c"> * @method getElementsByTagName</span>
<span class="c"> * @param {String} tag The tagName to collect</span>
<span class="c"> */</span>
<span class="nx">getElementsByTagName</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">tag</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">).</span><span class="nx">getElementsByTagName</span><span class="o">(</span><span class="nx">tag</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for HTMLElement method.</span>
<span class="c"> * @method hasChildNodes</span>
<span class="c"> * @return {Boolean} Whether or not the element has childNodes</span>
<span class="c"> */</span>
<span class="nx">hasChildNodes</span><span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">).</span><span class="nx">hasChildNodes</span><span class="o">();</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for HTMLElement method.</span>
<span class="c"> * @method insertBefore</span>
<span class="c"> * @param {HTMLElement} element The HTMLElement to insert</span>
<span class="c"> * @param {HTMLElement} before The HTMLElement to insert</span>
<span class="c"> * the element before.</span>
<span class="c"> */</span>
<span class="nx">insertBefore</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">element</span><span class="o">,</span> <span class="nx">before</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">element</span> <span class="o">=</span> <span class="nx">element</span><span class="o">.</span><span class="nx">get</span> <span class="o">?</span> <span class="nx">element</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">element</span><span class="o">;</span>
<span class="nx">before</span> <span class="o">=</span> <span class="o">(</span><span class="nx">before</span> <span class="o">&amp;&amp;</span> <span class="nx">before</span><span class="o">.</span><span class="nx">get</span><span class="o">)</span> <span class="o">?</span> <span class="nx">before</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">before</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">).</span><span class="nx">insertBefore</span><span class="o">(</span><span class="nx">element</span><span class="o">,</span> <span class="nx">before</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for HTMLElement method.</span>
<span class="c"> * @method removeChild</span>
<span class="c"> * @param {HTMLElement} child The HTMLElement to remove</span>
<span class="c"> */</span>
<span class="nx">removeChild</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">child</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">child</span> <span class="o">=</span> <span class="nx">child</span><span class="o">.</span><span class="nx">get</span> <span class="o">?</span> <span class="nx">child</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">child</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">).</span><span class="nx">removeChild</span><span class="o">(</span><span class="nx">child</span><span class="o">);</span>
<span class="k">return</span> <span class="kc">true</span><span class="o">;</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for HTMLElement method.</span>
<span class="c"> * @method replaceChild</span>
<span class="c"> * @param {HTMLElement} newNode The HTMLElement to insert</span>
<span class="c"> * @param {HTMLElement} oldNode The HTMLElement to replace</span>
<span class="c"> */</span>
<span class="nx">replaceChild</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">newNode</span><span class="o">,</span> <span class="nx">oldNode</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">newNode</span> <span class="o">=</span> <span class="nx">newNode</span><span class="o">.</span><span class="nx">get</span> <span class="o">?</span> <span class="nx">newNode</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">newNode</span><span class="o">;</span>
<span class="nx">oldNode</span> <span class="o">=</span> <span class="nx">oldNode</span><span class="o">.</span><span class="nx">get</span> <span class="o">?</span> <span class="nx">oldNode</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">oldNode</span><span class="o">;</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">).</span><span class="nx">replaceChild</span><span class="o">(</span><span class="nx">newNode</span><span class="o">,</span> <span class="nx">oldNode</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Registers Element specific attributes.</span>
<span class="c"> * @method initAttributes</span>
<span class="c"> * @param {Object} map A key-value map of initial attribute configs</span>
<span class="c"> */</span>
<span class="nx">initAttributes</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">map</span><span class="o">)</span> <span class="o">{</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Adds a listener for the given event. These may be DOM or </span>
<span class="c"> * customEvent listeners. Any event that is fired via fireEvent</span>
<span class="c"> * can be listened for. All handlers receive an event object. </span>
<span class="c"> * @method addListener</span>
<span class="c"> * @param {String} type The name of the event to listen for</span>
<span class="c"> * @param {Function} fn The handler to call when the event fires</span>
<span class="c"> * @param {Any} obj A variable to pass to the handler</span>
<span class="c"> * @param {Object} scope The object to use for the scope of the handler </span>
<span class="c"> */</span>
<span class="nx">addListener</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">type</span><span class="o">,</span> <span class="nx">fn</span><span class="o">,</span> <span class="nx">obj</span><span class="o">,</span> <span class="nx">scope</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="nx">scope</span> <span class="o">=</span> <span class="nx">scope</span> <span class="o">||</span> <span class="k">this</span><span class="o">;</span>
<span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;id&#39;</span><span class="o">)</span> <span class="o">||</span> <span class="nx">el</span><span class="o">;</span>
<span class="k">var</span> <span class="nx">self</span> <span class="o">=</span> <span class="k">this</span><span class="o">;</span>
<span class="k">if</span> <span class="o">(!</span><span class="k">this</span><span class="o">.</span><span class="nx">_events</span><span class="o">[</span><span class="nx">type</span><span class="o">])</span> <span class="o">{</span> <span class="c">// create on the fly</span>
<span class="c"></span> <span class="k">if</span> <span class="o">(</span> <span class="k">this</span><span class="o">.</span><span class="nx">DOM_EVENTS</span><span class="o">[</span><span class="nx">type</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">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">addListener</span><span class="o">(</span><span class="nx">el</span><span class="o">,</span> <span class="nx">type</span><span class="o">,</span> <span class="k">function</span><span class="o">(</span><span class="nx">e</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">e</span><span class="o">.</span><span class="nx">srcElement</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">e</span><span class="o">.</span><span class="nx">target</span><span class="o">)</span> <span class="o">{</span> <span class="c">// supplement IE with target</span>
<span class="c"></span> <span class="nx">e</span><span class="o">.</span><span class="nx">target</span> <span class="o">=</span> <span class="nx">e</span><span class="o">.</span><span class="nx">srcElement</span><span class="o">;</span>
<span class="o">}</span>
<span class="nx">self</span><span class="o">.</span><span class="nx">fireEvent</span><span class="o">(</span><span class="nx">type</span><span class="o">,</span> <span class="nx">e</span><span class="o">);</span>
<span class="o">},</span> <span class="nx">obj</span><span class="o">,</span> <span class="nx">scope</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">this</span><span class="o">.</span><span class="nx">createEvent</span><span class="o">(</span><span class="nx">type</span><span class="o">,</span> <span class="k">this</span><span class="o">);</span>
<span class="o">}</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">EventProvider</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">subscribe</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span> <span class="c">// notify via customEvent</span>
<span class="c"></span> <span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Alias for addListener</span>
<span class="c"> * @method on</span>
<span class="c"> * @param {String} type The name of the event to listen for</span>
<span class="c"> * @param {Function} fn The function call when the event fires</span>
<span class="c"> * @param {Any} obj A variable to pass to the handler</span>
<span class="c"> * @param {Object} scope The object to use for the scope of the handler </span>
<span class="c"> */</span>
<span class="nx">on</span><span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span> <span class="k">this</span><span class="o">.</span><span class="nx">addListener</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span> <span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Alias for addListener</span>
<span class="c"> * @method subscribe</span>
<span class="c"> * @param {String} type The name of the event to listen for</span>
<span class="c"> * @param {Function} fn The function call when the event fires</span>
<span class="c"> * @param {Any} obj A variable to pass to the handler</span>
<span class="c"> * @param {Object} scope The object to use for the scope of the handler </span>
<span class="c"> */</span>
<span class="nx">subscribe</span><span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span> <span class="k">this</span><span class="o">.</span><span class="nx">addListener</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span> <span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Remove an event listener</span>
<span class="c"> * @method removeListener</span>
<span class="c"> * @param {String} type The name of the event to listen for</span>
<span class="c"> * @param {Function} fn The function call when the event fires</span>
<span class="c"> */</span>
<span class="nx">removeListener</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">type</span><span class="o">,</span> <span class="nx">fn</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">unsubscribe</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for Dom method.</span>
<span class="c"> * @method addClass</span>
<span class="c"> * @param {String} className The className to add</span>
<span class="c"> */</span>
<span class="nx">addClass</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">className</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">Dom</span><span class="o">.</span><span class="nx">addClass</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">),</span> <span class="nx">className</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for Dom method.</span>
<span class="c"> * @method getElementsByClassName</span>
<span class="c"> * @param {String} className The className to collect</span>
<span class="c"> * @param {String} tag (optional) The tag to use in</span>
<span class="c"> * conjunction with class name</span>
<span class="c"> * @return {Array} Array of HTMLElements</span>
<span class="c"> */</span>
<span class="nx">getElementsByClassName</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">className</span><span class="o">,</span> <span class="nx">tag</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">getElementsByClassName</span><span class="o">(</span><span class="nx">className</span><span class="o">,</span> <span class="nx">tag</span><span class="o">,</span>
<span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for Dom method.</span>
<span class="c"> * @method hasClass</span>
<span class="c"> * @param {String} className The className to add</span>
<span class="c"> * @return {Boolean} Whether or not the element has the class name</span>
<span class="c"> */</span>
<span class="nx">hasClass</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">className</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">hasClass</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">),</span> <span class="nx">className</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for Dom method.</span>
<span class="c"> * @method removeClass</span>
<span class="c"> * @param {String} className The className to remove</span>
<span class="c"> */</span>
<span class="nx">removeClass</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">className</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">removeClass</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">),</span> <span class="nx">className</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for Dom method.</span>
<span class="c"> * @method replaceClass</span>
<span class="c"> * @param {String} oldClassName The className to replace</span>
<span class="c"> * @param {String} newClassName The className to add</span>
<span class="c"> */</span>
<span class="nx">replaceClass</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">oldClassName</span><span class="o">,</span> <span class="nx">newClassName</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">replaceClass</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">),</span>
<span class="nx">oldClassName</span><span class="o">,</span> <span class="nx">newClassName</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for Dom method.</span>
<span class="c"> * @method setStyle</span>
<span class="c"> * @param {String} property The style property to set</span>
<span class="c"> * @param {String} value The value to apply to the style property</span>
<span class="c"> */</span>
<span class="nx">setStyle</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">property</span><span class="o">,</span> <span class="nx">value</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="k">if</span> <span class="o">(!</span><span class="nx">el</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">_queue</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_queue</span><span class="o">.</span><span class="nx">length</span><span class="o">]</span> <span class="o">=</span> <span class="o">[</span><span class="s1">&#39;setStyle&#39;</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">];</span>
<span class="o">}</span>
<span class="k">return</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">setStyle</span><span class="o">(</span><span class="nx">el</span><span class="o">,</span> <span class="nx">property</span><span class="o">,</span> <span class="nx">value</span><span class="o">);</span> <span class="c">// TODO: always queuing?</span>
<span class="c"></span> <span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Wrapper for Dom method.</span>
<span class="c"> * @method getStyle</span>
<span class="c"> * @param {String} property The style property to retrieve</span>
<span class="c"> * @return {String} The current value of the property</span>
<span class="c"> */</span>
<span class="nx">getStyle</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">property</span><span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">getStyle</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">),</span> <span class="nx">property</span><span class="o">);</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Apply any queued set calls.</span>
<span class="c"> * @method fireQueue</span>
<span class="c"> */</span>
<span class="nx">fireQueue</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">queue</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_queue</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="o">=</span> <span class="m">0</span><span class="o">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="nx">queue</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="o">;</span> <span class="o">++</span><span class="nx">i</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">[</span><span class="nx">queue</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">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">queue</span><span class="o">[</span><span class="nx">i</span><span class="o">][</span><span class="m">1</span><span class="o">]);</span>
<span class="o">}</span>
<span class="o">},</span>
<span class="c">/**</span>
<span class="c"> * Appends the HTMLElement into either the supplied parentNode.</span>
<span class="c"> * @method appendTo</span>
<span class="c"> * @param {HTMLElement | Element} parentNode The node to append to</span>
<span class="c"> * @param {HTMLElement | Element} before An optional node to insert before</span>
<span class="c"> */</span>
<span class="nx">appendTo</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">parent</span><span class="o">,</span> <span class="nx">before</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">parent</span> <span class="o">=</span> <span class="o">(</span><span class="nx">parent</span><span class="o">.</span><span class="nx">get</span><span class="o">)</span> <span class="o">?</span> <span class="nx">parent</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">parent</span><span class="o">);</span>
<span class="k">this</span><span class="o">.</span><span class="nx">fireEvent</span><span class="o">(</span><span class="s1">&#39;beforeAppendTo&#39;</span><span class="o">,</span> <span class="o">{</span>
<span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;beforeAppendTo&#39;</span><span class="o">,</span>
<span class="nx">target</span><span class="o">:</span> <span class="nx">parent</span>
<span class="o">});</span>
<span class="nx">before</span> <span class="o">=</span> <span class="o">(</span><span class="nx">before</span> <span class="o">&amp;&amp;</span> <span class="nx">before</span><span class="o">.</span><span class="nx">get</span><span class="o">)</span> <span class="o">?</span>
<span class="nx">before</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">)</span> <span class="o">:</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">before</span><span class="o">);</span>
<span class="k">var</span> <span class="nx">element</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="k">if</span> <span class="o">(!</span><span class="nx">element</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">&#39;appendTo failed: element not available&#39;</span><span class="o">,</span>
<span class="s1">&#39;error&#39;</span><span class="o">,</span> <span class="s1">&#39;Element&#39;</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="k">if</span> <span class="o">(!</span><span class="nx">parent</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">log</span><span class="o">(</span><span class="s1">&#39;appendTo failed: parent not available&#39;</span><span class="o">,</span>
<span class="s1">&#39;error&#39;</span><span class="o">,</span> <span class="s1">&#39;Element&#39;</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="k">if</span> <span class="o">(</span><span class="nx">element</span><span class="o">.</span><span class="nx">parent</span> <span class="o">!=</span> <span class="nx">parent</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">before</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">parent</span><span class="o">.</span><span class="nx">insertBefore</span><span class="o">(</span><span class="nx">element</span><span class="o">,</span> <span class="nx">before</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="nx">parent</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">element</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">log</span><span class="o">(</span><span class="nx">element</span> <span class="o">+</span> <span class="s1">&#39;appended to &#39;</span> <span class="o">+</span> <span class="nx">parent</span><span class="o">);</span>
<span class="k">this</span><span class="o">.</span><span class="nx">fireEvent</span><span class="o">(</span><span class="s1">&#39;appendTo&#39;</span><span class="o">,</span> <span class="o">{</span>
<span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;appendTo&#39;</span><span class="o">,</span>
<span class="nx">target</span><span class="o">:</span> <span class="nx">parent</span>
<span class="o">});</span>
<span class="o">},</span>
<span class="nx">get</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">key</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">configs</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_configs</span> <span class="o">||</span> <span class="o">{};</span>
<span class="k">var</span> <span class="nx">el</span> <span class="o">=</span> <span class="nx">configs</span><span class="o">.</span><span class="nx">element</span><span class="o">;</span> <span class="c">// avoid loop due to &#39;element&#39;</span>
<span class="c"></span> <span class="k">if</span> <span class="o">(</span><span class="nx">el</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">configs</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">isUndefined</span><span class="o">(</span><span class="nx">el</span><span class="o">.</span><span class="nx">value</span><span class="o">[</span><span class="nx">key</span><span class="o">])</span> <span class="o">)</span> <span class="o">{</span>
<span class="k">return</span> <span class="nx">el</span><span class="o">.</span><span class="nx">value</span><span class="o">[</span><span class="nx">key</span><span class="o">];</span>
<span class="o">}</span>
<span class="k">return</span> <span class="nx">AttributeProvider</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">get</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">key</span><span class="o">);</span>
<span class="o">},</span>
<span class="nx">setAttributes</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">map</span><span class="o">,</span> <span class="nx">silent</span><span class="o">){</span>
<span class="k">var</span> <span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="k">for</span> <span class="o">(</span><span class="k">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">map</span><span class="o">)</span> <span class="o">{</span>
<span class="c">// need to configure if setting unconfigured HTMLElement attribute </span>
<span class="c"></span> <span class="k">if</span> <span class="o">(</span> <span class="o">!</span><span class="k">this</span><span class="o">.</span><span class="nx">_configs</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">isUndefined</span><span class="o">(</span><span class="nx">el</span><span class="o">[</span><span class="nx">key</span><span class="o">])</span> <span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">setAttributeConfig</span><span class="o">(</span><span class="nx">key</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="c">// set based on configOrder</span>
<span class="c"></span> <span class="k">for</span> <span class="o">(</span><span class="k">var</span> <span class="nx">i</span> <span class="o">=</span> <span class="m">0</span><span class="o">,</span> <span class="nx">len</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_configOrder</span><span class="o">.</span><span class="nx">length</span><span class="o">;</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">len</span><span class="o">;</span> <span class="o">++</span><span class="nx">i</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">map</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_configOrder</span><span class="o">[</span><span class="nx">i</span><span class="o">]]</span> <span class="o">!==</span> <span class="kc">undefined</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_configOrder</span><span class="o">[</span><span class="nx">i</span><span class="o">],</span> <span class="nx">map</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_configOrder</span><span class="o">[</span><span class="nx">i</span><span class="o">]],</span> <span class="nx">silent</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="o">},</span>
<span class="nx">set</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">key</span><span class="o">,</span> <span class="nx">value</span><span class="o">,</span> <span class="nx">silent</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="k">if</span> <span class="o">(!</span><span class="nx">el</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_queue</span><span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">_queue</span><span class="o">.</span><span class="nx">length</span><span class="o">]</span> <span class="o">=</span> <span class="o">[</span><span class="s1">&#39;set&#39;</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">];</span>
<span class="k">if</span> <span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_configs</span><span class="o">[</span><span class="nx">key</span><span class="o">])</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_configs</span><span class="o">[</span><span class="nx">key</span><span class="o">].</span><span class="nx">value</span> <span class="o">=</span> <span class="nx">value</span><span class="o">;</span> <span class="c">// so &quot;get&quot; works while queueing</span>
<span class="c"></span>
<span class="o">}</span>
<span class="k">return</span><span class="o">;</span>
<span class="o">}</span>
<span class="c">// set it on the element if not configured and is an HTML attribute</span>
<span class="c"></span> <span class="k">if</span> <span class="o">(</span> <span class="o">!</span><span class="k">this</span><span class="o">.</span><span class="nx">_configs</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">isUndefined</span><span class="o">(</span><span class="nx">el</span><span class="o">[</span><span class="nx">key</span><span class="o">])</span> <span class="o">)</span> <span class="o">{</span>
<span class="nx">_registerHTMLAttr</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">key</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">return</span> <span class="nx">AttributeProvider</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">set</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span>
<span class="o">},</span>
<span class="nx">setAttributeConfig</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">key</span><span class="o">,</span> <span class="nx">map</span><span class="o">,</span> <span class="nx">init</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">el</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="k">this</span><span class="o">.</span><span class="nx">_configs</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">&amp;&amp;</span> <span class="o">!</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">isUndefined</span><span class="o">(</span><span class="nx">el</span><span class="o">[</span><span class="nx">key</span><span class="o">])</span> <span class="o">)</span> <span class="o">{</span>
<span class="nx">_registerHTMLAttr</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">key</span><span class="o">,</span> <span class="nx">map</span><span class="o">);</span>
<span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
<span class="nx">AttributeProvider</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">setAttributeConfig</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_configOrder</span><span class="o">.</span><span class="nx">push</span><span class="o">(</span><span class="nx">key</span><span class="o">);</span>
<span class="o">},</span>
<span class="nx">getAttributeKeys</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">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="k">var</span> <span class="nx">keys</span> <span class="o">=</span> <span class="nx">AttributeProvider</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">getAttributeKeys</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">);</span>
<span class="c">//add any unconfigured element keys</span>
<span class="c"></span> <span class="k">for</span> <span class="o">(</span><span class="k">var</span> <span class="nx">key</span> <span class="k">in</span> <span class="nx">el</span><span class="o">)</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(!</span><span class="k">this</span><span class="o">.</span><span class="nx">_configs</span><span class="o">[</span><span class="nx">key</span><span class="o">])</span> <span class="o">{</span>
<span class="nx">keys</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">=</span> <span class="nx">keys</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">||</span> <span class="nx">el</span><span class="o">[</span><span class="nx">key</span><span class="o">];</span>
<span class="o">}</span>
<span class="o">}</span>
<span class="k">return</span> <span class="nx">keys</span><span class="o">;</span>
<span class="o">},</span>
<span class="nx">createEvent</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">type</span><span class="o">,</span> <span class="nx">scope</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_events</span><span class="o">[</span><span class="nx">type</span><span class="o">]</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
<span class="nx">AttributeProvider</span><span class="o">.</span><span class="nx">prototype</span><span class="o">.</span><span class="nx">createEvent</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span>
<span class="o">},</span>
<span class="nx">init</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">el</span><span class="o">,</span> <span class="nx">attr</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">_initElement</span><span class="o">.</span><span class="nx">apply</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">arguments</span><span class="o">);</span>
<span class="o">}</span>
<span class="o">};</span>
<span class="k">var</span> <span class="nx">_initElement</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">el</span><span class="o">,</span> <span class="nx">attr</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_queue</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_queue</span> <span class="o">||</span> <span class="o">[];</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_events</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_events</span> <span class="o">||</span> <span class="o">{};</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_configs</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_configs</span> <span class="o">||</span> <span class="o">{};</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_configOrder</span> <span class="o">=</span> <span class="o">[];</span>
<span class="nx">attr</span> <span class="o">=</span> <span class="nx">attr</span> <span class="o">||</span> <span class="o">{};</span>
<span class="nx">attr</span><span class="o">.</span><span class="nx">element</span> <span class="o">=</span> <span class="nx">attr</span><span class="o">.</span><span class="nx">element</span> <span class="o">||</span> <span class="nx">el</span> <span class="o">||</span> <span class="kc">null</span><span class="o">;</span>
<span class="k">this</span><span class="o">.</span><span class="nx">DOM_EVENTS</span> <span class="o">=</span> <span class="o">{</span>
<span class="s1">&#39;click&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;dblclick&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;keydown&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;keypress&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;keyup&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;mousedown&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;mousemove&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;mouseout&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;mouseover&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;mouseup&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;focus&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;blur&#39;</span><span class="o">:</span> <span class="kc">true</span><span class="o">,</span>
<span class="s1">&#39;submit&#39;</span><span class="o">:</span> <span class="kc">true</span>
<span class="o">};</span>
<span class="k">var</span> <span class="nx">isReady</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span> <span class="c">// to determine when to init HTMLElement and content</span>
<span class="c"></span>
<span class="k">if</span> <span class="o">(</span><span class="nx">YAHOO</span><span class="o">.</span><span class="nx">lang</span><span class="o">.</span><span class="nx">isString</span><span class="o">(</span><span class="nx">el</span><span class="o">)</span> <span class="o">)</span> <span class="o">{</span> <span class="c">// defer until available/ready</span>
<span class="c"></span> <span class="nx">_registerHTMLAttr</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="s1">&#39;id&#39;</span><span class="o">,</span> <span class="o">{</span> <span class="nx">value</span><span class="o">:</span> <span class="nx">attr</span><span class="o">.</span><span class="nx">element</span> <span class="o">});</span>
<span class="o">}</span>
<span class="k">if</span> <span class="o">(</span><span class="nx">Dom</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">el</span><span class="o">))</span> <span class="o">{</span>
<span class="nx">isReady</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
<span class="nx">_initHTMLElement</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">attr</span><span class="o">);</span>
<span class="nx">_initContent</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">attr</span><span class="o">);</span>
<span class="o">}</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">onAvailable</span><span class="o">(</span><span class="nx">attr</span><span class="o">.</span><span class="nx">element</span><span class="o">,</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(!</span><span class="nx">isReady</span><span class="o">)</span> <span class="o">{</span> <span class="c">// otherwise already done</span>
<span class="c"></span> <span class="nx">_initHTMLElement</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">attr</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">this</span><span class="o">.</span><span class="nx">fireEvent</span><span class="o">(</span><span class="s1">&#39;available&#39;</span><span class="o">,</span> <span class="o">{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;available&#39;</span><span class="o">,</span> <span class="nx">target</span><span class="o">:</span> <span class="nx">attr</span><span class="o">.</span><span class="nx">element</span> <span class="o">});</span>
<span class="o">},</span> <span class="k">this</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Event</span><span class="o">.</span><span class="nx">onContentReady</span><span class="o">(</span><span class="nx">attr</span><span class="o">.</span><span class="nx">element</span><span class="o">,</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
<span class="k">if</span> <span class="o">(!</span><span class="nx">isReady</span><span class="o">)</span> <span class="o">{</span> <span class="c">// otherwise already done</span>
<span class="c"></span> <span class="nx">_initContent</span><span class="o">.</span><span class="nx">call</span><span class="o">(</span><span class="k">this</span><span class="o">,</span> <span class="nx">attr</span><span class="o">);</span>
<span class="o">}</span>
<span class="k">this</span><span class="o">.</span><span class="nx">fireEvent</span><span class="o">(</span><span class="s1">&#39;contentReady&#39;</span><span class="o">,</span> <span class="o">{</span> <span class="nx">type</span><span class="o">:</span> <span class="s1">&#39;contentReady&#39;</span><span class="o">,</span> <span class="nx">target</span><span class="o">:</span> <span class="nx">attr</span><span class="o">.</span><span class="nx">element</span> <span class="o">});</span>
<span class="o">},</span> <span class="k">this</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="o">};</span>
<span class="k">var</span> <span class="nx">_initHTMLElement</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">attr</span><span class="o">)</span> <span class="o">{</span>
<span class="c">/**</span>
<span class="c"> * The HTMLElement the Element instance refers to.</span>
<span class="c"> * @attribute element</span>
<span class="c"> * @type HTMLElement</span>
<span class="c"> */</span>
<span class="k">this</span><span class="o">.</span><span class="nx">setAttributeConfig</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">,</span> <span class="o">{</span>
<span class="nx">value</span><span class="o">:</span> <span class="nx">Dom</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">attr</span><span class="o">.</span><span class="nx">element</span><span class="o">),</span>
<span class="nx">readOnly</span><span class="o">:</span> <span class="kc">true</span>
<span class="o">});</span>
<span class="o">};</span>
<span class="k">var</span> <span class="nx">_initContent</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">attr</span><span class="o">)</span> <span class="o">{</span>
<span class="k">this</span><span class="o">.</span><span class="nx">initAttributes</span><span class="o">(</span><span class="nx">attr</span><span class="o">);</span>
<span class="k">this</span><span class="o">.</span><span class="nx">setAttributes</span><span class="o">(</span><span class="nx">attr</span><span class="o">,</span> <span class="kc">true</span><span class="o">);</span>
<span class="k">this</span><span class="o">.</span><span class="nx">fireQueue</span><span class="o">();</span>
<span class="o">};</span>
<span class="c">/**</span>
<span class="c"> * Sets the value of the property and fires beforeChange and change events.</span>
<span class="c"> * @private</span>
<span class="c"> * @method _registerHTMLAttr</span>
<span class="c"> * @param {YAHOO.util.Element} element The Element instance to</span>
<span class="c"> * register the config to.</span>
<span class="c"> * @param {String} key The name of the config to register</span>
<span class="c"> * @param {Object} map A key-value map of the config&#39;s params</span>
<span class="c"> */</span>
<span class="k">var</span> <span class="nx">_registerHTMLAttr</span> <span class="o">=</span> <span class="k">function</span><span class="o">(</span><span class="nx">key</span><span class="o">,</span> <span class="nx">map</span><span class="o">)</span> <span class="o">{</span>
<span class="k">var</span> <span class="nx">el</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="s1">&#39;element&#39;</span><span class="o">);</span>
<span class="nx">map</span> <span class="o">=</span> <span class="nx">map</span> <span class="o">||</span> <span class="o">{};</span>
<span class="nx">map</span><span class="o">.</span><span class="nx">name</span> <span class="o">=</span> <span class="nx">key</span><span class="o">;</span>
<span class="nx">map</span><span class="o">.</span><span class="nx">method</span> <span class="o">=</span> <span class="nx">map</span><span class="o">.</span><span class="nx">method</span> <span class="o">||</span> <span class="k">function</span><span class="o">(</span><span class="nx">value</span><span class="o">)</span> <span class="o">{</span>
<span class="nx">el</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">=</span> <span class="nx">value</span><span class="o">;</span>
<span class="o">};</span>
<span class="nx">map</span><span class="o">.</span><span class="nx">value</span> <span class="o">=</span> <span class="nx">map</span><span class="o">.</span><span class="nx">value</span> <span class="o">||</span> <span class="nx">el</span><span class="o">[</span><span class="nx">key</span><span class="o">];</span>
<span class="k">this</span><span class="o">.</span><span class="nx">_configs</span><span class="o">[</span><span class="nx">key</span><span class="o">]</span> <span class="o">=</span> <span class="k">new</span> <span class="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Attribute</span><span class="o">(</span><span class="nx">map</span><span class="o">,</span> <span class="k">this</span><span class="o">);</span>
<span class="o">};</span>
<span class="c">/**</span>
<span class="c"> * Fires when the Element&#39;s HTMLElement can be retrieved by Id.</span>
<span class="c"> * &lt;p&gt;See: &lt;a href=&quot;#addListener&quot;&gt;Element.addListener&lt;/a&gt;&lt;/p&gt;</span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Event fields:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;String&amp;gt; type&lt;/code&gt; available&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;HTMLElement&amp;gt;</span>
<span class="c"> * target&lt;/code&gt; the HTMLElement bound to this Element instance&lt;br&gt;</span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;var handler = function(e) {var target = e.target};&lt;br&gt;</span>
<span class="c"> * myTabs.addListener(&#39;available&#39;, handler);&lt;/code&gt;&lt;/p&gt;</span>
<span class="c"> * @event available</span>
<span class="c"> */</span>
<span class="c">/**</span>
<span class="c"> * Fires when the Element&#39;s HTMLElement subtree is rendered.</span>
<span class="c"> * &lt;p&gt;See: &lt;a href=&quot;#addListener&quot;&gt;Element.addListener&lt;/a&gt;&lt;/p&gt;</span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Event fields:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;String&amp;gt; type&lt;/code&gt; contentReady&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;HTMLElement&amp;gt;</span>
<span class="c"> * target&lt;/code&gt; the HTMLElement bound to this Element instance&lt;br&gt;</span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;var handler = function(e) {var target = e.target};&lt;br&gt;</span>
<span class="c"> * myTabs.addListener(&#39;contentReady&#39;, handler);&lt;/code&gt;&lt;/p&gt;</span>
<span class="c"> * @event contentReady</span>
<span class="c"> */</span>
<span class="c">/**</span>
<span class="c"> * Fires before the Element is appended to another Element.</span>
<span class="c"> * &lt;p&gt;See: &lt;a href=&quot;#addListener&quot;&gt;Element.addListener&lt;/a&gt;&lt;/p&gt;</span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Event fields:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;String&amp;gt; type&lt;/code&gt; beforeAppendTo&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;HTMLElement/Element&amp;gt;</span>
<span class="c"> * target&lt;/code&gt; the HTMLElement/Element being appended to </span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;var handler = function(e) {var target = e.target};&lt;br&gt;</span>
<span class="c"> * myTabs.addListener(&#39;beforeAppendTo&#39;, handler);&lt;/code&gt;&lt;/p&gt;</span>
<span class="c"> * @event beforeAppendTo</span>
<span class="c"> */</span>
<span class="c">/**</span>
<span class="c"> * Fires after the Element is appended to another Element.</span>
<span class="c"> * &lt;p&gt;See: &lt;a href=&quot;#addListener&quot;&gt;Element.addListener&lt;/a&gt;&lt;/p&gt;</span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Event fields:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;String&amp;gt; type&lt;/code&gt; appendTo&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;&amp;lt;HTMLElement/Element&amp;gt;</span>
<span class="c"> * target&lt;/code&gt; the HTMLElement/Element being appended to </span>
<span class="c"> * &lt;p&gt;&lt;strong&gt;Usage:&lt;/strong&gt;&lt;br&gt;</span>
<span class="c"> * &lt;code&gt;var handler = function(e) {var target = e.target};&lt;br&gt;</span>
<span class="c"> * myTabs.addListener(&#39;appendTo&#39;, handler);&lt;/code&gt;&lt;/p&gt;</span>
<span class="c"> * @event appendTo</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="nx">YAHOO</span><span class="o">.</span><span class="nx">util</span><span class="o">.</span><span class="nx">Element</span><span class="o">,</span> <span class="nx">AttributeProvider</span><span class="o">);</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 class=""><a href="module_animation.html">animation</a></li>
<li class=""><a href="module_autocomplete.html">autocomplete</a></li>
<li class=""><a href="module_button.html">button</a></li>
<li class=""><a href="module_calendar.html">calendar</a></li>
<li class=""><a href="module_charts.html">charts</a></li>
<li class=""><a href="module_colorpicker.html">colorpicker</a></li>
<li class=""><a href="module_connection.html">connection</a></li>
<li class=""><a href="module_container.html">container</a></li>
<li class=""><a href="module_cookie.html">cookie</a></li>
<li class=""><a href="module_datasource.html">datasource</a></li>
<li class=""><a href="module_datatable.html">datatable</a></li>
<li class=""><a href="module_dom.html">dom</a></li>
<li class=""><a href="module_dragdrop.html">dragdrop</a></li>
<li class=""><a href="module_editor.html">editor</a></li>
<li class="selected"><a href="module_element.html">element</a></li>
<li class=""><a href="module_event.html">event</a></li>
<li class=""><a href="module_get.html">get</a></li>
<li class=""><a href="module_history.html">history</a></li>
<li class=""><a href="module_imagecropper.html">imagecropper</a></li>
<li class=""><a href="module_imageloader.html">imageloader</a></li>
<li class=""><a href="module_json.html">json</a></li>
<li class=""><a href="module_layout.html">layout</a></li>
<li class=""><a href="module_logger.html">logger</a></li>
<li class=""><a href="module_menu.html">menu</a></li>
<li class=""><a href="module_profiler.html">profiler</a></li>
<li class=""><a href="module_profilerviewer.html">profilerviewer</a></li>
<li class=""><a href="module_resize.html">resize</a></li>
<li class=""><a href="module_selector.html">selector</a></li>
<li class=""><a href="module_slider.html">slider</a></li>
<li class=""><a href="module_tabview.html">tabview</a></li>
<li class=""><a href="module_treeview.html">treeview</a></li>
<li class=""><a href="module_uploader.html">uploader</a></li>
<li class=""><a href="module_yahoo.html">yahoo</a></li>
<li class=""><a href="module_yuiloader.html">yuiloader</a></li>
<li class=""><a href="module_yuitest.html">yuitest</a></li>
</ul>
</div>
<div class="module">
<h4>Classes</h4>
<ul class="content">
<li class=""><a href="YAHOO.util.Attribute.html">YAHOO.util.Attribute</a></li>
<li class=""><a href="YAHOO.util.AttributeProvider.html">YAHOO.util.AttributeProvider</a></li>
<li class=""><a href="YAHOO.util.Element.html">YAHOO.util.Element</a></li>
</ul>
</div>
<div class="module">
<h4>Files</h4>
<ul class="content">
<li class=""><a href="Attribute.js.html">Attribute.js</a></li>
<li class=""><a href="AttributeProvider.js.html">AttributeProvider.js</a></li>
<li class="selected"><a href="Element.js.html">Element.js</a></li>
</ul>
</div>
</div>
</div>
</div>
<div id="ft">
<hr />
Copyright &copy; 2007 Yahoo! Inc. All rights reserved.
</div>
</div>
</body>
</html>