jQuery(function ($) {
    /* -----------------------------------------
      Preloader
      ----------------------------------------- */
    $("#preloader").delay(1000).fadeOut();
    $("#loader").delay(1000).fadeOut("slow");

    /* -----------------------------------------
      rtl
      ----------------------------------------- */
    var isRTL = $("html").attr("dir") === "rtl";

    /* -----------------------------------------
      Marquee Ticker
      ----------------------------------------- */
    function configureMarqueeDirection() {
        const isRtl = $("body").hasClass("rtl");
        const direction = isRtl ? "right" : "left";

        $(".marquee").marquee({
            speed: 30,
            duration: 1000,
            gap: 0,
            delayBeforeStart: 0,
            direction: direction,
            duplicated: true,
            pauseOnHover: true,
            startVisible: true,
            easing: "linear",
        });
    }
    // Call the function to configure the marquee direction
    configureMarqueeDirection();

    /* -----------------------------------------
      Toggle Button
      ----------------------------------------- */
    $(".menu-toggle").click(function () {
        $(this).toggleClass("show");
    });

    /* -----------------------------------------
      Keyboard Navigation
      ----------------------------------------- */
    $(window).on("load resize", function () {
        if ($(window).width() < 992) {
            $(".main-navigation")
            .find("li")
            .last()
            .bind("keydown", function (e) {
                if (e.which === 9) {
                    e.preventDefault();
                    $("#masthead").find(".menu-toggle").focus();
                }
            });
        } else {
            $(".main-navigation").find("li").unbind("keydown");
        }
    });

    var primary_menu_toggle = $("#masthead .menu-toggle");
    primary_menu_toggle.on("keydown", function (e) {
        var tabKey = e.keyCode === 9;
        var shiftKey = e.shiftKey;

        if (primary_menu_toggle.hasClass("show")) {
            if (shiftKey && tabKey) {
                e.preventDefault();
                $(".main-navigation").toggleClass("toggled");
                primary_menu_toggle.removeClass("show");
            }
        }
    });

    $(".header-search-wrap")
    .find(".search-submit")
    .bind("keydown", function (e) {
        var tabKey = e.keyCode === 9;
        if (tabKey) {
            e.preventDefault();
            $(".search-icon").focus();
        }
    });

    $(".search-icon").on("keydown", function (e) {
        var tabKey = e.keyCode === 9;
        var shiftKey = e.shiftKey;
        if ($(".header-search-wrap").hasClass("show")) {
            if (shiftKey && tabKey) {
                e.preventDefault();
                $(".header-search-wrap").removeClass("show");
                $(".search-icon").focus();
            }
        }
    });

    /* -----------------------------------------
      Header Search Bar 
      ----------------------------------------- */
    var searchWrap = $(".header-search-wrap");
    $(".search-icon").click(function (e) {
        e.preventDefault();
        searchWrap.toggleClass("show");
        searchWrap.find("input.search-field").focus();
    });
    $(document).click(function (e) {
        if (!searchWrap.is(e.target) && !searchWrap.has(e.target).length) {
            $(".header-search-wrap").removeClass("show");
        }
    });

    /* -----------------------------------------
    Scroll To Top
    ----------------------------------------- */
    function updateProgressCircle() {
        const progressBar = $(".scroll-progress-circle-bar");
        const progressContainer = $(".scroll-progress-container");
        const totalScrollableHeight = $(document).height() - $(window).height();
        const scrolled = $(window).scrollTop();
        const progress = Math.min(
            (scrolled / totalScrollableHeight) * 283,
            283
        );

        // Update progress bar stroke offset
        progressBar.css("stroke-dashoffset", 283 - progress);

        progressContainer.toggleClass("show", scrolled > 400);
    }

    function scrollToTop() {
        $("html, body").animate({ scrollTop: 0 }, 300); // Smooth animation
    }

    $(document).ready(function () {
        $(".scroll-progress-container").on("click", scrollToTop);

        // Update progress circle on page load and on scroll/resize
        updateProgressCircle();
        $(window).on("scroll resize", updateProgressCircle);
    });
});