]> git.mxchange.org Git - quix0rs-gnu-social.git/commitdiff
Adding xbImportNode
authorsarven <csarven@plantard.controlezvous.ca>
Sat, 17 Jan 2009 02:57:51 +0000 (02:57 +0000)
committersarven <csarven@plantard.controlezvous.ca>
Sat, 17 Jan 2009 02:57:51 +0000 (02:57 +0000)
js/xbImportNode.js [new file with mode: 0644]

diff --git a/js/xbImportNode.js b/js/xbImportNode.js
new file mode 100644 (file)
index 0000000..f600a47
--- /dev/null
@@ -0,0 +1,47 @@
+/* is this stuff defined? */
+if (!document.ELEMENT_NODE) {
+       document.ELEMENT_NODE = 1;
+       document.ATTRIBUTE_NODE = 2;
+       document.TEXT_NODE = 3;
+       document.CDATA_SECTION_NODE = 4;
+       document.ENTITY_REFERENCE_NODE = 5;
+       document.ENTITY_NODE = 6;
+       document.PROCESSING_INSTRUCTION_NODE = 7;
+       document.COMMENT_NODE = 8;
+       document.DOCUMENT_NODE = 9;
+       document.DOCUMENT_TYPE_NODE = 10;
+       document.DOCUMENT_FRAGMENT_NODE = 11;
+       document.NOTATION_NODE = 12;
+}
+
+document._importNode = function(node, allChildren) {
+       /* find the node type to import */
+       switch (node.nodeType) {
+               case document.ELEMENT_NODE:
+                       /* create a new element */
+                       var newNode = document.createElement(node.nodeName);
+                       /* does the node have any attributes to add? */
+                       if (node.attributes && node.attributes.length > 0)
+                               /* add all of the attributes */
+                               for (var i = 0, il = node.attributes.length; i < il;) {
+                                       if (node.attributes[i].nodeName == 'class') {
+                                               newNode.className = node.getAttribute(node.attributes[i++].nodeName);
+                                       } else {
+                                               newNode.setAttribute(node.attributes[i].nodeName, node.getAttribute(node.attributes[i++].nodeName));
+                                       }
+                               }
+                       /* are we going after children too, and does the node have any? */
+                       if (allChildren && node.childNodes && node.childNodes.length > 0)
+                               /* recursively get all of the child nodes */
+                               for (var i = 0, il = node.childNodes.length; i < il;)
+                                       newNode.appendChild(document._importNode(node.childNodes[i++], allChildren));
+                       return newNode;
+                       break;
+               case document.TEXT_NODE:
+               case document.CDATA_SECTION_NODE:
+               case document.COMMENT_NODE:
+                       return document.createTextNode(node.nodeValue);
+                       break;
+       }
+};
+