envjs19 0.3.8.20101029121421

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (279) hide show
  1. data/.jslintrbrc +30 -0
  2. data/.project +17 -0
  3. data/CHANGELOG.rdoc +57 -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 +280 -0
  14. data/README.rdoc +65 -0
  15. data/Rakefile +196 -0
  16. data/Wakefile +11 -0
  17. data/bin/envjsrb +257 -0
  18. data/build.properties +9 -0
  19. data/build.xml +247 -0
  20. data/gm/jquery.js +6002 -0
  21. data/gm/mainx.js +2648 -0
  22. data/gm/sensx.js +135 -0
  23. data/gm/t.js +6 -0
  24. data/gm/x.html +76 -0
  25. data/htmlparser/BrowserTreeBuilder.java +456 -0
  26. data/htmlparser/README +34 -0
  27. data/htmlparser/build.sh +38 -0
  28. data/jsl/jsl +0 -0
  29. data/jsl/jsl.default.conf +129 -0
  30. data/jsl/jsl.exe +0 -0
  31. data/lib/envjs.rb +35 -0
  32. data/lib/envjs/event_loop.js +206 -0
  33. data/lib/envjs/net.rb +3 -0
  34. data/lib/envjs/net/cgi.rb +94 -0
  35. data/lib/envjs/net/file.rb +69 -0
  36. data/lib/envjs/options.rb +11 -0
  37. data/lib/envjs/runtime.rb +346 -0
  38. data/lib/envjs/tempfile.rb +24 -0
  39. data/licenses/GPL-LICENSE.txt +278 -0
  40. data/licenses/MIT-LICENSE.txt +20 -0
  41. data/src/base64.js +80 -0
  42. data/src/build.js +6 -0
  43. data/src/cruft/bad.html +24 -0
  44. data/src/cruft/dom.js +606 -0
  45. data/src/cruft/element.js +297 -0
  46. data/src/cruft/good.html +30 -0
  47. data/src/cruft/good.js +32 -0
  48. data/src/cruft/internal.js +81 -0
  49. data/src/cruft/parser.js +458 -0
  50. data/src/css/properties.js +293 -0
  51. data/src/css/rule.js +22 -0
  52. data/src/css/sizzle.js +717 -0
  53. data/src/css/stylesheet.js +52 -0
  54. data/src/dom/attr.js +55 -0
  55. data/src/dom/cdatasection.js +31 -0
  56. data/src/dom/characterdata.js +119 -0
  57. data/src/dom/comment.js +30 -0
  58. data/src/dom/doctype.js +9 -0
  59. data/src/dom/document.js +1023 -0
  60. data/src/dom/dom.js +134 -0
  61. data/src/dom/element.js +217 -0
  62. data/src/dom/entities.js +273 -0
  63. data/src/dom/exception.js +28 -0
  64. data/src/dom/fragment.js +37 -0
  65. data/src/dom/implementation.js +140 -0
  66. data/src/dom/instruction.js +51 -0
  67. data/src/dom/namednodemap.js +374 -0
  68. data/src/dom/namespace.js +50 -0
  69. data/src/dom/node.js +618 -0
  70. data/src/dom/nodelist.js +195 -0
  71. data/src/dom/parser.js +1207 -0
  72. data/src/dom/text.js +73 -0
  73. data/src/event/event.js +47 -0
  74. data/src/event/mouseevent.js +4 -0
  75. data/src/event/uievent.js +8 -0
  76. data/src/html/a.js +110 -0
  77. data/src/html/anchor.js +80 -0
  78. data/src/html/area.js +57 -0
  79. data/src/html/base.js +26 -0
  80. data/src/html/blockquote-q.js +19 -0
  81. data/src/html/body.js +19 -0
  82. data/src/html/button.js +21 -0
  83. data/src/html/canvas.js +14 -0
  84. data/src/html/col-colgroup.js +49 -0
  85. data/src/html/collection.js +72 -0
  86. data/src/html/cookie.js +153 -0
  87. data/src/html/del-ins.js +25 -0
  88. data/src/html/div.js +28 -0
  89. data/src/html/document.js +364 -0
  90. data/src/html/element.js +382 -0
  91. data/src/html/fieldset.js +19 -0
  92. data/src/html/form.js +484 -0
  93. data/src/html/frame.js +89 -0
  94. data/src/html/frameset.js +25 -0
  95. data/src/html/head.js +44 -0
  96. data/src/html/html.js +0 -0
  97. data/src/html/htmlparser.js +340 -0
  98. data/src/html/iframe.js +26 -0
  99. data/src/html/image.js +0 -0
  100. data/src/html/img.js +62 -0
  101. data/src/html/input-elements.js +307 -0
  102. data/src/html/input.js +65 -0
  103. data/src/html/label.js +26 -0
  104. data/src/html/legend.js +19 -0
  105. data/src/html/link.js +82 -0
  106. data/src/html/map.js +22 -0
  107. data/src/html/meta.js +37 -0
  108. data/src/html/object.js +89 -0
  109. data/src/html/optgroup.js +25 -0
  110. data/src/html/option.js +103 -0
  111. data/src/html/param.js +38 -0
  112. data/src/html/script.js +122 -0
  113. data/src/html/select.js +132 -0
  114. data/src/html/style.js +31 -0
  115. data/src/html/table.js +199 -0
  116. data/src/html/tbody-thead-tfoot.js +92 -0
  117. data/src/html/td-th.js +18 -0
  118. data/src/html/textarea.js +31 -0
  119. data/src/html/title.js +20 -0
  120. data/src/html/tr.js +114 -0
  121. data/src/intro.js +141 -0
  122. data/src/outro.js +70 -0
  123. data/src/parser/html5.detailed.js +10762 -0
  124. data/src/parser/html5.min.js +503 -0
  125. data/src/parser/html5.pretty.js +10815 -0
  126. data/src/parser/intro.js +42 -0
  127. data/src/parser/outro.js +9 -0
  128. data/src/platform/core.js +323 -0
  129. data/src/platform/johnson.js +484 -0
  130. data/src/platform/rhino.js +327 -0
  131. data/src/platform/static/intro.js +41 -0
  132. data/src/platform/static/outro.js +30 -0
  133. data/src/profile/aop.js +238 -0
  134. data/src/profile/profile.js +402 -0
  135. data/src/serializer/xml.js +21 -0
  136. data/src/svg/animatedstring.js +25 -0
  137. data/src/svg/document.js +25 -0
  138. data/src/svg/element.js +22 -0
  139. data/src/svg/locatable.js +17 -0
  140. data/src/svg/rect.js +18 -0
  141. data/src/svg/rectelement.js +24 -0
  142. data/src/svg/stylable.js +49 -0
  143. data/src/svg/svgelement.js +22 -0
  144. data/src/svg/transformable.js +15 -0
  145. data/src/window/css.js +15 -0
  146. data/src/window/dialog.js +16 -0
  147. data/src/window/document.js +28 -0
  148. data/src/window/event.js +265 -0
  149. data/src/window/history.js +62 -0
  150. data/src/window/location.js +156 -0
  151. data/src/window/navigator.js +48 -0
  152. data/src/window/screen.js +53 -0
  153. data/src/window/timer.js +21 -0
  154. data/src/window/window.js +284 -0
  155. data/src/window/xhr.js +135 -0
  156. data/src/xpath/expression.js +49 -0
  157. data/src/xpath/implementation.js +2505 -0
  158. data/src/xpath/result.js +67 -0
  159. data/src/xpath/util.js +551 -0
  160. data/src/xpath/xmltoken.js +149 -0
  161. data/src/xslt/COPYING +34 -0
  162. data/src/xslt/ajaxslt-0.8.1/AUTHORS +1 -0
  163. data/src/xslt/ajaxslt-0.8.1/ChangeLog +136 -0
  164. data/src/xslt/ajaxslt-0.8.1/Makefile +49 -0
  165. data/src/xslt/ajaxslt-0.8.1/README +102 -0
  166. data/src/xslt/ajaxslt-0.8.1/TODO +15 -0
  167. data/src/xslt/ajaxslt-0.8.1/dom.js +566 -0
  168. data/src/xslt/ajaxslt-0.8.1/dom_unittest.html +24 -0
  169. data/src/xslt/ajaxslt-0.8.1/dom_unittest.js +131 -0
  170. data/src/xslt/ajaxslt-0.8.1/simplelog.js +79 -0
  171. data/src/xslt/ajaxslt-0.8.1/test/xpath.html +18 -0
  172. data/src/xslt/ajaxslt-0.8.1/test/xpath_script.js +45 -0
  173. data/src/xslt/ajaxslt-0.8.1/test/xslt.html +58 -0
  174. data/src/xslt/ajaxslt-0.8.1/test/xslt_script.js +33 -0
  175. data/src/xslt/ajaxslt-0.8.1/unittestsuite.html +26 -0
  176. data/src/xslt/ajaxslt-0.8.1/xmltoken.js +149 -0
  177. data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.html +18 -0
  178. data/src/xslt/ajaxslt-0.8.1/xmltoken_unittest.js +811 -0
  179. data/src/xslt/ajaxslt-0.8.1/xpath_unittest.html +39 -0
  180. data/src/xslt/ajaxslt-0.8.1/xpath_unittest.js +557 -0
  181. data/src/xslt/ajaxslt-0.8.1/xpathdebug.js +234 -0
  182. data/src/xslt/ajaxslt-0.8.1/xslt_unittest.html +138 -0
  183. data/src/xslt/ajaxslt-0.8.1/xslt_unittest.js +68 -0
  184. data/src/xslt/implementation.js +625 -0
  185. data/src/xslt/processor.js +37 -0
  186. data/src/xslt/util.js +449 -0
  187. data/test/base64.js +80 -0
  188. data/test/call-load-test.js +15 -0
  189. data/test/data.js +45 -0
  190. data/test/debug.js +53 -0
  191. data/test/firebug/errorIcon.png +0 -0
  192. data/test/firebug/firebug.css +209 -0
  193. data/test/firebug/firebug.html +23 -0
  194. data/test/firebug/firebug.js +672 -0
  195. data/test/firebug/firebugx.js +10 -0
  196. data/test/firebug/infoIcon.png +0 -0
  197. data/test/firebug/warningIcon.png +0 -0
  198. data/test/fixtures/html/events.html +171 -0
  199. data/test/fixtures/html/iframe1.html +46 -0
  200. data/test/fixtures/html/iframe1a.html +46 -0
  201. data/test/fixtures/html/iframe2.html +45 -0
  202. data/test/fixtures/html/iframe3.html +28 -0
  203. data/test/fixtures/html/iframeN.html +57 -0
  204. data/test/fixtures/html/malformed.html +181 -0
  205. data/test/fixtures/html/scope.html +81 -0
  206. data/test/fixtures/html/trivial.html +19 -0
  207. data/test/fixtures/html/with_js.html +26 -0
  208. data/test/fixtures/images/icon-blue.png +0 -0
  209. data/test/fixtures/js/external_script.js +1 -0
  210. data/test/fixtures/js/script.js +1 -0
  211. data/test/fixtures/js/script_error.js +2 -0
  212. data/test/foo.html +8 -0
  213. data/test/foo.js +40 -0
  214. data/test/html/events.html +171 -0
  215. data/test/html/iframe1.html +46 -0
  216. data/test/html/iframe1a.html +46 -0
  217. data/test/html/iframe2.html +45 -0
  218. data/test/html/iframe3.html +30 -0
  219. data/test/html/iframeN.html +57 -0
  220. data/test/html/malformed.html +181 -0
  221. data/test/html/scope.html +87 -0
  222. data/test/html/script.js +1 -0
  223. data/test/html/trivial.html +19 -0
  224. data/test/html/with_js.html +26 -0
  225. data/test/index.html +328 -0
  226. data/test/java-prototype.js +9 -0
  227. data/test/jquery.js +6002 -0
  228. data/test/primary-tests.js +26 -0
  229. data/test/prototype-test.js +13 -0
  230. data/test/qunit.js +61 -0
  231. data/test/qunit/qunit/qunit.css +17 -0
  232. data/test/qunit/qunit/qunit.js +997 -0
  233. data/test/scope.html +19 -0
  234. data/test/scope.rb +24 -0
  235. data/test/smp/dmathieu/index.html +8 -0
  236. data/test/specs/dist/env.spec.js +1534 -0
  237. data/test/specs/envjs.spec.css +46 -0
  238. data/test/specs/parser/html.js +31 -0
  239. data/test/specs/parser/spec.html +40 -0
  240. data/test/specs/parser/xml.js +31 -0
  241. data/test/specs/qunit.bdd.js +210 -0
  242. data/test/specs/qunit.css +17 -0
  243. data/test/specs/qunit.js +997 -0
  244. data/test/specs/template/spec-0.js +31 -0
  245. data/test/specs/template/spec-1.js +31 -0
  246. data/test/specs/template/spec.html +40 -0
  247. data/test/specs/window/css.js +23 -0
  248. data/test/specs/window/dialog.js +25 -0
  249. data/test/specs/window/document.js +23 -0
  250. data/test/specs/window/event.js +25 -0
  251. data/test/specs/window/history.js +34 -0
  252. data/test/specs/window/location.js +34 -0
  253. data/test/specs/window/navigator.js +71 -0
  254. data/test/specs/window/screen.js +42 -0
  255. data/test/specs/window/spec.html +48 -0
  256. data/test/specs/window/timer.js +26 -0
  257. data/test/specs/window/window.js +53 -0
  258. data/test/specs/xhr/spec.html +47 -0
  259. data/test/specs/xhr/xhr.js +31 -0
  260. data/test/test.js +10 -0
  261. data/test/unit/dom.js +44 -0
  262. data/test/unit/elementmembers.js +92 -0
  263. data/test/unit/events.js +195 -0
  264. data/test/unit/fixtures/external_script.js +1 -0
  265. data/test/unit/form.js +40 -0
  266. data/test/unit/iframe.js +234 -0
  267. data/test/unit/insertion.js +23 -0
  268. data/test/unit/multi-window.js +212 -0
  269. data/test/unit/nu.validator.js +34 -0
  270. data/test/unit/onload.js +90 -0
  271. data/test/unit/parser.js +122 -0
  272. data/test/unit/prototypecompat.js +22 -0
  273. data/test/unit/proxy.js +6 -0
  274. data/test/unit/scope.js +209 -0
  275. data/test/unit/timer.js +115 -0
  276. data/test/unit/window.js +57 -0
  277. data/test/x.js +1 -0
  278. data/test/y.js +1 -0
  279. metadata +367 -0
@@ -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,132 @@
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
+ // This is a workaround for now for copying nodes in
31
+ if (name === "type") {
32
+ if (!this.ownerDocument._performingImportNodeOperation) {
33
+ throw new Error("cannot set readonly attribute: "+name);
34
+ }
35
+ } else if (name === "multiple") {
36
+ HTMLInputCommon.prototype.
37
+ setAttribute.call(this, "type", value ? "select-multiple" : "select-one");
38
+ HTMLInputCommon.prototype.setAttribute.call(this, "multiple", !!value);
39
+ } else if (name === "value") {
40
+ var options = this.options,
41
+ i, index;
42
+ for (i=0; i<options.length; i++) {
43
+ if (options[i].value == value) {
44
+ index = i;
45
+ break;
46
+ }
47
+ }
48
+ if (index !== undefined) {
49
+ HTMLInputCommon.prototype.setAttribute.call(this, "value", value);
50
+ this.selectedIndex = index;
51
+
52
+ var event = this.ownerDocument.createEvent();
53
+ event.initEvent("change");
54
+ this.dispatchEvent( event );
55
+ }
56
+ } else {
57
+ HTMLInputCommon.prototype.setAttribute.apply(this, arguments);
58
+ }
59
+ },
60
+ getAttribute: function(name){
61
+ if (name === "type") {
62
+ return HTMLInputCommon.prototype.getAttribute.apply(this, arguments) || this.multple ? "select-multiple" : "select-one";
63
+ } else if (name === "value") {
64
+ var value = HTMLInputCommon.prototype.getAttribute.apply(this, arguments);
65
+ if (value === undefined || value === null) {
66
+ var index = this.selectedIndex;
67
+ return (index != -1) ? this.options[index].value :
68
+ ( this.multiple ? "" :
69
+ ( this.options[0] ? this.options[0].value : "" ) );
70
+ } else {
71
+ return value;
72
+ }
73
+ } else {
74
+ return HTMLInputCommon.prototype.getAttribute.apply(this, arguments);
75
+ }
76
+ },
77
+ // over-ride the value setter in HTMLTypeValueInputs
78
+ set value(newValue) {
79
+ this.setAttribute("value",newValue);
80
+ },
81
+ get value() {
82
+ return this.getAttribute("value");
83
+ },
84
+ get length(){
85
+ return this.options.length;
86
+ },
87
+ get multiple(){
88
+ return this.getAttribute('multiple');
89
+ },
90
+ set multiple(value){
91
+ this.setAttribute('multiple',value);
92
+ },
93
+ get options(){
94
+ return this.getElementsByTagName('option');
95
+ },
96
+ get selectedIndex(){
97
+ var options = this.options;
98
+ for(var i=0;i<options.length;i++){
99
+ if(options[i].selected){
100
+ return i;
101
+ }
102
+ };
103
+ return -1;
104
+ },
105
+
106
+ set selectedIndex(value) {
107
+ var i;
108
+ for (i=0; i<this.options.length; i++) {
109
+ this.options[i].selected = this.multiple ?
110
+ (i == Number(value) || this.options[i].selected) :
111
+ (i == Number(value));
112
+ }
113
+ },
114
+ get type(){
115
+ return this.getAttribute('type');
116
+ },
117
+
118
+ add : function(){
119
+ __add__(this);
120
+ },
121
+ remove : function(){
122
+ __remove__(this);
123
+ }
124
+ });
125
+
126
+ // $w.HTMLSelectElement = HTMLSelectElement;
127
+
128
+ // Local Variables:
129
+ // espresso-indent-level:4
130
+ // c-basic-offset:4
131
+ // tab-width:4
132
+ // 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;