Merge pull request #1967 from solgenomics/topic/trait_props
[sgn.git] / js / MochiKit / MockDOM.js
blob92558cb7bf3220b95e7b405ee53edf767ddff81b
1 /***
3 MochiKit.MockDOM 1.4
5 See <http://mochikit.com/> for documentation, downloads, license, etc.
7 (c) 2005 Bob Ippolito.  All rights Reserved.
9 ***/
11 if (typeof(MochiKit) == "undefined") {
12     MochiKit = {};
15 if (typeof(MochiKit.MockDOM) == "undefined") {
16     MochiKit.MockDOM = {};
19 MochiKit.MockDOM.NAME = "MochiKit.MockDOM";
20 MochiKit.MockDOM.VERSION = "1.4";
22 MochiKit.MockDOM.__repr__ = function () {
23     return "[" + this.NAME + " " + this.VERSION + "]";
26 /** @id MochiKit.MockDOM.toString */
27 MochiKit.MockDOM.toString = function () {
28     return this.__repr__();
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;
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     }
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     }
100     /** @id MochiKit.MockDOM.EXPORT_OK */
101 MochiKit.MockDOM.EXPORT_OK = [
102     "mockElement",
103     "createDocument"
106     /** @id MochiKit.MockDOM.EXPORT */
107 MochiKit.MockDOM.EXPORT = [
108     "document"
111 MochiKit.MockDOM.__new__ = function () {
112     this.document = this.createDocument();
115 MochiKit.MockDOM.__new__();