/**
 * Lazy Loading Images Script
 * Optimizes image loading for better performance
 */
(function () {
  "use strict";

  // Check for Intersection Observer support
  if (!("IntersectionObserver" in window)) {
    // Fallback: load all images immediately
    document.querySelectorAll('img[loading="lazy"]').forEach((img) => {
      if (img.dataset.src) {
        img.src = img.dataset.src;
      }
    });
    return;
  }

  // Configure intersection observer
  const imageObserver = new IntersectionObserver(
    (entries, observer) => {
      entries.forEach((entry) => {
        if (entry.isIntersecting) {
          const img = entry.target;

          // Load the image
          if (img.dataset.src) {
            img.src = img.dataset.src;
            img.removeAttribute("data-src");
          }

          // Optional: load srcset
          if (img.dataset.srcset) {
            img.srcset = img.dataset.srcset;
            img.removeAttribute("data-srcset");
          }

          // Add loaded class for fade-in effect
          img.classList.add("loaded");

          // Stop observing this image
          observer.unobserve(img);
        }
      });
    },
    {
      // Start loading when image is 50px from viewport
      rootMargin: "50px 0px",
      threshold: 0.01,
    }
  );

  // Observe all lazy images
  const lazyImages = document.querySelectorAll('img[loading="lazy"]');
  lazyImages.forEach((img) => imageObserver.observe(img));

  // Add CSS for fade-in effect if not already present
  if (!document.getElementById("lazy-load-styles")) {
    const style = document.createElement("style");
    style.id = "lazy-load-styles";
    style.textContent = `
      img[loading="lazy"] {
        opacity: 0;
        transition: opacity 0.3s ease-in-out;
      }
      img[loading="lazy"].loaded {
        opacity: 1;
      }
    `;
    document.head.appendChild(style);
  }
})();
