|
1 /*** |
|
2 |
|
3 MochiKit.MockDOM 1.4 |
|
4 |
|
5 See <http://mochikit.com/> for documentation, downloads, license, etc. |
|
6 |
|
7 (c) 2005 Bob Ippolito. All rights Reserved. |
|
8 |
|
9 ***/ |
|
10 |
|
11 if (typeof(MochiKit) == "undefined") { |
|
12 MochiKit = {}; |
|
13 } |
|
14 |
|
15 if (typeof(MochiKit.MockDOM) == "undefined") { |
|
16 MochiKit.MockDOM = {}; |
|
17 } |
|
18 |
|
19 MochiKit.MockDOM.NAME = "MochiKit.MockDOM"; |
|
20 MochiKit.MockDOM.VERSION = "1.4"; |
|
21 |
|
22 MochiKit.MockDOM.__repr__ = function () { |
|
23 return "[" + this.NAME + " " + this.VERSION + "]"; |
|
24 }; |
|
25 |
|
26 /** @id MochiKit.MockDOM.toString */ |
|
27 MochiKit.MockDOM.toString = function () { |
|
28 return this.__repr__(); |
|
29 }; |
|
30 |
|
31 /** @id MochiKit.MockDOM.createDocument */ |
|
32 MochiKit.MockDOM.createDocument = function () { |
|
33 var doc = new MochiKit.MockDOM.MockElement("DOCUMENT"); |
|
34 doc.body = doc.createElement("BODY"); |
|
35 doc.appendChild(doc.body); |
|
36 return doc; |
|
37 }; |
|
38 |
|
39 /** @id MochiKit.MockDOM.MockElement */ |
|
40 MochiKit.MockDOM.MockElement = function (name, data, ownerDocument) { |
|
41 this.tagName = this.nodeName = name.toUpperCase(); |
|
42 this.ownerDocument = ownerDocument || null; |
|
43 if (name == "DOCUMENT") { |
|
44 this.nodeType = 9; |
|
45 this.childNodes = []; |
|
46 } else if (typeof(data) == "string") { |
|
47 this.nodeValue = data; |
|
48 this.nodeType = 3; |
|
49 } else { |
|
50 this.nodeType = 1; |
|
51 this.childNodes = []; |
|
52 } |
|
53 if (name.substring(0, 1) == "<") { |
|
54 var nameattr = name.substring( |
|
55 name.indexOf('"') + 1, name.lastIndexOf('"')); |
|
56 name = name.substring(1, name.indexOf(" ")); |
|
57 this.tagName = this.nodeName = name.toUpperCase(); |
|
58 this.setAttribute("name", nameattr); |
|
59 } |
|
60 }; |
|
61 |
|
62 MochiKit.MockDOM.MockElement.prototype = { |
|
63 /** @id MochiKit.MockDOM.MockElement.prototype.createElement */ |
|
64 createElement: function (tagName) { |
|
65 return new MochiKit.MockDOM.MockElement(tagName, null, this.nodeType == 9 ? this : this.ownerDocument); |
|
66 }, |
|
67 /** @id MochiKit.MockDOM.MockElement.prototype.createTextNode */ |
|
68 createTextNode: function (text) { |
|
69 return new MochiKit.MockDOM.MockElement("text", text, this.nodeType == 9 ? this : this.ownerDocument); |
|
70 }, |
|
71 /** @id MochiKit.MockDOM.MockElement.prototype.setAttribute */ |
|
72 setAttribute: function (name, value) { |
|
73 this[name] = value; |
|
74 }, |
|
75 /** @id MochiKit.MockDOM.MockElement.prototype.getAttribute */ |
|
76 getAttribute: function (name) { |
|
77 return this[name]; |
|
78 }, |
|
79 /** @id MochiKit.MockDOM.MockElement.prototype.appendChild */ |
|
80 appendChild: function (child) { |
|
81 this.childNodes.push(child); |
|
82 }, |
|
83 /** @id MochiKit.MockDOM.MockElement.prototype.toString */ |
|
84 toString: function () { |
|
85 return "MockElement(" + this.tagName + ")"; |
|
86 }, |
|
87 /** @id MochiKit.MockDOM.MockElement.prototype.getElementsByTagName */ |
|
88 getElementsByTagName: function (tagName) { |
|
89 var foundElements = []; |
|
90 MochiKit.Base.nodeWalk(this, function(node){ |
|
91 if (tagName == '*' || tagName == node.tagName) { |
|
92 foundElements.push(node); |
|
93 return node.childNodes; |
|
94 } |
|
95 }); |
|
96 return foundElements; |
|
97 } |
|
98 }; |
|
99 |
|
100 /** @id MochiKit.MockDOM.EXPORT_OK */ |
|
101 MochiKit.MockDOM.EXPORT_OK = [ |
|
102 "mockElement", |
|
103 "createDocument" |
|
104 ]; |
|
105 |
|
106 /** @id MochiKit.MockDOM.EXPORT */ |
|
107 MochiKit.MockDOM.EXPORT = [ |
|
108 "document" |
|
109 ]; |
|
110 |
|
111 MochiKit.MockDOM.__new__ = function () { |
|
112 this.document = this.createDocument(); |
|
113 }; |
|
114 |
|
115 MochiKit.MockDOM.__new__(); |