text: (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));