


document.addEventListener('DOMContentLoaded', function () {
    // Get references to the DOM elements
    const header = document.getElementById('lcp-header-container');
    const sideContent = document.getElementById('lcp-sidecontent');
    
    // Ensure elements exist before proceeding
    if (!header || !sideContent) return;
    
    // Check if the header has the 'lcp-sticky' and 'lcp-sticky-on-scroll' class
    const headerIsSticky = header.classList.contains('lcp-sticky');
    const headerIsStickyOnScroll = header.classList.contains('lcp-sticky-on-scroll');
    
    // Measure the height of the header once the DOM is loaded
    const headerHeight = header.offsetHeight;
    let fullHeaderHeight;
    
    // If the admin-bar is present, the fullHeaderHeight is the headerHeight + 32px
    if (document.body.classList.contains('admin-bar')) {
        const adminBarHeight = document.getElementById('wpadminbar').offsetHeight;
        fullHeaderHeight = headerHeight + adminBarHeight;
    } else {
        fullHeaderHeight = headerHeight;
    }

    // Set the initial height of #lcp-sidecontent based on whether the header is sticky or not
    if (headerIsSticky) {
        sideContent.style.height = `calc(100vh - ${fullHeaderHeight}px)`;
    } else {
        sideContent.style.height = `100vh`;
    }

    // Function to handle the scroll event
    function handleScroll() {
        console.log ("hey");
        const scrolled = window.scrollY || document.documentElement.scrollTop;

        // Check if the page has scrolled past the height of the header
        if (scrolled >= headerHeight) {
            // Add the 'lcp-fixed' class and set 'top' to 0 for side content
            sideContent.classList.add('lcp-fixed');
            sideContent.style.top = '0';

            // If the header has 'lcp-sticky-on-scroll', adjust height of side content to be 100vh - fullHeaderHeight
            if (headerIsStickyOnScroll) {
                sideContent.style.height = `calc(100vh - ${fullHeaderHeight}px)`;
                // Add 'lcp-fixed' to the header
                header.classList.add('lcp-fixed');
                // Set the 'top' of the sideContent to the height of the header
                sideContent.style.top = `${fullHeaderHeight}px`;
            } else if (headerIsSticky) {
                // If the header is sticky but not 'sticky-on-scroll', keep the side content height adjusted
                sideContent.style.height = `calc(100vh - ${fullHeaderHeight}px)`;
            } else {
                // Set side content height to 100vh when not sticky
                
                sideContent.style.height = 'calc(100vh - 32px)';
                sideContent.style.top = '32px';
                
            }
        } else {
            // Remove the 'lcp-fixed' class from side content and header if scrolled back above the header
            sideContent.classList.remove('lcp-fixed');
            sideContent.style.top = ''; // Reset the 'top' style

            // Reset height to 100vh when not fixed
            sideContent.style.height = `calc(100vh - ${fullHeaderHeight}px)` ;

            // If header has the 'lcp-sticky-on-scroll' class, remove 'lcp-fixed' from the header
            if (headerIsStickyOnScroll) {
                header.classList.remove('lcp-fixed');
            }
        }
    }



    // Also trigger the scroll handler once on load in case the page is already scrolled
    handleScroll();

    function debounce(func, delay) {
        let timeout;
        return function() {
            const context = this;
            const args = arguments;
            clearTimeout(timeout);
            timeout = setTimeout(function() {
                func.apply(context, args);
            }, delay);
        };
    }
    
// Add debounced scroll event listener
window.addEventListener('scroll', debounce(handleScroll, 20)); // 200ms debounce

});









const sidecontent = document.getElementById("lcp-sidecontent");
const innerContent = document.getElementById("lcp-sidecontent-inner");
const scrollTrack = document.getElementById("lcp-scroll-track");
const scrollBar = document.getElementById("lcp-scroll-bar");

let isDragging = false;
let startY = 0;
let startScrollTop = 0;

// Update the custom scrollbar position based on the content's scroll position
function updateCustomScrollbar() {
    const contentHeight = innerContent.scrollHeight;
    const visibleHeight = innerContent.clientHeight;
    const scrollTrackHeight = scrollTrack.clientHeight;
    
    // Calculate the proportion of visible content to total content
    const thumbHeight = (visibleHeight / contentHeight) * scrollTrackHeight;
    scrollBar.style.height = `${thumbHeight}px`;
    
    // Calculate the scroll ratio (position of the content relative to its height)
    const scrollRatio = innerContent.scrollTop / (contentHeight - visibleHeight);
    
    // Position the scrollbar thumb based on the scroll ratio
    scrollBar.style.top = `${scrollRatio * (scrollTrackHeight - thumbHeight)}px`;
}

// Handle the mouse down event to begin dragging the scrollbar
scrollBar.addEventListener("mousedown", (e) => {
    isDragging = true;
    startY = e.clientY;
    startScrollTop = innerContent.scrollTop;
    document.body.style.userSelect = "none"; // Disable text selection while dragging
});

// Handle mouse movement to drag the scrollbar and simulate scrolling
document.addEventListener("mousemove", (e) => {
    if (!isDragging) return;
    
    const deltaY = e.clientY - startY;
    const contentHeight = innerContent.scrollHeight;
    const visibleHeight = innerContent.clientHeight;
    const scrollTrackHeight = scrollTrack.clientHeight;
    
    const thumbHeight = scrollBar.clientHeight;
    const scrollableDistance = contentHeight - visibleHeight;
    const thumbDistance = scrollTrackHeight - thumbHeight;
    
    // Calculate new scroll position for content based on dragging
    const newScrollTop = (deltaY / thumbDistance) * scrollableDistance + startScrollTop;
    innerContent.scrollTop = newScrollTop;
    updateCustomScrollbar();
});

// Handle mouse up event to stop dragging
document.addEventListener("mouseup", () => {
    isDragging = false;
    document.body.style.userSelect = ""; // Enable text selection again
});

// Handle scroll events on the content to update the custom scrollbar
innerContent.addEventListener("scroll", updateCustomScrollbar);

// Initialize the custom scrollbar position when the page loads
updateCustomScrollbar();














