/* Minification failed. Returning unminified contents.
(1,24): run-time error CSS1031: Expected selector, found '='
(1,24): run-time error CSS1025: Expected comma or open brace, found '='
(12,17): run-time error CSS1031: Expected selector, found '='
(12,17): run-time error CSS1025: Expected comma or open brace, found '='
(15,10): run-time error CSS1031: Expected selector, found 'showProducts('
(15,10): run-time error CSS1025: Expected comma or open brace, found 'showProducts('
(37,10): run-time error CSS1031: Expected selector, found 'showActiveFilters('
(37,10): run-time error CSS1025: Expected comma or open brace, found 'showActiveFilters('
(46,10): run-time error CSS1031: Expected selector, found 'applyFiltersMobile('
(46,10): run-time error CSS1025: Expected comma or open brace, found 'applyFiltersMobile('
(59,10): run-time error CSS1031: Expected selector, found 'setFilters('
(59,10): run-time error CSS1025: Expected comma or open brace, found 'setFilters('
(79,10): run-time error CSS1031: Expected selector, found 'createFilter('
(79,10): run-time error CSS1025: Expected comma or open brace, found 'createFilter('
(90,10): run-time error CSS1031: Expected selector, found 'setProductCard('
(90,10): run-time error CSS1025: Expected comma or open brace, found 'setProductCard('
(110,10): run-time error CSS1031: Expected selector, found 'containsCategories('
(110,10): run-time error CSS1025: Expected comma or open brace, found 'containsCategories('
(120,10): run-time error CSS1031: Expected selector, found 'resetFilter('
(120,10): run-time error CSS1025: Expected comma or open brace, found 'resetFilter('
(125,10): run-time error CSS1031: Expected selector, found 'changeFilter('
(125,10): run-time error CSS1025: Expected comma or open brace, found 'changeFilter('
(137,10): run-time error CSS1031: Expected selector, found 'delFilter('
(137,10): run-time error CSS1025: Expected comma or open brace, found 'delFilter('
(144,10): run-time error CSS1031: Expected selector, found 'getActiveFilters('
(144,10): run-time error CSS1025: Expected comma or open brace, found 'getActiveFilters('
(149,10): run-time error CSS1031: Expected selector, found 'setActiveFilters('
(149,10): run-time error CSS1025: Expected comma or open brace, found 'setActiveFilters('
(153,10): run-time error CSS1031: Expected selector, found 'gotoProduct('
(153,10): run-time error CSS1025: Expected comma or open brace, found 'gotoProduct('
(168,10): run-time error CSS1031: Expected selector, found 'isDesktop('
(168,10): run-time error CSS1025: Expected comma or open brace, found 'isDesktop('
(172,10): run-time error CSS1031: Expected selector, found 'mobiCategory('
(172,10): run-time error CSS1025: Expected comma or open brace, found 'mobiCategory('
(183,10): run-time error CSS1031: Expected selector, found 'checkProduct('
(183,10): run-time error CSS1025: Expected comma or open brace, found 'checkProduct('
(189,10): run-time error CSS1031: Expected selector, found 'timer('
(189,10): run-time error CSS1025: Expected comma or open brace, found 'timer('
(222,10): run-time error CSS1031: Expected selector, found 'timeToString('
(222,10): run-time error CSS1025: Expected comma or open brace, found 'timeToString('
(226,10): run-time error CSS1031: Expected selector, found 'printTime('
(226,10): run-time error CSS1025: Expected comma or open brace, found 'printTime('
 */
Array.prototype.remove = function () {
    var what, a = arguments, L = a.length, ax;
    while (L && this.length) {
        what = a[--L];
        while ((ax = this.indexOf(what)) !== -1) {
            this.splice(ax, 1);
        }
    }
    return this;
};

const keyFilter = 'activeDiscountFilters';


function showProducts() {
    var activeFilters = getActiveFilters();
    
    document.getElementById("count-options").textContent = activeFilters.length;

    document.getElementById("active-filters").innerHTML = "";
    activeFilters.forEach(f => showActiveFilters(f));
    
    setFilters(activeFilters);

    var list = document.createElement("ul");
    products.forEach(p => setProductCard(p, list, activeFilters));

    var productsNode = isDesktop()
        ? document.querySelectorAll(".product-list")[0]
        : document.querySelectorAll(".product-list")[1]

    productsNode.innerHTML = "";
    productsNode.appendChild(list);
}


function showActiveFilters(name) {
    var button = document.createElement("button");
    button.setAttribute("class", "inline active-filter");
    button.setAttribute("onclick", "delFilter(\"" + name + "\")")
    button.innerHTML = name + " <i class='fa fa-fw fa-close'></i>";

    document.getElementById("active-filters").appendChild(button);
}

function applyFiltersMobile() {
    var filters = document.querySelectorAll(".mobile-filter-content > div > .filter-checkbox > input");
    var categories = [];
    filters.forEach(f => {
        if (f.checked) {
            categories.push(f.value);
        }
    });

    setActiveFilters(categories);
    showProducts();
}

function setFilters(activeFilters) {
    var categoryNames = [];
    products.forEach(p => {
        p.Categories.forEach(c => {
            if (!categoryNames.includes(c)) {
                categoryNames.push(c);
            }
        });
    });

    var categoryNodes = document.querySelectorAll(".category-list");
    categoryNodes.forEach(node => {
        node.innerHTML = "";
        categoryNames.forEach(c => {
            var enabled = activeFilters.includes(c);
            createFilter(c, enabled, node);
        });
    });
}

function createFilter(name, enabled, element) {
    var checked = enabled ? "checked" : "";
    var filter = document.createElement("div");
    filter.setAttribute("class", "filter-checkbox");
    filter.innerHTML = isDesktop()
        ? "<input type='checkbox' " + checked + " onclick='changeFilter(this.checked, \"" + name + "\");'/><label>" + name + "</label>"
        : "<input type='checkbox' " + checked + " value='" + name + "'/><label>" + name + "</label>"

    element.appendChild(filter);
}

function setProductCard(product, listElement, activeFilters) {
    if (activeFilters.length > 0 && !containsCategories(activeFilters, product.Categories)) {
        return;
    }

    var cardClass = product.ActiveDays == 0 ? "product-item-orange" : "product-item";
    var separatorClass = product.ActiveDays == 0 ? "product-line-orange" : "product-line";
    var daysClass = product.ActiveDays == 0 ? "day-text-orange" : "day-text";

    var li = document.createElement("li");
    li.setAttribute("class", cardClass);
    li.setAttribute("onclick", "gotoProduct('" + product.Url +"', " + product.Id + ");");
    li.innerHTML = "<div class='img-product'><img src='" + product.Image + "'/></div><div class='product-content'><div class='flex-cols'>" +
        "<div class='tile-text-container'><p class='description-tile'>" + product.Text + "</p></div> <div class='" + separatorClass +
        "'><vr></div><div class='days-container'> <p class='" + daysClass + "'>Pozostalo<br> <b style='font-size:14px'>" +
        product.ActiveDays + "</b><br /> dni</p></div></div></div>";

    listElement.appendChild(li);
}

function containsCategories(activeCategories, currentCategories) {
    for (var i = 0; i < activeCategories.length; i++) {
        if (currentCategories.includes(activeCategories[i])) {
            return true;
        }
    }
    return false;
}


function resetFilter() {
    localStorage[keyFilter] = null;
    showProducts();
}

function changeFilter(isEnable, name) {
    var filters = getActiveFilters();
    if (isEnable) {
        filters.push(name);
    }
    else {
        filters.remove(name);
    }
    setActiveFilters(filters);
    showProducts();
}

function delFilter(name) {
    var filters = getActiveFilters();
    filters.remove(name);
    setActiveFilters(filters);
    showProducts();
}

function getActiveFilters() {
    return localStorage[keyFilter] !== undefined && localStorage[keyFilter] !== "null"
        ? JSON.parse(localStorage[keyFilter]) : [];
}

function setActiveFilters(filters) {
    localStorage[keyFilter] = JSON.stringify(filters);
}

function gotoProduct(url, id) {
    if (typeof ga !== "undefined") {
        try {
            if (url.toLowerCase().startsWith('https://szybkagotowka.pl')) {
                ga("send", "event", "offer", "click", "szybkagotowka");
            } else {
                ga("send", "event", "external_offer", "click", id);
            }
        } catch (err) {
        }
    }
    window.open(url, '_blank').focus();
}


function isDesktop() {
    return window.outerWidth > 1000;
}

function mobiCategory() {
    var filtersNode = document.querySelector(".mobile-filter-content");
    if (getComputedStyle(filtersNode).display == "none") {
        filtersNode.style.display = "block";
    }
    else {
        filtersNode.style.display = "none";
    }
}


function checkProduct(product) {
    if (product.Id == 0) {
        window.location.assign("../../lowcy-znizek");
    }
}

function timer(dateStart, dateEnd) {
    var startTime = Date.parse(dateStart);
    var endTime = Date.parse(dateEnd);
    var countDown = setInterval(function () {
        var nowTime = Date.parse(new Date());
        var divTime = 0;

        if (nowTime > startTime) {
            divTime = endTime - nowTime;
            document.querySelector(".header-timer-text").textContent = "Do końca kampanii pozostało:";
        }
        else {
            divTime = startTime - nowTime;
            document.querySelector(".header-timer-text").textContent = "Do początku kampanii pozostało:";
        }

        var seconds = parseInt(divTime / 1000 % 60);
        var minutes = parseInt(divTime / 60000 % 60);
        var hours = parseInt(divTime / 3600000 % 24);
        var days = parseInt(divTime / 86400000);

        if (divTime < 0) {
            printTime("00 : 00 : 00 : 00", true);
            clearInterval(countDown);
        }
        else {
            var text = timeToString(days) + " : " + timeToString(hours) + " : " +
                timeToString(minutes) + " : " + timeToString(seconds);
            printTime(text, false);
        }
    }, 1000);
}

function timeToString(time) {
    return (time < 10 ? '0' + time : time.toString());
}

function printTime(time, isEnd) {
    var timeElement = document.getElementById("time");
    timeElement.innerHTML = '';

    var className = isEnd ? "time-text-end" : "time-text";
    var item = document.createElement('p');
    item.setAttribute("class", className)
    item.innerHTML = time;

    timeElement.appendChild(item);
}
