/*\ title: $:/core/treenodes/element.js type: application/javascript module-type: treenode Element nodes \*/ (function(){ /*jshint node: true, browser: true */ "use strict"; var Node = require("./node.js").Node; var Element = function(type,attributes,children) { if(this instanceof Element) { this.type = type; this.attributes = attributes || {}; this.children = children || []; } else { return new Element(type,attributes,children); } }; Element.prototype = new Node(); Element.prototype.constructor = Element; Element.prototype.clone = function() { var childClones = []; for(var t=0; t"); } if(this.children) { for(var t=0; t"); } } return output.join(""); }; Element.prototype.renderInDom = function(parentDomNode,insertBefore) { var element = document.createElement(this.type); if(this.attributes) { for(var a in this.attributes) { var v = this.attributes[a]; if(v !== undefined) { if($tw.utils.isArray(v)) { // Ahem, could there be arrays other than className? element.className = v.join(" "); } else if (typeof v === "object") { // ...or objects other than style? for(var p in v) { element.style[p] = v[p]; } } else { element.setAttribute(a,v); } } } } if(insertBefore) { parentDomNode.insertBefore(element,insertBefore); } else { parentDomNode.appendChild(element); } this.domNode = element; if(this.children) { for(var t=0; t