jQuery(document).ready(function ($) {

	/* ADA start */

	$('.item-sitebar .text a img').parent().addClass('text-decoration-none'); 
	
		setTimeout(()=> {
		let i = 0;
		$(".owl-dot").each(function() {
			$(this).attr('aria-label', i);
			i++;
		});
	}, 0);
	jQuery('.page-numbers').each(function() {
		let el = jQuery(this);
		if (+ el.text() < 10 && el.text() != '' ) {
			el.text('0' + el.text());
		}
	});

	$("figure").attr('role', 'none');
	$(".owl-dot span").attr('role', 'presentation');
	//let j = 0;
	$('.menu').each(function() {
		$(this).attr('role', 'navigation');
		//$(this).find('li a').attr('tabindex', 0);
	
		//j++;
	});
	
	setTimeout(() => {
		$('input[type=email]').attr('aria-required', 'true');
		$('#nf-label-field-5').attr('aria-label', $('#nf-label-field-5').text() );
		$('#nf-field-5').attr('aria-describedby', 'nf-label-field-5');
		$('.swiper-pagination-progressbar-fill, .nf-form-title').attr('role', 'presentation');
		$('svg').attr('role', 'presentation');
		$('.nf-form-title h3').remove();
	}, 1000);
	
	/* Search */
	var searchToggleBtn = $('.header-search-btn .ncf-search-btn'),
	searchBlock = $('.ncf-search-block'),
	searchField = $('.ncf-header .ncf-search-form .ncf-search-input'),
	searchCloseBtn = $('.ncf-search-block-close'),
	searchSubmitBtn = $('.ncf-search-submit-btn');

let lastViewportWidth = window.innerWidth;
let lastViewportHeight = window.innerHeight;

// Function to check if we're in mobile view
function isMobileView() {
	return window.innerWidth <= 980;
}

// Initial setup - handle focusability based on viewport
function initializeSearchAccessibility() {
	if (isMobileView()) {
		searchField.attr('tabindex', '0');
		searchCloseBtn.attr('tabindex', '0');
		searchSubmitBtn.attr('tabindex', '0');
	} else {
		searchField.attr('tabindex', '-1');
		searchCloseBtn.attr('tabindex', '-1');
		searchSubmitBtn.attr('tabindex', '-1');
	}
}

function toggleSearch() {
	if (searchBlock.hasClass('search-visible')) {
		closeSearch();
	} else {
		openSearch();
	}
}

function openSearch() {
	searchToggleBtn.addClass('search-active');
	searchBlock.addClass('search-visible');
	
	// Always make elements focusable when search is open
	searchField.attr('tabindex', '0');
	searchCloseBtn.attr('tabindex', '0');
	searchSubmitBtn.attr('tabindex', '0');
	
	$(searchField).focus();
	
	$(document).on('keyup', searchEsc);
	$(document).on('click', searchClickOutside);
}

function closeSearch() {
	searchToggleBtn.removeClass('search-active');
	searchBlock.removeClass('search-visible');
	
	if (!isMobileView()) {
		searchField.attr('tabindex', '-1');
		searchCloseBtn.attr('tabindex', '-1');
		searchSubmitBtn.attr('tabindex', '-1');
	} else {
		searchField.attr('tabindex', '0');
		searchCloseBtn.attr('tabindex', '0');
		searchSubmitBtn.attr('tabindex', '0');
	}
	
	searchToggleBtn.focus();
	
	$(document).off('keyup', searchEsc);
	$(document).off('click', searchClickOutside);
}

function searchEsc(e) {
	if (e.keyCode == 27) {
		closeSearch();
	}
}

function searchClickOutside(e) {
	if (!e.target.closest('.ncf-header')) {
		closeSearch();
	}
}

// Initialize on page load
initializeSearchAccessibility();

// Create a ResizeObserver to monitor viewport changes
const resizeObserver = new ResizeObserver(entries => {
	// Check if the viewport size has actually changed
	const currentViewportWidth = window.innerWidth;
	const currentViewportHeight = window.innerHeight;
	
	if (currentViewportWidth !== lastViewportWidth || 
		currentViewportHeight !== lastViewportHeight) {
		
		lastViewportWidth = currentViewportWidth;
		lastViewportHeight = currentViewportHeight;
		
		// Reinitialize with a slight delay to ensure DOM updates are complete
		setTimeout(initializeSearchAccessibility, 100);
	}
});

// Observe the document body for size changes
resizeObserver.observe(document.body);

// Also handle traditional resize events as a fallback
$(window).on('resize orientationchange', function() {
	initializeSearchAccessibility();
});

// Event listeners
$(searchToggleBtn).on('click', toggleSearch);
$(searchCloseBtn).on('click', closeSearch);

// Add a check for when CSS media queries change
window.matchMedia('(max-width: 980px)').addListener(function(e) {
	initializeSearchAccessibility();
});
	
	/* Main Menu */
	let menuWrap = $('.ncf-mobile-nav'),
		menuBtn = $('.ncf-menu-btn-mobile');

	function openMenu(menuWrap, menuContainer) {
		menuWrap.toggleClass('open');
		menuContainer.toggleClass('open');
	}
	function closeMenu(menuWrap, menuContainer) {
		if (menuWrap.hasClass('open')) {
			menuWrap.removeClass('open');
		}
		if (menuContainer.hasClass('open')) {
			menuContainer.removeClass('open');
		}
	}

	menuBtn.on('click', function () {
		$(this).toggleClass('active');
		openMenu($('.ncf-mobile-nav-wrap'), $('.ncf-mobile-nav'));
		if (menuBtn.attr('aria-expanded') === 'true') {
			menuBtn.attr('aria-expanded', 'false');
		} else {
			menuBtn.attr('aria-expanded', 'true');
		}
	});
	
	$(document).on('click', function (e) {
		if (!e.target.closest('.ncf-mobile-nav') && e.target !== menuBtn[0]) {
			closeMenu($('.ncf-mobile-nav-wrap'), $('.ncf-mobile-nav'));
			if (menuBtn.hasClass('active')) {
				menuBtn.removeClass('active').attr('aria-expanded', 'false');
			}
		}
	});

	// Close menu on Escape key press
$(document).on('keydown', function (e) {
    if (e.key === 'Escape') {
        closeMenu($('.ncf-mobile-nav-wrap'), $('.ncf-mobile-nav'));
        if (menuBtn.hasClass('active')) {
            menuBtn.removeClass('active').attr('aria-expanded', 'false');
        }
    }
});

	/* Masonry for Benefits Grid */
	if ($('.ncf-benefits-grid').length) {
		$('.ncf-benefits-grid').masonry({
			itemSelector: '.ncf-benefits-item',
			columnWidth: '.ncf-benefits-item',
			percentPosition: true,
			gutter: '.gutter-sizer',
			horizontalOrder: true,
		});
	}
	/* Masonry for Stats Block */
	if ($('.ncf-stats-block').length) {
		let ncfStatsBlocks = $('.ncf-stats-block');
		ncfStatsBlocks.each(function (i, el) {
			let ncfStatsBlock = $(el).find('.ncf-masonry-grid');
			$(ncfStatsBlock).masonry({
				itemSelector: '.ncf-stats-item-block',
				columnWidth: '.ncf-stats-item-block',
				percentPosition: true,
				gutter: '.gutter-sizer',
				horizontalOrder: true,
			});
		});

	}

	/* Slider */
	if ($('.ncf-slider-block .ncf-slider .swiper').length) {
		let ncfSliderBlock = $('.ncf-slider-block');
		let ncfSliders = [];
		ncfSliderBlock.each(function (i, el) {
			let thisSliderBlock = $(el),
				ncfSliderContainer = $(thisSliderBlock).find('.ncf-slider'),
				ncfSliderBlockHeader = $(thisSliderBlock).find('.ncf-slider-header'),
				ncfSliderNext = $(thisSliderBlock).find('.ncf-slider-controls .ncf-slider-controls-item--next'),
				ncfSliderPrev = $(thisSliderBlock).find('.ncf-slider-controls .ncf-slider-controls-item--prev'),
				ncfSliderEl = $(thisSliderBlock).find('.swiper'),
				ncfSliderPagination = false,
				ncfSliderNavigation = false;
			if ($(ncfSliderContainer).hasClass('ncf-slider--controls-both') || $(ncfSliderContainer).hasClass('ncf-slider--controls-nav')) {
				ncfSliderNavigation = true;
			}
			if ($(ncfSliderContainer).hasClass('ncf-slider--controls-both')) {
				ncfSliderPagination = true;
			} else if ($(ncfSliderContainer).hasClass('ncf-slider--controls-pagination')) {
				ncfSliderPagination = true;
			}
			let ncfSliderNavigationSettings = {
				enabled: ncfSliderNavigation,
				...(ncfSliderNext.length && { nextEl: $(ncfSliderNext)[0] }),
				...(ncfSliderPrev.length && { prevEl: $(ncfSliderPrev)[0] }),
			};
			console.log(ncfSliderNavigationSettings);
			new Swiper($(ncfSliderEl)[0], {
				autoHeight: false,
				slidesPerView: 'auto',
				spaceBetween: 20,
				navigation: ncfSliderNavigationSettings,
				breakpoints: {
					981: {
						spaceBetween: 40
					}
				}
			});

		});
	}

	/* Slider Modals */
	if ($('.ncf-featherlight-iframe').length) {
		let ncfSlideModals = $('.ncf-featherlight-iframe');
		ncfSlideModals.each(function (i, el) {
			let ncfSlideModal = $(el);
			ncfSlideModal.on('click', function (e) {
				e.preventDefault();
				$.featherlight($("<div><div class='responsive-embed'><iframe src='" + $(this).attr('href') + "' width='640' height='360' frameborder='0' allow='autoplay; fullscreen; picture-in-picture' allowfullscreen></iframe></div></div>"), {
					variant: 'ncf-video-modal',
				});
			});
		});
	}

	/* Accordion */
	if ($('.ncf-accordion-item').length) {
		let ncfAccordions = $('.ncf-accordion-item');
		ncfAccordions.each(function (i, el) {
			let ncfAccordion = $(el),
				ncfAccordionToggle = $(el).find('.ncf-accordion-toggle'),
				ncfAccordionContent = $(el).find('.ncf-accordion-content'),
				ncfAccordionActiveClass = 'ncf-accordion-item--open';
			if ($(ncfAccordion).hasClass(ncfAccordionActiveClass)) {
				$(ncfAccordionContent).show();
			}
			ncfAccordionToggle.on('click', function () {
				let ncfAccordionContentIsOpen = $(ncfAccordion).hasClass(ncfAccordionActiveClass);
				if (ncfAccordionContentIsOpen) {
					$(ncfAccordion).removeClass(ncfAccordionActiveClass);
					$(ncfAccordionContent).slideUp('500');
				} else {
					$(ncfAccordion).addClass(ncfAccordionActiveClass);
					$(ncfAccordionContent).slideDown('500');
				}
			});
		});
	}

	// Wrap tables for responsive tables
	$('.ncf-wysiwyg-content table').wrap(
		'<div class="ncf-table-wrapper"></div>'
	);

	/* Quote */
if ($('.ncf-person-quote-btn').length) {
    let ncfQuoteBtns = $('.ncf-person-quote-btn');
    ncfQuoteBtns.each(function (i, el) {
        let ncfQuoteBtn = $(el),
            ncfQuoteBtnTarget = $(el).attr('data-target');
        
        // Handle click events
        ncfQuoteBtn.on('click', function (e) {
            $(`${ncfQuoteBtnTarget}`).toggleClass('active');
        });

        // Handle key events for accessibility
        ncfQuoteBtn.on('keydown', function (e) {
            if (e.key === 'Enter' || e.key === ' ') {
                e.preventDefault();
                $(`${ncfQuoteBtnTarget}`).toggleClass('active');
            }
        });
    });

    // Show overlay when focusing on the close button or the "Read More" link
    $('.ncf-person-quote-close, .ncf-person-quote-link-wrap a').on('focus', function () {
        $(this).closest('.ncf-person-quote').addClass('active');
    });

    // Close quote button
    $('.ncf-person-quote-close').on('click', function (e) {
        $(this).parent('.ncf-person-quote').removeClass('active');
    });
}


	/* Go to top Button */
	$(window).scroll(function () {
		if ($(this).scrollTop() > 500) {
			$('#go_to_top_btn').fadeIn();
		} else {
			$('#go_to_top_btn').fadeOut();
		}
	});
	$('#go_to_top_btn').click(function () {
		$('html, body').animate({ scrollTop: 0 }, 800);
		return false;
	});


	/* Function for fixing the header when scrolling */
	function fixHeader() {
		var header = $("header#header");
		var headerHeight = header.outerHeight();
		var wpadminbar = $("#wpadminbar");
		var isLoggedIn = $("body").hasClass("logged-in");
		var lastpos = 0;
	
		function updateAdminBarHeight() {
			return wpadminbar.is(":visible") ? wpadminbar.outerHeight() : 0;
		}
	
		function handleScroll() {
			var pos = document.documentElement.scrollTop || document.body.scrollTop;
			var windowHeight = document.documentElement.clientHeight || window.innerHeight;
			var sHeight = document.documentElement.scrollHeight;
			var windowWidth = $(window).width();
	
			if (windowWidth <= 640 && windowHeight <= 300) {
				if (pos > headerHeight && (pos >= sHeight - windowHeight - 100 || lastpos <= pos)) {
					header.css("top", (-headerHeight) + 'px');
				} else {
					header.css("top", "0");
				}
			} else {
				var adminBarHeight = updateAdminBarHeight();
				header.css("top", isLoggedIn && adminBarHeight ? adminBarHeight + "px" : "0");
				header.toggleClass("fixed-header", $(window).scrollTop() >= 250);
				$("body").css("padding-top", $(window).scrollTop() >= 250 ? headerHeight + "px" : "0");
			}
	
			lastpos = pos;
		}
	
		$(window).on('scroll resize', handleScroll);
	}
	
	fixHeader();
	


	$('a[href^="#"]:not(.uagb-tabs-list)').on('click', function (event) {
		event.preventDefault();
		let target = $(this.getAttribute('href'));
		if (target.length) {
			$('html, body').animate({
				scrollTop: target.offset().top - 100
			}, 1000);
		}
	});
});