src/cm/media/js/lib/yui/yui_3.0.0b1/api/Widget-StdMod.js.html
changeset 0 40c8f766c9b8
equal deleted inserted replaced
-1:000000000000 0:40c8f766c9b8
       
     1 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
       
     2 <html xmlns:yui="http://yuilibrary.com/rdf/1.0/yui.rdf#">
       
     3 <head>
       
     4     <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
       
     5 	<title>API: widget-stdmod   Widget-StdMod.js  (YUI Library)</title>
       
     6 
       
     7 	<link rel="stylesheet" type="text/css" href="assets/reset-fonts-grids-min.css" />
       
     8 	<link rel="stylesheet" type="text/css" href="assets/api.css" />
       
     9 
       
    10     <script type="text/javascript" src="assets/api-js"></script>
       
    11     <script type="text/javascript" src="assets/ac-js"></script>
       
    12 </head>
       
    13 
       
    14 <body id="yahoo-com">
       
    15 
       
    16 <div id="doc3" class="yui-t2">
       
    17 	<div id="hd">
       
    18         <h1><a href="http://developer.yahoo.com/yui/" title="Yahoo! UI Library">Yahoo! UI Library</a></h1>
       
    19         <h3>widget-stdmod&nbsp; <span class="subtitle">3.0.0b1</span></h3>
       
    20         <a href="./index.html" title="Yahoo! UI Library">Yahoo! UI Library</a> 
       
    21             &gt; <a href="./module_widget-stdmod.html" title="widget-stdmod">widget-stdmod</a>
       
    22                 
       
    23                  &gt; Widget-StdMod.js (source view) 
       
    24         <form onsubmit="return false">
       
    25             <div id="propertysearch">
       
    26                 Search: <input autocomplete="off" id="searchinput" />
       
    27                 <div id="searchresults">
       
    28                     &nbsp;
       
    29                 </div>
       
    30             </div>
       
    31         </form>
       
    32 	</div>
       
    33 
       
    34 	<div id="bd">
       
    35 		<div id="yui-main">
       
    36 			<div class="yui-b">
       
    37             <form action="#" name="yui-classopts-form" method="get" id="yui-classopts-form">
       
    38                 <fieldset>
       
    39                     <legend>Filters</legend>
       
    40                 <span class="classopts"><input type="checkbox" name="show_private" id="show_private" /> <label for="show_private">Show Private</label></span>
       
    41                 <span class="classopts"><input type="checkbox" name="show_protected" id="show_protected" /> <label for="show_protected">Show Protected</label></span>
       
    42                 <span class="classopts"><input type="checkbox" name="show_deprecated" id="show_deprecated" /> <label for="show_deprecated">Show Deprecated</label></span>
       
    43                 </fieldset>
       
    44             </form>
       
    45 
       
    46                     <div id="srcout">
       
    47                         <style>
       
    48                             #doc3 .classopts { display:none; }
       
    49                         </style>
       
    50 <div class="highlight" ><pre><span class="c">/**</span>
       
    51 <span class="c"> * Provides standard module support for Widgets through an extension.</span>
       
    52 <span class="c"> * </span>
       
    53 <span class="c"> * @module widget-stdmod</span>
       
    54 <span class="c"> */</span>
       
    55     <span class="k">var</span> <span class="nx">L</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">Lang</span><span class="o">,</span>
       
    56         <span class="nx">Node</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">Node</span><span class="o">,</span>
       
    57         <span class="nx">UA</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">UA</span><span class="o">,</span>
       
    58         <span class="nx">Widget</span> <span class="o">=</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">Widget</span><span class="o">,</span>
       
    59 
       
    60         <span class="nx">EMPTY</span> <span class="o">=</span> <span class="s2">&quot;&quot;</span><span class="o">,</span>
       
    61         <span class="nx">HD</span> <span class="o">=</span> <span class="s2">&quot;hd&quot;</span><span class="o">,</span>
       
    62         <span class="nx">BD</span> <span class="o">=</span> <span class="s2">&quot;bd&quot;</span><span class="o">,</span>
       
    63         <span class="nx">FT</span> <span class="o">=</span> <span class="s2">&quot;ft&quot;</span><span class="o">,</span>
       
    64         <span class="nx">HEADER</span> <span class="o">=</span> <span class="s2">&quot;header&quot;</span><span class="o">,</span>
       
    65         <span class="nx">BODY</span> <span class="o">=</span> <span class="s2">&quot;body&quot;</span><span class="o">,</span>
       
    66         <span class="nx">FOOTER</span> <span class="o">=</span> <span class="s2">&quot;footer&quot;</span><span class="o">,</span>
       
    67         <span class="nx">FILL_HEIGHT</span> <span class="o">=</span> <span class="s2">&quot;fillHeight&quot;</span><span class="o">,</span>
       
    68         <span class="nx">STDMOD</span> <span class="o">=</span> <span class="s2">&quot;stdmod&quot;</span><span class="o">,</span>
       
    69 
       
    70         <span class="nx">PX</span> <span class="o">=</span> <span class="s2">&quot;px&quot;</span><span class="o">,</span>
       
    71         <span class="nx">NODE_SUFFIX</span> <span class="o">=</span> <span class="s2">&quot;Node&quot;</span><span class="o">,</span>
       
    72         <span class="nx">CONTENT_SUFFIX</span> <span class="o">=</span> <span class="s2">&quot;Content&quot;</span><span class="o">,</span>
       
    73         <span class="nx">INNER_HTML</span> <span class="o">=</span> <span class="s2">&quot;innerHTML&quot;</span><span class="o">,</span>
       
    74         <span class="nx">FIRST_CHILD</span> <span class="o">=</span> <span class="s2">&quot;firstChild&quot;</span><span class="o">,</span>
       
    75         <span class="nx">CHILD_NODES</span> <span class="o">=</span> <span class="s2">&quot;childNodes&quot;</span><span class="o">,</span>
       
    76 
       
    77         <span class="nx">CONTENT_BOX</span> <span class="o">=</span> <span class="s2">&quot;contentBox&quot;</span><span class="o">,</span>
       
    78         <span class="nx">BOUNDING_BOX</span> <span class="o">=</span> <span class="s2">&quot;boundingBox&quot;</span><span class="o">,</span>
       
    79 
       
    80         <span class="nx">HEIGHT</span> <span class="o">=</span> <span class="s2">&quot;height&quot;</span><span class="o">,</span>
       
    81         <span class="nx">OFFSET_HEIGHT</span> <span class="o">=</span> <span class="s2">&quot;offsetHeight&quot;</span><span class="o">,</span>
       
    82         <span class="nx">AUTO</span> <span class="o">=</span> <span class="s2">&quot;auto&quot;</span><span class="o">,</span>
       
    83 
       
    84         <span class="nx">HeaderChange</span> <span class="o">=</span> <span class="s2">&quot;headerContentChange&quot;</span><span class="o">,</span>
       
    85         <span class="nx">BodyChange</span> <span class="o">=</span> <span class="s2">&quot;bodyContentChange&quot;</span><span class="o">,</span>
       
    86         <span class="nx">FooterChange</span> <span class="o">=</span> <span class="s2">&quot;footerContentChange&quot;</span><span class="o">,</span>
       
    87         <span class="nx">FillHeightChange</span> <span class="o">=</span> <span class="s2">&quot;fillHeightChange&quot;</span><span class="o">,</span>
       
    88         <span class="nx">HeightChange</span> <span class="o">=</span> <span class="s2">&quot;HeightChange&quot;</span><span class="o">,</span>        
       
    89         <span class="nx">ContentUpdate</span> <span class="o">=</span> <span class="s2">&quot;contentUpdate&quot;</span><span class="o">,</span>
       
    90 
       
    91         <span class="nx">RENDERUI</span> <span class="o">=</span> <span class="s2">&quot;renderUI&quot;</span><span class="o">,</span>
       
    92         <span class="nx">BINDUI</span> <span class="o">=</span> <span class="s2">&quot;bindUI&quot;</span><span class="o">,</span>
       
    93         <span class="nx">SYNCUI</span> <span class="o">=</span> <span class="s2">&quot;syncUI&quot;</span><span class="o">;</span>
       
    94 
       
    95     <span class="c">/**</span>
       
    96 <span class="c">     * Widget extension, which can be used to add Standard Module support to the </span>
       
    97 <span class="c">     * base Widget class, through the &lt;a href=&quot;Base.html#method_build&quot;&gt;Base.build&lt;/a&gt; </span>
       
    98 <span class="c">     * method.</span>
       
    99 <span class="c">     * &lt;p&gt;</span>
       
   100 <span class="c">     * The extension adds header, body and footer sections to the Widget&#39;s content box and </span>
       
   101 <span class="c">     * provides the corresponding methods and attributes to modify the contents of these sections.</span>
       
   102 <span class="c">     * &lt;/p&gt;</span>
       
   103 <span class="c">     * @class WidgetStdMod</span>
       
   104 <span class="c">     * @param {Object} The user configuration object</span>
       
   105 <span class="c">     */</span>
       
   106     <span class="k">function</span> <span class="nx">StdMod</span><span class="o">(</span><span class="nx">config</span><span class="o">)</span> <span class="o">{</span>
       
   107 
       
   108         <span class="k">this</span><span class="o">.</span><span class="nx">_stdModNode</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="nx">CONTENT_BOX</span><span class="o">);</span>
       
   109 
       
   110         <span class="nx">Y</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_renderUIStdMod</span><span class="o">,</span> <span class="k">this</span><span class="o">,</span> <span class="nx">RENDERUI</span><span class="o">);</span>
       
   111         <span class="nx">Y</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_bindUIStdMod</span><span class="o">,</span> <span class="k">this</span><span class="o">,</span> <span class="nx">BINDUI</span><span class="o">);</span>
       
   112         <span class="nx">Y</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_syncUIStdMod</span><span class="o">,</span> <span class="k">this</span><span class="o">,</span> <span class="nx">SYNCUI</span><span class="o">);</span>
       
   113     <span class="o">}</span>
       
   114 
       
   115     <span class="c">/**</span>
       
   116 <span class="c">     * Constant used to refer the the standard module header, in methods which expect a section specifier</span>
       
   117 <span class="c">     * </span>
       
   118 <span class="c">     * @property WidgetStdMod.HEADER</span>
       
   119 <span class="c">     * @static</span>
       
   120 <span class="c">     * @type String</span>
       
   121 <span class="c">     */</span>
       
   122     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">HEADER</span> <span class="o">=</span> <span class="nx">HEADER</span><span class="o">;</span>
       
   123     <span class="c">/**</span>
       
   124 <span class="c">     * Constant used to refer the the standard module body, in methods which expect a section specifier</span>
       
   125 <span class="c">     * </span>
       
   126 <span class="c">     * @property WidgetStdMod.BODY</span>
       
   127 <span class="c">     * @static</span>
       
   128 <span class="c">     * @type String</span>
       
   129 <span class="c">     */</span>
       
   130     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">BODY</span> <span class="o">=</span> <span class="nx">BODY</span><span class="o">;</span>
       
   131     <span class="c">/**</span>
       
   132 <span class="c">     * Constant used to refer the the standard module footer, in methods which expect a section specifier</span>
       
   133 <span class="c">     * </span>
       
   134 <span class="c">     * @property WidgetStdMod.FOOTER</span>
       
   135 <span class="c">     * @static</span>
       
   136 <span class="c">     * @type String</span>
       
   137 <span class="c">     */</span>
       
   138     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">FOOTER</span> <span class="o">=</span> <span class="nx">FOOTER</span><span class="o">;</span>
       
   139 
       
   140     <span class="c">/**</span>
       
   141 <span class="c">     * Constant used to specify insertion position, when adding content to sections of the standard module in </span>
       
   142 <span class="c">     * methods which expect a &quot;where&quot; argument.</span>
       
   143 <span class="c">     * &lt;p&gt;</span>
       
   144 <span class="c">     * Inserts new content &lt;em&gt;before&lt;/em&gt; the sections existing content.</span>
       
   145 <span class="c">     * &lt;/p&gt;</span>
       
   146 <span class="c">     * @property WidgetStdMod.AFTER</span>
       
   147 <span class="c">     * @static</span>
       
   148 <span class="c">     * @type String</span>
       
   149 <span class="c">     */</span>
       
   150     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">AFTER</span> <span class="o">=</span> <span class="s2">&quot;after&quot;</span><span class="o">;</span>
       
   151 
       
   152     <span class="c">/**</span>
       
   153 <span class="c">     * Constant used to specify insertion position, when adding content to sections of the standard module in</span>
       
   154 <span class="c">     * methods which expect a &quot;where&quot; argument.</span>
       
   155 <span class="c">     * &lt;p&gt;</span>
       
   156 <span class="c">     * Inserts new content &lt;em&gt;before&lt;/em&gt; the sections existing content.</span>
       
   157 <span class="c">     * &lt;/p&gt;</span>
       
   158 <span class="c">     * @property WidgetStdMod.BEFORE</span>
       
   159 <span class="c">     * @static</span>
       
   160 <span class="c">     * @type String</span>
       
   161 <span class="c">     */</span>
       
   162     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">BEFORE</span> <span class="o">=</span> <span class="s2">&quot;before&quot;</span><span class="o">;</span>
       
   163     <span class="c">/**</span>
       
   164 <span class="c">     * Constant used to specify insertion position, when adding content to sections of the standard module in</span>
       
   165 <span class="c">     * methods which expect a &quot;where&quot; argument.</span>
       
   166 <span class="c">     * &lt;p&gt;</span>
       
   167 <span class="c">     * &lt;em&gt;Replaces&lt;/em&gt; the sections existing content, with new content.</span>
       
   168 <span class="c">     * &lt;/p&gt;</span>
       
   169 <span class="c">     * @property WidgetStdMod.REPLACE</span>
       
   170 <span class="c">     * @static</span>
       
   171 <span class="c">     * @type String</span>
       
   172 <span class="c">     */</span>
       
   173     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">REPLACE</span> <span class="o">=</span> <span class="s2">&quot;replace&quot;</span><span class="o">;</span>
       
   174 
       
   175     <span class="k">var</span> <span class="nx">STD_HEADER</span> <span class="o">=</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">HEADER</span><span class="o">,</span>
       
   176         <span class="nx">STD_BODY</span> <span class="o">=</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">BODY</span><span class="o">,</span>
       
   177         <span class="nx">STD_FOOTER</span> <span class="o">=</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">FOOTER</span><span class="o">,</span>
       
   178         <span class="nx">AFTER</span> <span class="o">=</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">AFTER</span><span class="o">,</span>
       
   179         <span class="nx">BEFORE</span> <span class="o">=</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">BEFORE</span><span class="o">;</span>
       
   180 
       
   181     <span class="c">/**</span>
       
   182 <span class="c">     * Static property used to define the default attribute </span>
       
   183 <span class="c">     * configuration introduced by WidgetStdMod.</span>
       
   184 <span class="c">     * </span>
       
   185 <span class="c">     * @property WidgetStdMod.ATTRS</span>
       
   186 <span class="c">     * @type Object</span>
       
   187 <span class="c">     * @static</span>
       
   188 <span class="c">     */</span>
       
   189     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">ATTRS</span> <span class="o">=</span> <span class="o">{</span>
       
   190 
       
   191         <span class="c">/**</span>
       
   192 <span class="c">         * @attribute headerContent</span>
       
   193 <span class="c">         * @type {String | Node}</span>
       
   194 <span class="c">         * @default undefined</span>
       
   195 <span class="c">         * @description The content to be added to the header section. This will replace any existing content</span>
       
   196 <span class="c">         * in the header. If you want to append, or insert new content, use the &lt;a href=&quot;#method_setStdModContent&quot;&gt;setStdModContent&lt;/a&gt; method.</span>
       
   197 <span class="c">         */</span>
       
   198         <span class="nx">headerContent</span><span class="o">:</span> <span class="o">{</span>
       
   199             <span class="nx">getter</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">val</span><span class="o">)</span> <span class="o">{</span>
       
   200                 <span class="k">var</span> <span class="nx">live</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_getStdModContent</span><span class="o">(</span><span class="nx">STD_HEADER</span><span class="o">);</span>
       
   201                 <span class="k">return</span> <span class="o">(</span><span class="nx">live</span> <span class="o">===</span> <span class="kc">null</span><span class="o">)</span> <span class="o">?</span> <span class="nx">val</span> <span class="o">:</span> <span class="nx">live</span><span class="o">;</span>
       
   202             <span class="o">}</span>
       
   203         <span class="o">},</span>
       
   204         
       
   205         <span class="c">/**</span>
       
   206 <span class="c">         * @attribute footerContent</span>
       
   207 <span class="c">         * @type {String | Node}</span>
       
   208 <span class="c">         * @default undefined</span>
       
   209 <span class="c">         * @description The content to be added to the footer section. This will replace any existing content</span>
       
   210 <span class="c">         * in the footer. If you want to append, or insert new content, use the &lt;a href=&quot;#method_setStdModContent&quot;&gt;setStdModContent&lt;/a&gt; method.</span>
       
   211 <span class="c">         */</span>
       
   212         <span class="nx">footerContent</span><span class="o">:</span> <span class="o">{</span>
       
   213             <span class="nx">getter</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">val</span><span class="o">)</span> <span class="o">{</span>
       
   214                 <span class="k">var</span> <span class="nx">live</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_getStdModContent</span><span class="o">(</span><span class="nx">STD_FOOTER</span><span class="o">);</span>
       
   215                 <span class="k">return</span> <span class="o">(</span><span class="nx">live</span> <span class="o">===</span> <span class="kc">null</span><span class="o">)</span> <span class="o">?</span> <span class="nx">val</span> <span class="o">:</span> <span class="nx">live</span><span class="o">;</span>
       
   216             <span class="o">}</span>
       
   217         <span class="o">},</span>
       
   218         
       
   219         <span class="c">/**</span>
       
   220 <span class="c">         * @attribute bodyContent</span>
       
   221 <span class="c">         * @type {String | Node}</span>
       
   222 <span class="c">         * @default undefined</span>
       
   223 <span class="c">         * @description The content to be added to the body section. This will replace any existing content</span>
       
   224 <span class="c">         * in the body. If you want to append, or insert new content, use the &lt;a href=&quot;#method_setStdModContent&quot;&gt;setStdModContent&lt;/a&gt; method.</span>
       
   225 <span class="c">         */</span>
       
   226         <span class="nx">bodyContent</span><span class="o">:</span> <span class="o">{</span>
       
   227             <span class="nx">getter</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">val</span><span class="o">)</span> <span class="o">{</span>
       
   228                 <span class="k">var</span> <span class="nx">live</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_getStdModContent</span><span class="o">(</span><span class="nx">STD_BODY</span><span class="o">);</span>
       
   229                 <span class="k">return</span> <span class="o">(</span><span class="nx">live</span> <span class="o">===</span> <span class="kc">null</span><span class="o">)</span> <span class="o">?</span> <span class="nx">val</span> <span class="o">:</span> <span class="nx">live</span><span class="o">;</span>
       
   230             <span class="o">}</span>
       
   231         <span class="o">},</span>
       
   232         
       
   233         <span class="c">/**</span>
       
   234 <span class="c">         * @attribute fillHeight</span>
       
   235 <span class="c">         * @type {String}</span>
       
   236 <span class="c">         * @default WidgetStdMod.BODY</span>
       
   237 <span class="c">         * @description The section (WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER) which should be resized to fill the height of the standard module, when a </span>
       
   238 <span class="c">         * height is set on the Widget. If a height is not set on the widget, then all sections are sized based on </span>
       
   239 <span class="c">         * their content.</span>
       
   240 <span class="c">         */</span>
       
   241         <span class="nx">fillHeight</span><span class="o">:</span> <span class="o">{</span>
       
   242             <span class="nx">value</span><span class="o">:</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">BODY</span><span class="o">,</span>
       
   243             <span class="nx">validator</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">val</span><span class="o">)</span> <span class="o">{</span>
       
   244                  <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">_validateFillHeight</span><span class="o">(</span><span class="nx">val</span><span class="o">);</span>
       
   245             <span class="o">}</span>
       
   246         <span class="o">}</span>
       
   247     <span class="o">};</span>
       
   248 
       
   249     <span class="c">/**</span>
       
   250 <span class="c">     * The HTML parsing rules for the WidgetStdMod class.</span>
       
   251 <span class="c">     * </span>
       
   252 <span class="c">     * @property WidgetStdMod.HTML_PARSER</span>
       
   253 <span class="c">     * @static</span>
       
   254 <span class="c">     * @type Object</span>
       
   255 <span class="c">     */</span>
       
   256     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">HTML_PARSER</span> <span class="o">=</span> <span class="o">{</span>
       
   257         <span class="nx">headerContent</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">contentBox</span><span class="o">)</span> <span class="o">{</span>
       
   258             <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">_parseStdModHTML</span><span class="o">(</span><span class="nx">STD_HEADER</span><span class="o">);</span>
       
   259         <span class="o">},</span>
       
   260 
       
   261         <span class="nx">bodyContent</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">contentBox</span><span class="o">)</span> <span class="o">{</span>
       
   262             <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">_parseStdModHTML</span><span class="o">(</span><span class="nx">STD_BODY</span><span class="o">);</span>
       
   263         <span class="o">},</span>
       
   264 
       
   265         <span class="nx">footerContent</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">contentBox</span><span class="o">)</span> <span class="o">{</span>
       
   266             <span class="k">return</span> <span class="k">this</span><span class="o">.</span><span class="nx">_parseStdModHTML</span><span class="o">(</span><span class="nx">STD_FOOTER</span><span class="o">);</span>
       
   267         <span class="o">}</span>
       
   268     <span class="o">};</span>
       
   269 
       
   270     <span class="c">/**</span>
       
   271 <span class="c">     * Static hash of default class names used for the header,</span>
       
   272 <span class="c">     * body and footer sections of the standard module, keyed by</span>
       
   273 <span class="c">     * the section identifier (WidgetStdMod.STD_HEADER, WidgetStdMod.STD_BODY, WidgetStdMod.STD_FOOTER)</span>
       
   274 <span class="c">     *</span>
       
   275 <span class="c">     * @property WidgetStdMod.SECTION_CLASS_NAMES</span>
       
   276 <span class="c">     * @static</span>
       
   277 <span class="c">     * @type Object</span>
       
   278 <span class="c">     */</span>
       
   279     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">SECTION_CLASS_NAMES</span> <span class="o">=</span> <span class="o">{</span>
       
   280         <span class="nx">header</span><span class="o">:</span> <span class="nx">Widget</span><span class="o">.</span><span class="nx">getClassName</span><span class="o">(</span><span class="nx">HD</span><span class="o">),</span>
       
   281         <span class="nx">body</span><span class="o">:</span> <span class="nx">Widget</span><span class="o">.</span><span class="nx">getClassName</span><span class="o">(</span><span class="nx">BD</span><span class="o">),</span>
       
   282         <span class="nx">footer</span><span class="o">:</span> <span class="nx">Widget</span><span class="o">.</span><span class="nx">getClassName</span><span class="o">(</span><span class="nx">FT</span><span class="o">)</span>
       
   283     <span class="o">};</span>
       
   284 
       
   285     <span class="c">/**</span>
       
   286 <span class="c">     * The template HTML strings for each of the standard module sections. Section entries are keyed by the section constants,</span>
       
   287 <span class="c">     * WidgetStdMod.HEADER, WidgetStdMod.BODY, WidgetStdMod.FOOTER, and contain the HTML to be added for each section.</span>
       
   288 <span class="c">     * e.g.</span>
       
   289 <span class="c">     * &lt;pre&gt;</span>
       
   290 <span class="c">     *    {</span>
       
   291 <span class="c">     *       header : &#39;&amp;lt;div class=&quot;yui-widget-hd&quot;&amp;gt;&amp;lt;/div&amp;gt;&#39;,</span>
       
   292 <span class="c">     *       body : &#39;&amp;lt;div class=&quot;yui-widget-bd&quot;&amp;gt;&amp;lt;/div&amp;gt;&#39;,</span>
       
   293 <span class="c">     *       footer : &#39;&amp;lt;div class=&quot;yui-widget-ft&quot;&amp;gt;&amp;lt;/div&amp;gt;&#39;</span>
       
   294 <span class="c">     *    }</span>
       
   295 <span class="c">     * &lt;/pre&gt;</span>
       
   296 <span class="c">     * @property WidgetStdMod.TEMPLATES</span>
       
   297 <span class="c">     * @type Object</span>
       
   298 <span class="c">     * @static</span>
       
   299 <span class="c">     */</span>
       
   300     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">TEMPLATES</span> <span class="o">=</span> <span class="o">{</span>
       
   301         <span class="nx">header</span> <span class="o">:</span> <span class="s1">&#39;&lt;div class=&quot;&#39;</span> <span class="o">+</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">SECTION_CLASS_NAMES</span><span class="o">[</span><span class="nx">STD_HEADER</span><span class="o">]</span> <span class="o">+</span> <span class="s1">&#39;&quot;&gt;&lt;/div&gt;&#39;</span><span class="o">,</span>
       
   302         <span class="nx">body</span> <span class="o">:</span> <span class="s1">&#39;&lt;div class=&quot;&#39;</span> <span class="o">+</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">SECTION_CLASS_NAMES</span><span class="o">[</span><span class="nx">STD_BODY</span><span class="o">]</span> <span class="o">+</span> <span class="s1">&#39;&quot;&gt;&lt;/div&gt;&#39;</span><span class="o">,</span>
       
   303         <span class="nx">footer</span> <span class="o">:</span> <span class="s1">&#39;&lt;div class=&quot;&#39;</span> <span class="o">+</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">SECTION_CLASS_NAMES</span><span class="o">[</span><span class="nx">STD_FOOTER</span><span class="o">]</span> <span class="o">+</span> <span class="s1">&#39;&quot;&gt;&lt;/div&gt;&#39;</span>
       
   304     <span class="o">};</span>
       
   305 
       
   306     <span class="c">/**</span>
       
   307 <span class="c">     * Stores nodes created from the WidgetStdMod.TEMPLATES strings,</span>
       
   308 <span class="c">     * which are cloned to create new header, footer, body sections for</span>
       
   309 <span class="c">     * new instances.</span>
       
   310 <span class="c">     *</span>
       
   311 <span class="c">     * @property WidgetStdMod._TEMPLATES</span>
       
   312 <span class="c">     * @static</span>
       
   313 <span class="c">     * @private</span>
       
   314 <span class="c">     */</span>
       
   315     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">_TEMPLATES</span> <span class="o">=</span> <span class="o">{};</span>
       
   316 
       
   317     <span class="nx">StdMod</span><span class="o">.</span><span class="nx">prototype</span> <span class="o">=</span> <span class="o">{</span>
       
   318 
       
   319         <span class="c">/**</span>
       
   320 <span class="c">         * Synchronizes the UI to match the Widgets standard module state.</span>
       
   321 <span class="c">         * &lt;p&gt;</span>
       
   322 <span class="c">         * This method is invoked after syncUI is invoked for the Widget class</span>
       
   323 <span class="c">         * using YUI&#39;s aop infrastructure.</span>
       
   324 <span class="c">         * &lt;/p&gt;</span>
       
   325 <span class="c">         * @method _syncUIStdMod</span>
       
   326 <span class="c">         * @protected</span>
       
   327 <span class="c">         */</span>
       
   328         <span class="nx">_syncUIStdMod</span> <span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
       
   329             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetStdMod</span><span class="o">(</span><span class="nx">STD_HEADER</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="nx">STD_HEADER</span> <span class="o">+</span> <span class="nx">CONTENT_SUFFIX</span><span class="o">));</span>
       
   330             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetStdMod</span><span class="o">(</span><span class="nx">STD_BODY</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="nx">STD_BODY</span> <span class="o">+</span> <span class="nx">CONTENT_SUFFIX</span><span class="o">));</span>
       
   331             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetStdMod</span><span class="o">(</span><span class="nx">STD_FOOTER</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="nx">STD_FOOTER</span> <span class="o">+</span> <span class="nx">CONTENT_SUFFIX</span><span class="o">));</span>
       
   332             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetFillHeight</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="nx">FILL_HEIGHT</span><span class="o">));</span>
       
   333         <span class="o">},</span>
       
   334 
       
   335         <span class="c">/**</span>
       
   336 <span class="c">         * Creates/Initializes the DOM for standard module support.</span>
       
   337 <span class="c">         * &lt;p&gt;</span>
       
   338 <span class="c">         * This method is invoked after renderUI is invoked for the Widget class</span>
       
   339 <span class="c">         * using YUI&#39;s aop infrastructure.</span>
       
   340 <span class="c">         * &lt;/p&gt;</span>
       
   341 <span class="c">         * @method _renderUIStdMod</span>
       
   342 <span class="c">         * @protected</span>
       
   343 <span class="c">         */</span>
       
   344         <span class="nx">_renderUIStdMod</span> <span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
       
   345             <span class="k">this</span><span class="o">.</span><span class="nx">_stdModNode</span><span class="o">.</span><span class="nx">addClass</span><span class="o">(</span><span class="nx">Widget</span><span class="o">.</span><span class="nx">getClassName</span><span class="o">(</span><span class="nx">STDMOD</span><span class="o">));</span>
       
   346         <span class="o">},</span>
       
   347 
       
   348         <span class="c">/**</span>
       
   349 <span class="c">         * Binds event listeners responsible for updating the UI state in response to </span>
       
   350 <span class="c">         * Widget standard module related state changes.</span>
       
   351 <span class="c">         * &lt;p&gt;</span>
       
   352 <span class="c">         * This method is invoked after bindUI is invoked for the Widget class</span>
       
   353 <span class="c">         * using YUI&#39;s aop infrastructure.</span>
       
   354 <span class="c">         * &lt;/p&gt;</span>
       
   355 <span class="c">         * @method _bindUIStdMod</span>
       
   356 <span class="c">         * @protected</span>
       
   357 <span class="c">         */</span>
       
   358         <span class="nx">_bindUIStdMod</span> <span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
       
   359             <span class="k">this</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="nx">HeaderChange</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_afterHeaderChange</span><span class="o">);</span>
       
   360             <span class="k">this</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="nx">BodyChange</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_afterBodyChange</span><span class="o">);</span>
       
   361             <span class="k">this</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="nx">FooterChange</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_afterFooterChange</span><span class="o">);</span>
       
   362 
       
   363             <span class="k">this</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="nx">FillHeightChange</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_afterFillHeightChange</span><span class="o">);</span>
       
   364             <span class="k">this</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="nx">HeightChange</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_fillHeight</span><span class="o">);</span>            
       
   365             <span class="k">this</span><span class="o">.</span><span class="nx">after</span><span class="o">(</span><span class="nx">ContentUpdate</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">_fillHeight</span><span class="o">);</span>
       
   366         <span class="o">},</span>
       
   367 
       
   368         <span class="c">/**</span>
       
   369 <span class="c">         * Default attribute change listener for the headerContent attribute, responsible</span>
       
   370 <span class="c">         * for updating the UI, in response to attribute changes.</span>
       
   371 <span class="c">         *</span>
       
   372 <span class="c">         * @method _afterHeaderChange</span>
       
   373 <span class="c">         * @protected</span>
       
   374 <span class="c">         * @param {EventFacade} e The event facade for the attribute change</span>
       
   375 <span class="c">         */</span>
       
   376         <span class="nx">_afterHeaderChange</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>
       
   377             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetStdMod</span><span class="o">(</span><span class="nx">STD_HEADER</span><span class="o">,</span> <span class="nx">e</span><span class="o">.</span><span class="nx">newVal</span><span class="o">,</span> <span class="nx">e</span><span class="o">.</span><span class="nx">stdModPosition</span><span class="o">);</span>
       
   378         <span class="o">},</span>
       
   379 
       
   380         <span class="c">/**</span>
       
   381 <span class="c">         * Default attribute change listener for the bodyContent attribute, responsible</span>
       
   382 <span class="c">         * for updating the UI, in response to attribute changes.</span>
       
   383 <span class="c">         *</span>
       
   384 <span class="c">         * @method _afterBodyChange</span>
       
   385 <span class="c">         * @protected</span>
       
   386 <span class="c">         * @param {EventFacade} e The event facade for the attribute change</span>
       
   387 <span class="c">         */</span>
       
   388         <span class="nx">_afterBodyChange</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>
       
   389             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetStdMod</span><span class="o">(</span><span class="nx">STD_BODY</span><span class="o">,</span> <span class="nx">e</span><span class="o">.</span><span class="nx">newVal</span><span class="o">,</span> <span class="nx">e</span><span class="o">.</span><span class="nx">stdModPosition</span><span class="o">);</span>
       
   390         <span class="o">},</span>
       
   391 
       
   392         <span class="c">/**</span>
       
   393 <span class="c">         * Default attribute change listener for the footerContent attribute, responsible</span>
       
   394 <span class="c">         * for updating the UI, in response to attribute changes.</span>
       
   395 <span class="c">         *</span>
       
   396 <span class="c">         * @method _afterFooterChange</span>
       
   397 <span class="c">         * @protected</span>
       
   398 <span class="c">         * @param {EventFacade} e The event facade for the attribute change</span>
       
   399 <span class="c">         */</span>
       
   400         <span class="nx">_afterFooterChange</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>
       
   401             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetStdMod</span><span class="o">(</span><span class="nx">STD_FOOTER</span><span class="o">,</span> <span class="nx">e</span><span class="o">.</span><span class="nx">newVal</span><span class="o">,</span> <span class="nx">e</span><span class="o">.</span><span class="nx">stdModPosition</span><span class="o">);</span>
       
   402         <span class="o">},</span>
       
   403 
       
   404         <span class="c">/**</span>
       
   405 <span class="c">         * Default attribute change listener for the fillHeight attribute, responsible</span>
       
   406 <span class="c">         * for updating the UI, in response to attribute changes.</span>
       
   407 <span class="c">         * </span>
       
   408 <span class="c">         * @method _afterFillHeightChange</span>
       
   409 <span class="c">         * @protected</span>
       
   410 <span class="c">         * @param {EventFacade} e The event facade for the attribute change</span>
       
   411 <span class="c">         */</span>
       
   412         <span class="nx">_afterFillHeightChange</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>
       
   413             <span class="k">this</span><span class="o">.</span><span class="nx">_uiSetFillHeight</span><span class="o">(</span><span class="nx">e</span><span class="o">.</span><span class="nx">newVal</span><span class="o">);</span>
       
   414         <span class="o">},</span>
       
   415 
       
   416         <span class="c">/**</span>
       
   417 <span class="c">         * Default validator for the fillHeight attribute. Verifies that the </span>
       
   418 <span class="c">         * value set is a valid section specifier - one of WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER,</span>
       
   419 <span class="c">         * or a falsey value if fillHeight is to be disabled.</span>
       
   420 <span class="c">         *</span>
       
   421 <span class="c">         * @method _validateFillHeight</span>
       
   422 <span class="c">         * @protected</span>
       
   423 <span class="c">         * @param {String} val The section which should be setup to fill height, or false/null to disable fillHeight</span>
       
   424 <span class="c">         * @return true if valid, false if not</span>
       
   425 <span class="c">         */</span>
       
   426         <span class="nx">_validateFillHeight</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">val</span><span class="o">)</span> <span class="o">{</span>
       
   427             <span class="k">return</span> <span class="o">!</span><span class="nx">val</span> <span class="o">||</span> <span class="nx">val</span> <span class="o">==</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">BODY</span> <span class="o">||</span> <span class="nx">val</span> <span class="o">==</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">HEADER</span> <span class="o">||</span> <span class="nx">val</span> <span class="o">==</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">FOOTER</span><span class="o">;</span>    
       
   428         <span class="o">},</span>
       
   429 
       
   430         <span class="c">/**</span>
       
   431 <span class="c">         * Updates the rendered UI, to resize the provided section so that the standard module fills out </span>
       
   432 <span class="c">         * the specified widget height. Note: This method does not check whether or not a height is set </span>
       
   433 <span class="c">         * on the Widget.</span>
       
   434 <span class="c">         * </span>
       
   435 <span class="c">         * @method _uiSetFillHeight</span>
       
   436 <span class="c">         * @protected</span>
       
   437 <span class="c">         * @param {String} fillSection A valid section specifier - one of WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER</span>
       
   438 <span class="c">         */</span>
       
   439         <span class="nx">_uiSetFillHeight</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">fillSection</span><span class="o">)</span> <span class="o">{</span>
       
   440             <span class="k">var</span> <span class="nx">fillNode</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">getStdModNode</span><span class="o">(</span><span class="nx">fillSection</span><span class="o">);</span>
       
   441             <span class="k">var</span> <span class="nx">currNode</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_currFillNode</span><span class="o">;</span>
       
   442 
       
   443             <span class="k">if</span> <span class="o">(</span><span class="nx">currNode</span> <span class="o">&amp;&amp;</span> <span class="nx">fillNode</span> <span class="o">!==</span> <span class="nx">currNode</span><span class="o">){</span>
       
   444                 <span class="nx">currNode</span><span class="o">.</span><span class="nx">setStyle</span><span class="o">(</span><span class="nx">HEIGHT</span><span class="o">,</span> <span class="nx">EMPTY</span><span class="o">);</span>
       
   445             <span class="o">}</span>
       
   446 
       
   447             <span class="k">if</span> <span class="o">(</span><span class="nx">fillNode</span><span class="o">)</span> <span class="o">{</span>
       
   448                 <span class="k">this</span><span class="o">.</span><span class="nx">_currFillNode</span> <span class="o">=</span> <span class="nx">fillNode</span><span class="o">;</span>
       
   449             <span class="o">}</span>
       
   450 
       
   451             <span class="k">this</span><span class="o">.</span><span class="nx">_fillHeight</span><span class="o">();</span>
       
   452         <span class="o">},</span>
       
   453 
       
   454         <span class="c">/**</span>
       
   455 <span class="c">         * Updates the rendered UI, to resize the current section specified by the fillHeight attribute, so</span>
       
   456 <span class="c">         * that the standard module fills out the Widget height. If a height has not been set on Widget,</span>
       
   457 <span class="c">         * the section is not resized (height is set to &quot;auto&quot;).</span>
       
   458 <span class="c">         * </span>
       
   459 <span class="c">         * @method _fillHeight</span>
       
   460 <span class="c">         * @private</span>
       
   461 <span class="c">         */</span>
       
   462         <span class="nx">_fillHeight</span> <span class="o">:</span> <span class="k">function</span><span class="o">()</span> <span class="o">{</span>
       
   463             <span class="k">if</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="nx">FILL_HEIGHT</span><span class="o">))</span> <span class="o">{</span>
       
   464                 <span class="k">var</span> <span class="nx">height</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="nx">HEIGHT</span><span class="o">);</span>
       
   465                 <span class="k">if</span> <span class="o">(</span><span class="nx">height</span> <span class="o">!=</span> <span class="nx">EMPTY</span> <span class="o">&amp;&amp;</span> <span class="nx">height</span> <span class="o">!=</span> <span class="nx">AUTO</span><span class="o">)</span> <span class="o">{</span>
       
   466                     <span class="k">this</span><span class="o">.</span><span class="nx">fillHeight</span><span class="o">(</span><span class="k">this</span><span class="o">.</span><span class="nx">_currFillNode</span><span class="o">);</span>    
       
   467                 <span class="o">}</span>
       
   468             <span class="o">}</span>
       
   469         <span class="o">},</span>
       
   470 
       
   471         <span class="c">/**</span>
       
   472 <span class="c">         * Updates the rendered UI, adding the provided content (either an HTML string, or node reference),</span>
       
   473 <span class="c">         * to the specified section. The content is either added before, after or replaces existing content</span>
       
   474 <span class="c">         * in the section, based on the value of the &lt;code&gt;where&lt;/code&gt; argument.</span>
       
   475 <span class="c">         * </span>
       
   476 <span class="c">         * @method _uiSetStdMod</span>
       
   477 <span class="c">         * @protected</span>
       
   478 <span class="c">         * </span>
       
   479 <span class="c">         * @param {String} section The section to be updated. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER. </span>
       
   480 <span class="c">         * @param {String | Node} content The new content (either as an HTML string, or Node reference) to add to the section</span>
       
   481 <span class="c">         * @param {String} where Optional. Either WidgetStdMod.AFTER, WidgetStdMod.BEFORE or WidgetStdMod.REPLACE.</span>
       
   482 <span class="c">         * If not provided, the content will replace existing content in the section.</span>
       
   483 <span class="c">         */</span>
       
   484         <span class="nx">_uiSetStdMod</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">,</span> <span class="nx">content</span><span class="o">,</span> <span class="nx">where</span><span class="o">)</span> <span class="o">{</span>
       
   485             <span class="k">if</span> <span class="o">(</span><span class="nx">content</span><span class="o">)</span> <span class="o">{</span>
       
   486                 <span class="k">var</span> <span class="nx">node</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">getStdModNode</span><span class="o">(</span><span class="nx">section</span><span class="o">)</span> <span class="o">||</span> <span class="k">this</span><span class="o">.</span><span class="nx">_renderStdMod</span><span class="o">(</span><span class="nx">section</span><span class="o">);</span>
       
   487                 <span class="k">if</span> <span class="o">(</span><span class="nx">content</span> <span class="k">instanceof</span> <span class="nx">Node</span><span class="o">)</span> <span class="o">{</span>
       
   488                     <span class="k">this</span><span class="o">.</span><span class="nx">_addNodeRef</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">content</span><span class="o">,</span> <span class="nx">where</span><span class="o">);</span>
       
   489                 <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   490                     <span class="k">this</span><span class="o">.</span><span class="nx">_addNodeHTML</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">content</span><span class="o">,</span> <span class="nx">where</span><span class="o">);</span>
       
   491                 <span class="o">}</span>
       
   492                 <span class="k">this</span><span class="o">.</span><span class="nx">fire</span><span class="o">(</span><span class="nx">ContentUpdate</span><span class="o">);</span>
       
   493             <span class="o">}</span>
       
   494         <span class="o">},</span>
       
   495 
       
   496         <span class="c">/**</span>
       
   497 <span class="c">         * Creates the DOM node for the given section, and inserts it into the correct location in the contentBox.</span>
       
   498 <span class="c">         *</span>
       
   499 <span class="c">         * @method _renderStdMod</span>
       
   500 <span class="c">         * @protected</span>
       
   501 <span class="c">         * @param {String} section The section to create/render. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER.</span>
       
   502 <span class="c">         * @return {Node} A reference to the added section node</span>
       
   503 <span class="c">         */</span>
       
   504         <span class="nx">_renderStdMod</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">)</span> <span class="o">{</span>
       
   505 
       
   506             <span class="k">var</span> <span class="nx">contentBox</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="nx">CONTENT_BOX</span><span class="o">),</span>
       
   507                 <span class="nx">sectionNode</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_findStdModSection</span><span class="o">(</span><span class="nx">section</span><span class="o">);</span>
       
   508 
       
   509             <span class="k">if</span> <span class="o">(!</span><span class="nx">sectionNode</span><span class="o">)</span> <span class="o">{</span>
       
   510                 <span class="nx">sectionNode</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_getStdModTemplate</span><span class="o">(</span><span class="nx">section</span><span class="o">);</span>
       
   511             <span class="o">}</span>
       
   512 
       
   513             <span class="k">this</span><span class="o">.</span><span class="nx">_insertStdModSection</span><span class="o">(</span><span class="nx">contentBox</span><span class="o">,</span> <span class="nx">section</span><span class="o">,</span> <span class="nx">sectionNode</span><span class="o">);</span>
       
   514 
       
   515             <span class="k">this</span><span class="o">[</span><span class="nx">section</span> <span class="o">+</span> <span class="nx">NODE_SUFFIX</span><span class="o">]</span> <span class="o">=</span> <span class="nx">sectionNode</span><span class="o">;</span>
       
   516             <span class="k">return</span> <span class="k">this</span><span class="o">[</span><span class="nx">section</span> <span class="o">+</span> <span class="nx">NODE_SUFFIX</span><span class="o">];</span>
       
   517         <span class="o">},</span>
       
   518 
       
   519         <span class="c">/**</span>
       
   520 <span class="c">         * Helper method to insert the Node for the given section into the correct location in the contentBox.</span>
       
   521 <span class="c">         *</span>
       
   522 <span class="c">         * @method _insertStdModSection</span>
       
   523 <span class="c">         * @private</span>
       
   524 <span class="c">         * @param {Node} contentBox A reference to the Widgets content box.</span>
       
   525 <span class="c">         * @param {String} section The section to create/render. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER.</span>
       
   526 <span class="c">         * @param {Node} sectionNode The Node for the section.</span>
       
   527 <span class="c">         */</span>
       
   528         <span class="nx">_insertStdModSection</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">contentBox</span><span class="o">,</span> <span class="nx">section</span><span class="o">,</span> <span class="nx">sectionNode</span><span class="o">)</span> <span class="o">{</span>
       
   529             <span class="k">var</span> <span class="nx">fc</span> <span class="o">=</span> <span class="nx">contentBox</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">FIRST_CHILD</span><span class="o">);</span>
       
   530 
       
   531             <span class="k">if</span> <span class="o">(</span><span class="nx">section</span> <span class="o">===</span> <span class="nx">STD_FOOTER</span> <span class="o">||</span> <span class="o">!</span><span class="nx">fc</span><span class="o">)</span> <span class="o">{</span>
       
   532                 <span class="nx">contentBox</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">sectionNode</span><span class="o">);</span>
       
   533             <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   534                 <span class="k">if</span> <span class="o">(</span><span class="nx">section</span> <span class="o">===</span> <span class="nx">STD_HEADER</span><span class="o">)</span> <span class="o">{</span>
       
   535                     <span class="nx">contentBox</span><span class="o">.</span><span class="nx">insertBefore</span><span class="o">(</span><span class="nx">sectionNode</span><span class="o">,</span> <span class="nx">fc</span><span class="o">);</span>
       
   536                 <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   537                     <span class="c">// BODY</span>
       
   538 <span class="c"></span>                    <span class="k">var</span> <span class="nx">footer</span> <span class="o">=</span> <span class="k">this</span><span class="o">[</span><span class="nx">STD_FOOTER</span> <span class="o">+</span> <span class="nx">NODE_SUFFIX</span><span class="o">];</span>
       
   539                     <span class="k">if</span> <span class="o">(</span><span class="nx">footer</span><span class="o">)</span> <span class="o">{</span>
       
   540                         <span class="nx">contentBox</span><span class="o">.</span><span class="nx">insertBefore</span><span class="o">(</span><span class="nx">sectionNode</span><span class="o">,</span> <span class="nx">footer</span><span class="o">);</span>
       
   541                     <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   542                         <span class="nx">contentBox</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">sectionNode</span><span class="o">);</span>
       
   543                     <span class="o">}</span>
       
   544                 <span class="o">}</span>
       
   545             <span class="o">}</span>
       
   546         <span class="o">},</span>
       
   547 
       
   548         <span class="c">/**</span>
       
   549 <span class="c">         * Gets a new Node reference for the given standard module section, by cloning</span>
       
   550 <span class="c">         * the stored template node.</span>
       
   551 <span class="c">         *</span>
       
   552 <span class="c">         * @method _getStdModTemplate</span>
       
   553 <span class="c">         * @protected</span>
       
   554 <span class="c">         * @param {String} section The section to create a new node for. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER.</span>
       
   555 <span class="c">         * @return {Node} The new Node instance for the section</span>
       
   556 <span class="c">         */</span>
       
   557         <span class="nx">_getStdModTemplate</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">)</span> <span class="o">{</span>
       
   558             <span class="k">var</span> <span class="nx">template</span> <span class="o">=</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">_TEMPLATES</span><span class="o">[</span><span class="nx">section</span><span class="o">];</span>
       
   559 
       
   560             <span class="k">if</span> <span class="o">(!</span><span class="nx">template</span><span class="o">)</span> <span class="o">{</span>
       
   561                 <span class="nx">StdMod</span><span class="o">.</span><span class="nx">_TEMPLATES</span><span class="o">[</span><span class="nx">section</span><span class="o">]</span> <span class="o">=</span> <span class="nx">template</span> <span class="o">=</span> <span class="nx">Node</span><span class="o">.</span><span class="nx">create</span><span class="o">(</span><span class="nx">StdMod</span><span class="o">.</span><span class="nx">TEMPLATES</span><span class="o">[</span><span class="nx">section</span><span class="o">]);</span>
       
   562             <span class="o">}</span>
       
   563             <span class="k">return</span> <span class="nx">template</span><span class="o">.</span><span class="nx">cloneNode</span><span class="o">(</span><span class="kc">true</span><span class="o">);</span>
       
   564         <span class="o">},</span>
       
   565 
       
   566         <span class="c">/**</span>
       
   567 <span class="c">         * Helper method to add the given HTML string to the node reference provided.</span>
       
   568 <span class="c">         * The HTML is added either before, after or replaces the existing node content </span>
       
   569 <span class="c">         * based on the value of the &lt;code&gt;where&lt;/code&gt; argument.</span>
       
   570 <span class="c">         *</span>
       
   571 <span class="c">         * @method _addNodeHTML</span>
       
   572 <span class="c">         * @private</span>
       
   573 <span class="c">         * </span>
       
   574 <span class="c">         * @param {Node} node The section Node to be updated.</span>
       
   575 <span class="c">         * @param {String} html The new content HTML string to be added to the section Node.</span>
       
   576 <span class="c">         * @param {String} where Optional. Either WidgetStdMod.AFTER, WidgetStdMod.BEFORE or WidgetStdMod.REPLACE.</span>
       
   577 <span class="c">         * If not provided, the content will replace Nodes existing content.</span>
       
   578 <span class="c">         */</span>
       
   579         <span class="nx">_addNodeHTML</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">html</span><span class="o">,</span> <span class="nx">where</span><span class="o">)</span> <span class="o">{</span>
       
   580             <span class="k">if</span> <span class="o">(</span><span class="nx">where</span> <span class="o">==</span> <span class="nx">AFTER</span><span class="o">)</span> <span class="o">{</span>
       
   581                 <span class="nx">node</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">INNER_HTML</span><span class="o">,</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">INNER_HTML</span><span class="o">)</span> <span class="o">+</span> <span class="nx">html</span><span class="o">);</span>
       
   582             <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="nx">where</span> <span class="o">==</span> <span class="nx">BEFORE</span><span class="o">)</span> <span class="o">{</span>
       
   583                 <span class="nx">node</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">INNER_HTML</span><span class="o">,</span> <span class="nx">html</span> <span class="o">+</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">INNER_HTML</span><span class="o">));</span>
       
   584             <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   585                 <span class="nx">node</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">INNER_HTML</span><span class="o">,</span> <span class="nx">html</span><span class="o">);</span>
       
   586             <span class="o">}</span>
       
   587         <span class="o">},</span>
       
   588 
       
   589         <span class="c">/**</span>
       
   590 <span class="c">         * Helper method to add nodes, to another node.</span>
       
   591 <span class="c">         * The child node(s) are added either before, after or replaces the existing node content </span>
       
   592 <span class="c">         * based on the value of the &lt;code&gt;where&lt;/code&gt; argument.</span>
       
   593 <span class="c">         * </span>
       
   594 <span class="c">         * @method _addNodeRef</span>
       
   595 <span class="c">         * @private</span>
       
   596 <span class="c">         * </span>
       
   597 <span class="c">         * @param {Node} node The section Node to be updated.</span>
       
   598 <span class="c">         * @param {Node|NodeList} children The new content Node, or NodeList to be added to section Node provided.</span>
       
   599 <span class="c">         * @param {String} where Optional. Either WidgetStdMod.AFTER, WidgetStdMod.BEFORE or WidgetStdMod.REPLACE.</span>
       
   600 <span class="c">         * If not provided, the content will replace existing content in the Node.</span>
       
   601 <span class="c">         */</span>
       
   602         <span class="nx">_addNodeRef</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">node</span><span class="o">,</span> <span class="nx">children</span><span class="o">,</span> <span class="nx">where</span><span class="o">)</span> <span class="o">{</span>
       
   603             <span class="k">var</span> <span class="nx">append</span> <span class="o">=</span> <span class="kc">true</span><span class="o">,</span> 
       
   604                 <span class="nx">i</span><span class="o">,</span> <span class="nx">s</span><span class="o">;</span>
       
   605 
       
   606             <span class="k">if</span> <span class="o">(</span><span class="nx">where</span> <span class="o">==</span> <span class="nx">BEFORE</span><span class="o">)</span> <span class="o">{</span>
       
   607                 <span class="k">var</span> <span class="nx">n</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">FIRST_CHILD</span><span class="o">);</span>
       
   608                 <span class="k">if</span> <span class="o">(</span><span class="nx">n</span><span class="o">)</span> <span class="o">{</span>
       
   609                     <span class="k">if</span> <span class="o">(</span><span class="nx">children</span> <span class="k">instanceof</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">NodeList</span><span class="o">)</span> <span class="o">{</span>
       
   610                         <span class="k">for</span> <span class="o">(</span><span class="nx">i</span> <span class="o">=</span> <span class="nx">children</span><span class="o">.</span><span class="nx">size</span><span class="o">()</span> <span class="o">-</span> <span class="m">1</span><span class="o">;</span> <span class="nx">i</span> <span class="o">&gt;=</span><span class="m">0</span><span class="o">;</span> <span class="o">--</span><span class="nx">i</span><span class="o">)</span> <span class="o">{</span>
       
   611                             <span class="nx">node</span><span class="o">.</span><span class="nx">insertBefore</span><span class="o">(</span><span class="nx">children</span><span class="o">.</span><span class="nx">item</span><span class="o">(</span><span class="nx">i</span><span class="o">),</span> <span class="nx">n</span><span class="o">);</span>
       
   612                         <span class="o">}</span>
       
   613                     <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   614                         <span class="nx">node</span><span class="o">.</span><span class="nx">insertBefore</span><span class="o">(</span><span class="nx">children</span><span class="o">,</span> <span class="nx">n</span><span class="o">);</span>
       
   615                     <span class="o">}</span>
       
   616                     <span class="nx">append</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
   617                 <span class="o">}</span>
       
   618             <span class="o">}</span> <span class="k">else</span> <span class="k">if</span> <span class="o">(</span><span class="nx">where</span> <span class="o">!=</span> <span class="nx">AFTER</span><span class="o">)</span> <span class="o">{</span> <span class="c">// replace</span>
       
   619 <span class="c"></span>                <span class="nx">node</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">INNER_HTML</span><span class="o">,</span> <span class="nx">EMPTY</span><span class="o">);</span>
       
   620             <span class="o">}</span>
       
   621             <span class="k">if</span> <span class="o">(</span><span class="nx">append</span><span class="o">)</span> <span class="o">{</span>
       
   622                 <span class="k">if</span> <span class="o">(</span><span class="nx">children</span> <span class="k">instanceof</span> <span class="nx">Y</span><span class="o">.</span><span class="nx">NodeList</span><span class="o">)</span> <span class="o">{</span>
       
   623                     <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">s</span> <span class="o">=</span> <span class="nx">children</span><span class="o">.</span><span class="nx">size</span><span class="o">();</span> <span class="nx">i</span> <span class="o">&lt;</span> <span class="nx">s</span><span class="o">;</span> <span class="o">++</span><span class="nx">i</span><span class="o">)</span> <span class="o">{</span>
       
   624                         <span class="nx">node</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">children</span><span class="o">.</span><span class="nx">item</span><span class="o">(</span><span class="nx">i</span><span class="o">));</span>
       
   625                     <span class="o">}</span>
       
   626                 <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   627                     <span class="nx">node</span><span class="o">.</span><span class="nx">appendChild</span><span class="o">(</span><span class="nx">children</span><span class="o">);</span>
       
   628                 <span class="o">}</span>
       
   629             <span class="o">}</span>
       
   630         <span class="o">},</span>
       
   631 
       
   632         <span class="c">/**</span>
       
   633 <span class="c">         * Helper method to obtain the precise height of the node provided, including padding and border.</span>
       
   634 <span class="c">         * The height could be a sub-pixel value for certain browsers, such as Firefox 3.</span>
       
   635 <span class="c">         *</span>
       
   636 <span class="c">         * @method _getPreciseHeight</span>
       
   637 <span class="c">         * @private</span>
       
   638 <span class="c">         * @param {Node} node The node for which the precise height is required.</span>
       
   639 <span class="c">         * @return {Number} The height of the Node including borders and padding, possibly a float.</span>
       
   640 <span class="c">         */</span>
       
   641         <span class="nx">_getPreciseHeight</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   642             <span class="k">var</span> <span class="nx">height</span> <span class="o">=</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">?</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">OFFSET_HEIGHT</span><span class="o">)</span> <span class="o">:</span> <span class="m">0</span><span class="o">,</span>
       
   643                 <span class="nx">getBCR</span> <span class="o">=</span> <span class="s2">&quot;getBoundingClientRect&quot;</span><span class="o">;</span>
       
   644 
       
   645             <span class="k">if</span> <span class="o">(</span><span class="nx">node</span> <span class="o">&amp;&amp;</span> <span class="nx">node</span><span class="o">.</span><span class="nx">hasMethod</span><span class="o">(</span><span class="nx">getBCR</span><span class="o">))</span> <span class="o">{</span>
       
   646                 <span class="k">var</span> <span class="nx">preciseRegion</span> <span class="o">=</span> <span class="nx">node</span><span class="o">.</span><span class="nx">invoke</span><span class="o">(</span><span class="nx">getBCR</span><span class="o">);</span>
       
   647                 <span class="k">if</span> <span class="o">(</span><span class="nx">preciseRegion</span><span class="o">)</span> <span class="o">{</span>
       
   648                     <span class="nx">height</span> <span class="o">=</span> <span class="nx">preciseRegion</span><span class="o">.</span><span class="nx">bottom</span> <span class="o">-</span> <span class="nx">preciseRegion</span><span class="o">.</span><span class="nx">top</span><span class="o">;</span>
       
   649                 <span class="o">}</span>
       
   650             <span class="o">}</span>
       
   651 
       
   652             <span class="k">return</span> <span class="nx">height</span><span class="o">;</span>
       
   653         <span class="o">},</span>
       
   654 
       
   655         <span class="c">/**</span>
       
   656 <span class="c">         * Helper method to query the rendered contents of the contentBox to find the</span>
       
   657 <span class="c">         * node for the given section if it exists.</span>
       
   658 <span class="c">         * </span>
       
   659 <span class="c">         * @method _findStdModSection</span>
       
   660 <span class="c">         * @private</span>
       
   661 <span class="c">         * @param {String} section The section for which the render Node is to be found. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER.</span>
       
   662 <span class="c">         * @return {Node} The rendered node for the given section, or null if not found.</span>
       
   663 <span class="c">         */</span>
       
   664         <span class="nx">_findStdModSection</span><span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">)</span> <span class="o">{</span>
       
   665             <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="nx">CONTENT_BOX</span><span class="o">).</span><span class="nx">query</span><span class="o">(</span><span class="s2">&quot;&gt; .&quot;</span> <span class="o">+</span> <span class="nx">StdMod</span><span class="o">.</span><span class="nx">SECTION_CLASS_NAMES</span><span class="o">[</span><span class="nx">section</span><span class="o">]);</span>
       
   666         <span class="o">},</span>
       
   667 
       
   668         <span class="c">/**</span>
       
   669 <span class="c">         * Utility method, used by WidgetStdMods HTML_PARSER implementation</span>
       
   670 <span class="c">         * to extract data for each section from markup.</span>
       
   671 <span class="c">         *</span>
       
   672 <span class="c">         * @method _parseStdModHTML</span>
       
   673 <span class="c">         * @private</span>
       
   674 <span class="c">         * @param {String} section</span>
       
   675 <span class="c">         * @return {String} Inner HTML string with the contents of the section</span>
       
   676 <span class="c">         */</span>
       
   677         <span class="nx">_parseStdModHTML</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">)</span> <span class="o">{</span>
       
   678             <span class="k">var</span> <span class="nx">node</span> <span class="o">=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_findStdModSection</span><span class="o">(</span><span class="nx">section</span><span class="o">);</span>
       
   679             <span class="k">return</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">?</span> <span class="nx">node</span><span class="o">.</span><span class="nx">get</span><span class="o">(</span><span class="nx">INNER_HTML</span><span class="o">)</span> <span class="o">:</span> <span class="s2">&quot;&quot;</span><span class="o">;</span>
       
   680         <span class="o">},</span>
       
   681 
       
   682         <span class="c">/**</span>
       
   683 <span class="c">         * Retrieves the child nodes (content) of a standard module section</span>
       
   684 <span class="c">         * </span>
       
   685 <span class="c">         * @method _getStdModContent</span>
       
   686 <span class="c">         * @private</span>
       
   687 <span class="c">         * @param {String} section The standard module section whose child nodes are to be retrieved. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER.</span>
       
   688 <span class="c">         * @return {Node} The child node collection of the standard module section.</span>
       
   689 <span class="c">         */</span>
       
   690         <span class="nx">_getStdModContent</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">)</span> <span class="o">{</span>
       
   691             <span class="k">return</span> <span class="o">(</span><span class="k">this</span><span class="o">[</span><span class="nx">section</span> <span class="o">+</span> <span class="nx">NODE_SUFFIX</span><span class="o">])</span> <span class="o">?</span> <span class="k">this</span><span class="o">[</span><span class="nx">section</span> <span class="o">+</span> <span class="nx">NODE_SUFFIX</span><span class="o">].</span><span class="nx">get</span><span class="o">(</span><span class="nx">CHILD_NODES</span><span class="o">)</span> <span class="o">:</span> <span class="kc">null</span><span class="o">;</span>
       
   692         <span class="o">},</span>
       
   693 
       
   694         <span class="c">/**</span>
       
   695 <span class="c">         * Updates the body section of the standard module with the content provided (either an HTML string, or node reference).</span>
       
   696 <span class="c">         * &lt;p&gt;</span>
       
   697 <span class="c">         * This method can be used instead of the corresponding section content attribute if you&#39;d like to retain the current content of the section,</span>
       
   698 <span class="c">         * and insert content before or after it, by specifying the &lt;code&gt;where&lt;/code&gt; argument.</span>
       
   699 <span class="c">         * &lt;/p&gt;</span>
       
   700 <span class="c">         * @method setStdModContent</span>
       
   701 <span class="c">         * @param {String} section The standard module section whose content is to be updated. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER.</span>
       
   702 <span class="c">         * @param {String | Node} content The content to be added, either an HTML string or a Node reference.</span>
       
   703 <span class="c">         * @param {String} where Optional. Either WidgetStdMod.AFTER, WidgetStdMod.BEFORE or WidgetStdMod.REPLACE.</span>
       
   704 <span class="c">         * If not provided, the content will replace existing content in the section.</span>
       
   705 <span class="c">         */</span>
       
   706         <span class="nx">setStdModContent</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">,</span> <span class="nx">content</span><span class="o">,</span> <span class="nx">where</span><span class="o">)</span> <span class="o">{</span>
       
   707             <span class="k">this</span><span class="o">.</span><span class="nx">set</span><span class="o">(</span><span class="nx">section</span> <span class="o">+</span> <span class="nx">CONTENT_SUFFIX</span><span class="o">,</span> <span class="nx">content</span><span class="o">,</span> <span class="o">{</span><span class="nx">stdModPosition</span><span class="o">:</span><span class="nx">where</span><span class="o">});</span>
       
   708         <span class="o">},</span>
       
   709 
       
   710         <span class="c">/**</span>
       
   711 <span class="c">         * Returns the node reference for the given section. Note: The DOM is not queried for the node reference. The reference</span>
       
   712 <span class="c">         * stored by the widget instance is returned if set.</span>
       
   713 <span class="c">         * </span>
       
   714 <span class="c">         * @method getStdModNode</span>
       
   715 <span class="c">         * @param {String} section The section whose node reference is required. Either WidgetStdMod.HEADER, WidgetStdMod.BODY or WidgetStdMod.FOOTER.</span>
       
   716 <span class="c">         * @return {Node} The node reference for the section, or null if not set.</span>
       
   717 <span class="c">         */</span>
       
   718         <span class="nx">getStdModNode</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">section</span><span class="o">)</span> <span class="o">{</span>
       
   719             <span class="k">return</span> <span class="k">this</span><span class="o">[</span><span class="nx">section</span> <span class="o">+</span> <span class="nx">NODE_SUFFIX</span><span class="o">]</span> <span class="o">||</span> <span class="kc">null</span><span class="o">;</span>
       
   720         <span class="o">},</span>
       
   721 
       
   722         <span class="c">/**</span>
       
   723 <span class="c">         * Sets the height on the provided header, body or footer element to </span>
       
   724 <span class="c">         * fill out the height of the Widget. It determines the height of the </span>
       
   725 <span class="c">         * widgets bounding box, based on it&#39;s configured height value, and </span>
       
   726 <span class="c">         * sets the height of the provided section to fill out any </span>
       
   727 <span class="c">         * space remaining after the other standard module section heights </span>
       
   728 <span class="c">         * have been accounted for.</span>
       
   729 <span class="c">         * </span>
       
   730 <span class="c">         * &lt;p&gt;&lt;strong&gt;NOTE:&lt;/strong&gt; This method is not designed to work if an explicit </span>
       
   731 <span class="c">         * height has not been set on the Widget, since for an &quot;auto&quot; height Widget, </span>
       
   732 <span class="c">         * the heights of the header/body/footer will drive the height of the Widget.&lt;/p&gt;</span>
       
   733 <span class="c">         *</span>
       
   734 <span class="c">         * @method fillHeight</span>
       
   735 <span class="c">         * @param {Node} node The node which should be resized to fill out the height</span>
       
   736 <span class="c">         * of the Widget bounding box. Should be a standard module section node which belongs</span>
       
   737 <span class="c">         * to the widget.</span>
       
   738 <span class="c">         */</span>
       
   739         <span class="nx">fillHeight</span> <span class="o">:</span> <span class="k">function</span><span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   740             <span class="k">if</span> <span class="o">(</span><span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   741                 <span class="k">var</span> <span class="nx">boundingBox</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="nx">BOUNDING_BOX</span><span class="o">),</span>
       
   742                     <span class="nx">stdModNodes</span> <span class="o">=</span> <span class="o">[</span><span class="k">this</span><span class="o">.</span><span class="nx">headerNode</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">bodyNode</span><span class="o">,</span> <span class="k">this</span><span class="o">.</span><span class="nx">footerNode</span><span class="o">],</span>
       
   743                     <span class="nx">stdModNode</span><span class="o">,</span>
       
   744                     <span class="nx">total</span> <span class="o">=</span> <span class="m">0</span><span class="o">,</span>
       
   745                     <span class="nx">filled</span> <span class="o">=</span> <span class="m">0</span><span class="o">,</span>
       
   746                     <span class="nx">remaining</span> <span class="o">=</span> <span class="m">0</span><span class="o">,</span>
       
   747                     <span class="nx">validNode</span> <span class="o">=</span> <span class="kc">false</span><span class="o">;</span>
       
   748 
       
   749                 <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">l</span> <span class="o">=</span> <span class="nx">stdModNodes</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">l</span><span class="o">;</span> <span class="nx">i</span><span class="o">++)</span> <span class="o">{</span>
       
   750                     <span class="nx">stdModNode</span> <span class="o">=</span> <span class="nx">stdModNodes</span><span class="o">[</span><span class="nx">i</span><span class="o">];</span>
       
   751                     <span class="k">if</span> <span class="o">(</span><span class="nx">stdModNode</span><span class="o">)</span> <span class="o">{</span>
       
   752                         <span class="k">if</span> <span class="o">(</span><span class="nx">stdModNode</span> <span class="o">!==</span> <span class="nx">node</span><span class="o">)</span> <span class="o">{</span>
       
   753                             <span class="nx">filled</span> <span class="o">+=</span> <span class="k">this</span><span class="o">.</span><span class="nx">_getPreciseHeight</span><span class="o">(</span><span class="nx">stdModNode</span><span class="o">);</span>
       
   754                         <span class="o">}</span> <span class="k">else</span> <span class="o">{</span>
       
   755                             <span class="nx">validNode</span> <span class="o">=</span> <span class="kc">true</span><span class="o">;</span>
       
   756                         <span class="o">}</span>
       
   757                     <span class="o">}</span>
       
   758                 <span class="o">}</span>
       
   759 
       
   760                 <span class="k">if</span> <span class="o">(</span><span class="nx">validNode</span><span class="o">)</span> <span class="o">{</span>
       
   761                     <span class="k">if</span> <span class="o">(</span><span class="nx">UA</span><span class="o">.</span><span class="nx">ie</span> <span class="o">||</span> <span class="nx">UA</span><span class="o">.</span><span class="nx">opera</span><span class="o">)</span> <span class="o">{</span>
       
   762                         <span class="c">// Need to set height to 0, to allow height to be reduced</span>
       
   763 <span class="c"></span>                        <span class="nx">node</span><span class="o">.</span><span class="nx">setStyle</span><span class="o">(</span><span class="nx">HEIGHT</span><span class="o">,</span> <span class="m">0</span> <span class="o">+</span> <span class="nx">PX</span><span class="o">);</span>
       
   764                     <span class="o">}</span>
       
   765 
       
   766                     <span class="nx">total</span> <span class="o">=</span> <span class="nb">parseInt</span><span class="o">(</span><span class="nx">boundingBox</span><span class="o">.</span><span class="nx">getComputedStyle</span><span class="o">(</span><span class="nx">HEIGHT</span><span class="o">),</span> <span class="m">10</span><span class="o">);</span>
       
   767                     <span class="k">if</span> <span class="o">(</span><span class="nx">L</span><span class="o">.</span><span class="nx">isNumber</span><span class="o">(</span><span class="nx">total</span><span class="o">))</span> <span class="o">{</span>
       
   768                         <span class="nx">remaining</span> <span class="o">=</span> <span class="nx">total</span> <span class="o">-</span> <span class="nx">filled</span><span class="o">;</span>
       
   769 
       
   770                         <span class="k">if</span> <span class="o">(</span><span class="nx">remaining</span> <span class="o">&gt;=</span> <span class="m">0</span><span class="o">)</span> <span class="o">{</span>
       
   771                             <span class="nx">node</span><span class="o">.</span><span class="nx">setStyle</span><span class="o">(</span><span class="nx">HEIGHT</span><span class="o">,</span> <span class="nx">remaining</span> <span class="o">+</span> <span class="nx">PX</span><span class="o">);</span>
       
   772                         <span class="o">}</span>
       
   773 
       
   774                         <span class="c">// Re-adjust height if required, to account for el padding and border</span>
       
   775 <span class="c"></span>                        <span class="k">var</span> <span class="nx">offsetHeight</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="nx">CONTENT_BOX</span><span class="o">).</span><span class="nx">get</span><span class="o">(</span><span class="nx">OFFSET_HEIGHT</span><span class="o">);</span> 
       
   776                         <span class="k">if</span> <span class="o">(</span><span class="nx">offsetHeight</span> <span class="o">!=</span> <span class="nx">total</span><span class="o">)</span> <span class="o">{</span>
       
   777                             <span class="nx">remaining</span> <span class="o">=</span> <span class="nx">remaining</span> <span class="o">-</span> <span class="o">(</span><span class="nx">offsetHeight</span> <span class="o">-</span> <span class="nx">total</span><span class="o">);</span>
       
   778                             <span class="nx">node</span><span class="o">.</span><span class="nx">setStyle</span><span class="o">(</span><span class="nx">HEIGHT</span><span class="o">,</span> <span class="nx">remaining</span> <span class="o">+</span> <span class="nx">PX</span><span class="o">);</span>
       
   779                         <span class="o">}</span>
       
   780                     <span class="o">}</span>
       
   781                 <span class="o">}</span>
       
   782             <span class="o">}</span>
       
   783         <span class="o">}</span>
       
   784     <span class="o">};</span>
       
   785 
       
   786     <span class="nx">Y</span><span class="o">.</span><span class="nx">WidgetStdMod</span> <span class="o">=</span> <span class="nx">StdMod</span><span class="o">;</span>
       
   787 </pre></div>
       
   788                     </div>
       
   789 			</div>
       
   790 		</div>
       
   791 		<div class="yui-b">
       
   792             <div class="nav">
       
   793 
       
   794                     <div id="moduleList" class="module">
       
   795                         <h4>Modules</h4>
       
   796                         <ul class="content">
       
   797                                 <li class=""><a href="module_anim.html" title="anim">anim</a></li>
       
   798                                 <li class=""><a href="module_attribute.html" title="attribute">attribute</a></li>
       
   799                                 <li class=""><a href="module_base.html" title="base">base</a></li>
       
   800                                 <li class=""><a href="module_cache.html" title="cache">cache</a></li>
       
   801                                 <li class=""><a href="module_classnamemanager.html" title="classnamemanager">classnamemanager</a></li>
       
   802                                 <li class=""><a href="module_collection.html" title="collection">collection</a></li>
       
   803                                 <li class=""><a href="module_console.html" title="console">console</a></li>
       
   804                                 <li class=""><a href="module_console-filters.html" title="console-filters">console-filters</a></li>
       
   805                                 <li class=""><a href="module_cookie.html" title="cookie">cookie</a></li>
       
   806                                 <li class=""><a href="module_dataschema.html" title="dataschema">dataschema</a></li>
       
   807                                 <li class=""><a href="module_datasource.html" title="datasource">datasource</a></li>
       
   808                                 <li class=""><a href="module_datatype.html" title="datatype">datatype</a></li>
       
   809                                 <li class=""><a href="module_dd.html" title="dd">dd</a></li>
       
   810                                 <li class=""><a href="module_dom.html" title="dom">dom</a></li>
       
   811                                 <li class=""><a href="module_dump.html" title="dump">dump</a></li>
       
   812                                 <li class=""><a href="module_event.html" title="event">event</a></li>
       
   813                                 <li class=""><a href="module_event-custom.html" title="event-custom">event-custom</a></li>
       
   814                                 <li class=""><a href="module_event-simulate.html" title="event-simulate">event-simulate</a></li>
       
   815                                 <li class=""><a href="module_history.html" title="history">history</a></li>
       
   816                                 <li class=""><a href="module_imageloader.html" title="imageloader">imageloader</a></li>
       
   817                                 <li class=""><a href="module_io.html" title="io">io</a></li>
       
   818                                 <li class=""><a href="module_json.html" title="json">json</a></li>
       
   819                                 <li class=""><a href="module_node.html" title="node">node</a></li>
       
   820                                 <li class=""><a href="module_node-focusmanager.html" title="node-focusmanager">node-focusmanager</a></li>
       
   821                                 <li class=""><a href="module_node-menunav.html" title="node-menunav">node-menunav</a></li>
       
   822                                 <li class=""><a href="module_oop.html" title="oop">oop</a></li>
       
   823                                 <li class=""><a href="module_overlay.html" title="overlay">overlay</a></li>
       
   824                                 <li class=""><a href="module_plugin.html" title="plugin">plugin</a></li>
       
   825                                 <li class=""><a href="module_profiler.html" title="profiler">profiler</a></li>
       
   826                                 <li class=""><a href="module_queue.html" title="queue">queue</a></li>
       
   827                                 <li class=""><a href="module_slider.html" title="slider">slider</a></li>
       
   828                                 <li class=""><a href="module_stylesheet.html" title="stylesheet">stylesheet</a></li>
       
   829                                 <li class=""><a href="module_substitute.html" title="substitute">substitute</a></li>
       
   830                                 <li class=""><a href="module_test.html" title="test">test</a></li>
       
   831                                 <li class=""><a href="module_widget.html" title="widget">widget</a></li>
       
   832                                 <li class=""><a href="module_widget-position.html" title="widget-position">widget-position</a></li>
       
   833                                 <li class=""><a href="module_widget-position-ext.html" title="widget-position-ext">widget-position-ext</a></li>
       
   834                                 <li class=""><a href="module_widget-stack.html" title="widget-stack">widget-stack</a></li>
       
   835                                 <li class="selected"><a href="module_widget-stdmod.html" title="widget-stdmod">widget-stdmod</a></li>
       
   836                                 <li class=""><a href="module_yui.html" title="yui">yui</a></li>
       
   837                         </ul>
       
   838                     </div>
       
   839 
       
   840                     <div id="classList" class="module">
       
   841                         <h4>Classes</h4>
       
   842                         <ul class="content">
       
   843                                 <li class=""><a href="WidgetStdMod.html" title="WidgetStdMod">WidgetStdMod</a></li>
       
   844                         </ul>
       
   845                     </div>
       
   846 
       
   847                     <div id="fileList" class="module">
       
   848                         <h4>Files</h4>
       
   849                         <ul class="content">        
       
   850                                 <li class="selected"><a href="Widget-StdMod.js.html" title="Widget-StdMod.js">Widget-StdMod.js</a></li>
       
   851                         </ul>
       
   852                     </div>
       
   853 
       
   854 
       
   855 
       
   856 
       
   857 
       
   858             </div>
       
   859 		</div>
       
   860 	</div>
       
   861 	<div id="ft">
       
   862         <hr />
       
   863         Copyright &copy; 2009 Yahoo! Inc. All rights reserved.
       
   864 	</div>
       
   865 </div>
       
   866 <script type="text/javascript">
       
   867     ALL_YUI_PROPS = [{"access": "private", "host": "WidgetStdMod", "name": "_addNodeHTML", "url": "WidgetStdMod.html#method__addNodeHTML", "type": "method"}, {"access": "private", "host": "WidgetStdMod", "name": "_addNodeRef", "url": "WidgetStdMod.html#method__addNodeRef", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_afterBodyChange", "url": "WidgetStdMod.html#method__afterBodyChange", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_afterFillHeightChange", "url": "WidgetStdMod.html#method__afterFillHeightChange", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_afterFooterChange", "url": "WidgetStdMod.html#method__afterFooterChange", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_afterHeaderChange", "url": "WidgetStdMod.html#method__afterHeaderChange", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_bindUIStdMod", "url": "WidgetStdMod.html#method__bindUIStdMod", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "bodyContent", "url": "WidgetStdMod.html#config_bodyContent", "type": "config"}, {"access": "", "host": "WidgetStdMod", "name": "bodyContentChange", "url": "WidgetStdMod.html#event_bodyContentChange", "type": "event"}, {"access": "private", "host": "WidgetStdMod", "name": "_fillHeight", "url": "WidgetStdMod.html#method__fillHeight", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "fillHeight", "url": "WidgetStdMod.html#method_fillHeight", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "fillHeight", "url": "WidgetStdMod.html#config_fillHeight", "type": "config"}, {"access": "", "host": "WidgetStdMod", "name": "fillHeightChange", "url": "WidgetStdMod.html#event_fillHeightChange", "type": "event"}, {"access": "private", "host": "WidgetStdMod", "name": "_findStdModSection", "url": "WidgetStdMod.html#method__findStdModSection", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "footerContent", "url": "WidgetStdMod.html#config_footerContent", "type": "config"}, {"access": "", "host": "WidgetStdMod", "name": "footerContentChange", "url": "WidgetStdMod.html#event_footerContentChange", "type": "event"}, {"access": "private", "host": "WidgetStdMod", "name": "_getPreciseHeight", "url": "WidgetStdMod.html#method__getPreciseHeight", "type": "method"}, {"access": "private", "host": "WidgetStdMod", "name": "_getStdModContent", "url": "WidgetStdMod.html#method__getStdModContent", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "getStdModNode", "url": "WidgetStdMod.html#method_getStdModNode", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_getStdModTemplate", "url": "WidgetStdMod.html#method__getStdModTemplate", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "headerContent", "url": "WidgetStdMod.html#config_headerContent", "type": "config"}, {"access": "", "host": "WidgetStdMod", "name": "headerContentChange", "url": "WidgetStdMod.html#event_headerContentChange", "type": "event"}, {"access": "private", "host": "WidgetStdMod", "name": "_insertStdModSection", "url": "WidgetStdMod.html#method__insertStdModSection", "type": "method"}, {"access": "private", "host": "WidgetStdMod", "name": "_parseStdModHTML", "url": "WidgetStdMod.html#method__parseStdModHTML", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_renderStdMod", "url": "WidgetStdMod.html#method__renderStdMod", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_renderUIStdMod", "url": "WidgetStdMod.html#method__renderUIStdMod", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "setStdModContent", "url": "WidgetStdMod.html#method_setStdModContent", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_syncUIStdMod", "url": "WidgetStdMod.html#method__syncUIStdMod", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_uiSetFillHeight", "url": "WidgetStdMod.html#method__uiSetFillHeight", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_uiSetStdMod", "url": "WidgetStdMod.html#method__uiSetStdMod", "type": "method"}, {"access": "protected", "host": "WidgetStdMod", "name": "_validateFillHeight", "url": "WidgetStdMod.html#method__validateFillHeight", "type": "method"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.AFTER", "url": "WidgetStdMod.html#property_WidgetStdMod.AFTER", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.ATTRS", "url": "WidgetStdMod.html#property_WidgetStdMod.ATTRS", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.BEFORE", "url": "WidgetStdMod.html#property_WidgetStdMod.BEFORE", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.BODY", "url": "WidgetStdMod.html#property_WidgetStdMod.BODY", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.FOOTER", "url": "WidgetStdMod.html#property_WidgetStdMod.FOOTER", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.HEADER", "url": "WidgetStdMod.html#property_WidgetStdMod.HEADER", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.HTML_PARSER", "url": "WidgetStdMod.html#property_WidgetStdMod.HTML_PARSER", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.REPLACE", "url": "WidgetStdMod.html#property_WidgetStdMod.REPLACE", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.SECTION_CLASS_NAMES", "url": "WidgetStdMod.html#property_WidgetStdMod.SECTION_CLASS_NAMES", "type": "property"}, {"access": "private", "host": "WidgetStdMod", "name": "WidgetStdMod._TEMPLATES", "url": "WidgetStdMod.html#property_WidgetStdMod._TEMPLATES", "type": "property"}, {"access": "", "host": "WidgetStdMod", "name": "WidgetStdMod.TEMPLATES", "url": "WidgetStdMod.html#property_WidgetStdMod.TEMPLATES", "type": "property"}];
       
   868 </script>
       
   869 </body>
       
   870 </html>