|
@@ -1,194 +0,0 @@
|
|
|
-(function (window, document) {
|
|
|
- "use strict";
|
|
|
-
|
|
|
- var tabs = {};
|
|
|
-
|
|
|
- function changeElementClass(element, classValue) {
|
|
|
- if (element.getAttribute("className")) {
|
|
|
- element.setAttribute("className", classValue);
|
|
|
- } else {
|
|
|
- element.setAttribute("class", classValue);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function getClassAttribute(element) {
|
|
|
- if (element.getAttribute("className")) {
|
|
|
- return element.getAttribute("className");
|
|
|
- } else {
|
|
|
- return element.getAttribute("class");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function addClass(element, classValue) {
|
|
|
- changeElementClass(element, getClassAttribute(element) + " " + classValue);
|
|
|
- }
|
|
|
-
|
|
|
- function removeClass(element, classValue) {
|
|
|
- changeElementClass(element, getClassAttribute(element).replace(classValue, ""));
|
|
|
- }
|
|
|
-
|
|
|
- function initTabs() {
|
|
|
- var container = document.getElementById("tabs");
|
|
|
-
|
|
|
- tabs.tabs = findTabs(container);
|
|
|
- tabs.titles = findTitles(tabs.tabs);
|
|
|
- tabs.headers = findHeaders(container);
|
|
|
- tabs.select = select;
|
|
|
- tabs.deselectAll = deselectAll;
|
|
|
- tabs.select(0);
|
|
|
-
|
|
|
- return true;
|
|
|
- }
|
|
|
-
|
|
|
- function getCheckBox() {
|
|
|
- return document.getElementById("line-wrapping-toggle");
|
|
|
- }
|
|
|
-
|
|
|
- function getLabelForCheckBox() {
|
|
|
- return document.getElementById("label-for-line-wrapping-toggle");
|
|
|
- }
|
|
|
-
|
|
|
- function findCodeBlocks() {
|
|
|
- var spans = document.getElementById("tabs").getElementsByTagName("span");
|
|
|
- var codeBlocks = [];
|
|
|
- for (var i = 0; i < spans.length; ++i) {
|
|
|
- if (spans[i].className.indexOf("code") >= 0) {
|
|
|
- codeBlocks.push(spans[i]);
|
|
|
- }
|
|
|
- }
|
|
|
- return codeBlocks;
|
|
|
- }
|
|
|
-
|
|
|
- function forAllCodeBlocks(operation) {
|
|
|
- var codeBlocks = findCodeBlocks();
|
|
|
-
|
|
|
- for (var i = 0; i < codeBlocks.length; ++i) {
|
|
|
- operation(codeBlocks[i], "wrapped");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function toggleLineWrapping() {
|
|
|
- var checkBox = getCheckBox();
|
|
|
-
|
|
|
- if (checkBox.checked) {
|
|
|
- forAllCodeBlocks(addClass);
|
|
|
- } else {
|
|
|
- forAllCodeBlocks(removeClass);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function initControls() {
|
|
|
- if (findCodeBlocks().length > 0) {
|
|
|
- var checkBox = getCheckBox();
|
|
|
- var label = getLabelForCheckBox();
|
|
|
-
|
|
|
- checkBox.onclick = toggleLineWrapping;
|
|
|
- checkBox.checked = false;
|
|
|
-
|
|
|
- removeClass(label, "hidden");
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function switchTab() {
|
|
|
- var id = this.id.substr(1);
|
|
|
-
|
|
|
- for (var i = 0; i < tabs.tabs.length; i++) {
|
|
|
- if (tabs.tabs[i].id === id) {
|
|
|
- tabs.select(i);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return false;
|
|
|
- }
|
|
|
-
|
|
|
- function select(i) {
|
|
|
- this.deselectAll();
|
|
|
-
|
|
|
- changeElementClass(this.tabs[i], "tab selected");
|
|
|
- changeElementClass(this.headers[i], "selected");
|
|
|
-
|
|
|
- while (this.headers[i].firstChild) {
|
|
|
- this.headers[i].removeChild(this.headers[i].firstChild);
|
|
|
- }
|
|
|
-
|
|
|
- var h2 = document.createElement("H2");
|
|
|
-
|
|
|
- h2.appendChild(document.createTextNode(this.titles[i]));
|
|
|
- this.headers[i].appendChild(h2);
|
|
|
- }
|
|
|
-
|
|
|
- function deselectAll() {
|
|
|
- for (var i = 0; i < this.tabs.length; i++) {
|
|
|
- changeElementClass(this.tabs[i], "tab deselected");
|
|
|
- changeElementClass(this.headers[i], "deselected");
|
|
|
-
|
|
|
- while (this.headers[i].firstChild) {
|
|
|
- this.headers[i].removeChild(this.headers[i].firstChild);
|
|
|
- }
|
|
|
-
|
|
|
- var a = document.createElement("A");
|
|
|
-
|
|
|
- a.setAttribute("id", "ltab" + i);
|
|
|
- a.setAttribute("href", "#tab" + i);
|
|
|
- a.onclick = switchTab;
|
|
|
- a.appendChild(document.createTextNode(this.titles[i]));
|
|
|
-
|
|
|
- this.headers[i].appendChild(a);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- function findTabs(container) {
|
|
|
- return findChildElements(container, "DIV", "tab");
|
|
|
- }
|
|
|
-
|
|
|
- function findHeaders(container) {
|
|
|
- var owner = findChildElements(container, "UL", "tabLinks");
|
|
|
- return findChildElements(owner[0], "LI", null);
|
|
|
- }
|
|
|
-
|
|
|
- function findTitles(tabs) {
|
|
|
- var titles = [];
|
|
|
-
|
|
|
- for (var i = 0; i < tabs.length; i++) {
|
|
|
- var tab = tabs[i];
|
|
|
- var header = findChildElements(tab, "H2", null)[0];
|
|
|
-
|
|
|
- header.parentNode.removeChild(header);
|
|
|
-
|
|
|
- if (header.innerText) {
|
|
|
- titles.push(header.innerText);
|
|
|
- } else {
|
|
|
- titles.push(header.textContent);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return titles;
|
|
|
- }
|
|
|
-
|
|
|
- function findChildElements(container, name, targetClass) {
|
|
|
- var elements = [];
|
|
|
- var children = container.childNodes;
|
|
|
-
|
|
|
- for (var i = 0; i < children.length; i++) {
|
|
|
- var child = children.item(i);
|
|
|
-
|
|
|
- if (child.nodeType === 1 && child.nodeName === name) {
|
|
|
- if (targetClass && child.className.indexOf(targetClass) < 0) {
|
|
|
- continue;
|
|
|
- }
|
|
|
-
|
|
|
- elements.push(child);
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return elements;
|
|
|
- }
|
|
|
-
|
|
|
- // Entry point.
|
|
|
-
|
|
|
- window.onload = function() {
|
|
|
- initTabs();
|
|
|
- initControls();
|
|
|
- };
|
|
|
-} (window, window.document));
|