document.addEventListener("DOMContentLoaded", () => {
	// Handle high contrast toggle button click
	document.querySelector("#hc-toggle").addEventListener("click", function () {
		if (!document.body.classList.contains("hcm")) {
			document.body.classList.add("hcm");
			byf_set_cookie("byf_hc_mode", "1", 14);
		} else {
			document.body.classList.remove("hcm");
			byf_set_cookie("byf_hc_mode", "0", 14);
		}
		this.blur();
	});

	// Set high contrast mode if set in cookie
	function byf_set_hc_mode() {
		let byf_hc_mode = byf_get_cookie("byf_hc_mode");
		if (byf_hc_mode == 1) {
			document.body.classList.add("hcm");
		}
	}

	// Check for cookie on page load
	byf_set_hc_mode();

	// Generic get cookie
	function byf_get_cookie(cname) {
		var name = cname + "=";
		var decodedCookie = decodeURIComponent(document.cookie);
		var ca = decodedCookie.split(";");
		for (var i = 0; i < ca.length; i++) {
			var c = ca[i];
			while (c.charAt(0) == " ") {
				c = c.substring(1);
			}
			if (c.indexOf(name) == 0) {
				return c.substring(name.length, c.length);
			}
		}
		return "";
	}

	// Generic set cookie
	function byf_set_cookie(cname, cvalue, exdays) {
		var d = new Date();
		d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);
		var expires = "expires=" + d.toUTCString();
		document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
	}

	// Event listeners for updating 'aria-expanded' property for dropdowns when using keyboard navigation
	document.querySelectorAll(".nav-item").forEach((navlink) => {
		navlink.addEventListener("click", function (e) {
			if (navlink.parentNode.classList.contains("show")) {
				return;
			}
			byf_set_aria(navlink);
		});

		navlink.addEventListener("keyup", function (e) {
			if (e.keyCode != 9 || navlink.getAttribute("aria-expanded") == "true") {
				return;
			}
			byf_set_aria(navlink);
		});
	});

// I. FIXED NAVBAR
$(function() {
  var navpos = $('#header .navbar').offset();
  function fixNav() {
    if ($(window).scrollTop() > navpos.top) {
      $('#header .navbar').addClass('fixed-top');
      var $headerHeight = $('#header .navbar').outerHeight() + "px";
      $('header').css({'paddingBottom': $headerHeight});
    } else {
      $('#header .navbar').removeClass('fixed-top');
      $('header').css({'paddingBottom': 0});
    }
  }
  fixNav();
  $(window).bind('scroll', function() {
    fixNav();
    console.log("Nav Position:" + navpos.top)
    console.log("Header Height:" + $headerHeight)
    console.log("Window Scroll Top:" + $(window).scrollTop())
  });
});

// II. Inner Header

if(window.location.pathname !== "/") {
      var title = document.querySelector('#inner-content h1');
      var heading = document.querySelector('#inner-hero .hero-text')

      if(title === null) {
          heading.style.display = 'none';
      } else {
         heading.prepend(title);
      }

      var innerImg= document.querySelector('#inner-content img')
      var imageContainer = document.querySelector('.header-img');

     var innerSubheader= document.querySelector('#inner-content h2')
      var subheaderContainer = document.querySelector('.header-text');

      if(innerImg !== null && innerSubheader !== null) {
          imageContainer.prepend(innerImg);
         subheaderContainer.prepend(innerSubheader);
      } else {
        var innerHeader = document.querySelector('.inner-header');
         innerHeader.style.display = 'none';
         $('#inner-content').addClass('pt-5');
  }
}

	// Helper function to update aria-expanded property
	function byf_set_aria(navlink) {
		document.querySelectorAll("button.nav-link").forEach((link) => {
			link.setAttribute("aria-expanded", "false");
		});

		if (navlink.tagName == "BUTTON") {
			navlink.setAttribute("aria-expanded", "true");
		}
	}

	// CAROUSEL SLIDE, FOCUS NEXT SLIDE
	let slides = document.querySelectorAll(".carousel-item");
	let slide_count = slides.length;
	let slide_index = 0;

	document.querySelectorAll(".carousel-control-next").forEach((next_btn) => {
		next_btn.addEventListener("click", () => {
			slide_index = slide_index + 1 == slide_count ? 0 : slide_index + 1;
			focus_slide();
		});
	});

	document.querySelectorAll(".carousel-control-prev").forEach((prev_btn) => {
		prev_btn.addEventListener("click", () => {
			slide_index = slide_index - 1 < 0 ? slide_count - 1 : slide_index - 1;
			focus_slide();
		});
	});


	//VIII. HOMEPAGE SUBTITLE
            if(window.location.pathname === "/") {
                    var indexHeader = $('#index h1');
                    $('#index .content').prepend(indexHeader);
                     $('#index h1').addClass('subtitle');
          } 
                       

	// IX. PARALLAX BACKGROUND SCROLL
	$(function () {
		function setParallax() {
			var scroll = $(window).scrollTop();
			$(".parallax-bg").each(function () {
				var theElement = $(this);
				var elementTop = theElement.offset().top;
				var elementBottom = theElement.offset().top + theElement.outerHeight();
				var viewportBottom = scroll + $(window).innerHeight();
				if (viewportBottom > elementTop && scroll < elementBottom) {
					var yScroll = 0.15 * (scroll - elementTop) + "px"; // offset
					theElement.css({ "background-position": "50% " + yScroll });
				}
			});
		}
		$(window)
			.on("scroll", function () {
				setParallax();
			})
			.scroll();
	});


	//X. POPULATE BLOG FEED WIDGET
	fetch(`${window.origin}/blog/wp-json/wp/v2/posts?_embed&per_page=3`)
		.then((response) => response.json())
		.then((posts) => {
			posts.forEach((post, index) => {
				const blogPost = document.querySelector(`.post-${index + 1}`);
				const postImage = document.querySelector(`.post-${index + 1} img`);
				const postTitle = document.querySelector(`.post-${index + 1} h3`);
				const postExcerpt = document.querySelector(`.post-${index + 1} .excerpt`);

				//Check if Post has Image attached
				if (post._embedded["wp:featuredmedia"]) {
					postImage.setAttribute("src", post._embedded["wp:featuredmedia"][0].source_url);
				}

				postTitle.textContent = post.title.rendered;
				postExcerpt.innerHTML = post.excerpt.rendered;

				const postLink = document.querySelector(`.post-${index + 1} a`);
				const postText = document.querySelector(`.post-${index + 1} p`);

				//Truncate excerpt text to 200 characters
				postText.innerText = postText.innerText.substring(0, 200) + "..."

				//Move Read More link below excerpt and add btn classes
				blogPost.append(postLink);
				postLink.classList.add("btn", "btn-primary");
			});
		})
		.catch((response) => {
			console.log(`No Blog was found on this Domain. Error Response: ${response}`)
		})
});
