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
@@ -0,0 +1,122 @@
1
+ $debug("Defining HTMLScriptElement");
2
+ /*
3
+ * HTMLScriptElement - DOM Level 2
4
+ */
5
+ var HTMLScriptElement = function(ownerDocument) {
6
+ this.HTMLElement = HTMLElement;
7
+ this.HTMLElement(ownerDocument);
8
+ };
9
+ HTMLScriptElement.prototype = new HTMLElement;
10
+ __extend__(HTMLScriptElement.prototype, {
11
+ setAttribute: function(name,value) {
12
+ var result = HTMLElement.prototype.setAttribute.apply(this,arguments);
13
+ // print("set src",this,this.executed);
14
+ if (name === "src" && !this.executed && value && !value.match(/^\s*$/)) {
15
+ var pn = this;
16
+ while(pn.parentNode) {
17
+ pn = pn.parentNode;
18
+ }
19
+ if(pn === this.ownerDocument) {
20
+ this.executed = true;
21
+ var $env = this.ownerDocument._parentWindow.$envx;
22
+ // print("on src change");
23
+ $env.loadLocalScript(this);
24
+ }
25
+ }
26
+ return result;
27
+ },
28
+
29
+ appendChild: function(node,ref) {
30
+ var result = HTMLElement.prototype.appendChild.apply(this,arguments);
31
+ // print("check",this,this.ownerDocument.in_inner_html);
32
+ if (!this.executed) {
33
+ var pn = this;
34
+ while(pn.parentNode) {
35
+ pn = pn.parentNode;
36
+ }
37
+ if(pn === this.ownerDocument) {
38
+ var text = this.text;
39
+ // print("T:", text);
40
+ if (text && !text.match(/^\s*$/)) {
41
+ this.executed = true;
42
+ var $env = this.ownerDocument._parentWindow.$envx;
43
+ // print("on text change");
44
+ $env.loadInlineScript(this);
45
+ }
46
+ }
47
+ }
48
+ return result;
49
+ },
50
+
51
+ get text(){
52
+ // text of script is in a child node of the element
53
+ // scripts with < operator must be in a CDATA node
54
+ for (var i=0; i<this.childNodes.length; i++) {
55
+ if (this.childNodes[i].nodeType == DOMNode.CDATA_SECTION_NODE) {
56
+ return this.childNodes[i].nodeValue;
57
+ }
58
+ }
59
+ // otherwise there will be a text node containing the script
60
+ if (this.childNodes[0] && this.childNodes[0].nodeType == DOMNode.TEXT_NODE) {
61
+ return this.childNodes[0].nodeValue;
62
+ }
63
+ return this.nodeValue;
64
+
65
+ },
66
+ set text(value){
67
+ while (this.firstChild) {
68
+ this.removeChild(this.firstChild);
69
+ }
70
+ this.appendChild(this.ownerDocument.createTextNode(value));
71
+ },
72
+ get htmlFor(){
73
+ return this.getAttribute('for');
74
+ },
75
+ set htmlFor(value){
76
+ this.setAttribute('for',value);
77
+ },
78
+ get event(){
79
+ return this.getAttribute('event');
80
+ },
81
+ set event(value){
82
+ this.setAttribute('event',value);
83
+ },
84
+ get charset(){
85
+ return this.getAttribute('charset');
86
+ },
87
+ set charset(value){
88
+ this.setAttribute('charset',value);
89
+ },
90
+ get defer(){
91
+ return this.getAttribute('defer');
92
+ },
93
+ set defer(value){
94
+ this.setAttribute('defer',value);
95
+ },
96
+ get src(){
97
+ return this.getAttribute('src');
98
+ },
99
+ set src(value){
100
+ this.setAttribute('src',value);
101
+ },
102
+ get type(){
103
+ return this.getAttribute('type');
104
+ },
105
+ set type(value){
106
+ this.setAttribute('type',value);
107
+ },
108
+ onload: function(event){
109
+ return __eval__(this.getAttribute('onload')||'', this);
110
+ },
111
+ onerror: function(event){
112
+ return __eval__(this.getAttribute('onerror')||'', this);
113
+ }
114
+ });
115
+
116
+ // $w.HTMLScriptElement = HTMLScriptElement;
117
+
118
+ // Local Variables:
119
+ // espresso-indent-level:4
120
+ // c-basic-offset:4
121
+ // tab-width:4
122
+ // End:
@@ -0,0 +1,129 @@
1
+ $debug("Defining HTMLSelectElement");
2
+ /*
3
+ * HTMLSelectElement - DOM Level 2
4
+ */
5
+ var HTMLSelectElement = function(ownerDocument) {
6
+ this.HTMLTypeValueInputs = HTMLTypeValueInputs;
7
+ this.HTMLTypeValueInputs(ownerDocument);
8
+
9
+ this._oldIndex = -1;
10
+ };
11
+ HTMLSelectElement.prototype = new HTMLTypeValueInputs;
12
+ __extend__(HTMLSelectElement.prototype, inputElements_dataProperties);
13
+ __extend__(HTMLButtonElement.prototype, inputElements_size);
14
+ __extend__(HTMLSelectElement.prototype, inputElements_onchange);
15
+ __extend__(HTMLSelectElement.prototype, inputElements_focusEvents);
16
+ __extend__(HTMLSelectElement.prototype, {
17
+ setAttributeNS : function(namespaceURI, qualifiedName, value) {
18
+ if (namespaceURI) {
19
+ throw new Error("unexpected namespaceURI");
20
+ }
21
+ this.setAttribute(qualifiedName, value);
22
+ },
23
+ getAttributeNS : function(namespaceURI, qualifiedName) {
24
+ if (namespaceURI) {
25
+ throw new Error("unexpected namespaceURI");
26
+ }
27
+ return this.getAttribute(qualifiedName);
28
+ },
29
+ setAttribute: function(name, value){
30
+ if (name === "type") {
31
+ throw new Error("cannot set readonly attribute: "+name);
32
+ } else if (name === "multiple") {
33
+ HTMLInputCommon.prototype.
34
+ setAttribute.call(this, "type", value ? "select-multiple" : "select-one");
35
+ HTMLInputCommon.prototype.setAttribute.call(this, "multiple", !!value);
36
+ } else if (name === "value") {
37
+ var options = this.options,
38
+ i, index;
39
+ for (i=0; i<options.length; i++) {
40
+ if (options[i].value == value) {
41
+ index = i;
42
+ break;
43
+ }
44
+ }
45
+ if (index !== undefined) {
46
+ HTMLInputCommon.prototype.setAttribute.call(this, "value", value);
47
+ this.selectedIndex = index;
48
+
49
+ var event = this.ownerDocument.createEvent();
50
+ event.initEvent("change");
51
+ this.dispatchEvent( event );
52
+ }
53
+ } else {
54
+ HTMLInputCommon.prototype.setAttribute.apply(this, arguments);
55
+ }
56
+ },
57
+ getAttribute: function(name){
58
+ if (name === "type") {
59
+ return HTMLInputCommon.prototype.getAttribute.apply(this, arguments) || this.multple ? "select-multiple" : "select-one";
60
+ } else if (name === "value") {
61
+ var value = HTMLInputCommon.prototype.getAttribute.apply(this, arguments);
62
+ if (value === undefined || value === null) {
63
+ var index = this.selectedIndex;
64
+ return (index != -1) ? this.options[index].value :
65
+ ( this.multiple ? "" :
66
+ ( this.options[0] ? this.options[0].value : "" ) );
67
+ } else {
68
+ return value;
69
+ }
70
+ } else {
71
+ return HTMLInputCommon.prototype.getAttribute.apply(this, arguments);
72
+ }
73
+ },
74
+ // over-ride the value setter in HTMLTypeValueInputs
75
+ set value(newValue) {
76
+ this.setAttribute("value",newValue);
77
+ },
78
+ get value() {
79
+ return this.getAttribute("value");
80
+ },
81
+ get length(){
82
+ return this.options.length;
83
+ },
84
+ get multiple(){
85
+ return this.getAttribute('multiple');
86
+ },
87
+ set multiple(value){
88
+ this.setAttribute('multiple',value);
89
+ },
90
+ get options(){
91
+ return this.getElementsByTagName('option');
92
+ },
93
+ get selectedIndex(){
94
+ var options = this.options;
95
+ for(var i=0;i<options.length;i++){
96
+ if(options[i].selected){
97
+ return i;
98
+ }
99
+ };
100
+ return -1;
101
+ },
102
+
103
+ set selectedIndex(value) {
104
+ var i;
105
+ for (i=0; i<this.options.length; i++) {
106
+ this.options[i].selected = this.multiple ?
107
+ (i == Number(value) || this.options[i].selected) :
108
+ (i == Number(value));
109
+ }
110
+ },
111
+ get type(){
112
+ return this.getAttribute('type');
113
+ },
114
+
115
+ add : function(){
116
+ __add__(this);
117
+ },
118
+ remove : function(){
119
+ __remove__(this);
120
+ }
121
+ });
122
+
123
+ // $w.HTMLSelectElement = HTMLSelectElement;
124
+
125
+ // Local Variables:
126
+ // espresso-indent-level:4
127
+ // c-basic-offset:4
128
+ // tab-width:4
129
+ // End:
data/src/html/style.js ADDED
@@ -0,0 +1,31 @@
1
+ $debug("Defining HTMLStyleElement");
2
+ /*
3
+ * HTMLStyleElement - DOM Level 2
4
+ */
5
+ var HTMLStyleElement = function(ownerDocument) {
6
+ this.HTMLElement = HTMLElement;
7
+ this.HTMLElement(ownerDocument);
8
+ };
9
+ HTMLStyleElement.prototype = new HTMLElement;
10
+ __extend__(HTMLStyleElement.prototype, {
11
+ get disabled(){
12
+ return this.getAttribute('disabled');
13
+ },
14
+ set disabled(value){
15
+ this.setAttribute('disabled',value);
16
+ },
17
+ get media(){
18
+ return this.getAttribute('media');
19
+ },
20
+ set media(value){
21
+ this.setAttribute('media',value);
22
+ },
23
+ get type(){
24
+ return this.getAttribute('type');
25
+ },
26
+ set type(value){
27
+ this.setAttribute('type',value);
28
+ }
29
+ });
30
+
31
+ // $w.HTMLStyleElement = HTMLStyleElement;
data/src/html/table.js ADDED
@@ -0,0 +1,199 @@
1
+ $debug("Defining HTMLTableElement");
2
+ /*
3
+ * HTMLTableElement - DOM Level 2
4
+ * Implementation Provided by Steven Wood
5
+ */
6
+ var HTMLTableElement = function(ownerDocument) {
7
+ this.HTMLElement = HTMLElement;
8
+ this.HTMLElement(ownerDocument);
9
+
10
+ };
11
+
12
+ HTMLTableElement.prototype = new HTMLElement;
13
+ __extend__(HTMLTableElement.prototype, {
14
+
15
+ get tFoot() {
16
+ //tFoot returns the table footer.
17
+ return this.getElementsByTagName("tfoot")[0];
18
+ },
19
+
20
+ createTFoot : function () {
21
+ var tFoot = this.tFoot;
22
+
23
+ if (!tFoot) {
24
+ tFoot = this.ownerDocument.createElement("tfoot");
25
+ this.appendChild(tFoot);
26
+ }
27
+
28
+ return tFoot;
29
+ },
30
+
31
+ deleteTFoot : function () {
32
+ var foot = this.tFoot;
33
+ if (foot) {
34
+ foot.parentNode.removeChild(foot);
35
+ }
36
+ },
37
+
38
+ get tHead() {
39
+ //tHead returns the table head.
40
+ return this.getElementsByTagName("thead")[0];
41
+ },
42
+
43
+ createTHead : function () {
44
+ var tHead = this.tHead;
45
+
46
+ if (!tHead) {
47
+ tHead = this.ownerDocument.createElement("thead");
48
+ this.insertBefore(tHead, this.firstChild);
49
+ }
50
+
51
+ return tHead;
52
+ },
53
+
54
+ deleteTHead : function () {
55
+ var head = this.tHead;
56
+ if (head) {
57
+ head.parentNode.removeChild(head);
58
+ }
59
+ },
60
+
61
+ appendChild : function (child) {
62
+
63
+ var tagName;
64
+ if(child&&child.nodeType==DOMNode.ELEMENT_NODE){
65
+ tagName = child.tagName.toLowerCase();
66
+ if (tagName === "tr") {
67
+ // need an implcit <tbody> to contain this...
68
+ if (!this.currentBody) {
69
+ this.currentBody = this.ownerDocument.createElement("tbody");
70
+
71
+ DOMNode.prototype.appendChild.apply(this, [this.currentBody]);
72
+ }
73
+
74
+ return this.currentBody.appendChild(child);
75
+
76
+ } else if (tagName === "tbody" || tagName === "tfoot" && this.currentBody) {
77
+ this.currentBody = child;
78
+ return DOMNode.prototype.appendChild.apply(this, arguments);
79
+
80
+ } else {
81
+ return DOMNode.prototype.appendChild.apply(this, arguments);
82
+ }
83
+ }else{
84
+ //tables can still have text node from white space
85
+ return DOMNode.prototype.appendChild.apply(this, arguments);
86
+ }
87
+ },
88
+
89
+ get tBodies() {
90
+ return new HTMLCollection(this.getElementsByTagName("tbody"));
91
+
92
+ },
93
+
94
+ get rows() {
95
+ return new HTMLCollection(this.getElementsByTagName("tr"));
96
+ },
97
+
98
+ insertRow : function (idx) {
99
+ if (idx === undefined) {
100
+ throw new Error("Index omitted in call to HTMLTableElement.insertRow ");
101
+ }
102
+
103
+ var rows = this.rows,
104
+ numRows = rows.length,
105
+ node,
106
+ inserted,
107
+ lastRow;
108
+
109
+ if (idx > numRows) {
110
+ throw new Error("Index > rows.length in call to HTMLTableElement.insertRow");
111
+ }
112
+
113
+ var inserted = this.ownerDocument.createElement("tr");
114
+ // If index is -1 or equal to the number of rows,
115
+ // the row is appended as the last row. If index is omitted
116
+ // or greater than the number of rows, an error will result
117
+ if (idx === -1 || idx === numRows) {
118
+ this.appendChild(inserted);
119
+ } else {
120
+ rows[idx].parentNode.insertBefore(inserted, rows[idx]);
121
+ }
122
+
123
+ return inserted;
124
+ },
125
+
126
+ deleteRow : function (idx) {
127
+ var elem = this.rows[idx];
128
+ elem.parentNode.removeChild(elem);
129
+ },
130
+
131
+ get summary() {
132
+ return this.getAttribute("summary");
133
+ },
134
+
135
+ set summary(summary) {
136
+ this.setAttribute("summary", summary);
137
+ },
138
+
139
+ get align() {
140
+ return this.getAttribute("align");
141
+ },
142
+
143
+ set align(align) {
144
+ this.setAttribute("align", align);
145
+ },
146
+
147
+
148
+ get bgColor() {
149
+ return this.getAttribute("bgColor");
150
+ },
151
+
152
+ set bgColor(bgColor) {
153
+ return this.setAttribute("bgColor", bgColor);
154
+ },
155
+
156
+ get cellPadding() {
157
+ return this.getAttribute("cellPadding");
158
+ },
159
+
160
+ set cellPadding(cellPadding) {
161
+ return this.setAttribute("cellPadding", cellPadding);
162
+ },
163
+
164
+
165
+ get cellSpacing() {
166
+ return this.getAttribute("cellSpacing");
167
+ },
168
+
169
+ set cellSpacing(cellSpacing) {
170
+ this.setAttribute("cellSpacing", cellSpacing);
171
+ },
172
+
173
+ get frame() {
174
+ return this.getAttribute("frame");
175
+ },
176
+
177
+ set frame(frame) {
178
+ this.setAttribute("frame", frame);
179
+ },
180
+
181
+ get rules() {
182
+ return this.getAttribute("rules");
183
+ },
184
+
185
+ set rules(rules) {
186
+ this.setAttribute("rules", rules);
187
+ },
188
+
189
+ get width() {
190
+ return this.getAttribute("width");
191
+ },
192
+
193
+ set width(width) {
194
+ this.setAttribute("width", width);
195
+ }
196
+
197
+ });
198
+
199
+ // $w.HTMLTableElement = HTMLTableElement;