Skip to content
Snippets Groups Projects
Select Git revision
  • e40292aa4dca99afa18a9ce701523600e546ce3e
  • main default protected
  • melissa
  • yanis
  • variant
5 results

Virus.java

Blame
  • Forked from COUETOUX Basile / FirefighterStarter
    Source project has a limited visibility.
    Code owners
    Assign users and groups as approvers for specific file changes. Learn more.
    report.js 5.13 KiB
    (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));