envjs 0.1.7 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (187) hide show
  1. data/.jslintrbrc +29 -0
  2. data/.project +17 -0
  3. data/CHANGELOG.rdoc +3 -0
  4. data/DTD/xhtml-lat1.ent +196 -0
  5. data/DTD/xhtml-special.ent +80 -0
  6. data/DTD/xhtml-symbol.ent +237 -0
  7. data/DTD/xhtml.soc +14 -0
  8. data/DTD/xhtml1-frameset.dtd +1235 -0
  9. data/DTD/xhtml1-strict.dtd +978 -0
  10. data/DTD/xhtml1-transitional.dtd +1201 -0
  11. data/DTD/xhtml1.dcl +192 -0
  12. data/Makefile +7 -0
  13. data/Manifest.txt +287 -0
  14. data/{README → README.rdoc} +24 -3
  15. data/Rakefile +196 -0
  16. data/Wakefile +24 -0
  17. data/build.properties +9 -0
  18. data/build.xml +247 -0
  19. data/gm/jquery.js +6002 -0
  20. data/gm/mainx.js +2648 -0
  21. data/gm/sensx.js +135 -0
  22. data/gm/t.js +6 -0
  23. data/gm/x.html +76 -0
  24. data/htmlparser/BrowserTreeBuilder.java +456 -0
  25. data/htmlparser/README +34 -0
  26. data/htmlparser/build.sh +38 -0
  27. data/jsl/jsl +0 -0
  28. data/jsl/jsl.default.conf +129 -0
  29. data/jsl/jsl.exe +0 -0
  30. data/lib/envjs.rb +2 -0
  31. data/lib/envjs/env.js +22 -3
  32. data/lib/envjs/event_loop.js +2 -0
  33. data/lib/envjs/static.js +155 -21
  34. data/licenses/GPL-LICENSE.txt +278 -0
  35. data/licenses/MIT-LICENSE.txt +20 -0
  36. data/src/base64.js +80 -0
  37. data/src/build.js +6 -0
  38. data/src/cruft/bad.html +24 -0
  39. data/src/cruft/dom.js +606 -0
  40. data/src/cruft/element.js +297 -0
  41. data/src/cruft/good.html +30 -0
  42. data/src/cruft/good.js +32 -0
  43. data/src/cruft/internal.js +81 -0
  44. data/src/cruft/parser.js +458 -0
  45. data/src/css/properties.js +293 -0
  46. data/src/css/rule.js +22 -0
  47. data/src/css/sizzle.js +717 -0
  48. data/src/css/stylesheet.js +52 -0
  49. data/src/dom/attr.js +55 -0
  50. data/src/dom/cdatasection.js +31 -0
  51. data/src/dom/characterdata.js +119 -0
  52. data/src/dom/comment.js +30 -0
  53. data/src/dom/doctype.js +9 -0
  54. data/src/dom/document.js +553 -0
  55. data/src/dom/dom.js +134 -0
  56. data/src/dom/element.js +217 -0
  57. data/src/dom/entities.js +273 -0
  58. data/src/dom/exception.js +28 -0
  59. data/src/dom/fragment.js +37 -0
  60. data/src/dom/implementation.js +602 -0
  61. data/src/dom/instruction.js +51 -0
  62. data/src/dom/namednodemap.js +374 -0
  63. data/src/dom/namespace.js +50 -0
  64. data/src/dom/node.js +618 -0
  65. data/src/dom/nodelist.js +195 -0
  66. data/src/dom/parser.js +1207 -0
  67. data/src/dom/text.js +73 -0
  68. data/src/event/event.js +39 -0
  69. data/src/event/mouseevent.js +4 -0
  70. data/src/event/uievent.js +8 -0
  71. data/src/html/a.js +110 -0
  72. data/src/html/anchor.js +80 -0
  73. data/src/html/area.js +57 -0
  74. data/src/html/base.js +26 -0
  75. data/src/html/blockquote-q.js +19 -0
  76. data/src/html/body.js +19 -0
  77. data/src/html/button.js +21 -0
  78. data/src/html/canvas.js +14 -0
  79. data/src/html/col-colgroup.js +49 -0
  80. data/src/html/collection.js +72 -0
  81. data/src/html/cookie.js +151 -0
  82. data/src/html/del-ins.js +25 -0
  83. data/src/html/div.js +28 -0
  84. data/src/html/document.js +359 -0
  85. data/src/html/element.js +380 -0
  86. data/src/html/fieldset.js +19 -0
  87. data/src/html/form.js +484 -0
  88. data/src/html/frame.js +89 -0
  89. data/src/html/frameset.js +25 -0
  90. data/src/html/head.js +44 -0
  91. data/src/html/html.js +0 -0
  92. data/src/html/htmlparser.js +340 -0
  93. data/src/html/iframe.js +26 -0
  94. data/src/html/image.js +0 -0
  95. data/src/html/img.js +62 -0
  96. data/src/html/input-elements.js +307 -0
  97. data/src/html/input.js +65 -0
  98. data/src/html/label.js +26 -0
  99. data/src/html/legend.js +19 -0
  100. data/src/html/link.js +82 -0
  101. data/src/html/map.js +22 -0
  102. data/src/html/meta.js +37 -0
  103. data/src/html/object.js +89 -0
  104. data/src/html/optgroup.js +25 -0
  105. data/src/html/option.js +97 -0
  106. data/src/html/param.js +38 -0
  107. data/src/html/script.js +122 -0
  108. data/src/html/select.js +129 -0
  109. data/src/html/style.js +31 -0
  110. data/src/html/table.js +199 -0
  111. data/src/html/tbody-thead-tfoot.js +91 -0
  112. data/src/html/td-th.js +18 -0
  113. data/src/html/textarea.js +25 -0
  114. data/src/html/title.js +20 -0
  115. data/src/html/tr.js +114 -0
  116. data/src/intro.js +141 -0
  117. data/src/outro.js +70 -0
  118. data/src/parser/html5.detailed.js +10762 -0
  119. data/src/parser/html5.min.js +503 -0
  120. data/src/parser/html5.pretty.js +10815 -0
  121. data/src/parser/intro.js +42 -0
  122. data/src/parser/outro.js +9 -0
  123. data/src/platform/core.js +323 -0
  124. data/src/platform/johnson.js +479 -0
  125. data/src/platform/rhino.js +327 -0
  126. data/src/platform/static/intro.js +41 -0
  127. data/src/platform/static/outro.js +30 -0
  128. data/src/profile/aop.js +238 -0
  129. data/src/profile/profile.js +402 -0
  130. data/src/serializer/xml.js +21 -0
  131. data/src/svg/animatedstring.js +25 -0
  132. data/src/svg/document.js +25 -0
  133. data/src/svg/element.js +22 -0
  134. data/src/svg/locatable.js +17 -0
  135. data/src/svg/rect.js +18 -0
  136. data/src/svg/rectelement.js +24 -0
  137. data/src/svg/stylable.js +49 -0
  138. data/src/svg/svgelement.js +22 -0
  139. data/src/svg/transformable.js +15 -0
  140. data/src/window/css.js +15 -0
  141. data/src/window/dialog.js +16 -0
  142. data/src/window/document.js +28 -0
  143. data/src/window/event.js +262 -0
  144. data/src/window/history.js +62 -0
  145. data/src/window/location.js +138 -0
  146. data/src/window/navigator.js +48 -0
  147. data/src/window/screen.js +53 -0
  148. data/src/window/timer.js +21 -0
  149. data/src/window/window.js +284 -0
  150. data/src/window/xhr.js +127 -0
  151. data/src/xpath/expression.js +49 -0
  152. data/src/xpath/implementation.js +2482 -0
  153. data/src/xpath/result.js +67 -0
  154. data/src/xpath/util.js +551 -0
  155. data/src/xpath/xmltoken.js +149 -0
  156. data/src/xslt/COPYING +34 -0
  157. data/src/xslt/ajaxslt-0.8.1/AUTHORS +1 -0
  158. data/src/xslt/ajaxslt-0.8.1/ChangeLog +136 -0
  159. data/src/xslt/ajaxslt-0.8.1/Makefile +49 -0
  160. data/src/xslt/ajaxslt-0.8.1/README +102 -0
  161. data/src/xslt/ajaxslt-0.8.1/TODO +15 -0
  162. data/src/xslt/ajaxslt-0.8.1/dom.js +566 -0
  163. data/src/xslt/ajaxslt-0.8.1/dom_unittest.html +24 -0
  164. data/src/xslt/ajaxslt-0.8.1/dom_unittest.js +131 -0
  165. data/src/xslt/ajaxslt-0.8.1/simplelog.js +79 -0
  166. data/src/xslt/ajaxslt-0.8.1/test/xpath.html +18 -0
  167. data/src/xslt/ajaxslt-0.8.1/test/xpath_script.js +45 -0
  168. data/src/xslt/ajaxslt-0.8.1/test/xslt.html +58 -0
  169. data/src/xslt/ajaxslt-0.8.1/test/xslt_script.js +33 -0
  170. data/src/xslt/ajaxslt-0.8.1/unittestsuite.html +26 -0
  171. data/src/xslt/ajaxslt-0.8.1/xmltoken.js +149 -0
  172. data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.html +18 -0
  173. data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.js +811 -0
  174. data/src/xslt/ajaxslt-0.8.1/xpath_unittest.html +39 -0
  175. data/src/xslt/ajaxslt-0.8.1/xpath_unittest.js +557 -0
  176. data/src/xslt/ajaxslt-0.8.1/xpathdebug.js +234 -0
  177. data/src/xslt/ajaxslt-0.8.1/xslt_unittest.html +138 -0
  178. data/src/xslt/ajaxslt-0.8.1/xslt_unittest.js +68 -0
  179. data/src/xslt/implementation.js +625 -0
  180. data/src/xslt/processor.js +37 -0
  181. data/src/xslt/util.js +449 -0
  182. data/test/foo.html +8 -0
  183. data/test/foo.js +40 -0
  184. data/test/jquery.js +6002 -0
  185. data/test/x.js +1 -0
  186. data/test/y.js +1 -0
  187. metadata +245 -14
data/src/dom/text.js ADDED
@@ -0,0 +1,73 @@
1
+ $debug("Defining Text");
2
+ /*
3
+ * Text - DOM Level 2
4
+ */
5
+ /**
6
+ * @class DOMText - The Text interface represents the textual content (termed character data in XML) of an Element or Attr.
7
+ * If there is no markup inside an element's content, the text is contained in a single object implementing the Text interface
8
+ * that is the only child of the element. If there is markup, it is parsed into a list of elements and Text nodes that form the
9
+ * list of children of the element.
10
+ * @extends DOMCharacterData
11
+ * @author Jon van Noort (jon@webarcana.com.au) and David Joham (djoham@yahoo.com)
12
+ * @param ownerDocument : DOMDocument - The Document object associated with this node.
13
+ */
14
+ var DOMText = function(ownerDocument) {
15
+ this.DOMCharacterData = DOMCharacterData;
16
+ this.DOMCharacterData(ownerDocument);
17
+
18
+ this.nodeName = "#text";
19
+ };
20
+ DOMText.prototype = new DOMCharacterData;
21
+ __extend__(DOMText.prototype,{
22
+ //Breaks this Text node into two Text nodes at the specified offset,
23
+ // keeping both in the tree as siblings. This node then only contains all the content up to the offset point.
24
+ // And a new Text node, which is inserted as the next sibling of this node, contains all the content at and after the offset point.
25
+ splitText : function(offset) {
26
+ var data, inode;
27
+
28
+ // test for exceptions
29
+ if (__ownerDocument__(this).implementation.errorChecking) {
30
+ // throw Exception if Node is readonly
31
+ if (this._readonly) {
32
+ throw(new DOMException(DOMException.NO_MODIFICATION_ALLOWED_ERR));
33
+ }
34
+
35
+ // throw Exception if offset is negative or greater than the data length,
36
+ if ((offset < 0) || (offset > this.data.length)) {
37
+ throw(new DOMException(DOMException.INDEX_SIZE_ERR));
38
+ }
39
+ }
40
+
41
+ if (this.parentNode) {
42
+ // get remaining string (after offset)
43
+ data = this.substringData(offset);
44
+
45
+ // create new TextNode with remaining string
46
+ inode = __ownerDocument__(this).createTextNode(data);
47
+
48
+ // attach new TextNode
49
+ if (this.nextSibling) {
50
+ this.parentNode.insertBefore(inode, this.nextSibling);
51
+ }
52
+ else {
53
+ this.parentNode.appendChild(inode);
54
+ }
55
+
56
+ // remove remaining string from original TextNode
57
+ this.deleteData(offset);
58
+ }
59
+
60
+ return inode;
61
+ },
62
+ get nodeType(){
63
+ return DOMNode.TEXT_NODE;
64
+ },
65
+ get xml(){
66
+ return __escapeHTML5__(""+ this.nodeValue);
67
+ },
68
+ toString: function(){
69
+ return "Text #" + this._id;
70
+ }
71
+ });
72
+
73
+ // $w.Text = DOMText;
@@ -0,0 +1,39 @@
1
+ $debug("Defining Event");
2
+ /*
3
+ * event.js
4
+ */
5
+ var Event = function(options){
6
+ options={};
7
+ __extend__(this,{
8
+ CAPTURING_PHASE : 1,
9
+ AT_TARGET : 2,
10
+ BUBBLING_PHASE : 3
11
+ });
12
+ $debug("Creating new Event");
13
+ var $bubbles = options.bubbles?options.bubbles:true,
14
+ $cancelable = options.cancelable?options.cancelable:true,
15
+ $currentTarget = options.currentTarget?options.currentTarget:null,
16
+ $eventPhase = options.eventPhase?options.eventPhase:Event.CAPTURING_PHASE,
17
+ $target = options.target?options.target:null,
18
+ $timestamp = options.timestamp?options.timestamp:new Date().getTime().toString(),
19
+ $type = options.type?options.type:"";
20
+ return __extend__(this,{
21
+ get bubbles(){return $bubbles;},
22
+ get cancelable(){return $cancelable;},
23
+ get currentTarget(){return $currentTarget;},
24
+ get eventPhase(){return $eventPhase;},
25
+ get target(){return $target;},
26
+ set target(target){ $target = target;},
27
+ get timestamp(){return $timestamp;},
28
+ get type(){return $type;},
29
+ initEvent: function(type,bubbles,cancelable){
30
+ $type=type?type:$type;
31
+ $bubbles=bubbles?bubbles:$bubbles;
32
+ $cancelable=cancelable?cancelable:$cancelable;
33
+ },
34
+ preventDefault: function(){return;/* TODO */},
35
+ stopPropagation: function(){return;/* TODO */}
36
+ });
37
+ };
38
+
39
+ // $w.Event = Event;
@@ -0,0 +1,4 @@
1
+ $debug("Defining MouseEvent");
2
+ /*
3
+ * mouseevent.js
4
+ */
@@ -0,0 +1,8 @@
1
+ $debug("Defining UiEvent");
2
+ /*
3
+ * uievent.js
4
+ */
5
+
6
+ var $onblur,
7
+ $onfocus,
8
+ $onresize;
data/src/html/a.js ADDED
@@ -0,0 +1,110 @@
1
+ $debug("Defining HTMLAnchorElement");
2
+ /*
3
+ * HTMLAnchorElement - DOM Level 2
4
+ */
5
+ var HTMLAnchorElement = function(ownerDocument) {
6
+ //$log("creating anchor element");
7
+ this.HTMLElement = HTMLElement;
8
+ this.HTMLElement(ownerDocument);
9
+ };
10
+ HTMLAnchorElement.prototype = new HTMLElement;
11
+ __extend__(HTMLAnchorElement.prototype, {
12
+ get accessKey() {
13
+ return this.getAttribute("accesskey");
14
+
15
+ },
16
+ set accessKey(val) {
17
+ return this.setAttribute("accesskey",val);
18
+
19
+ },
20
+ get charset() {
21
+ return this.getAttribute("charset");
22
+
23
+ },
24
+ set charset(val) {
25
+ return this.setAttribute("charset",val);
26
+
27
+ },
28
+ get coords() {
29
+ return this.getAttribute("coords");
30
+
31
+ },
32
+ set coords(val) {
33
+ return this.setAttribute("coords",val);
34
+
35
+ },
36
+ get href() {
37
+ return this.getAttribute("href");
38
+
39
+ },
40
+ set href(val) {
41
+ return this.setAttribute("href",val);
42
+
43
+ },
44
+ get hreflang() {
45
+ return this.getAttribute("hreflang");
46
+
47
+ },
48
+ set hreflang(val) {
49
+ return this.setAttribute("hreflang",val);
50
+
51
+ },
52
+ get name() {
53
+ return this.getAttribute("name");
54
+
55
+ },
56
+ set name(val) {
57
+ return this.setAttribute("name",val);
58
+
59
+ },
60
+ get rel() {
61
+ return this.getAttribute("rel");
62
+
63
+ },
64
+ set rel(val) {
65
+ return this.setAttribute("rel",val);
66
+
67
+ },
68
+ get rev() {
69
+ return this.getAttribute("rev");
70
+
71
+ },
72
+ set rev(val) {
73
+ return this.setAttribute("rev",val);
74
+
75
+ },
76
+ get shape() {
77
+ return this.getAttribute("shape");
78
+
79
+ },
80
+ set shape(val) {
81
+ return this.setAttribute("shape",val);
82
+
83
+ },
84
+ get target() {
85
+ return this.getAttribute("target");
86
+
87
+ },
88
+ set target(val) {
89
+ return this.setAttribute("target",val);
90
+
91
+ },
92
+ get type() {
93
+ return this.getAttribute("type");
94
+
95
+ },
96
+ set type(val) {
97
+ return this.setAttribute("type",val);
98
+
99
+ },
100
+ blur:function(){
101
+ __blur__(this);
102
+
103
+ },
104
+ focus:function(){
105
+ __focus__(this);
106
+
107
+ }
108
+ });
109
+
110
+ // $w.HTMLAnchorElement = HTMLAnchorElement;
@@ -0,0 +1,80 @@
1
+ $debug("Defining Anchor");
2
+ /*
3
+ * Anchor - DOM Level 2
4
+ */
5
+ var Anchor = function(ownerDocument) {
6
+ this.HTMLAnchorElement = HTMLAnchorElement;
7
+ this.HTMLAnchorElement(ownerDocument);
8
+ };
9
+
10
+ (function(){
11
+ //static regular expressions
12
+ var hash = new RegExp('(\\#.*)'),
13
+ hostname = new RegExp('\/\/([^\:\/]+)'),
14
+ pathname = new RegExp('(\/[^\\?\\#]*)'),
15
+ port = new RegExp('\:(\\d+)\/'),
16
+ protocol = new RegExp('(^\\w*\:)'),
17
+ search = new RegExp('(\\?[^\\#]*)');
18
+
19
+ __extend__(Anchor.prototype, {
20
+ get hash(){
21
+ var m = hash.exec(this.href);
22
+ return m&&m.length>1?m[1]:"";
23
+ },
24
+ set hash(_hash){
25
+ //setting the hash is the only property of the location object
26
+ //that doesn't cause the window to reload
27
+ _hash = _hash.indexOf('#')===0?_hash:"#"+_hash;
28
+ this.href = this.protocol + this.host + this.pathname + this.search + _hash;
29
+ },
30
+ get host(){
31
+ return this.hostname + (this.port !== "")?":"+this.port:"";
32
+ },
33
+ set host(_host){
34
+ this.href = this.protocol + _host + this.pathname + this.search + this.hash;
35
+ },
36
+ get hostname(){
37
+ var m = hostname.exec(this.href);
38
+ return m&&m.length>1?m[1]:"";
39
+ },
40
+ set hostname(_hostname){
41
+ this.href = this.protocol + _hostname + ((this.port=="")?"":(":"+this.port)) +
42
+ this.pathname + this.search + this.hash;
43
+ },
44
+ get pathname(){
45
+ var m = this.href;
46
+ m = pathname.exec(m.substring(m.indexOf(this.hostname)));
47
+ return m&&m.length>1?m[1]:"/";
48
+ },
49
+ set pathname(_pathname){
50
+ this.href = this.protocol + this.host + _pathname +
51
+ this.search + this.hash;
52
+ },
53
+ get port(){
54
+ var m = port.exec(this.href);
55
+ return m&&m.length>1?m[1]:"";
56
+ },
57
+ set port(_port){
58
+ this.href = this.protocol + this.hostname + ":"+_port + this.pathname +
59
+ this.search + this.hash;
60
+ },
61
+ get protocol(){
62
+ return protocol.exec(this.href)[0];
63
+ },
64
+ set protocol(_protocol){
65
+ this.href = _protocol + this.host + this.pathname +
66
+ this.search + this.hash;
67
+ },
68
+ get search(){
69
+ var m = search.exec(this.href);
70
+ return m&&m.length>1?m[1]:"";
71
+ },
72
+ set search(_search){
73
+ this.href = this.protocol + this.host + this.pathname +
74
+ _search + this.hash;
75
+ }
76
+ });
77
+
78
+ })();
79
+
80
+ // $w.Anchor = Anchor;
data/src/html/area.js ADDED
@@ -0,0 +1,57 @@
1
+ $debug("Defining HTMLAreaElement");
2
+ /*
3
+ * HTMLAreaElement - DOM Level 2
4
+ */
5
+ var HTMLAreaElement = function(ownerDocument) {
6
+ this.HTMLElement = HTMLElement;
7
+ this.HTMLElement(ownerDocument);
8
+ };
9
+ HTMLAreaElement.prototype = new HTMLElement;
10
+ __extend__(HTMLAreaElement.prototype, {
11
+ get accessKey(){
12
+ return this.getAttribute('accesskey');
13
+ },
14
+ set accessKey(value){
15
+ this.setAttribute('accesskey',value);
16
+ },
17
+ get alt(){
18
+ return this.getAttribute('alt');
19
+ },
20
+ set alt(value){
21
+ this.setAttribute('alt',value);
22
+ },
23
+ get coords(){
24
+ return this.getAttribute('coords');
25
+ },
26
+ set coords(value){
27
+ this.setAttribute('coords',value);
28
+ },
29
+ get href(){
30
+ return this.getAttribute('href');
31
+ },
32
+ set href(value){
33
+ this.setAttribute('href',value);
34
+ },
35
+ get noHref(){
36
+ return this.hasAttribute('href');
37
+ },
38
+ get shape(){
39
+ //TODO
40
+ return 0;
41
+ },
42
+ /*get tabIndex(){
43
+ return this.getAttribute('tabindex');
44
+ },
45
+ set tabIndex(value){
46
+ this.setAttribute('tabindex',value);
47
+ },*/
48
+ get target(){
49
+ return this.getAttribute('target');
50
+ },
51
+ set target(value){
52
+ this.setAttribute('target',value);
53
+ }
54
+ });
55
+
56
+ // $w.HTMLAreaElement = HTMLAreaElement;
57
+
data/src/html/base.js ADDED
@@ -0,0 +1,26 @@
1
+ $debug("Defining HTMLBaseElement");
2
+ /*
3
+ * HTMLBaseElement - DOM Level 2
4
+ */
5
+ var HTMLBaseElement = function(ownerDocument) {
6
+ //$log("creating anchor element");
7
+ this.HTMLElement = HTMLElement;
8
+ this.HTMLElement(ownerDocument);
9
+ };
10
+ HTMLBaseElement.prototype = new HTMLElement;
11
+ __extend__(HTMLBaseElement.prototype, {
12
+ get href(){
13
+ return this.getAttribute('href');
14
+ },
15
+ set href(value){
16
+ this.setAttribute('href',value);
17
+ },
18
+ get target(){
19
+ return this.getAttribute('target');
20
+ },
21
+ set target(value){
22
+ this.setAttribute('target',value);
23
+ }
24
+ });
25
+
26
+ // $w.HTMLBaseElement = HTMLBaseElement;
@@ -0,0 +1,19 @@
1
+ $debug("Defining HTMLQuoteElement");
2
+ /*
3
+ * HTMLQuoteElement - DOM Level 2
4
+ */
5
+ var HTMLQuoteElement = function(ownerDocument) {
6
+ this.HTMLElement = HTMLElement;
7
+ this.HTMLElement(ownerDocument);
8
+ };
9
+ HTMLQuoteElement.prototype = new HTMLElement;
10
+ __extend__(HTMLQuoteElement.prototype, {
11
+ get cite(){
12
+ return this.getAttribute('cite');
13
+ },
14
+ set cite(value){
15
+ this.setAttribute('cite',value);
16
+ }
17
+ });
18
+
19
+ // $w.HTMLQuoteElement = HTMLQuoteElement;
data/src/html/body.js ADDED
@@ -0,0 +1,19 @@
1
+ $debug("Defining HTMLBodyElement");
2
+ /*
3
+ * HTMLBodyElement - DOM Level 2
4
+ */
5
+ var HTMLBodyElement = function(ownerDocument) {
6
+ this.HTMLElement = HTMLElement;
7
+ this.HTMLElement(ownerDocument);
8
+ };
9
+ HTMLBodyElement.prototype = new HTMLElement;
10
+ __extend__(HTMLBodyElement.prototype, {
11
+ onload: function(event){
12
+ return __eval__(this.getAttribute('onload')||'', this)
13
+ },
14
+ onunload: function(event){
15
+ return __eval__(this.getAttribute('onunload')||'', this)
16
+ }
17
+ });
18
+
19
+ // $w.HTMLBodyElement = HTMLBodyElement;