function selectTab(event) {
  // Elimina la clase "active" de todas las pestañas
  const tabs = document.querySelectorAll(".tab");
  tabs.forEach((tab) => tab.classList.remove("active"));

  // Agrega la clase "active" a la pestaña seleccionada
  const selectedTab = event.currentTarget;
  selectedTab.classList.add("active");

  // Asegurarte de que el tab sea visible
  selectedTab.scrollIntoView({
    behavior: "smooth", // Desplazamiento suave
    block: "nearest", // Alineación cercana al área visible
    inline: "center" // Centrar horizontalmente si es necesario
  });

  // Oculta todos los contenidos
  const contents = document.querySelectorAll(".tabcontent");
  contents.forEach((content) => content.classList.add("hidden"));

  // Muestra el contenido relacionado con la pestaña seleccionada
  const targetId = selectedTab.getAttribute("data-target");
  const targetContent = document.getElementById(targetId);
  targetContent.classList.remove("hidden");
}

function openSidenav() {
  const sidenav = document.getElementById("sidenav");
  if (!sidenav.classList.contains("open")) {
    sidenav.classList.add("open");
  }
}

function closeSidenav() {
  const sidenav = document.getElementById("sidenav");
  sidenav.classList.remove("open");
}

function selectTabFromSidenav(target) {
  // Cerrar el sidenav
  closeSidenav();
  //Simular un clic en el tab correspondiente
  const tab = document.querySelector(`.tab[data-target="${target}"]`);
  tab.currentTarget.className += " active";
  tab.click();
}

//////////////////////////////////////////////////////////////////
function clickImagePdf(orden) {
  let numReg = orden.slice(0, 3);
  console.info(numReg);
  //if (parseInt(numReg) > 900) 
  {
    let nImag = mainMenu.findIndex(item => item.ordenOri == orden);
    mainMenu[nImag].radi = 1;
    let path = mainMenu[nImag].path;
    console.info(path);
    nCountSelect++;
    console.info(nImag)
    //let idOrden = document.getElementById("idOrden");
    //idOrden.height = 30
  }
}
//////////////////////////////////////////////////
async function extractImagesFromPDF(file, cadena) {

  nCountSelect = 0;
  for (let i = initMainMenu; i < numNivelFinal; i++) {
    mainMenu[i].radi = 0;
  }
  lRRGEN0 = false;
  lRRGEN1 = false;
  lRRGEN2 = false;
  lRRGEN3 = false;
  lRRGEN4 = false;
  lRRGEN5 = false;
  lRRGEN6 = false;
  lRRGEN7 = false;
  lRRGEN8 = false;


  const pdfjsLib = window['pdfjs-dist/build/pdf'];
  //document.getElementById('id03').style.display = 'flex'
  //const modal = document.getElementById('modal');
  //modal.style.display = 'flex';
  // Lee el archivo PDF como ArrayBuffer
  const fileReader = new FileReader();
  ////////////////////////
  //let reader = new FileReader();
  //reader.readAsBinaryString(file);
  fileReader.readAsDataURL(file);
  fileReader.onload = function () {
    let dataUri = fileReader.result;
    loadScriptapp('../js/pdf.min.js')
      .then(() => {
        // Aquí puedes usar las funciones y clases de los scripts cargados
        console.log('Todos los scripts se han cargado correctamente.');
        onloadFinal(dataUri);
        //selectTabPdf();
      })
      .catch(error => console.error('Error al cargar los scripts:', error));
  };
  fileReader.onerror = function () {
    //console.log('there are some problems');
  };
  //fileReader.readAsArrayBuffer(file);
}

////////////////////////////////////////////////
// Ejemplo de uso
async function onloadFinal(urlFin) {

  const urlPDF = urlFin; // Reemplaza 'URL_DEL_PDF' con la URL real del archivo PDF remoto
  //console.info(urlFin)
  let arr2;
  await cargarPDFDesdeURLAUint8Array(urlPDF)
    .then(uint8Array => {
      if (uint8Array) {
        //console.log('Uint8Array del PDF:', uint8Array);
        arr2 = uint8Array;
        // Puedes realizar cualquier operación adicional con el Uint8Array aquí
      } else {
        console.log('No se pudo cargar el PDF.');
      }
    });
  try {
    const typedArray = arr2; //new Uint8Array(event.target.result);
    //console.info(typedArray);

    //pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.14.305/pdf.worker.min.js';
    pdfjsLib.GlobalWorkerOptions.workerSrc = '../js/pdf.worker.min.js';

    const loadingPdfDocument = pdfjsLib.getDocument(typedArray);
    const pdfDocumentInstance = await loadingPdfDocument.promise;

    const totalNumPages = pdfDocumentInstance.numPages;
    const pagesPromises = [];

    /*for (let currentPage = 1; currentPage <= totalNumPages; currentPage += 1) {
        pagesPromises.push(await getPageImages(currentPage, pdfDocumentInstance));
    }*/

    pagesPromises.push(await getPageImages(totalNumPages, pdfDocumentInstance));
    //const pagesData = await Promise.all(pagesPromises);

  } catch (error) {
    console.log(error);
  }
}

async function cargarPDFDesdeURLAUint8Array(urlArr) {
  try {
    const response = await fetch(urlArr);
    if (!response.ok) {
      throw new Error(`Error al cargar el archivo: ${response.statusText}`);
    }
    const arrayBuffer = await response.arrayBuffer();
    const uint8Array = new Uint8Array(arrayBuffer);
    return uint8Array;
  } catch (error) {
    console.error('Error:', error);
    return null;
  }
}
////////////////////
// Función para extraer enlaces de un PDF
async function extractImageLinks(pdfUrl) {
  const pdfjsLib = window['pdfjs-dist/build/pdf'];
  const pdf = await pdfjsLib.getDocument(pdfUrl).promise;
  const links = [];

  for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {
    const page = await pdf.getPage(pageNum);
    const annotations = await page.getAnnotations();
    annotations.forEach(annotation => {
      if (annotation.subtype === 'Link' && annotation.url) {
        links.push(annotation.url);
      }
    });
  }
  return links;
}

/////////////////
async function getPageImages(pageNum, pdfDocumentInstance) {
  try {
    const enlaces = new Set(); //OJO AQUI

    /*const metadata = await pdfDocumentInstance.getMetadata();
    if (metadata) {
      console.info(metadata)
      const keywords = metadata.info.Keywords; // || 'No keywords found';
      console.info(keywords);

      let arrKeywords = [];
      arrKeywords = keywords.split(",")
      console.info(arrKeywords)
    }*/

    const pdfPage = await pdfDocumentInstance.getPage(pageNum);
    console.info(pdfPage)
    await pdfPage.getAnnotations().then(function (annotationData) {
      for (let j = annotationData.length - 1; j < annotationData.length; j++) {
        console.log(annotationData[j].url);
        let strData = annotationData[j].url;
        /////////////////////////// OJO AQUI
        let servidorURL = localStorage.getItem("servidorURL");
  
        if (strData && strData.startsWith(servidorURL + '/')) {
          enlaces.add(strData);
          console.info(strData)
        }
        /////////////////////
        let nameEjercicios = strData; //localStorage.getItem("nameEjercicios");
        let urlEj = nameEjercicios;
        let arraymp4Ini = []
        //arraymp4 = []
        arraymp4Ini = urlEj.split(",");
        let nombreFile = arraymp4Ini[0]

        let totalAnot = "";
        for (let i = 0; i < arraymp4Ini.length; i++) {
          let tmp = arraymp4Ini[i];
          //let numfile = tmp.slice(0, 3);
          //if (parseInt(numfile) != 899) 
          totalAnot = totalAnot + arraymp4Ini[i] + ",";
        }
        totalAnot = totalAnot.slice(0, totalAnot.length - 1)
        console.info(totalAnot)
        strData = totalAnot;

        let nlength = arraymp4Ini.length;
        ///////////////////////
        if (nlength > 1) {
          let nameEjercicios = strData;
          console.info(strData)
          localStorage.setItem('nameEjercicios', strData);
          gotoImagenes(strData);
          let imagenes = localStorage.getItem('pdfEjercicios');
          let imageLinks = [];
          imageLinks = imagenes.split(",");
          viewImages(imageLinks)
        }
      }
    })
    ///////////////////////////// OJO AQUI
    /*if (enlaces.size === 0) {
      output.innerHTML = '<p>❌ No se encontraron enlaces en este PDF.</p>';
    } else {
      output.innerHTML = `<p>✅ Se encontraron ${enlaces.size} enlaces:</p>`;
      enlaces.forEach(url => {
        const link = document.createElement('a');
        link.href = url;
        link.textContent = url;
        link.target = '_blank';
        output.appendChild(link);
      });
    }*/
    ////////////////////////////
  } catch (error) {
    console.log(error);
  }
}

///////////////////////////////////////////////////

function viewImages(imageLinks) {
  let origen = "PDF"; //localStorage.getItem("origen");
  let imageGrid = null;
  if (origen === "PDF") imageGrid = document.getElementById('image-gridpdf');

  for (let i = 1; i < imageLinks.length; i++) {
    let findTmp = imageLinks[i]
    let numReg = findTmp.slice(0, 3);
    console.info(numReg);
    let lNumIni = 900;
    let lNumFin = 1000;
    if (lEspecificos) {
      lNumIni = 100;
      lNumFin = 900;
    }
    if (parseInt(numReg) > lNumIni && parseInt(numReg) < lNumFin) {
      const gridItem = document.createElement('div');
      gridItem.className = 'grid-item';

      const anchor = document.createElement('a');
      anchor.href = servidorURL + "/assets/cstimage/" + imageLinks[i];

      const imgElement = document.createElement('img');
      imgElement.id = imageLinks[i]; //'img' + i.toString();
      const miCheckbox = document.getElementById("miCheckbox");

      imgElement.className = "img-square-border"; // Inicialmente cuadrada

      imgElement.src = servidorURL + "/assets/cstimage/" + imageLinks[i];

      // Añadir evento click para alternar el estilo de borde
      imgElement.addEventListener('click', function (event) {
        event.preventDefault(); // Prevenir la redirección del enlace al hacer clic en la imagen
        // Alterna entre las clases de borde cuadrado y redondeado
        if (imgElement.classList.contains("img-square-border")) {
          imgElement.classList.remove("img-square-border");
          imgElement.classList.add("img-rounded-border-si");
        } else {
          imgElement.classList.remove("img-rounded-border-si");
          imgElement.classList.add("img-square-border");
        }
      });

      anchor.appendChild(imgElement);
      gridItem.appendChild(anchor);
      imageGrid.appendChild(gridItem);
      //console.info('img' + i.toString())        

      let strData = imageLinks[i];
      let videoNom = strData.slice(0, 7);
      console.log(videoNom);
      clickImagePdf(videoNom);
    }
    else {
      //alert("Este pdf no es correcto")
      return;
    }

  }
}

async function gotoImagenes(imagenes) {
  console.info(imagenes)
  //let num = imagenes.split("?");

  //let nameEjercicios = imagenes.slice(37, imagenes.length);
  let nameEjercicios = imagenes; //imagenes.slice(0, imagenes.length);

  //console.info(nameEjercicios)
  let mainMenus = JSON.parse(localStorage.getItem("ClaveCreator"));
  console.info(mainMenus)
  let arrayTmp = []
  arrayTmp = nameEjercicios.split(",");

  let arrname = arrayTmp[0];

  usernamepdf = arrname.slice(37, 42); //OJO AQUI SI ES LET USERNAMEPROF 37 a 42 busca "fisio" FUNCIONA
  console.info(usernamepdf)

  let nameTmp = "";
  console.info(arrayTmp)
  if (arrayTmp.length > 1) {
    //nombrePdf = arrayTmp[0];
    for (let i = 1; i < arrayTmp.length; i++) {
      let nImag = mainMenus.findIndex(item => item.ordenOri == arrayTmp[i]);
      if (nImag === -1) continue;
      arrayTmp[i] = mainMenus[nImag].titulo;
      nameTmp = nameTmp + "," + arrayTmp[i]
    }
    //console.info(arrayTmp)
    nameEjercicios = nameTmp; //nameTmp.slice(0, nameTmp.length - 1)
    //console.info(nameEjercicios)
    //imagenes = imagenes.slice(0, 36) + nameEjercicios
  }
  localStorage.setItem('pdfEjercicios', nameEjercicios);
  //localStorage.setItem('nameEjercicios', nameEjercicios);
}

//////////////////////////////////

