/* W3.JS 1.04 April 2019 by w3schools.com */
"use strict";
var w3 = {};
w3.hide = function (sel) {
    w3.hideElements(w3.getElements(sel));
};
w3.hideElements = function (elements) {
    var i, l = elements.length;
    for (i = 0; i < l; i++) {
        w3.hideElement(elements[i]);
    }
};
w3.hideElement = function (element) {
    w3.styleElement(element, "display", "none");
};
w3.show = function (sel, a) {
    var elements = w3.getElements(sel);
    if (a) { w3.hideElements(elements); }
    w3.showElements(elements);
};
w3.showElements = function (elements) {
    var i, l = elements.length;
    for (i = 0; i < l; i++) {
        w3.showElement(elements[i]);
    }
};
w3.showElement = function (element) {
    w3.styleElement(element, "display", "block");
};
w3.addStyle = function (sel, prop, val) {
    w3.styleElements(w3.getElements(sel), prop, val);
};
w3.styleElements = function (elements, prop, val) {
    var i, l = elements.length;
    for (i = 0; i < l; i++) {
        w3.styleElement(elements[i], prop, val);
    }
};
w3.styleElement = function (element, prop, val) {
    element.style.setProperty(prop, val);
};
w3.toggleShow = function (sel) {
    var i, x = w3.getElements(sel), l = x.length;
    for (i = 0; i < l; i++) {
        if (x[i].style.display == "none") {
            w3.styleElement(x[i], "display", "block");
        } else {
            w3.styleElement(x[i], "display", "none");
        }
    }
};
w3.addClass = function (sel, name) {
    w3.addClassElements(w3.getElements(sel), name);
};
w3.addClassElements = function (elements, name) {
    var i, l = elements.length;
    for (i = 0; i < l; i++) {
        w3.addClassElement(elements[i], name);
    }
};
w3.addClassElement = function (element, name) {
    var i, arr1, arr2;
    arr1 = element.className.split(" ");
    arr2 = name.split(" ");
    for (i = 0; i < arr2.length; i++) {
        if (arr1.indexOf(arr2[i]) == -1) { element.className += " " + arr2[i]; }
    }
};
w3.removeClass = function (sel, name) {
    w3.removeClassElements(w3.getElements(sel), name);
};
w3.removeClassElements = function (elements, name) {
    var i, l = elements.length, arr1, arr2, j;
    for (i = 0; i < l; i++) {
        w3.removeClassElement(elements[i], name);
    }
};
w3.removeClassElement = function (element, name) {
    var i, arr1, arr2;
    arr1 = element.className.split(" ");
    arr2 = name.split(" ");
    for (i = 0; i < arr2.length; i++) {
        while (arr1.indexOf(arr2[i]) > -1) {
            arr1.splice(arr1.indexOf(arr2[i]), 1);
        }
    }
    element.className = arr1.join(" ");
};
w3.toggleClass = function (sel, c1, c2) {
    w3.toggleClassElements(w3.getElements(sel), c1, c2);
};
w3.toggleClassElements = function (elements, c1, c2) {
    var i, l = elements.length;
    for (i = 0; i < l; i++) {
        w3.toggleClassElement(elements[i], c1, c2);
    }
};
w3.toggleClassElement = function (element, c1, c2) {
    var t1, t2, t1Arr, t2Arr, j, arr, allPresent;
    t1 = (c1 || "");
    t2 = (c2 || "");
    t1Arr = t1.split(" ");
    t2Arr = t2.split(" ");
    arr = element.className.split(" ");
    if (t2Arr.length == 0) {
        allPresent = true;
        for (j = 0; j < t1Arr.length; j++) {
            if (arr.indexOf(t1Arr[j]) == -1) { allPresent = false; }
        }
        if (allPresent) {
            w3.removeClassElement(element, t1);
        } else {
            w3.addClassElement(element, t1);
        }
    } else {
        allPresent = true;
        for (j = 0; j < t1Arr.length; j++) {
            if (arr.indexOf(t1Arr[j]) == -1) { allPresent = false; }
        }
        if (allPresent) {
            w3.removeClassElement(element, t1);
            w3.addClassElement(element, t2);
        } else {
            w3.removeClassElement(element, t2);
            w3.addClassElement(element, t1);
        }
    }
};
w3.getElements = function (id) {
    if (typeof id == "object") {
        return [id];
    } else {
        return document.querySelectorAll(id);
    }
};
w3.filterHTML = function (id, sel, filter) {
    var a, b, c, i, ii, iii, hit;
    a = w3.getElements(id);
    for (i = 0; i < a.length; i++) {
        b = a[i].querySelectorAll(sel);
        for (ii = 0; ii < b.length; ii++) {
            hit = 0;
            if (b[ii].innerText.toUpperCase().indexOf(filter.toUpperCase()) > -1) {
                hit = 1;
            }
            c = b[ii].getElementsByTagName("*");
            for (iii = 0; iii < c.length; iii++) {
                if (c[iii].innerText.toUpperCase().indexOf(filter.toUpperCase()) > -1) {
                    hit = 1;
                }
            }
            if (hit == 1) {
                b[ii].style.display = "";
            } else {
                b[ii].style.display = "none";
            }
        }
    }
};
w3.sortHTML = function (id, sel, sortvalue) {
    var a, b, i, ii, y, bytt, v1, v2, cc, j;
    a = w3.getElements(id);
    for (i = 0; i < a.length; i++) {
        for (j = 0; j < 2; j++) {
            cc = 0;
            y = 1;
            while (y == 1) {
                y = 0;
                b = a[i].querySelectorAll(sel);
                for (ii = 0; ii < (b.length - 1) ; ii++) {
                    bytt = 0;
                    if (sortvalue) {
                        v1 = b[ii].querySelector(sortvalue).innerText;
                        v2 = b[ii + 1].querySelector(sortvalue).innerText;
                    } else {
                        v1 = b[ii].innerText;
                        v2 = b[ii + 1].innerText;
                    }
                    v1 = v1.toLowerCase();
                    v2 = v2.toLowerCase();
                    if ((j == 0 && (v1 > v2)) || (j == 1 && (v1 < v2))) {
                        bytt = 1;
                        break;
                    }
                }
                if (bytt == 1) {
                    b[ii].parentNode.insertBefore(b[ii + 1], b[ii]);
                    y = 1;
                    cc++;
                }
            }
            if (cc > 0) { break; }
        }
    }
};
w3.slideshow = function (sel, ms, func) {
    var i, ss, x = w3.getElements(sel), l = x.length;
    ss = {};
    ss.current = 1;
    ss.x = x;
    ss.ondisplaychange = func;
    if (!isNaN(ms) || ms == 0) {
        ss.milliseconds = ms;
    } else {
        ss.milliseconds = 1000;
    }
    ss.start = function () {
        ss.display(ss.current)
        if (ss.ondisplaychange) { ss.ondisplaychange(); }
        if (ss.milliseconds > 0) {
            window.clearTimeout(ss.timeout);
            ss.timeout = window.setTimeout(ss.next, ss.milliseconds);
        }
    };
    ss.next = function () {
        ss.current += 1;
        if (ss.current > ss.x.length) { ss.current = 1; }
        ss.start();
    };
    ss.previous = function () {
        ss.current -= 1;
        if (ss.current < 1) { ss.current = ss.x.length; }
        ss.start();
    };
    ss.display = function (n) {
        w3.styleElements(ss.x, "display", "none");
        w3.styleElement(ss.x[n - 1], "display", "block");
    }
    ss.start();
    return ss;
};
w3.includeHTML = function (cb) {
    var z, i, elmnt, file, xhttp;
    z = document.getElementsByTagName("*");
    for (i = 0; i < z.length; i++) {
        elmnt = z[i];
        file = elmnt.getAttribute("w3-include-html");
        if (file) {
            xhttp = new XMLHttpRequest();
            xhttp.onreadystatechange = function () {
                if (this.readyState == 4) {
                    if (this.status == 200) { elmnt.innerHTML = this.responseText; }
                    if (this.status == 404) { elmnt.innerHTML = "Page not found."; }
                    elmnt.removeAttribute("w3-include-html");
                    w3.includeHTML(cb);
                }
            }
            xhttp.open("GET", file, true);
            xhttp.send();
            return;
        }
    }
    if (cb) cb();
};
w3.getHttpData = function (file, func) {
    w3.http(file, function () {
        if (this.readyState == 4 && this.status == 200) {
            func(this.responseText);
        }
    });
};
w3.getHttpObject = function (file, func) {
    w3.http(file, function () {
        if (this.readyState == 4 && this.status == 200) {
            func(JSON.parse(this.responseText));
        }
    });
};
w3.displayHttp = function (id, file) {
    w3.http(file, function () {
        if (this.readyState == 4 && this.status == 200) {
            w3.displayObject(id, JSON.parse(this.responseText));
        }
    });
};
w3.http = function (target, readyfunc, xml, method) {
    var httpObj;
    if (!method) { method = "GET"; }
    if (window.XMLHttpRequest) {
        httpObj = new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        httpObj = new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (httpObj) {
        if (readyfunc) { httpObj.onreadystatechange = readyfunc; }
        httpObj.open(method, target, true);
        httpObj.send(xml);
    }
};
w3.getElementsByAttribute = function (x, att) {
    var arr = [], arrCount = -1, i, l, y = x.getElementsByTagName("*"), z = att.toUpperCase();
    l = y.length;
    for (i = -1; i < l; i += 1) {
        if (i == -1) { y[i] = x; }
        if (y[i].getAttribute(z) !== null) { arrCount += 1; arr[arrCount] = y[i]; }
    }
    return arr;
};
w3.dataObject = {},
w3.displayObject = function (id, data) {
    var htmlObj, htmlTemplate, html, arr = [], a, l, rowClone, x, j, i, ii, cc, repeat, repeatObj, repeatX = "";
    htmlObj = document.getElementById(id);
    htmlTemplate = init_template(id, htmlObj);
    html = htmlTemplate.cloneNode(true);
    arr = w3.getElementsByAttribute(html, "w3-repeat");
    l = arr.length;
    for (j = (l - 1) ; j >= 0; j -= 1) {
        cc = arr[j].getAttribute("w3-repeat").split(" ");
        if (cc.length == 1) {
            repeat = cc[0];
        } else {
            repeatX = cc[0];
            repeat = cc[2];
        }
        arr[j].removeAttribute("w3-repeat");
        repeatObj = data[repeat];
        if (repeatObj && typeof repeatObj == "object" && repeatObj.length != "undefined") {
            i = 0;
            for (x in repeatObj) {
                i += 1;
                rowClone = arr[j];
                rowClone = w3_replace_curly(rowClone, "element", repeatX, repeatObj[x]);
                a = rowClone.attributes;
                for (ii = 0; ii < a.length; ii += 1) {
                    a[ii].value = w3_replace_curly(a[ii], "attribute", repeatX, repeatObj[x]).value;
                }
                (i === repeatObj.length) ? arr[j].parentNode.replaceChild(rowClone, arr[j]) : arr[j].parentNode.insertBefore(rowClone, arr[j]);
            }
        } else {
            console.log("w3-repeat must be an array. " + repeat + " is not an array.");
            continue;
        }
    }
    html = w3_replace_curly(html, "element");
    htmlObj.parentNode.replaceChild(html, htmlObj);
    function init_template(id, obj) {
        var template;
        template = obj.cloneNode(true);
        if (w3.dataObject.hasOwnProperty(id)) { return w3.dataObject[id]; }
        w3.dataObject[id] = template;
        return template;
    }
    function w3_replace_curly(elmnt, typ, repeatX, x) {
        var value, rowClone, pos1, pos2, originalHTML, lookFor, lookForARR = [], i, cc, r;
        rowClone = elmnt.cloneNode(true);
        pos1 = 0;
        while (pos1 > -1) {
            originalHTML = (typ == "attribute") ? rowClone.value : rowClone.innerHTML;
            pos1 = originalHTML.indexOf("{{", pos1);
            if (pos1 === -1) { break; }
            pos2 = originalHTML.indexOf("}}", pos1 + 1);
            lookFor = originalHTML.substring(pos1 + 2, pos2);
            lookForARR = lookFor.split("||");
            value = undefined;
            for (i = 0; i < lookForARR.length; i += 1) {
                lookForARR[i] = lookForARR[i].replace(/^\s+|\s+$/gm, ''); //trim
                if (x) { value = x[lookForARR[i]]; }
                if (value == undefined && data) { value = data[lookForARR[i]]; }
                if (value == undefined) {
                    cc = lookForARR[i].split(".");
                    if (cc[0] == repeatX) { value = x[cc[1]]; }
                }
                if (value == undefined) {
                    if (lookForARR[i] == repeatX) { value = x; }
                }
                if (value == undefined) {
                    if (lookForARR[i].substr(0, 1) == '"') {
                        value = lookForARR[i].replace(/"/g, "");
                    } else if (lookForARR[i].substr(0, 1) == "'") {
                        value = lookForARR[i].replace(/'/g, "");
                    }
                }
                if (value != undefined) { break; }
            }
            if (value != undefined) {
                r = "{{" + lookFor + "}}";
                if (typ == "attribute") {
                    rowClone.value = rowClone.value.replace(r, value);
                } else {
                    w3_replace_html(rowClone, r, value);
                }
            }
            pos1 = pos1 + 1;
        }
        return rowClone;
    }
    function w3_replace_html(a, r, result) {
        var b, l, i, a, x, j;
        if (a.hasAttributes()) {
            b = a.attributes;
            l = b.length;
            for (i = 0; i < l; i += 1) {
                if (b[i].value.indexOf(r) > -1) { b[i].value = b[i].value.replace(r, result); }
            }
        }
        x = a.getElementsByTagName("*");
        l = x.length;
        a.innerHTML = a.innerHTML.replace(r, result);
    }
};