//------------------------------------------------------
// Function view for PDF page
// Required library pdfobject.min.js
//------------------------------------------------------

$(function () {
  $(".pdf-acc li").click(function () {
    $(this).toggleClass(" active ");
    // $(this).siblings().removeClass(" active ");
    $(".pdf-submenu").stop().slideUp();
    $(".active .pdf-submenu").stop().slideDown();
    return false;
  });
});

const pdfViewerSelectors = ["#pdf-view", "#pdf-view01", "#pdf-view02"];

pdfViewerSelectors.forEach(function (selector) {
  const $viewer = $(selector);

  if ($viewer.length === 0) {
    return;
  }

  const pdfLocation = $viewer.data("url");

  const options = {
    pdfOpenParams: {
      navpanes: 0,
      toolbar: 1,
      statusbar: 0,
      view: "FitV",
      pagemode: "thumbs",
      page: 1,
    },
    forcePDFJS: true,
    PDFJS_URL: "/_res/_common/js/pdf/web/viewer.html",
  };

  PDFObject.embed(pdfLocation, selector, options);
});

$(".toPage").click(function (e) {
  e.preventDefault();

  const pageNum = $(this).data("page");
  const targetSelector = $(this).data("target");
  let pdfIframe = null;

  if (targetSelector) {
    const targetViewer = document.querySelector(targetSelector);
    if (targetViewer) {
      pdfIframe = targetViewer.querySelector("iframe");
    }
  }

  if (!pdfIframe) {
    pdfIframe = document.querySelector(".pdf-view iframe");
  }

  if (
    pdfIframe &&
    pdfIframe.contentWindow &&
    pdfIframe.contentWindow.PDFViewerApplication &&
    pdfIframe.contentWindow.PDFViewerApplication.pdfViewer
  ) {
    pdfIframe.contentWindow.PDFViewerApplication.pdfViewer.currentPageNumber = parseInt(pageNum, 10);
    scrollToViewerArea(pdfIframe);
  }
});

document.addEventListener("DOMContentLoaded", function () {
  pdfViewerSelectors.forEach(function (selector) {
    const container = document.querySelector(selector);

    if (!container) {
      return;
    }

    const iframe = container.querySelector("iframe");

    if (!iframe) {
      console.error("Iframe element not found for:", selector);
      return;
    }

    iframe.addEventListener("load", function () {
      waitForPdfViewerInSidebar(iframe)
        .then(function (pdfSidebar) {
          pdfSidebar.close();
        })
        .catch(function (error) {
          console.error("Failed to load pdfSidebar.pdfViewer:", error);
        });
    });
  });
});

function waitForPdfViewerInSidebar(iframe, timeout = 5000) {
  return new Promise(function (resolve, reject) {
    const start = Date.now();

    function checkPdfViewer() {
      try {
        const pdfViewerApp = iframe.contentWindow.PDFViewerApplication;

        if (pdfViewerApp && pdfViewerApp.pdfSidebar && pdfViewerApp.pdfSidebar.isInitialViewSet) {
          resolve(pdfViewerApp.pdfSidebar);
        } else if (Date.now() - start < timeout) {
          setTimeout(checkPdfViewer, 100);
        } else {
          reject(new Error("Timeout waiting for pdfSidebar.pdfViewer to load"));
        }
      } catch (error) {
        reject(error);
      }
    }

    checkPdfViewer();
  });
}

function scrollToViewerArea(pdfIframe) {
  const viewerArea =
    (pdfIframe && pdfIframe.closest(".pdf-content")) || document.querySelector(".pdf-content");
  const header = document.querySelector(".top-header-wrap");

  if (!viewerArea) {
    return;
  }

  const headerHeight = header ? header.offsetHeight : 0;
  const viewerAreaTop = viewerArea.getBoundingClientRect().top + window.scrollY;

  window.scrollTo({
    top: viewerAreaTop - headerHeight,
    behavior: "smooth",
  });
}