0001 
0002 /*
0003  *  JScripter Standard 1.0 - To Script In Java
0004  *  Copyright (C) 2008-2011  J.J.Liu<jianjunliu@126.com> <http://www.jscripter.org>
0005  *  
0006  *  This program is free software: you can redistribute it and/or modify
0007  *  it under the terms of the GNU Affero General Public License as published by
0008  *  the Free Software Foundation, either version 3 of the License, or
0009  *  (at your option) any later version.
0010  *  
0011  *  This program is distributed in the hope that it will be useful,
0012  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
0013  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
0014  *  GNU Affero General Public License for more details.
0015  *  
0016  *  You should have received a copy of the GNU Affero General Public License
0017  *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
0018  */
0019 
0020 package js.user;
0021 
0022 import js.*;
0023 import js.core.*;
0024 
0025 /**
0026  * <p>An <b>opaque</b> class representing JavaScript client-side objects of the global 
0027  * {@link JsClient#HTMLElement} class.</p>
0028  * <p>Each tag in an HTML document is represented by a {@link JsHTMLElement} object. 
0029  * This class defines properties that represent the attributes shared by all HTML elements.</p>
0030  * <p>following HTML tags do not have any properties other than those defined and fully 
0031  * described by {@link JsHTMLElement}: <tt>&lt;abbr&gt;</tt>, <tt>&lt;acronym&gt;</tt>, 
0032  * <tt>&lt;address&gt;</tt>, <tt>&lt;b&gt;</tt>, <tt>&lt;bdo&gt;</tt>, <tt>&lt;big&gt;</tt>, 
0033  * <tt>&lt;center&gt;</tt>, <tt>&lt;cite&gt;</tt>, <tt>&lt;code&gt;</tt>, <tt>&lt;dd&gt;</tt>, 
0034  * <tt>&lt;dfn&gt;</tt>, <tt>&lt;dt&gt;</tt>, <tt>&lt;em&gt;</tt>, <tt>&lt;i&gt;</tt>, 
0035  * <tt>&lt;kbd&gt;</tt>, <tt>&lt;noframes&gt;</tt>, <tt>&lt;noscript&gt;</tt>, <tt>&lt;s&gt;</tt>, 
0036  * <tt>&lt;samp&gt;</tt>, <tt>&lt;small&gt;</tt>, <tt>&lt;span&gt;</tt>, <tt>&lt;strike&gt;</tt>, 
0037  * <tt>&lt;strong&gt;</tt>, <tt>&lt;sub&gt;</tt>, <tt>&lt;sup&gt;</tt>, <tt>&lt;tt&gt;</tt>, 
0038  * <tt>&lt;u&gt;</tt>, <tt>&lt;var&gt;</tt>.</p>
0039  * <p>Most HTML tags define properties other than those explicitly defined in this class. 
0040  * The DOM Level 2 HTML specification defines tag-specific interfaces for these tags, 
0041  * so that all standard HTML attributes have a corresponding standard JavaScript property. 
0042  * Typically, a tag named <i>Tag</i> has a tag-specific <b>opaque</b> class named 
0043  * JsHTML<i>Tag</i>Element. In a few cases, two or more related tags share a single class, 
0044  * as in the case of the <tt>&lt;h1&gt;</tt> through <tt>&lt;h6&gt;</tt> tags, which are 
0045  * all represented by the {@link JsHTMLHeadingElement} class.</p>
0046  * <p>Most of these tag-specific classes do nothing more than define a JavaScript property 
0047  * for each attribute of the HTML tag. The JavaScript properties have the same names as 
0048  * the attributes and use lower-case or, when the attribute name consists of multiple 
0049  * words, mixed case. When an HTML attribute name is a reserved word in Java or JavaScript, 
0050  * the property name is changed slightly.</p>
0051  *
0052  * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0053  *
0054  * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be
0055  * generated into the target codes. Re-compilers must exit with error on the operations of
0056  * accessing that kind of class objects.
0057  * The <tt>checkcast</tt> operation to the class literal of this interface must be ignored
0058  * and <tt>instanceof</tt> to it always <tt>true</tt>.
0059  */
0060 public class JsHTMLElement extends JsClient.HTMLElement.Prototype
0061 {
0062     /**
0063      * <p>An <b>internal</b> class containing membership data for its enclosing
0064      * opaque class.</p>
0065      * <p>This class is only used inside of <b>opaque</b> or <b>internal</b> classes or
0066      * class members.</p>
0067      *
0068      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0069      * 
0070      * @javascript Re-compilers must report error on resolving an <b>internal</b> class.
0071      */
0072     protected static abstract class Members extends JsClient.HTMLElement.Prototype.Members
0073     {
0074         /**
0075          * <p>An <b>internal</b> static field defining a member ID of the field name and
0076          * used internally to define a member of the same name.</p>
0077          * @since 1.0
0078          * @see JsHTMLElement#className
0079          * @see JsHTMLElement.Member#className
0080          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0081          */
0082         public final static Mid className    = id("className"   );
0083         /**
0084          * <p>An <b>internal</b> static field defining a member ID of the field name and
0085          * used internally to define a member of the same name.</p>
0086          * @since 1.0
0087          * @see JsHTMLElement#currentStyle
0088          * @see JsHTMLElement.Member#currentStyle
0089          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0090          */
0091         public final static Mid currentStyle = id("currentStyle");
0092         /**
0093          * <p>An <b>internal</b> static field defining a member ID of the field name and
0094          * used internally to define a member of the same name.</p>
0095          * @since 1.0
0096          * @see JsHTMLElement#dir
0097          * @see JsHTMLElement.Member#dir
0098          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0099          */
0100         public final static Mid dir          = id("dir"         );
0101         /**
0102          * <p>An <b>internal</b> static field defining a member ID of the field name and
0103          * used internally to define a member of the same name.</p>
0104          * @since 1.0
0105          * @see JsHTMLElement#id
0106          * @see JsHTMLElement.Member#id
0107          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0108          */
0109         public final static Mid id           = id("id"          );
0110         /**
0111          * <p>An <b>internal</b> static field defining a member ID of the field name and
0112          * used internally to define a member of the same name.</p>
0113          * @since 1.0
0114          * @see JsHTMLElement#innerHTML
0115          * @see JsHTMLElement.Member#innerHTML
0116          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0117          */
0118         public final static Mid innerHTML    = id("innerHTML"   );
0119         /**
0120          * <p>An <b>internal</b> static field defining a member ID of the field name and
0121          * used internally to define a member of the same name.</p>
0122          * @since 1.0
0123          * @see JsHTMLElement#lang
0124          * @see JsHTMLElement.Member#lang
0125          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0126          */
0127         public final static Mid lang         = id("lang"        );
0128         /**
0129          * <p>An <b>internal</b> static field defining a member ID of the field name and
0130          * used internally to define a member of the same name.</p>
0131          * @since 1.0
0132          * @see JsHTMLElement#clientHeight
0133          * @see JsHTMLElement.Member#clientHeight
0134          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0135          */
0136         public final static Mid clientHeight = id("clientHeight");
0137         /**
0138          * <p>An <b>internal</b> static field defining a member ID of the field name and
0139          * used internally to define a member of the same name.</p>
0140          * @since 1.0
0141          * @see JsHTMLElement#clientWidth
0142          * @see JsHTMLElement.Member#clientWidth
0143          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0144          */
0145         public final static Mid clientWidth  = id("clientWidth" );
0146         /**
0147          * <p>An <b>internal</b> static field defining a member ID of the field name and
0148          * used internally to define a member of the same name.</p>
0149          * @since 1.0
0150          * @see JsHTMLElement#offsetHeight
0151          * @see JsHTMLElement.Member#offsetHeight
0152          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0153          */
0154         public final static Mid offsetHeight = id("offsetHeight");
0155         /**
0156          * <p>An <b>internal</b> static field defining a member ID of the field name and
0157          * used internally to define a member of the same name.</p>
0158          * @since 1.0
0159          * @see JsHTMLElement#offsetWidth
0160          * @see JsHTMLElement.Member#offsetWidth
0161          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0162          */
0163         public final static Mid offsetWidth  = id("offsetWidth" );
0164         /**
0165          * <p>An <b>internal</b> static field defining a member ID of the field name and
0166          * used internally to define a member of the same name.</p>
0167          * @since 1.0
0168          * @see JsHTMLElement#offsetLeft
0169          * @see JsHTMLElement.Member#offsetLeft
0170          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0171          */
0172         public final static Mid offsetLeft   = id("offsetLeft"  );
0173         /**
0174          * <p>An <b>internal</b> static field defining a member ID of the field name and
0175          * used internally to define a member of the same name.</p>
0176          * @since 1.0
0177          * @see JsHTMLElement#offsetTop
0178          * @see JsHTMLElement.Member#offsetTop
0179          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0180          */
0181         public final static Mid offsetTop    = id("offsetTop"   );
0182         /**
0183          * <p>An <b>internal</b> static field defining a member ID of the field name and
0184          * used internally to define a member of the same name.</p>
0185          * @since 1.0
0186          * @see JsHTMLElement#offsetParent
0187          * @see JsHTMLElement.Member#offsetParent
0188          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0189          */
0190         public final static Mid offsetParent = id("offsetParent");
0191         /**
0192          * <p>An <b>internal</b> static field defining a member ID of the field name and
0193          * used internally to define a member of the same name.</p>
0194          * @since 1.0
0195          * @see JsHTMLElement#scrollHeight
0196          * @see JsHTMLElement.Member#scrollHeight
0197          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0198          */
0199         public final static Mid scrollHeight = id("scrollHeight");
0200         /**
0201          * <p>An <b>internal</b> static field defining a member ID of the field name and
0202          * used internally to define a member of the same name.</p>
0203          * @since 1.0
0204          * @see JsHTMLElement#scrollWidth
0205          * @see JsHTMLElement.Member#scrollWidth
0206          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0207          */
0208         public final static Mid scrollWidth  = id("scrollWidth" );
0209         /**
0210          * <p>An <b>internal</b> static field defining a member ID of the field name and
0211          * used internally to define a member of the same name.</p>
0212          * @since 1.0
0213          * @see JsHTMLElement#scrollLeft
0214          * @see JsHTMLElement.Member#scrollLeft
0215          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0216          */
0217         public final static Mid scrollLeft   = id("scrollLeft"  );
0218         /**
0219          * <p>An <b>internal</b> static field defining a member ID of the field name and
0220          * used internally to define a member of the same name.</p>
0221          * @since 1.0
0222          * @see JsHTMLElement#scrollTop
0223          * @see JsHTMLElement.Member#scrollTop
0224          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0225          */
0226         public final static Mid scrollTop    = id("scrollTop"   );
0227         /**
0228          * <p>An <b>internal</b> static field defining a member ID of the field name and
0229          * used internally to define a member of the same name.</p>
0230          * @since 1.0
0231          * @see JsHTMLElement#style
0232          * @see JsHTMLElement.Member#style
0233          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0234          */
0235         public final static Mid style        = id("style"       );
0236         /**
0237          * <p>An <b>internal</b> static field defining a member ID of the field name and
0238          * used internally to define a member of the same name.</p>
0239          * @since 1.0
0240          * @see JsHTMLElement#title
0241          * @see JsHTMLElement.Member#title
0242          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0243          */
0244         public final static Mid title        = id("title"       );
0245         /**
0246          * <p>An <b>internal</b> static field defining a member ID of the field name and
0247          * used internally to define a member of the same name.</p>
0248          * @since 1.0
0249          * @see JsHTMLElement#onclick
0250          * @see JsHTMLElement.Member#onclick
0251          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0252          */
0253         public final static Mid onclick      = id("onclick"     );
0254         /**
0255          * <p>An <b>internal</b> static field defining a member ID of the field name and
0256          * used internally to define a member of the same name.</p>
0257          * @since 1.0
0258          * @see JsHTMLElement#ondblclick
0259          * @see JsHTMLElement.Member#ondblclick
0260          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0261          */
0262         public final static Mid ondblclick   = id("ondblclick"  );
0263         /**
0264          * <p>An <b>internal</b> static field defining a member ID of the field name and
0265          * used internally to define a member of the same name.</p>
0266          * @since 1.0
0267          * @see JsHTMLElement#onkeydown
0268          * @see JsHTMLElement.Member#onkeydown
0269          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0270          */
0271         public final static Mid onkeydown    = id("onkeydown"   );
0272         /**
0273          * <p>An <b>internal</b> static field defining a member ID of the field name and
0274          * used internally to define a member of the same name.</p>
0275          * @since 1.0
0276          * @see JsHTMLElement#onkeypress
0277          * @see JsHTMLElement.Member#onkeypress
0278          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0279          */
0280         public final static Mid onkeypress   = id("onkeypress"  );
0281         /**
0282          * <p>An <b>internal</b> static field defining a member ID of the field name and
0283          * used internally to define a member of the same name.</p>
0284          * @since 1.0
0285          * @see JsHTMLElement#onkeyup
0286          * @see JsHTMLElement.Member#onkeyup
0287          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0288          */
0289         public final static Mid onkeyup      = id("onkeyup"     );
0290         /**
0291          * <p>An <b>internal</b> static field defining a member ID of the field name and
0292          * used internally to define a member of the same name.</p>
0293          * @since 1.0
0294          * @see JsHTMLElement#onmousedown
0295          * @see JsHTMLElement.Member#onmousedown
0296          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0297          */
0298         public final static Mid onmousedown  = id("onmousedown" );
0299         /**
0300          * <p>An <b>internal</b> static field defining a member ID of the field name and
0301          * used internally to define a member of the same name.</p>
0302          * @since 1.0
0303          * @see JsHTMLElement#onmousemove
0304          * @see JsHTMLElement.Member#onmousemove
0305          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0306          */
0307         public final static Mid onmousemove  = id("onmousemove" );
0308         /**
0309          * <p>An <b>internal</b> static field defining a member ID of the field name and
0310          * used internally to define a member of the same name.</p>
0311          * @since 1.0
0312          * @see JsHTMLElement#onmouseout
0313          * @see JsHTMLElement.Member#onmouseout
0314          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0315          */
0316         public final static Mid onmouseout   = id("onmouseout"  );
0317         /**
0318          * <p>An <b>internal</b> static field defining a member ID of the field name and
0319          * used internally to define a member of the same name.</p>
0320          * @since 1.0
0321          * @see JsHTMLElement#onmouseover
0322          * @see JsHTMLElement.Member#onmouseover
0323          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0324          */
0325         public final static Mid onmouseover  = id("onmouseover" );
0326         /**
0327          * <p>An <b>internal</b> static field defining a member ID of the field name and
0328          * used internally to define a member of the same name.</p>
0329          * @since 1.0
0330          * @see JsHTMLElement#onmouseup
0331          * @see JsHTMLElement.Member#onmouseup
0332          * @javascript Re-compilers must report error on accessing an <b>internal</b> field.
0333          */
0334         public final static Mid onmouseup    = id("onmouseup"   );
0335     }
0336 
0337     /**
0338      * <p>An <b>opaque</b> class representing members of its enclosing <b>opaque</b> type.</p>
0339      * <p>Note that, this class is <b>opaque</b> but its constructors are all <b>internal</b>. 
0340      * This class and the subclasses of this class are used to declare either <b>opaque</b> 
0341      * <tt>public</tt> instance fields of the opaque type {@link js.Var.Member} or the 
0342      * <b>opaque</b> <tt>public</tt> static fields of other <b>opaque</b> types while their 
0343      * constructors are used to define the fields inside <b>opaque</b> classes. Under 
0344      * either circumstance, the field names must be exactly same as the member names, as 
0345      * the <b>opaque</b> fields of <b>opaque</b> types are resolved by re-compilers directly 
0346      * based on the field names.</p>
0347      *
0348      * @author <a href="mailto:jianjunliu@126.com">J.J.Liu (Jianjun Liu)</a> at <a href="http://www.jscripter.org" target="_blank">http://www.jscripter.org</a>
0349      * 
0350      * @javascript <b>Opaque</b> types can be resolved but no class objects for them can be created
0351      * in the target codes. Re-compilers must exit with error on operations accessing that kind 
0352      * of class objects.
0353      * Re-compilers must resolve an <b>opaque</b> instance field declared by this class in
0354      * {@link js.Var.Member} or its subclasses to the JavaScript identifier: 
0355      * <pre>q.m</pre>
0356      * where <tt>m</tt> is the identifier of the field name and <tt>q</tt> is the identifier
0357      * resolved from the instance of the enclosing member. Re-compilers must resolve an 
0358      * <b>opaque</b> static field declared by this class in <b>opaque</b> types other than 
0359      * {@link js.Var.Member} and its subclasses to the JavaScript identifier: 
0360      * <pre>m</pre>
0361      * where <tt>m</tt> is the identifier of the field name. And re-compilers must report
0362      * error on the access to <b>opaque</b> fields declared by this class under any other 
0363      * circumstances.
0364      */
0365     public static class Member extends JsClient.HTMLElement.Prototype.Member
0366     {
0367         /**
0368          * <p>Internally constructs a member based on a qualifying member.</p>
0369          * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0370          * or <b>internal</b> classes or class members.</p>
0371          * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0372          * <b>opaque</b>. This constructor is used to define <b>opaque</b> instance fields 
0373          * declared in the declaring class of this constructor itself or its subclasses. 
0374          * Under this circumstance, the field names must be exactly same as the member 
0375          * names, as the <b>opaque</b> instance fields of the <b>opaque</b> type 
0376          * {@link js.Var.Member} or its subclasses are resolved by re-compilers directly
0377          * to their names appending to the name resolved from the specified qualifying 
0378          * member with a dot in between.</p>
0379          * @param q A qualifying member
0380          * @param mid The ID of the member to construct
0381          * @since 1.0
0382          * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0383          */
0384         public Member(JsObject.Member q, Mid mid) {
0385             super(q, mid);
0386         }
0387         /**
0388          * <p>Internally constructs a member without a qualifying member.</p>
0389          * <p>This constructor is <b>internal</b> and only called inside of <b>opaque</b>
0390          * or <b>internal</b> classes or class members.</p>
0391          * <p>Note that, this constructor is <b>internal</b> but its declaring class is
0392          * <b>opaque</b>. This constructor is used to define <b>opaque</b> static fields, 
0393          * declared in <b>opaque</b> types other than the declaring class of this constructor 
0394          * itself and its subclasses. Under this circumstance, the field names must be
0395          * exactly same as the member names, as the <b>opaque</b> static fields of <b>opaque</b>
0396          * types are generally resolved by re-compilers directly to identifiers of their names.</p>
0397          * @param mid The ID of the member to construct
0398          * @since 1.0
0399          * @javascript Re-compilers must report error on the invocation to an <b>internal</b> constructor.
0400          */
0401         public Member(Mid mid) {
0402             super(mid);
0403         }
0404         @Override
0405         /**
0406          * <p>Evaluates the property, represented by the current member instance, of the
0407          * argument object.</p>
0408          * @param o The argument object
0409          * @return The value of the current member based on the object argument.
0410          * @since 1.0
0411          * @javascript Re-compilers must convert the instance invocation of this method into
0412          * the JavaScript expression: 
0413          * <pre>o.m</pre>
0414          * where <tt>m</tt> is the identifier name resolved from the current member
0415          * instance of the invocation.
0416          */
0417         public JsHTMLElement with(ObjectLike o) {
0418             return new JsHTMLElement(super.with(o));
0419         }
0420 
0421         /**
0422          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0423          * name of this field, qualified by the current member instance of the field, and 
0424          * to access the property of the name on an object.</p>
0425          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0426          * refers to the value of the <tt>class</tt> attribute of the element, which 
0427          * specifies zero or more space-separated CSS class names. Note that this property 
0428          * is not named "class" because that name is a reserved word in Java and JavaScript.</p>
0429          * @since 1.0
0430          * @javascript Re-compilers must resolve the member of this instance field to the
0431          * identifier of the field name appending to the identifier resolved from its 
0432          * qualifying member with a dot in between.
0433          */
0434         public final Value.String.Member className = new Value.String.Member(this, Members.className);
0435         /**
0436          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0437          * name of this field, qualified by the current member instance of the field, and 
0438          * to access the property of the name on an object.</p>
0439          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0440          * refers to the value of the <tt>dir</tt> attribute of the element, which 
0441          * specifies the text direction for the document.</p> 
0442          * @since 1.0
0443          * @javascript Re-compilers must resolve the member of this instance field to the
0444          * identifier of the field name appending to the identifier resolved from its 
0445          * qualifying member with a dot in between.
0446          */
0447         public final Value.String.Member dir       = new Value.String.Member(this, Members.dir      );
0448         /**
0449          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0450          * name of this field, qualified by the current member instance of the field, and 
0451          * to access the property of the name on an object.</p>
0452          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0453          * refers to the value of the <tt>id</tt> attribute. No two elements within the 
0454          * same document should have the same value for <tt>id</tt>.</p> 
0455          * @since 1.0
0456          * @javascript Re-compilers must resolve the member of this instance field to the
0457          * identifier of the field name appending to the identifier resolved from its 
0458          * qualifying member with a dot in between.
0459          */
0460         public final Value.String.Member id        = new Value.String.Member(this, Members.id       );
0461         /**
0462          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0463          * name of this field, qualified by the current member instance of the field, and 
0464          * to access the property of the name on an object.</p>
0465          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0466          * refers to a read/write string that specifies the HTML text that is contained 
0467          * within the element, not including the opening and closing tags of the element 
0468          * itself. Querying this property returns the content of the element as a string 
0469          * of HTML text. Setting this property to a string of HTML text replaces the 
0470          * content of the element with the parsed representation of the HTML. You cannot 
0471          * set this property while the document is loading (see {@link JsHTMLDocument#write(String)} 
0472          * for this ability). This is a nonstandard property that originated in IE 4. 
0473          * It has been implemented by all modern browsers.</p> 
0474          * @since 1.0
0475          * @javascript Re-compilers must resolve the member of this instance field to the
0476          * identifier of the field name appending to the identifier resolved from its 
0477          * qualifying member with a dot in between.
0478          */
0479         public final Value.String.Member innerHTML = new Value.String.Member(this, Members.innerHTML);
0480         /**
0481          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0482          * name of this field, qualified by the current member instance of the field, and 
0483          * to access the property of the name on an object.</p>
0484          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0485          * refers to the value of the <tt>lang</tt> attribute, which specifies the 
0486          * language code for the element's content.</p> 
0487          * @since 1.0
0488          * @javascript Re-compilers must resolve the member of this instance field to the
0489          * identifier of the field name appending to the identifier resolved from its 
0490          * qualifying member with a dot in between.
0491          */
0492         public final Value.String.Member lang      = new Value.String.Member(this, Members.lang     );
0493         /**
0494          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0495          * name of this field, qualified by the current member instance of the field, and 
0496          * to access the property of the name on an object.</p>
0497          * @since 1.0
0498          * @javascript Re-compilers must resolve the member of this instance field to the
0499          * identifier of the field name appending to the identifier resolved from its 
0500          * qualifying member with a dot in between.
0501          */
0502         public final Value.Number.Member clientHeight = new Value.Number.Member(this, Members.clientHeight);
0503         /**
0504          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0505          * name of this field, qualified by the current member instance of the field, and 
0506          * to access the property of the name on an object.</p>
0507          * @since 1.0
0508          * @javascript Re-compilers must resolve the member of this instance field to the
0509          * identifier of the field name appending to the identifier resolved from its 
0510          * qualifying member with a dot in between.
0511          */
0512         public final Value.Number.Member clientWidth  = new Value.Number.Member(this, Members.clientWidth );
0513         /**
0514          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0515          * name of this field, qualified by the current member instance of the field, and 
0516          * to access the property of the name on an object.</p>
0517          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0518          * refers to the height, in pixels, of the element and all its content, including 
0519          * the element's CSS padding and border, but not its margin. This is a nonstandard 
0520          * but well-supported property.</p> 
0521          * @since 1.0
0522          * @javascript Re-compilers must resolve the member of this instance field to the
0523          * identifier of the field name appending to the identifier resolved from its 
0524          * qualifying member with a dot in between.
0525          */
0526         public final Value.Integer.Member offsetHeight = new Value.Integer.Member(this, Members.offsetHeight);
0527         /**
0528          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0529          * name of this field, qualified by the current member instance of the field, and 
0530          * to access the property of the name on an object.</p>
0531          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0532          * refers to the width, in pixels, of the element and all its content, including 
0533          * the element's CSS padding and border, but not its margin. This is a nonstandard 
0534          * but well-supported property.</p> 
0535          * @since 1.0
0536          * @javascript Re-compilers must resolve the member of this instance field to the
0537          * identifier of the field name appending to the identifier resolved from its 
0538          * qualifying member with a dot in between.
0539          */
0540         public final Value.Number.Member offsetWidth  = new Value.Number.Member(this, Members.offsetWidth );
0541         /**
0542          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0543          * name of this field, qualified by the current member instance of the field, and 
0544          * to access the property of the name on an object.</p>
0545          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0546          * refers to The X coordinate of the upper-left corner of the CSS border of the 
0547          * element relative to the {@link #offsetParent} container element. This is a 
0548          * nonstandard but well-supported property.</p> 
0549          * @since 1.0
0550          * @javascript Re-compilers must resolve the member of this instance field to the
0551          * identifier of the field name appending to the identifier resolved from its 
0552          * qualifying member with a dot in between.
0553          */
0554         public final Value.Number.Member offsetLeft   = new Value.Number.Member(this, Members.offsetLeft  );
0555         /**
0556          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0557          * name of this field, qualified by the current member instance of the field, and 
0558          * to access the property of the name on an object.</p>
0559          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0560          * refers to The Y coordinate of the upper-left corner of the CSS border of the 
0561          * element relative to the {@link #offsetParent} container element. This is a 
0562          * nonstandard but well-supported property.</p> 
0563          * @since 1.0
0564          * @javascript Re-compilers must resolve the member of this instance field to the
0565          * identifier of the field name appending to the identifier resolved from its 
0566          * qualifying member with a dot in between.
0567          */
0568         public final Value.Number.Member offsetTop    = new Value.Number.Member(this, Members.offsetTop   );
0569         /**
0570          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0571          * name of this field, qualified by the current member instance of the field, and 
0572          * to access the property of the name on an object.</p>
0573          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0574          * refers to the overall height, in pixels, of an element. When an element has 
0575          * scrollbars (because of the CSS <tt>overflow</tt> attribute, for example) the 
0576          * property differs from {@link #offsetHeight}, which simply reports the height 
0577          * of the visible portion of the element. This is non-standard but well-supported 
0578          * property.</p> 
0579          * @since 1.0
0580          * @javascript Re-compilers must resolve the member of this instance field to the
0581          * identifier of the field name appending to the identifier resolved from its 
0582          * qualifying member with a dot in between.
0583          */
0584         public final Value.Number.Member scrollHeight = new Value.Number.Member(this, Members.scrollHeight);
0585         /**
0586          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0587          * name of this field, qualified by the current member instance of the field, and 
0588          * to access the property of the name on an object.</p>
0589          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0590          * refers to the overall width, in pixels, of an element. When an element has 
0591          * scrollbars (because of the CSS <tt>overflow</tt> attribute, for example) the 
0592          * property differs from {@link #offsetWidth}, which simply reports the width 
0593          * of the visible portion of the element. This is non-standard but well-supported 
0594          * property.</p> 
0595          * @since 1.0
0596          * @javascript Re-compilers must resolve the member of this instance field to the
0597          * identifier of the field name appending to the identifier resolved from its 
0598          * qualifying member with a dot in between.
0599          */
0600         public final Value.Number.Member scrollWidth  = new Value.Number.Member(this, Members.scrollWidth );
0601         /**
0602          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0603          * name of this field, qualified by the current member instance of the field, and 
0604          * to access the property of the name on an object.</p>
0605          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0606          * refers to the number of pixels that have scrolled off the left edge of the 
0607          * element. The property is useful only for elements with scrollbars, such as 
0608          * elements with the CSS <tt>overflow</tt> attribute set to <tt>auto</tt>. This 
0609          * property is also defined on the <tt>&lt;body&gt;</tt> or <tt>&lt;html&gt;</tt> 
0610          * tag of the document (this is browser-dependent) and specifies the amount of 
0611          * scrolling for the document as a whole. Note that this property does not 
0612          * specify the amount of scrolling in an <tt>&lt;iframe&gt;</tt> tag. This is a 
0613          * non-standard but well-supported property.</p> 
0614          * @since 1.0
0615          * @javascript Re-compilers must resolve the member of this instance field to the
0616          * identifier of the field name appending to the identifier resolved from its 
0617          * qualifying member with a dot in between.
0618          */
0619         public final Value.Number.Member scrollLeft   = new Value.Number.Member(this, Members.scrollLeft  );
0620         /**
0621          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0622          * name of this field, qualified by the current member instance of the field, and 
0623          * to access the property of the name on an object.</p>
0624          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0625          * refers to the number of pixels that have scrolled off the top edge of the 
0626          * element. The property is useful only for elements with scrollbars, such as 
0627          * elements with the CSS <tt>overflow</tt> attribute set to <tt>auto</tt>. This 
0628          * property is also defined on the <tt>&lt;body&gt;</tt> or <tt>&lt;html&gt;</tt> 
0629          * tag of the document (this is browser-dependent) and specifies the amount of 
0630          * scrolling for the document as a whole. Note that this property does not 
0631          * specify the amount of scrolling in an <tt>&lt;iframe&gt;</tt> tag. This is a 
0632          * non-standard but well-supported property.</p> 
0633          * @since 1.0
0634          * @javascript Re-compilers must resolve the member of this instance field to the
0635          * identifier of the field name appending to the identifier resolved from its 
0636          * qualifying member with a dot in between.
0637          */
0638         public final Value.Number.Member scrollTop    = new Value.Number.Member(this, Members.scrollTop   );
0639         /**
0640          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0641          * name of this field, qualified by the current member instance of the field, and 
0642          * to access the property of the name on an object.</p>
0643          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0644          * refers to the value of the <tt>title</tt> attribute of the element. Many 
0645          * browsers display the value of this attribute in a tool tip when the mouse 
0646          * hovers over the element.</p>
0647          * @since 1.0
0648          * @javascript Re-compilers must resolve the member of this instance field to the
0649          * identifier of the field name appending to the identifier resolved from its 
0650          * qualifying member with a dot in between.
0651          */
0652         public final Value.String.Member title = new Value.String.Member(this, Members.title);
0653         /**
0654          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0655          * name of this field, qualified by the current member instance of the field, and 
0656          * to access the property of the name on an object.</p>
0657          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0658          * refers a {@link JsCSS2Properties} object representing the cascaded set of all 
0659          * CSS properties that apply to the element. It is an IE-only alternative to 
0660          * {@link JsWindow#getComputedStyle}.</p>
0661          * @since 1.0
0662          * @javascript Re-compilers must resolve the member of this instance field to the
0663          * identifier of the field name appending to the identifier resolved from its 
0664          * qualifying member with a dot in between.
0665          */
0666         public final JsCSS2Properties.Member currentStyle = new JsCSS2Properties.Member(this, Members.currentStyle);
0667         /**
0668          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0669          * name of this field, qualified by the current member instance of the field, and 
0670          * to access the property of the name on an object.</p>
0671          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0672          * refers to the value of the <tt>style</tt> attribute that specifies inline CSS 
0673          * styles for this element. Note that the value of this property is not a string.</p> 
0674          * @since 1.0
0675          * @javascript Re-compilers must resolve the member of this instance field to the
0676          * identifier of the field name appending to the identifier resolved from its 
0677          * qualifying member with a dot in between.
0678          */
0679         public final JsCSS2Properties.Member style        = new JsCSS2Properties.Member(this, Members.style       );
0680         /**
0681          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0682          * name of this field, qualified by the current member instance of the field, and 
0683          * to access the property of the name on an object.</p>
0684          * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0685          * refers a node object specifying the container element that defines the coordinate 
0686          * system in which {@link #offsetLeft} and {@link #offsetTop} are measured. For most 
0687          * elements, {@link #offsetParent} is the {@link JsHTMLDocument} object that contains 
0688          * them. However, if an element has a dynamically positioned container, the dynamically 
0689          * positioned element is the {@link #offsetParent}. In some browsers, table cells 
0690          * are positioned relative to the row in which they are contained, rather than 
0691          * relative to the containing document. This is a nonstandard but well-supported 
0692          * property.</p> 
0693          * @since 1.0
0694          * @javascript Re-compilers must resolve the member of this instance field to the
0695          * identifier of the field name appending to the identifier resolved from its 
0696          * qualifying member with a dot in between.
0697          */
0698         public final JsElement.Member offsetParent = new JsElement.Member(this, Members.offsetParent);
0699 
0700         /**
0701          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0702          * name of this field, qualified by the current member instance of the field, and 
0703          * to access the property of the name on an object.</p>
0704          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0705          * reference to an event handler function invoked when the user clicks on the element.</p> 
0706          * @since 1.0
0707          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0708          * @see JsElement#attachEvent(String, JsFunction)
0709          * @javascript Re-compilers must resolve the member of this instance field to the
0710          * identifier of the field name appending to the identifier resolved from its 
0711          * qualifying member with a dot in between.
0712          */
0713         public final JsFunction.Member<?> onclick      = new JsFunction.Member<Object>(this, Members.onclick    );
0714         /**
0715          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0716          * name of this field, qualified by the current member instance of the field, and 
0717          * to access the property of the name on an object.</p>
0718          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0719          * reference to an event handler function invoked when the user double-clicks on the 
0720          * element.</p> 
0721          * @since 1.0
0722          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0723          * @see JsElement#attachEvent(String, JsFunction)
0724          * @javascript Re-compilers must resolve the member of this instance field to the
0725          * identifier of the field name appending to the identifier resolved from its 
0726          * qualifying member with a dot in between.
0727          */
0728         public final JsFunction.Member<?> ondblclick   = new JsFunction.Member<Object>(this, Members.ondblclick );
0729         /**
0730          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0731          * name of this field, qualified by the current member instance of the field, and 
0732          * to access the property of the name on an object.</p>
0733          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0734          * reference to an event handler function invoked when the user presses a key.</p> 
0735          * @since 1.0
0736          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0737          * @see JsElement#attachEvent(String, JsFunction)
0738          * @javascript Re-compilers must resolve the member of this instance field to the
0739          * identifier of the field name appending to the identifier resolved from its 
0740          * qualifying member with a dot in between.
0741          */
0742         public final JsFunction.Member<?> onkeydown    = new JsFunction.Member<Object>(this, Members.onkeydown  );
0743         /**
0744          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0745          * name of this field, qualified by the current member instance of the field, and 
0746          * to access the property of the name on an object.</p>
0747          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0748          * reference to an event handler function invoked when the user presses and releases a key.</p> 
0749          * @since 1.0
0750          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0751          * @see JsElement#attachEvent(String, JsFunction)
0752          * @javascript Re-compilers must resolve the member of this instance field to the
0753          * identifier of the field name appending to the identifier resolved from its 
0754          * qualifying member with a dot in between.
0755          */
0756         public final JsFunction.Member<?> onkeypress   = new JsFunction.Member<Object>(this, Members.onkeypress );
0757         /**
0758          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0759          * name of this field, qualified by the current member instance of the field, and 
0760          * to access the property of the name on an object.</p>
0761          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0762          * reference to an event handler function invoked when the user releases a key.</p> 
0763          * @since 1.0
0764          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0765          * @see JsElement#attachEvent(String, JsFunction)
0766          * @javascript Re-compilers must resolve the member of this instance field to the
0767          * identifier of the field name appending to the identifier resolved from its 
0768          * qualifying member with a dot in between.
0769          */
0770         public final JsFunction.Member<?> onkeyup      = new JsFunction.Member<Object>(this, Members.onkeyup    );
0771         /**
0772          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0773          * name of this field, qualified by the current member instance of the field, and 
0774          * to access the property of the name on an object.</p>
0775          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0776          * reference to an event handler function invoked when the user presses a mouse button.</p> 
0777          * @since 1.0
0778          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0779          * @see JsElement#attachEvent(String, JsFunction)
0780          * @javascript Re-compilers must resolve the member of this instance field to the
0781          * identifier of the field name appending to the identifier resolved from its 
0782          * qualifying member with a dot in between.
0783          */
0784         public final JsFunction.Member<?> onmousedown  = new JsFunction.Member<Object>(this, Members.onmousedown);
0785         /**
0786          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0787          * name of this field, qualified by the current member instance of the field, and 
0788          * to access the property of the name on an object.</p>
0789          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0790          * reference to an event handler function invoked when the user moves the mouse.</p> 
0791          * @since 1.0
0792          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0793          * @see JsElement#attachEvent(String, JsFunction)
0794          * @javascript Re-compilers must resolve the member of this instance field to the
0795          * identifier of the field name appending to the identifier resolved from its 
0796          * qualifying member with a dot in between.
0797          */
0798         public final JsFunction.Member<?> onmousemove  = new JsFunction.Member<Object>(this, Members.onmousemove);
0799         /**
0800          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0801          * name of this field, qualified by the current member instance of the field, and 
0802          * to access the property of the name on an object.</p>
0803          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0804          * reference to an event handler function invoked when the user moves the mouse off the element.</p> 
0805          * @since 1.0
0806          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0807          * @see JsElement#attachEvent(String, JsFunction)
0808          * @javascript Re-compilers must resolve the member of this instance field to the
0809          * identifier of the field name appending to the identifier resolved from its 
0810          * qualifying member with a dot in between.
0811          */
0812         public final JsFunction.Member<?> onmouseout   = new JsFunction.Member<Object>(this, Members.onmouseout );
0813         /**
0814          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0815          * name of this field, qualified by the current member instance of the field, and 
0816          * to access the property of the name on an object.</p>
0817          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0818          * reference to an event handler function invoked when the user moves the mouse over the element.</p> 
0819          * @since 1.0
0820          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0821          * @see JsElement#attachEvent(String, JsFunction)
0822          * @javascript Re-compilers must resolve the member of this instance field to the
0823          * identifier of the field name appending to the identifier resolved from its 
0824          * qualifying member with a dot in between.
0825          */
0826         public final JsFunction.Member<?> onmouseover  = new JsFunction.Member<Object>(this, Members.onmouseover);
0827         /**
0828          * <p>An <b>opaque</b> instance field defining a sub-member that is named by the
0829          * name of this field, qualified by the current member instance of the field, and 
0830          * to access the property of the name on an object.</p>
0831          * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
0832          * reference to an event handler function invoked when the user releases a mouse button.</p> 
0833          * @since 1.0
0834          * @see JsElement#addEventListener(String, JsFunction, Boolean)
0835          * @see JsElement#attachEvent(String, JsFunction)
0836          * @javascript Re-compilers must resolve the member of this instance field to the
0837          * identifier of the field name appending to the identifier resolved from its 
0838          * qualifying member with a dot in between.
0839          */
0840         public final JsFunction.Member<?> onmouseup    = new JsFunction.Member<Object>(this, Members.onmouseup  );
0841     }
0842 
0843     /**
0844      * <p>Casts an <b>opaque</b> object to the current <b>opaque</b> type by wrapping it
0845      * with the wrapping constructor.</p>
0846      * @param var The argument of an <b>opaque</b> object.
0847      * @since 1.0
0848      * @javascript Re-compilers must ignore the construction operation of this constructor,
0849      * that is, replacing it with its only argument.
0850      */
0851     public JsHTMLElement(JsObject var) {
0852         super(var);
0853     }
0854 
0855     /**
0856      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0857      * without a qualifying member and to access the property of the name on an object.</p>
0858      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0859      * refers to the value of the <tt>class</tt> attribute of the element, which 
0860      * specifies zero or more space-separated CSS class names. Note that this property 
0861      * is not named "class" because that name is a reserved word in Java and JavaScript.</p>
0862      * @since 1.0
0863      * @javascript Re-compilers must resolve the member of this static field to the
0864      * identifier of the field name.
0865      */
0866     public static final Value.String.Member className = new Value.String.Member(Members.className);
0867     /**
0868      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0869      * without a qualifying member and to access the property of the name on an object.</p>
0870      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0871      * refers to the value of the <tt>dir</tt> attribute of the element, which 
0872      * specifies the text direction for the document.</p> 
0873      * @since 1.0
0874      * @javascript Re-compilers must resolve the member of this static field to the
0875      * identifier of the field name.
0876      */
0877     public static final Value.String.Member dir       = new Value.String.Member(Members.dir      );
0878     /**
0879      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0880      * without a qualifying member and to access the property of the name on an object.</p>
0881      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0882      * refers to the value of the <tt>id</tt> attribute. No two elements within the 
0883      * same document should have the same value for <tt>id</tt>.</p> 
0884      * @since 1.0
0885      * @javascript Re-compilers must resolve the member of this static field to the
0886      * identifier of the field name.
0887      */
0888     public static final Value.String.Member id        = new Value.String.Member(Members.id       );
0889     /**
0890      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0891      * without a qualifying member and to access the property of the name on an object.</p>
0892      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0893      * refers to a read/write string that specifies the HTML text that is contained 
0894      * within the element, not including the opening and closing tags of the element 
0895      * itself. Querying this property returns the content of the element as a string 
0896      * of HTML text. Setting this property to a string of HTML text replaces the 
0897      * content of the element with the parsed representation of the HTML. You cannot 
0898      * set this property while the document is loading (see {@link JsHTMLDocument#write(String)} 
0899      * for this ability). This is a nonstandard property that originated in IE 4. 
0900      * It has been implemented by all modern browsers.</p> 
0901      * @since 1.0
0902      * @javascript Re-compilers must resolve the member of this static field to the
0903      * identifier of the field name.
0904      */
0905     public static final Value.String.Member innerHTML = new Value.String.Member(Members.innerHTML);
0906     /**
0907      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0908      * without a qualifying member and to access the property of the name on an object.</p>
0909      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0910      * refers to the value of the <tt>lang</tt> attribute, which specifies the 
0911      * language code for the element's content.</p> 
0912      * @since 1.0
0913      * @javascript Re-compilers must resolve the member of this static field to the
0914      * identifier of the field name.
0915      */
0916     public static final Value.String.Member lang      = new Value.String.Member(Members.lang     );
0917     /**
0918      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0919      * without a qualifying member and to access the property of the name on an object.</p>
0920      * @since 1.0
0921      * @javascript Re-compilers must resolve the member of this static field to the
0922      * identifier of the field name.
0923      */
0924     public static final Value.Number.Member clientHeight = new Value.Number.Member(Members.clientHeight);
0925     /**
0926      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0927      * without a qualifying member and to access the property of the name on an object.</p>
0928      * @since 1.0
0929      * @javascript Re-compilers must resolve the member of this static field to the
0930      * identifier of the field name.
0931      */
0932     public static final Value.Number.Member clientWidth  = new Value.Number.Member(Members.clientWidth );
0933     /**
0934      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0935      * without a qualifying member and to access the property of the name on an object.</p>
0936      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0937      * refers to the height, in pixels, of the element and all its content, including 
0938      * the element's CSS padding and border, but not its margin. This is a nonstandard 
0939      * but well-supported property.</p> 
0940      * @since 1.0
0941      * @javascript Re-compilers must resolve the member of this static field to the
0942      * identifier of the field name.
0943      */
0944     public static final Value.Number.Member offsetHeight = new Value.Number.Member(Members.offsetHeight);
0945     /**
0946      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0947      * without a qualifying member and to access the property of the name on an object.</p>
0948      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0949      * refers to the width, in pixels, of the element and all its content, including 
0950      * the element's CSS padding and border, but not its margin. This is a nonstandard 
0951      * but well-supported property.</p> 
0952      * @since 1.0
0953      * @javascript Re-compilers must resolve the member of this static field to the
0954      * identifier of the field name.
0955      */
0956     public static final Value.Number.Member offsetWidth  = new Value.Number.Member(Members.offsetWidth );
0957     /**
0958      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0959      * without a qualifying member and to access the property of the name on an object.</p>
0960      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0961      * refers to The X coordinate of the upper-left corner of the CSS border of the 
0962      * element relative to the {@link #offsetParent} container element. This is a 
0963      * nonstandard but well-supported property.</p> 
0964      * @since 1.0
0965      * @javascript Re-compilers must resolve the member of this static field to the
0966      * identifier of the field name.
0967      */
0968     public static final Value.Number.Member offsetLeft   = new Value.Number.Member(Members.offsetLeft  );
0969     /**
0970      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0971      * without a qualifying member and to access the property of the name on an object.</p>
0972      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0973      * refers to The Y coordinate of the upper-left corner of the CSS border of the 
0974      * element relative to the {@link #offsetParent} container element. This is a 
0975      * nonstandard but well-supported property.</p> 
0976      * @since 1.0
0977      * @javascript Re-compilers must resolve the member of this static field to the
0978      * identifier of the field name.
0979      */
0980     public static final Value.Number.Member offsetTop    = new Value.Number.Member(Members.offsetTop   );
0981     /**
0982      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0983      * without a qualifying member and to access the property of the name on an object.</p>
0984      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0985      * refers to the overall height, in pixels, of an element. When an element has 
0986      * scrollbars (because of the CSS <tt>overflow</tt> attribute, for example) the 
0987      * property differs from {@link #offsetHeight}, which simply reports the height 
0988      * of the visible portion of the element. This is non-standard but well-supported 
0989      * property.</p> 
0990      * @since 1.0
0991      * @javascript Re-compilers must resolve the member of this static field to the
0992      * identifier of the field name.
0993      */
0994     public static final Value.Number.Member scrollHeight = new Value.Number.Member(Members.scrollHeight);
0995     /**
0996      * <p>An <b>opaque</b> static field defining a member that is named by the field name
0997      * without a qualifying member and to access the property of the name on an object.</p>
0998      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
0999      * refers to the overall width, in pixels, of an element. When an element has 
1000      * scrollbars (because of the CSS <tt>overflow</tt> attribute, for example) the 
1001      * property differs from {@link #offsetWidth}, which simply reports the width 
1002      * of the visible portion of the element. This is non-standard but well-supported 
1003      * property.</p> 
1004      * @since 1.0
1005      * @javascript Re-compilers must resolve the member of this static field to the
1006      * identifier of the field name.
1007      */
1008     public static final Value.Number.Member scrollWidth  = new Value.Number.Member(Members.scrollWidth );
1009     /**
1010      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1011      * without a qualifying member and to access the property of the name on an object.</p>
1012      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
1013      * refers to the number of pixels that have scrolled off the left edge of the 
1014      * element. The property is useful only for elements with scrollbars, such as 
1015      * elements with the CSS <tt>overflow</tt> attribute set to <tt>auto</tt>. This 
1016      * property is also defined on the <tt>&lt;body&gt;</tt> or <tt>&lt;html&gt;</tt> 
1017      * tag of the document (this is browser-dependent) and specifies the amount of 
1018      * scrolling for the document as a whole. Note that this property does not 
1019      * specify the amount of scrolling in an <tt>&lt;iframe&gt;</tt> tag. This is a 
1020      * non-standard but well-supported property.</p> 
1021      * @since 1.0
1022      * @javascript Re-compilers must resolve the member of this static field to the
1023      * identifier of the field name.
1024      */
1025     public static final Value.Number.Member scrollLeft   = new Value.Number.Member(Members.scrollLeft  );
1026     /**
1027      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1028      * without a qualifying member and to access the property of the name on an object.</p>
1029      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
1030      * refers to the number of pixels that have scrolled off the top edge of the 
1031      * element. The property is useful only for elements with scrollbars, such as 
1032      * elements with the CSS <tt>overflow</tt> attribute set to <tt>auto</tt>. This 
1033      * property is also defined on the <tt>&lt;body&gt;</tt> or <tt>&lt;html&gt;</tt> 
1034      * tag of the document (this is browser-dependent) and specifies the amount of 
1035      * scrolling for the document as a whole. Note that this property does not 
1036      * specify the amount of scrolling in an <tt>&lt;iframe&gt;</tt> tag. This is a 
1037      * non-standard but well-supported property.</p> 
1038      * @since 1.0
1039      * @javascript Re-compilers must resolve the member of this static field to the
1040      * identifier of the field name.
1041      */
1042     public static final Value.Number.Member scrollTop    = new Value.Number.Member(Members.scrollTop   );
1043     /**
1044      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1045      * without a qualifying member and to access the property of the name on an object.</p>
1046      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
1047      * refers to the value of the <tt>title</tt> attribute of the element. Many 
1048      * browsers display the value of this attribute in a tool tip when the mouse 
1049      * hovers over the element.</p>
1050      * @since 1.0
1051      * @javascript Re-compilers must resolve the member of this static field to the
1052      * identifier of the field name.
1053      */
1054     public static final Value.String.Member title = new Value.String.Member(Members.title);
1055     /**
1056      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1057      * without a qualifying member and to access the property of the name on an object.</p>
1058      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
1059      * refers a {@link JsCSS2Properties} object representing the cascaded set of all 
1060      * CSS properties that apply to the element. It is an IE-only alternative to 
1061      * {@link JsWindow#getComputedStyle}.</p>
1062      * @since 1.0
1063      * @javascript Re-compilers must resolve the member of this static field to the
1064      * identifier of the field name.
1065      */
1066     public static final JsCSS2Properties.Member currentStyle = new JsCSS2Properties.Member(Members.currentStyle);
1067     /**
1068      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1069      * without a qualifying member and to access the property of the name on an object.</p>
1070      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
1071      * refers to the value of the <tt>style</tt> attribute that specifies inline CSS 
1072      * styles for this element. Note that the value of this property is not a string.</p> 
1073      * @since 1.0
1074      * @javascript Re-compilers must resolve the member of this static field to the
1075      * identifier of the field name.
1076      */
1077     public static final JsCSS2Properties.Member style        = new JsCSS2Properties.Member(Members.style       );
1078     /**
1079      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1080      * without a qualifying member and to access the property of the name on an object.</p>
1081      * <p>The property, identified by this member, of a {@link JsHTMLElement} object 
1082      * refers a node object specifying the container element that defines the coordinate 
1083      * system in which {@link #offsetLeft} and {@link #offsetTop} are measured. For most 
1084      * elements, {@link #offsetParent} is the {@link JsHTMLDocument} object that contains 
1085      * them. However, if an element has a dynamically positioned container, the dynamically 
1086      * positioned element is the {@link #offsetParent}. In some browsers, table cells 
1087      * are positioned relative to the row in which they are contained, rather than 
1088      * relative to the containing document. This is a nonstandard but well-supported 
1089      * property.</p> 
1090      * @since 1.0
1091      * @javascript Re-compilers must resolve the member of this static field to the
1092      * identifier of the field name.
1093      */
1094     public static final JsHTMLElement.Member offsetParent = new JsHTMLElement.Member(Members.offsetParent);
1095 
1096     /**
1097      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1098      * without a qualifying member and to access the property of the name on an object.</p>
1099      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1100      * reference to an event handler function invoked when the user clicks on the element.</p> 
1101      * @since 1.0
1102      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1103      * @see JsElement#attachEvent(String, JsFunction)
1104      * @javascript Re-compilers must resolve the member of this static field to the
1105      * identifier of the field name.
1106      */
1107     public static final JsFunction.Member<?> onclick      = new JsFunction.Member<Object>(Members.onclick    );
1108     /**
1109      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1110      * without a qualifying member and to access the property of the name on an object.</p>
1111      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1112      * reference to an event handler function invoked when the user double-clicks on the element.</p> 
1113      * @since 1.0
1114      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1115      * @see JsElement#attachEvent(String, JsFunction)
1116      * @javascript Re-compilers must resolve the member of this static field to the
1117      * identifier of the field name.
1118      */
1119     public static final JsFunction.Member<?> ondblclick   = new JsFunction.Member<Object>(Members.ondblclick );
1120     /**
1121      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1122      * without a qualifying member and to access the property of the name on an object.</p>
1123      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1124      * reference to an event handler function invoked when the user presses a key.</p> 
1125      * @since 1.0
1126      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1127      * @see JsElement#attachEvent(String, JsFunction)
1128      * @javascript Re-compilers must resolve the member of this static field to the
1129      * identifier of the field name.
1130      */
1131     public static final JsFunction.Member<?> onkeydown    = new JsFunction.Member<Object>(Members.onkeydown  );
1132     /**
1133      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1134      * without a qualifying member and to access the property of the name on an object.</p>
1135      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1136      * reference to an event handler function invoked when the user presses and releases a key.</p> 
1137      * @since 1.0
1138      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1139      * @see JsElement#attachEvent(String, JsFunction)
1140      * @javascript Re-compilers must resolve the member of this static field to the
1141      * identifier of the field name.
1142      */
1143     public static final JsFunction.Member<?> onkeypress   = new JsFunction.Member<Object>(Members.onkeypress );
1144     /**
1145      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1146      * without a qualifying member and to access the property of the name on an object.</p>
1147      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1148      * reference to an event handler function invoked when the user releases a key.</p> 
1149      * @since 1.0
1150      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1151      * @see JsElement#attachEvent(String, JsFunction)
1152      * @javascript Re-compilers must resolve the member of this static field to the
1153      * identifier of the field name.
1154      */
1155     public static final JsFunction.Member<?> onkeyup      = new JsFunction.Member<Object>(Members.onkeyup    );
1156     /**
1157      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1158      * without a qualifying member and to access the property of the name on an object.</p>
1159      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1160      * reference to an event handler function invoked when the user presses a mouse button.</p> 
1161      * @since 1.0
1162      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1163      * @see JsElement#attachEvent(String, JsFunction)
1164      * @javascript Re-compilers must resolve the member of this static field to the
1165      * identifier of the field name.
1166      */
1167     public static final JsFunction.Member<?> onmousedown  = new JsFunction.Member<Object>(Members.onmousedown);
1168     /**
1169      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1170      * without a qualifying member and to access the property of the name on an object.</p>
1171      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1172      * reference to an event handler function invoked when the user moves the mouse.</p> 
1173      * @since 1.0
1174      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1175      * @see JsElement#attachEvent(String, JsFunction)
1176      * @javascript Re-compilers must resolve the member of this static field to the
1177      * identifier of the field name.
1178      */
1179     public static final JsFunction.Member<?> onmousemove  = new JsFunction.Member<Object>(Members.onmousemove);
1180     /**
1181      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1182      * without a qualifying member and to access the property of the name on an object.</p>
1183      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1184      * reference to an event handler function invoked when the user moves the mouse off the element.</p> 
1185      * @since 1.0
1186      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1187      * @see JsElement#attachEvent(String, JsFunction)
1188      * @javascript Re-compilers must resolve the member of this static field to the
1189      * identifier of the field name.
1190      */
1191     public static final JsFunction.Member<?> onmouseout   = new JsFunction.Member<Object>(Members.onmouseout );
1192     /**
1193      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1194      * without a qualifying member and to access the property of the name on an object.</p>
1195      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1196      * reference to an event handler function invoked when the user moves the mouse over the element.</p> 
1197      * @since 1.0
1198      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1199      * @see JsElement#attachEvent(String, JsFunction)
1200      * @javascript Re-compilers must resolve the member of this static field to the
1201      * identifier of the field name.
1202      */
1203     public static final JsFunction.Member<?> onmouseover  = new JsFunction.Member<Object>(Members.onmouseover);
1204     /**
1205      * <p>An <b>opaque</b> static field defining a member that is named by the field name
1206      * without a qualifying member and to access the property of the name on an object.</p>
1207      * <p>The property, identified by this member, of a {@link JsHTMLElement} object is a 
1208      * reference to an event handler function invoked when the user releases a mouse button.</p> 
1209      * @since 1.0
1210      * @see JsElement#addEventListener(String, JsFunction, Boolean)
1211      * @see JsElement#attachEvent(String, JsFunction)
1212      * @javascript Re-compilers must resolve the member of this static field to the
1213      * identifier of the field name.
1214      */
1215     public static final JsFunction.Member<?> onmouseup    = new JsFunction.Member<Object>(Members.onmouseup  );
1216 
1217     @Override
1218     /**
1219      * <p>Returns the primitive value associated with the current instance, if there is one.
1220      * This invocation simply returns the instance itself for the current instance is an 
1221      * object and there is no primitive value for it.</p>
1222      * @return The current object itself.
1223      * @since 1.0
1224      * @javascript Re-compilers must convert the instance invocation of this method directly
1225      * into a JavaScript invocation on its current object instance without changing the 
1226      * method name, but expanding variable arguments, if any, into comma-separated values. 
1227      */
1228     public JsHTMLElement valueOf() {
1229         return new JsHTMLElement((JsObject)var().valueOf());
1230     }
1231     public final JsCSS2Properties var(JsCSS2Properties.Member r) {
1232         return r.with(this);
1233     }
1234     public final JsHTMLElement var(JsHTMLElement.Member r) {
1235         return r.with(this);
1236     }
1237 
1238     /**
1239      * <p>Scrolls the document so the element is visible at the top or bottom of the window.</p>
1240      * <p>If an HTML element is not currently visible in the window, this method scrolls 
1241      * the document so that it becomes visible. 
1242      * For elements that accept the keyboard focus, such as the {@link JsHTMLInputElement} 
1243      * elements, the {@link JsHTMLInputElement#focus()} method implicitly performs this 
1244      * same scroll-into-view operation.
1245      * </p>
1246      * @since 1.0
1247      * @see #scrollIntoView(Boolean)
1248      * @see #scrollIntoView(JsBoolean)
1249      * @see #scrollIntoView(Value)
1250      * @javascript Re-compilers must convert the instance invocation of this method directly
1251      * into a JavaScript invocation on its current object instance without changing the 
1252      * method name, but expanding variable arguments, if any, into comma-separated values. 
1253      */
1254     public final void scrollIntoView() {
1255         call(scrollIntoView);
1256     }
1257     /**
1258      * <p>Scrolls the document so the element is visible at the top or bottom of the window.</p>
1259      * <p>If an HTML element is not currently visible in the window, this method scrolls 
1260      * the document so that it becomes visible. 
1261      * For elements that accept the keyboard focus, such as the {@link JsHTMLInputElement} 
1262      * elements, the {@link JsHTMLInputElement#focus()} method implicitly performs this 
1263      * same scroll-into-view operation.
1264      * The <tt>top</tt> argument is an optional hint about whether the element should be 
1265      * scrolled to the top or bottom of the window.
1266      * </p>
1267      * @param top An optional boolean argument specifying whether the element should be 
1268      * scrolled to the top (<tt>true</tt>) or bottom (<tt>false</tt>) of the screen. 
1269      * This argument is not supported by all browsers, and elements near the top or 
1270      * bottom of a document cannot usually be scrolled to the opposite edge of the 
1271      * window, so this argument should be considered only a hint.
1272      * @since 1.0
1273      * @see #scrollIntoView()
1274      * @see #scrollIntoView(JsBoolean)
1275      * @see #scrollIntoView(Value)
1276      * @javascript Re-compilers must convert the instance invocation of this method directly
1277      * into a JavaScript invocation on its current object instance without changing the 
1278      * method name, but expanding variable arguments, if any, into comma-separated values. 
1279      */
1280     public final void scrollIntoView(Boolean top) {
1281         call(scrollIntoView, top);
1282     }
1283     /**
1284      * <p>Scrolls the document so the element is visible at the top or bottom of the window.</p>
1285      * <p>If an HTML element is not currently visible in the window, this method scrolls 
1286      * the document so that it becomes visible. 
1287      * For elements that accept the keyboard focus, such as the {@link JsHTMLInputElement} 
1288      * elements, the {@link JsHTMLInputElement#focus()} method implicitly performs this 
1289      * same scroll-into-view operation.
1290      * The <tt>top</tt> argument is an optional hint about whether the element should be 
1291      * scrolled to the top or bottom of the window.
1292      * </p>
1293      * @param top An optional boolean argument specifying whether the element should be 
1294      * scrolled to the top (<tt>true</tt>) or bottom (<tt>false</tt>) of the screen. 
1295      * This argument is not supported by all browsers, and elements near the top or 
1296      * bottom of a document cannot usually be scrolled to the opposite edge of the 
1297      * window, so this argument should be considered only a hint.
1298      * @since 1.0
1299      * @see #scrollIntoView()
1300      * @see #scrollIntoView(Boolean)
1301      * @see #scrollIntoView(JsBoolean)
1302      * @javascript Re-compilers must convert the instance invocation of this method directly
1303      * into a JavaScript invocation on its current object instance without changing the 
1304      * method name, but expanding variable arguments, if any, into comma-separated values. 
1305      */
1306     public final void scrollIntoView(Value<Boolean> top) {
1307         scrollIntoView(Js.valueOf(top));
1308     }
1309     /**
1310      * <p>Scrolls the document so the element is visible at the top or bottom of the window.</p>
1311      * <p>If an HTML element is not currently visible in the window, this method scrolls 
1312      * the document so that it becomes visible. 
1313      * For elements that accept the keyboard focus, such as the {@link JsHTMLInputElement} 
1314      * elements, the {@link JsHTMLInputElement#focus()} method implicitly performs this 
1315      * same scroll-into-view operation.
1316      * The <tt>top</tt> argument is an optional hint about whether the element should be 
1317      * scrolled to the top or bottom of the window.
1318      * </p>
1319      * @param top An optional boolean argument specifying whether the element should be 
1320      * scrolled to the top (<tt>true</tt>) or bottom (<tt>false</tt>) of the screen. 
1321      * This argument is not supported by all browsers, and elements near the top or 
1322      * bottom of a document cannot usually be scrolled to the opposite edge of the 
1323      * window, so this argument should be considered only a hint.
1324      * @since 1.0
1325      * @see #scrollIntoView()
1326      * @see #scrollIntoView(Boolean)
1327      * @see #scrollIntoView(Value)
1328      * @javascript Re-compilers must convert the instance invocation of this method directly
1329      * into a JavaScript invocation on its current object instance without changing the 
1330      * method name, but expanding variable arguments, if any, into comma-separated values. 
1331      */
1332     public final void scrollIntoView(JsBoolean top) {
1333         scrollIntoView(Js.valueOf(top));
1334     }
1335 }