- buildTree: function(tree, containers) {
- var type = $.type(tree);
- if (type == "string" || type == "number") {
- return document.createTextNode(String(tree));
- }
- if (type != "array") {
- return tree;
- }
- var elemDescriptor = tree[0];
- var cssClasses, elemId, containerKey = [];
- if (elemDescriptor.indexOf(".") > -1) {
- elemDescriptor = elemDescriptor.split(".");
- cssClasses = elemDescriptor.slice(1); //[song]
- elemDescriptor = elemDescriptor[0]; //div
- }
- if (elemDescriptor.indexOf("##") > -1) {
- elemDescriptor = elemDescriptor.split("##");
- containerKey = (containers ? elemDescriptor.slice(1) : []);
- elemDescriptor = elemDescriptor[0]; ["div"]
- }
- if (elemDescriptor.indexOf("#") > -1) {
- elemDescriptor = elemDescriptor.split("#");
- elemId = elemDescriptor[1];
- elemDescriptor = elemDescriptor[0];
- }
- var elem = document.createElement(elemDescriptor);
- if (cssClasses) {
- elem.className = cssClasses.join(" ");
- }
- for (var i = 0; i < containerKey.length; i++) {
- containers[containerKey[i]] = elem;
- }
- if (elemId) {
- elem.id = elemId;
- }
- var index = 1;
- var elemData = tree[index];
- if (elemData) {
- if (util.typeOf(elemData) == "object") {
- util.applyAttributes(elem, elemData, containers);
- if (elemDescriptor.toLowerCase() == "a" && !elem.href) {
- elem.href = "#";
- }
- index = 2;
- }
- for (; index < tree.length; index++) {
- if (tree[index] !== null && tree[index] !== undefined) {
- elem.appendChild(util.buildTree(tree[index], containers));
- }
- }
- }
- if (elemDescriptor == "input") {
- this.setupPlaceholders(elem);
- }
- return elem;
- }