define([], function () { return function () { var self = this; var tabs = document.createElement("ul"); tabs.classList.add("tabs"); var container = document.createElement("div"); function gotoTab(li) { for (var i = 0; i < tabs.children.length; i++) tabs.children[i].classList.remove("visible"); while (container.firstChild) container.removeChild(container.firstChild); li.classList.add("visible"); var tab = document.createElement("div"); tab.classList.add("tab"); container.appendChild(tab); li.child.render(tab); } function switchTab() { gotoTab(this); return false; } self.add = function (title, d) { var li = document.createElement("li"); li.textContent = title; li.onclick = switchTab; li.child = d; tabs.appendChild(li); var anyVisible = false; for (var i = 0; i < tabs.children.length; i++) if (tabs.children[i].classList.contains("visible")) { anyVisible = true; break; } if (!anyVisible) gotoTab(li); }; self.render = function (el) { el.appendChild(tabs); el.appendChild(container); }; return self; }; });