diff options
author | Evan Prodromou <evan@controlyourself.ca> | 2009-01-17 20:10:56 +0000 |
---|---|---|
committer | Evan Prodromou <evan@controlyourself.ca> | 2009-01-17 20:10:56 +0000 |
commit | e019a55a83b70684f629bcd179ec938d735b4a57 (patch) | |
tree | 56a44da68df769a965f18caf14e6fadbc2138e2f /js/xbImportNode.js | |
parent | 400927f757b1e4d13a6703c73125a4a38137eba9 (diff) | |
parent | 6cc3f78cf309a80c72156c673dceac21dde63603 (diff) |
Merge branch 'uiredesign' of /var/www/trunk into uiredesign
Diffstat (limited to 'js/xbImportNode.js')
-rw-r--r-- | js/xbImportNode.js | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/js/xbImportNode.js b/js/xbImportNode.js new file mode 100644 index 000000000..f600a4789 --- /dev/null +++ b/js/xbImportNode.js @@ -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; + } +}; + |