// require('./bootstrap');

// const { find } = require("lodash");

/**
 * HEADER
 */

// dropdown submenu in header
$(".dropdown-submenu > a").on("click", function (e) {
    var submenu = $(this);
    $(".dropdown-submenu .dropdown-menu").removeClass("show");
    submenu.next(".dropdown-menu").addClass("show");
    e.stopPropagation();
});

$(".dropdown").on("hidden.bs.dropdown", function () {
    // hide any open menus when parent closes
    $(".dropdown-menu.show").removeClass("show");
});

// search bar in header
$(document).ready(function () {
    // animate/show searchbar
    $("#jo-search-bar-open").click(function () {
        $("#jo-search-bar")
            .animate({
                width: "toggle",
            })
            .focus();
        $("#jo-search-bar").val("");
        $("form.jo-search-form-wrapper .jo-company-search-button").fadeToggle();
        $("#jo-search-form-header .autocomplete-suggestions").toggleClass(
            "d-none"
        );
    });

    let counter = 0,
        searchElements = 0;
    const timeDebounce = 300;
    const heightDiv = 44;

    let suggestionsContainer = $(".autocomplete-suggestions");

    $("#jo-search-bar, #jo-main-search-bar").on(
        "keyup focus",
        _.debounce(function (e) {
            searchKeyBind("#" + this.id, e);
        }, timeDebounce)
    );

    $("#jo-search-bar, #jo-main-search-bar").on("keydown", function (e) {
        if (e.keyCode == 13) {
            e.preventDefault();
            return false;
        }
    });

    $(".jo-company-search-button").on("click", function () {
        $(this).parent().submit();
    });

    function searchKeyBind(inputId, e) {
        $(".suggestions-item").removeClass("highlight");

        if (e.keyCode == 38) {
            $(".suggestions-item")
                .eq(counter - 1)
                .addClass("highlight");
            searchSuggestionKeys(counter);
            counter--;
        } else if (e.keyCode == 40) {
            if (counter >= searchElements) {
                counter = 0;
            }

            counter++;
            $(".suggestions-item")
                .eq(counter - 1)
                .addClass("highlight");
            searchSuggestionKeys(counter);
        } else if (e.keyCode == 13) {
            formSubmit(inputId, counter);
            $(inputId).parent().submit();
        } else {
            searchCompanyName(inputId);

            $(document).on("keyup", (e) => {
                if (e.keyCode == 9) {
                    formSubmit(inputId, counter);
                    suggestionsContainer.hide();
                }
            });
        }

        if (counter < 0) {
            counter = 0;
            $(".suggestions-item").removeClass("highlight");
        }
    }

    function formSubmit(inputId, counter) {
        if (counter) {
            $(inputId).val(
                $(".suggestions-item")
                    .eq(Number(counter) - 1)
                    .attr("data-phrase")
                    .replaceAll("_|_", '"')
            );
            $(inputId).attr(
                "data-phrase",
                $(".suggestions-item")
                    .eq(Number(counter) - 1)
                    .attr("data-phrase")
                    .replaceAll("_|_", '"')
            );
        }
        $('input[name="phrase"]').val($(inputId).val());
        suggestionsContainer.hide();
    }

    function searchSuggestionKeys(counter) {
        counter > 2
            ? $(".autocomplete-suggestions:not(.d-none)").scrollTop(
                  (counter - 2) * heightDiv
              )
            : $(".autocomplete-suggestions:not(.d-none)").scrollTop(0);
    }

    function searchCompanyName(element) {
        let input = $(element);
        let value = input.val();
        let parent = $(element).parent().attr("id");
        let suggestions = "#" + parent + " .autocomplete-suggestions";
        let widthWindow = window.innerWidth;
        let form = $(element).parent();
        form.find('input[name="phrase"]').val(
            form.find("input.autocomplete").val()
        );
        if (value.length > 1) {
            $.ajax({
                headers: {
                    "X-CSRF-Token": input
                        .parent()
                        .find('input[name="_token"]')
                        .val(),
                },
                url: "/dla-firm/ajax/searchCompany",
                data: {
                    value: value,
                },
                type: "POST",
                async: false,
                success: function (arrData) {
                    $(suggestions).html("");
                    (counter = 0), (searchElements = 0);
                    arrData = JSON.parse(arrData);
                    searchElements = Object.keys(arrData).length;
                    $(suggestions).show();
                    if (
                        parent == "jo-search-form-header" &&
                        widthWindow < 1200
                    ) {
                        $(suggestions).css({
                            width: "100%",
                            top: 120,
                        });
                    } else {
                        $(suggestions).css({
                            width: input[0].clientWidth,
                            top: input[0].clientHeight,
                        });
                    }
                    for (const value in arrData) {
                        console.log(arrData)
                        let id = arrData[value].id;
                        let name = arrData[value].name;
                        let slug = arrData[value].slug;
                        let categoryName = "";
                        if (arrData[value].category.name) {
                            categoryName = arrData[value].category.name;
                        }
                        $(suggestions).append(
                            '<div class="suggestions-item" data-slug="'+slug+'" data-phrase="' +
                                name.replaceAll('"', "_|_") +
                                '" data-id="' +
                                id +
                                '" data-category="' +
                                categoryName +
                                '">' +
                                name +
                                " <small>w " +
                                categoryName +
                                "</small></div>"
                        );
                    }

                    $(document).on(
                        "click",
                        ".suggestions-item:not(.empty)",
                        function () {
                            window.location.href = window.location.origin + "/profil-firmy/" + $(this).attr("data-slug");
                        }
                    );
                },
            });
        } else {
            suggestionsContainer.hide();
        }
    }

    $(document).mouseup(function (e) {
        if (
            !suggestionsContainer.is(e.target) &&
            suggestionsContainer.has(e.target).length === 0
        ) {
            suggestionsContainer.hide();
        }
    });

    $(document).on("click", ".jo-search-company-bar", function () {
        $.ajax({
            headers: {
                "X-CSRF-Token": $(
                    '.jo-search-form-wrapper input[name="_token"]'
                ).val(),
            },
            url: "dla-firm/ajax/getSlug",
            data: {
                companyId: $(this).find(":selected").val(),
            },
            type: "POST",
            success: function (slug) {
                window.location.href = "profil-firmy/" + slug;
            },
        });
    });
});

/**
 * END HEADER
 */

/**
 * FOOTER
 */

// Acoordion collapse on deskop, hide on mobile
function footerAccordionCollapse() {
    if ($(window).width() <= 768) {
        //for mobile
        $("footer .collapse").collapse("hide");
        $(".jo-collapse-accoridon").attr("data-toggle", "collapse");
    } else {
        $("footer .collapse").collapse("show");
        $(".jo-collapse-accoridon").removeAttr("data-toggle");
    }
}

$(document).ready(function () {
    footerAccordionCollapse();
});
$(window).on("resize", function () {
    footerAccordionCollapse();
});

/**
 * END FOOTER
 */

// init select
$("select").selectpicker({
    noneSelectedText: "-- wybierz --",
});

// init tooltip
$(function () {
    $('[data-toggle="tooltip"]').tooltip();
});

// Input Masks
function initInputmask() {
    $(".nip-inputmask").inputmask("9999999999"),
        $(".regon-inputmask").inputmask("999999999"),
        $(".date-inputmask").inputmask("dd/mm/yyyy"),
        $(".phone-inputmask").inputmask("999999999"),
        $(".cc-inputmask").inputmask("9999 9999 9999 9999"),
        $(".ssn-inputmask").inputmask("999-99-9999"),
        $(".isbn-inputmask").inputmask("999-99-999-9999-9"),
        $(".percentage-inputmask").inputmask("99%"),
        $(".postalcode-inputmask").inputmask("99-999"),
        $(".decimal-inputmask").inputmask({
            alias: "decimal",
            radixPoint: ".",
        }),
        $(".email-inputmask").inputmask({
            alias: "email",
            mask: "*{1,40}[.*{1,20}][.*{1,20}][.*{1,20}]@*{1,20}[*{2,6}][*{1,2}].*{1,}[.*{2,6}][.*{1,2}]",
            greedy: !1,
            onBeforePaste: function (n, a) {
                return (n = n.toLowerCase()).replace("mailto:", "");
            },
            definitions: {
                "*": {
                    validator: "[0-9A-Za-z!#$%&'*+/=?^_`{|}~/-]",
                    cardinality: 1,
                    casing: "lower",
                },
            },
        });
}

$(document).ready(function () {
    initInputmask();
});

// Input has error classes. Remove it when user is filled the error inputs
$("input").on("keyup", function () {
    if ($(this).hasClass("is-invalid") || $(this).hasClass("warning")) {
        $(this).removeClass("is-invalid").removeClass("warning");
        $(this)
            .next("small")
            .html("")
            .removeClass("is-invalid")
            .removeClass("text-warning");
    }
});

// Swiper
const swiper = new Swiper(".swiper", {
    slidesPerView: 1,
    spaceBetween: 1,

    breakpoints: {
        500: {
            slidesPerView: 2,
            spaceBetween: 10,
        },
        750: {
            slidesPerView: 3,
            spaceBetween: 20,
        },
        1024: {
            slidesPerView: 4,
            spaceBetween: 20,
        },
        1200: {
            slidesPerView: 5,
            spaceBetween: 30,
        },
    },

    autoplay: {
        delay: 3000,
    },

    direction: "horizontal",
    loop: true,
});

$(".jo-user-messages-list-item").on("click", function () {
    $(".jo-user-messages-list-item").removeClass("selected");
    $(this).addClass("selected");
});

// Cookies
$(document).ready(function () {
    if (localStorage.getItem("cookies") !== "confirmed") {
        setTimeout(() => {
            $("#jo-cookies-popup").css('display','block').animate({ opacity: 1 }, 1000);
        }, 2000);
        // confirm
        $("#jo-cookies-confirm").click(function () {
            localStorage.setItem("cookies", "confirmed");
            $("#jo-cookies-popup").css('display','none').animate({ opacity: 0 }, 200);
            setTimeout(() => {
                $("#jo-cookies-popup").remove();
            }, 500);
        });
        // close
        $(".cookies-close").click(function () {
            $("#jo-cookies-popup").css('display','none').animate({ opacity: 0 }, 200);
            setTimeout(() => {
                $("#jo-cookies-popup").remove();
            }, 500);
        });
    } else {
        $("#jo-cookies-popup").remove();
    }
});
