function listados(mod,titulo){
	
	//cRuta=localStorage.getItem("ruta")+"&modulo="+sessionStorage.getItem("modulo")+"&titulo="+titulo
	//console.log(cRuta)
	//window.open(cRuta,'_blank');
	ocultarPorClase('noreport');
	document.getElementById("form-container").style.display='none'
	//document.getElementById("form-container").style.maxHeight='200px'
	document.getElementById("bodydetalle").style.display='block'
	
	
	

	console.log(mod)
	lmodulo(mod,"l")
}
function ocultarPorClase(nombreClase) {
    document.querySelectorAll('.' + nombreClase).forEach(elemento => {
        elemento.style.display = 'none';
    });
}

function lmodulo(mod,accion) {
	swcond=0
	var jSondet=document.getElementsByClassName('general');
	nTam=jSondet.length;
	camposdet=""
	condicion=""
	for(var i=0;i<nTam;i++){
		if(jSondet[i].name==campo){
			nValor=document.getElementById(jSondet[i].id).value
			condicion+=" and "+mod+"."+campo+"='"+nValor+"' "
		}
	}
	url="modulo="+mod;
	url+="&codemp="+localStorage.getItem("Codempresa")
	if (mod === null || mod === undefined || mod.trim() === ''){
		return;
	}

	/*let formulario = document.getElementById('formulario');
    let parametros = [];
    // Recorrer todos los elementos del formulario
	formulario.querySelectorAll("input, select, textarea").forEach(campo => {
        // Excluir los botones
        if (campo.type !== "button" && campo.type !== "submit" && campo.type !== "reset" && campo.value.trim() !== "") {
            let nombre = campo.name;
            let valor = campo.value;
            parametros.push(`${nombre}='${valor}'`);
        }
    });

    // Unir los parámetros con AND para formar la condición SQL
    let condicionSQL = parametros.length > 0 ? " and (" + parametros.join(" AND ") : "";
	condicionSQL +=" ) "
    console.log(condicionSQL);
	condicion=condicionSQL;
	*/
	tList=vGmodulo;
	tAcc=accion;
	vtipo="l";
	//tId=campo;
	url+="&accion="+accion;
	//url+="&nit="+localStorage.getItem("NitEmpresa");
	//url+="&identidad="+localStorage.getItem("identidad");
	url+="&tipo="+vtipo;
	url+="&condicion="+condicion;
	url+="&usuario="+localStorage.getItem("Usuario");
	url+="&rol="+VGrol;
    Parametro=url;
	vC=" ";
	vGmodulo=mod
	console.log(url)
	//return 
	Rpage="pdo/pdoconsulta.php"
	send_data(Parametro,Rpage,"resp_registros_listl")
}

function resp_registros_listl(ResTex) {
	console.log(ResTex);
	var oJsonDatos;

	// Validamos que el contenido sea un JSON válido y un array
	try {
		oJsonDatos = JSON.parse(ResTex);

		if (!Array.isArray(oJsonDatos)) {
			console.error("El contenido parseado no es un array:", oJsonDatos);
			return;
		}
	} catch (e) {
		console.error("Error al parsear JSON:", e);
		return;
	}

	// Verificamos si algún elemento tiene el campo 'tiptrs'
	const contieneTiptrs = oJsonDatos.some(item => item.hasOwnProperty('tiptrs') && item.tiptrs !== null);

	if (contieneTiptrs) {
		console.log("Se encontró al menos un registro con tiptrs");
		resp_registros_listl_trs(ResTex); // pasamos el JSON ya parseado
		return;
	} else {
		console.log("No contiene tiptrs");
		// Aquí puedes continuar con el resto de la lógica para tablas normales
		// por ejemplo: resp_registros_listl_normal(oJsonDatos);
	}
    //return;
	vC="";
	
	DetalleUl="";
	Detalle="";
	if(oJsonDatos!="ERROR"){
	    if(ResTex.length>1){
				//Detalle="<div class='prueba'><div class='table-title' ><a href='#'>"+"Listado de "+tList+"</a><div class='ctn_icon_search' ><a href='javascript:view_search_list();' ><i class='icon-magnifying-glass' id='icon_search_list' ></i></a></div></div><div id='ctn_barra_search' disabled><input type='text' id='tsearch_list'  onKeyUp='search_list()' placeholder='¿Qué deseas buscar?'></div><ul id='box_search'></ul><a href='javascript:hide_search_list();'><div id='cover_ctn_search' ></div> </a><div class='conte_table' >"
			//document.getElementById("ibuscar").innerHTML='<input class="form-control col-md-3 light-table-filter" data-table="order-table" type="text" placeholder="Search..">'
			document.getElementById("ibuscar").innerHTML ='<input id="searchInput" class="form-control col-md-3" type="text" placeholder="Buscar...">';											

			Detalle="<div class='prueba'><div class='table-title' ></div><div class='conte_table' >"
			console.log(tAcc);
			if(tAcc=="v"){
				Detalle+="<table id='customers' class='table_invertida'>";
			}else{
				Detalle+="<table id='customers' class='table table-bordered order-table '>";
				          
			}
			vGtam="80%"
			
			JsonActividad=ResTex;

			Detalle+="<thead><tr>";
			var oJsonDatos = JSON.parse(JsonActividad);
			const headers = Object.keys(oJsonDatos[0]);//cad=oJsonDatos[0];console.log(Object.keys(cad));console.log(Object.keys(cad));
			console.log(headers);
			Detalle += "<th>Opciones</th>";
			headers.forEach((valor) => {
    			Detalle += `<th>${valor}</th>`;
			});
			Detalle += "</tr></thead>";
			/*Detalle+="<th>Opciones</th>";
			Object.keys(cad).forEach((valor)=>{
				Detalle+="<th>"+valor+"</th>"
				})
			Detalle+="</tr>";*/
			const promises = oJsonDatos.map(async (row) => { //A1
				let fila = `<tr id='fila-${row.Id}'>`; //A2
				//var NJsonItem=oJsonDatos.length;
				//var cNrov="";
				//for (RowArray=0;RowArray<NJsonItem; RowArray++){  //recorre diferente que A1
				//cad=oJsonDatos[RowArray];	
				
				tCampo=0;
				//cCod=oJsonDatos[RowArray].Id;
				// Agregar las opciones
				fila += `
					<td class="btnacciones">
					<button class="accion" onclick="editar('${vGmodulo}', '${row.Id}')">✏️</button>
					<button class="accion" onclick="eliminar('${vGmodulo}', '${row.Id}')">🗑️</button>
					${sessionStorage.tipo === 'TRS' ? `<button class="accion" onclick="imprimir('${row.Id}')">🖨️</button>` : ''}
					</td>
				`;//A3
				//Detalle+="<tr id='fila-"+cCod+"'>";//reemplazado por A2
				//<a href="javascript:imodulo(\'' + sessionStorage.getItem("modulo")  + '\',\'' + tCampo + '\',\'' + cCod + '\',\'v\',\'' + vGtam + '\');"><span class="icon-eye" ></span></a>
				//Detalle+='<td><span class="icon-guardar" ></span>'
				//Detalle+='<a href="javascript:emodulo(\'' + sessionStorage.getItem("modulo") + '\',\'' + tCampo + '\',\'' + cCod + '\',\'e\',\'' + vGtam + '\');"><span class="icon-guardar" ></span></a>'
				//Detalle+='<a href="javascript:imodulo(\'' + sessionStorage.getItem("modulo")  + '\',\'' + cCod + '\',\'d\');"><span class="icon-guardar" ></span></a>'
				//cRpdf=VGRutaRiz+"report/"+sessionStorage.getItem('modulo')+".php?id="+cCod+"&empresa="+VGempresa
				//Detalle+='<a href="javascript:env_pdf(\'' + cRpdf+'\');"><div class="circulo_sup"><span class="icon-print" ></span></div></a>'				
				//rEEMPLAZADO POR A3
				//Detalle+='<td><button class="accion" onclick="editar(\''+vGmodulo+'\',\''+cCod+'\')">✏️</button> <button class="accion" onclick="eliminar(\''+vGmodulo+'\',\''+cCod+'\')">🗑️</button>'
				//Detalle+="</td>";
				for (let key in row) {//for(d in cad){
					if (row[key].length >= 4) {//if(cad[d].length>=4){
					
					
						if (row[key].startsWith("http") || row[key].startsWith("www") || key.includes("archivo")) {//if (cad[d].startsWith("http") || cad[d].startsWith("www") || d.includes("archivo")) {
							//const ruta = `archivos/${VGempresa}/${vGmodulo}/`;//ruta="archivos/"+VGempresa+"/"+vGmodulo+"/"	
							const ruta = `archivos/${VGempresa.toLowerCase()}/${vGmodulo.toLowerCase()}/`;
							if (key.includes("archivo")) {//if(d.search('archivo')!=- 1){
								console.log("adjunto")
								// Realiza la solicitud al servidor PHP para obtener los datos
								//const url = `../MVC/pdo/get_files.php?carpeta=${encodeURIComponent(ruta + cad[d])}&empresa=${encodeURIComponent(VGempresa)}&modulo=${encodeURIComponent(vGmodulo)}`;
								const url = `../MVC/pdo/get_files.php?carpeta=${encodeURIComponent(ruta + row[key])}&empresa=${encodeURIComponent(VGempresa)}&modulo=${encodeURIComponent(vGmodulo)}`;
								try {
									const response = await fetch(url);//fetch(url)
                        			const archivos = await response.json();//.then(response => response.json()); .then(archivos => {
										console.log(archivos);
									fila += "<td>";//console.log(archivos); Detalle+="<td>"
									archivos.forEach((archivo) => {//archivos.forEach(archivo => {
										const enlace = `
                                			<a href="${ruta + row[key]}/${archivo}" 
                                   			target="${archivo.endsWith('.pdf') ? '_blank' : '_self'}" 
                                   			style="display: block;">${archivo}</a>
                            			`;//const enlace = document.createElement('a'); enlace.href = `${ruta + cad[d]}/${archivo}`; enlace.target = archivo.endsWith('.pdf') ? '_blank' : '_self';
											//enlace.textContent = archivo;
											//enlace.style.display = 'block'; // Muestra cada archivo en una nueva línea
										fila += enlace; //Detalle+=enlace.outerHTML;
											//tdArchivos.appendChild(enlace);
									});
									fila += "</td>";//Detalle+="</td>"
									//console.log(Detalle);
								} catch (err) {
									//.catch(err => console.error('Error al obtener archivos:', err));
									console.error("Error al obtener archivos:", err);
									fila += "<td>Error al cargar archivos</td>";
									
								}

							//Detalle+="<td><a href='"+"../archivos/"+localStorage.getItem("Codempresa").toLowerCase()+"/"+vGmodulo.toLowerCase()+"/"+cad[d]+"' target='_blank'>"+cad[d]+"</a></td>";
							}else{
								fila += `<td><a href='${row[key]}' target='_blank'>${row[key]}</a></td>`;//Detalle+="<td><a href='"+cad[d]+"' target='_blank'>"+cad[d]+"</a></td>";
							}
						}else if(row[key].startsWith("barra")) {//(cad[d].substring(0,4)=="barra"){
									//Detalle+="<td><div class='progress-bar'><span data-width='70%'>70</span></div></td>";
									fila += `<td><div class='progress-bar'><span data-width='70%'>70</span></div></td>`;
						}else{
							fila += `<td>${row[key]}</td>`;//		Detalle+="<td><span>"+cad[d]+"</span></td>";
						}
					}else{
						
						fila += `<td>${row[key]}</td>`;//Detalle+="<td><span>"+cad[d]+"</span></td>";
					}
					
					/*if(d=='nombre'){
						DetalleUl+="<li><div class='d_search'><a href='#'><i class='icon-magnifying-glass'></i>"+cad[d]+'</a><a href="javascript:nmodulo(\''+ tList+ '\',\'nnn\',\'' + cad['Id'] + '\',\'e\');"><span class="icon-edit"></span></a>';
						DetalleUl+='</a><a href="javascript:emodulo(\''+ sessionStorage.getItem("modulo")+ '\',\'' + cad['Id'] + '\',\'d\');" class="a_search"><span class="icon-erase"></span></a>';
						DetalleUl+='</a><a href="javascript:imodulo(\''+ tList+ '\',\'nnn\',\'' + cad['Id'] + '\',\'v\');"><span class="icon-eye"></span></a>';
						DetalleUl+="</div></li>";
					}*/
					tCampo++;
				}
				fila += "</tr>";
    			return fila;
			})
			
			Promise.all(promises).then((filas) => {
				Detalle += filas.join("");
				Detalle += "</table>";
				Detalle += "</div></div>";
					
				// Asignar el contenido al div
				document.getElementById("bodydetalle").innerHTML = Detalle;

				document.getElementById("searchInput").addEventListener("input", function () {
					let filter = this.value.toUpperCase();
					let rows = document.querySelectorAll("#customers tbody tr");
					let noResults = true;
				
					rows.forEach(function (row) {
						let match = Array.from(row.children).some(cell => cell.textContent.toUpperCase().includes(filter));
						row.style.display = match ? "" : "none";
						if (match) noResults = false;
					});
				
					// Si no hay resultados, mantener visible el encabezado pero ocultar filas
					let tbody = document.querySelector("#customers tbody");
					if (noResults) {
						rows.forEach(function (row) {
							row.style.display = "none";
						});
					} else {
						tbody.style.display = "table-row-group";
					}
				});
			
				document.getElementById("bodydetalle").style.display = "block";

			});
		}
	}
}

function resp_registros_listl_trs(ResTex) {
    console.log(ResTex);
    vC = "";
    var oJsonDatos = JSON.parse(ResTex);
    DetalleUl = "";
    Detalle = "";

    if (oJsonDatos != "ERROR") {
        if (ResTex.length > 1) {
            document.getElementById("ibuscar").innerHTML =
                '<input id="searchInput" class="form-control col-md-3" type="text" placeholder="Buscar...">';

            Detalle = "<div class='prueba'><div class='table-title'>" +
                "<button onclick=\"descargarExcel('customers')\" class='btn btn-success'>Descargar Excel</button>" +
                "</div><div class='conte_table'>";

            if (tAcc == "v") {
                Detalle += "<table id='customers' class='table_invertida'>";
            } else {
                Detalle += "<table id='customers' class='table table-bordered order-table'>";
            }

            vGtam = "80%";
            JsonActividad = ResTex;

            Detalle += "<thead><tr><th>Opciones</th>";

            const headers = Object.keys(oJsonDatos[0]).filter(h => h !== "tiptrs");
            headers.forEach((valor) => {
                Detalle += `<th>${valor}</th>`;
            });
            Detalle += "</tr></thead>";

            const promises = oJsonDatos.map(async (row) => {
                let fila = `<tr id='fila-${row.Id}'>`;

                fila += `
                    <td class="btnacciones">
                        <button class="accion" onclick="enviarEmail('${row.email}')">📧</button>
                        <button class="accion" onclick="descargarZip('${row.rutapdf}')">📦</button>
                        <button class="accion" onclick="descargarPdf('${row.rutapdf}')">📄</button>
                    </td>`;

                for (let key in row) {
                    if (key === "tiptrs") continue;
                    if (row[key].length >= 4) {
                        if (row[key].startsWith("http") || row[key].startsWith("www") || key.includes("archivo")) {
                            const ruta = `archivos/${VGempresa.toLowerCase()}/${vGmodulo.toLowerCase()}/`;
                            if (key.includes("archivo")) {
                                try {
                                    const url = `../MVC/pdo/get_files.php?carpeta=${encodeURIComponent(ruta + row[key])}&empresa=${encodeURIComponent(VGempresa)}&modulo=${encodeURIComponent(vGmodulo)}`;
                                    const response = await fetch(url);
                                    const archivos = await response.json();
                                    fila += "<td>";
                                    archivos.forEach((archivo) => {
                                        const enlace = `<a href="${ruta + row[key]}/${archivo}" target="${archivo.endsWith('.pdf') ? '_blank' : '_self'}" style="display: block;">${archivo}</a>`;
                                        fila += enlace;
                                    });
                                    fila += "</td>";
                                } catch (err) {
                                    console.error("Error al obtener archivos:", err);
                                    fila += "<td>Error al cargar archivos</td>";
                                }
                            } else {
                                fila += `<td><a href='${row[key]}' target='_blank'>${row[key]}</a></td>`;
                            }
                        } else if (row[key].startsWith("barra")) {
                            fila += `<td><div class='progress-bar'><span data-width='70%'>70</span></div></td>`;
                        } else {
                            fila += `<td>${row[key]}</td>`;
                        }
                    } else {
                        fila += `<td>${row[key]}</td>`;
                    }
                }

                fila += "</tr>";
                return fila;
            });

            Promise.all(promises).then((filas) => {
                Detalle += filas.join("");
                Detalle += "</table></div></div>";
                document.getElementById("bodydetalle").innerHTML = Detalle;
                document.getElementById("bodydetalle").style.display = "block";

                document.getElementById("searchInput").addEventListener("input", function () {
                    let filter = this.value.toUpperCase();
                    let rows = document.querySelectorAll("#customers tbody tr");
                    let noResults = true;

                    rows.forEach(function (row) {
                        let match = Array.from(row.children).some(cell => cell.textContent.toUpperCase().includes(filter));
                        row.style.display = match ? "" : "none";
                        if (match) noResults = false;
                    });

                    let tbody = document.querySelector("#customers tbody");
                    tbody.style.display = noResults ? "none" : "table-row-group";
                });
            });
        }
    }
}

// Funciones auxiliares
function enviarEmail(email) {
    alert(`Enviar email a: ${email}`); // Lógica real aquí
}

function descargarZip(ruta) {
    alert(`Descargar ZIP desde: ${ruta}`); // Lógica real aquí
}

function descargarPdf(ruta) {
    window.open(`${ruta}`, '_blank');
}

function descargarExcel(idTabla) {
    let tabla = document.getElementById(idTabla);
    let wb = XLSX.utils.table_to_book(tabla, { sheet: "Hoja1" });
    XLSX.writeFile(wb, "reporte.xlsx");
}