var posiT=0
var posiL=0
var gCampob=""
var contenedor=""
var vGidref=""
// Vector global para almacenar los datos filtrados
let datosFiltrados = [];

function buscador(modulo,vcampo,vini,vcontenedor){
	
	console.log(localStorage.getItem("proyecto"))
	
	//gCampob=vcampo.id
	gCampob=vcampo
	console.log(vcampo)
	url="modulo="+modulo;
	url+="&tipo="+"l";
	url+="&accion="+"s";
	//url+="&valor="+vcampo.value;
	url+="&valor="+document.getElementById("search_"+vcampo).value;
	console.log(document.getElementById("search_"+vcampo).value)
	url+="&codemp="+VGempresa;
	//cDiv=document.getElementById(vcampo.name)
	cDiv=document.getElementById("div_"+vcampo)
	console.log(cDiv+gCampob)
	var posicion = cDiv.getBoundingClientRect();
	
	posiT=posicion.top+25
	posiL=posicion.left-20
 	console.log(posicion.top, posicion.right, posicion.bottom, posicion.left);
	contenedor=vcontenedor
	console.log(url)
	Parametro=url
	if(VGCDDIREACTU === 'undefined'){
		VGCDDIREACTU=""
	}
	var Rpage=VGCDDIREACTU+"pdo/pdoconsulta.php"
	send_data(Parametro,Rpage,"resp_filtrar_search")
	
}

function resp_filtrar_search(ResTex) {
	console.log(ResTex);//listado segun busqueda
	
	let Detalle = "<table><tr> <a href='javascript:cerrar_modal()'>Cerrar</a></tr>";
    let cTabla = document.getElementById('mimodal');
    
    try {
        datosFiltrados = JSON.parse(ResTex); // Guardamos en el vector global
    } catch (error) {
        console.error("Error al parsear JSON:", error);
        cTabla.innerHTML = "Error en los datos";
        return;
    }

    if (datosFiltrados.length > 0) {
        let NJsonItem = datosFiltrados.length;
        let w = 0;
        for (let RowArray = 0; RowArray < NJsonItem; RowArray++) {
            let cad = datosFiltrados[RowArray];
            Detalle += "<tr>";
            for (let i in cad) {
                w++;
                let cId = 'td' + w;
                let cDet = cad[i];
				let idValor = cad.Id ?? cad.codigo ?? ""; // Usa cad.Id, si no existe usa cad.codigo, si no existe usa string vacío

				Detalle += `<td><a href="javascript:asignarval('${idValor}', '${contenedor}')" style="text-decoration:none">${cDet}</a>
            		<input type='hidden' id='${cId}' name='${i}' class='buscador ${idValor}' value='${cDet}'></td>`;

                /*Detalle += `<td><a href="javascript:asignarval('${cad.Id}', '${contenedor}')" style="text-decoration:none">${cDet}</a>
                            <input type='hidden' id='${cId}' name='${i}' class='buscador ${cad.Id}' value='${cDet}'></td>`;*/
            }
            Detalle += "</tr>";
        }
    } else {
        Detalle = "No hay registros";
    }

    Detalle += "</table>";
    cTabla.innerHTML = Detalle;
    /*cTabla.style.display = 'block';
    cTabla.style.height = '300px';
    cTabla.style.overflowY = 'scroll';
    cTabla.style.width = '50%';
	cTabla.style.zIndex='1001';*/
	cTabla.style.position = 'absolute'; // o 'fixed' si quieres que siempre quede en pantalla
cTabla.style.top = (document.getElementById('bodyform').offsetTop + 100) + 'px';
cTabla.style.left = '50%';
cTabla.style.transform = 'translateX(-50%)'; // Centrado horizontal
cTabla.style.zIndex = '1001';
cTabla.style.display = 'block';
cTabla.style.height = '300px';
cTabla.style.overflowY = 'scroll';
cTabla.style.width = '50%';
cTabla.style.backgroundColor = '#fff'; // Para que no se mezcle con el fondo
cTabla.style.border = '1px solid #ccc'; // Opcional
cTabla.style.boxShadow = '0px 4px 10px rgba(0,0,0,0.1)'; // Opcional


	return

	Detalle="<table><tr> <a href='javascript:cerrar_modal()'> Cerrar <a/> </tr>";
	voption="";
	cTabla=document.getElementById('mimodal');
	var oJsonDatos = JSON.parse(ResTex);
	console.log(ResTex.length)
	z=0;
	vTam=30
	if(oJsonDatos!="ERROR" && ResTex.length>25){
	    if(ResTex.length>1){
			
			JsonActividad=ResTex;
			var oJsonDatos = JSON.parse(JsonActividad);
	        var NJsonItem=oJsonDatos.length;

			RowArray=0;//esto lo adicione nuevo
			//cCombo.options[RowArray] = new Option("Seleccione","")
			w=0
			for (RowArray=0;RowArray<NJsonItem; RowArray++){	
				console.log(NJsonItem)
				cad=oJsonDatos[RowArray];	
				Detalle+="<tr>";	
				for (i in cad){//para armar tabla de listado
					w=w+1
					cId='td'+w
					cNom=i;
					cDet=cad[i];
					Detalle+='<td><a href="javascript:asignarval(\''+cad['Id']+'\',\''+contenedor+'\')" style="text-decoration:none">'+cDet+"</a><input type='text' id='"+cId+"' name='"+i+"' class=' buscador "+cad['Id']+"' value='"+cDet+"'Style='display:none'></input><td>"// se indica que se asigna valor segun el Id del listado
					
				}
				Detalle+="</tr>"
			}
			vTam=(30*RowArray)+50
			Detalle+=Detalle+"</table>"
			//console.log(Detalle)
			cTabla.innerHTML=Detalle;
		}else{
			Detalle="No hay registros"
    	}
	}
	//console.log(Detalle)
	if(vTam>300){
		vTam=300
	}
	document.getElementById('mimodal').innerHTML=Detalle
	document.getElementById('mimodal').style.top=posiT+'px'
	document.getElementById('mimodal').style.left=posiL+'px'
	document.getElementById('mimodal').style.display='block'
	document.getElementById('mimodal').style.height=vTam+'px'
	document.getElementById('mimodal').style.overflowY='scroll'
	document.getElementById('mimodal').style.width='50%'

	

}
function cerrar_modal(){
	document.getElementById('mimodal').style.display = 'none';
    document.getElementById('mimodal').innerHTML = '';
	
	return
	document.getElementById('mimodal').style.display='none'
	document.getElementById('mimodal').innerHTML=''
	document.getElementById(gCampob).value=""
	var jSonhijos=document.getElementsByClassName(gCampob);
	for(i=0;i<jSonhijos.length;i++){
		jCampo = jSonhijos[0].id;
		document.getElementById(jCampo).value=""
	}
}
function asignarval(nValor, container) {
    console.log("Seleccionado:", nValor, "Container:", container);
	
    //let filaSeleccionada = datosFiltrados.find(item => item.Id == nValor);
	let filaSeleccionada = datosFiltrados.find(item =>
    	item.Id == nValor || item.codigo == nValor
	);

    if (!filaSeleccionada) {
        console.error("No se encontró la fila con Id:", nValor);
        return;
    }

    let tipoSesion = sessionStorage.getItem("tipo");
    let omitirId = filaSeleccionada.hasOwnProperty("nriper") || tipoSesion === "TRS";

    // Obtener el contenedor si se proporcionó
    let contenedor = null;
    if (container) {
        contenedor = document.querySelector(`#${container}`);
        if (!contenedor) {
            console.warn("Contenedor no encontrado, se asignará en todo el formulario.");
        }
    }
	

    for (let nCampo in filaSeleccionada) {
        let cValor = filaSeleccionada[nCampo];
        console.log("Procesando campo:", nCampo);

        if (omitirId && nCampo.toLowerCase() === "id") {
            console.log(`Se omitió el campo con id: ${nCampo} por tipo ${tipoSesion}`);
            continue;
        }

        // Buscar primero dentro del contenedor, si existe
        let ocampo = contenedor
            ? contenedor.querySelectorAll(`input[name="${nCampo}"], select[name="${nCampo}"], textarea[name="${nCampo}"]`)
            : [];

        // Si no hay resultados en el contenedor, buscar en todo el documento
        if (ocampo.length === 0) {
            ocampo = document.querySelectorAll(`input[name="${nCampo}"], select[name="${nCampo}"], textarea[name="${nCampo}"]`);
        }

        if (ocampo.length === 0) {
            console.log(`Campo ${nCampo} no encontrado en el formulario.`);
            continue;
        }

        ocampo.forEach(campo => {
            campo.value = cValor;

            campo.style.backgroundColor = "#e0f7fa";
            setTimeout(() => {
                campo.style.backgroundColor = "";
            }, 1000);
        });
    }

	/// Definir el campo visible, reemplazando "div_" con "search_"
let campoVisible = null;
if (container) {
    let idVisible = container.replace("div_", "search_"); // Convertir el ID del contenedor en el del input visible
    campoVisible = document.getElementById(idVisible);
}

console.log("Campo visible:", campoVisible);

// Buscar cualquier propiedad que empiece con "nom"
    let nombreEncontrado = "";
    for (let key in filaSeleccionada) {
        if (key.toLowerCase().startsWith("nom")) {
            nombreEncontrado = filaSeleccionada[key];
            break; // Detener en el primer resultado encontrado
        }
    }

    // Asignar el valor al campo visible con formato `Código - Nombre`
    if (campoVisible) {
        let codigo = filaSeleccionada.hasOwnProperty("nriper") ? filaSeleccionada.nriper : nValor;
        campoVisible.value = `${codigo} - ${nombreEncontrado}`;
    }

    cerrar_modal();

	return
	let jSondet = document.getElementsByClassName(nValor); // Selecciona elementos con la clase numérica
    console.log(nValor, container);

   // Verificar si existe un campo llamado "nriper" en jSondet
   tieneNriper = Array.from(jSondet).some(el => el.name === "nriper");
	console.log(tieneNriper)
   if (sessionStorage.getItem("modulo") === "cli_historia_odonto") {
	   // document.getElementById('mimodal').style.display = 'none';
   }

   Array.from(jSondet).forEach(columna => {
	   let iCampo = columna.id;
	   let nCampo = columna.name;
	   let cValor = columna.value;

	   // Si hay "nriper" y el campo actual es "id", saltar la iteración
	   if (tieneNriper && iCampo === "Id") {
		   console.log(`Se omitió el campo con id: ${iCampo}`);
		   //return;
	   }else{
			console.log(`${nCampo} - ${iCampo}`);

			try {
				let ocampo = document.getElementsByName(nCampo);
				let asignado = false;
 
				Array.from(ocampo).forEach(campo => {
					if (campo.classList.contains(container)) {
						campo.value = cValor;
						asignado = true;
					}
				});
 
				if (!asignado && ocampo.length > 0) {
					ocampo[0].value = cValor;
				}
			} catch (err) {
				console.error("Error asignando valores:", err);
			}

	   }

	   
   });
	

	document.getElementById('mimodal').style.display='none'
	document.getElementById('mimodal').innerHTML=''
	if(sessionStorage.getItem("tipo")=="HCLI" && container=='bloque1'){
		filter_histo("nriper")
	}
}
function asignarval_(nValor,container){//aqui trae el id dela seleccion de la fila de tabla que se hizo
	//var jSondet=document.getElementsByClassName('buscador');//aqui se extrae toda las columnas correspondientes a esa fila
	var jSondet=document.getElementsByClassName(nValor);//aqui se extrae toda las columnas correspondientes a esa fila
	console.log(nValor)
	console.log(container)
	nTam=jSondet.length;
	var cadcampos="";
	//container con el objetivo de asignar valor solo a lo que pertenece al mismo contenedor
	if(sessionStorage.getItem("modulo")=="cli_historia_odonto"){
	//	document.getElementById('mimodal').style.display='none'
	}
	for(var i=0;i<nTam;i++){//aqui recorremos cada columna
		item=document.getElementById(jSondet[i].id)
		console.log(jSondet[i].id+' - '+jSondet[i].name)
		if(item.classList.contains(nValor)){

			iCampo=jSondet[i].id//aqui obtenemos el id de la columna
			nCampo=jSondet[i].name//aqui obtenemos el nombre de la columna, el cual debe ser igual al que tiene la casilla a la que se asignara
			cValor=document.getElementById(iCampo).value// Aqui es el valor de la columna
			try {

				console.log(nCampo+iCampo);
				ocampo = document.getElementsByName(nCampo);
				//if(VGproyect=="cli"){
				console.log(ocampo)
				sw=0
				for(var j=0;j<ocampo.length;j++){
					iCampo=ocampo[j].id;
					jsClases=document.classList
					item = document.getElementById(iCampo);
					if(item.classList.contains(container)){
						document.getElementById(iCampo).value=cValor
						sw=1
					}
				}

				if (sw==0){
					////Aqui obtengo el Id de acuerdo al nombre de la columna revisada para que se asigne ala casilla que va a guardar en la base de datos.
					iCampo = ocampo[0].id;
					document.getElementById(iCampo).value=cValor
				}
		  
		 	 } catch (err) { 
			
			} 
		
		}
      	
		//console.log(iCampo+cValor)
		
		
		
	}
	document.getElementById('mimodal').style.display='none'
	document.getElementById('mimodal').innerHTML=''
	if(sessionStorage.getItem("tipo")=="HCLI" && container=='bloque1'){
		filter_histo("nriper")
	}
	
	
}
function procesarBusqueda() {
    // Buscar todos los inputs con id que comiencen por "search_"
    let inputsBusqueda = document.querySelectorAll("[id^='search_']");

    inputsBusqueda.forEach(input => {
        let nombreCampo = input.id.replace("search_", ""); // Obtener la segunda parte del ID
        let divContenedor = document.getElementById("div_" + nombreCampo);

        if (!divContenedor) {
            console.warn(`No se encontró el div asociado a search_${nombreCampo}`);
            return;
        }

        let codigo = "";
        let nombre = "";

        // Recorrer elementos dentro del div para encontrar código y nombre
        let elementos = divContenedor.querySelectorAll("input, select, textarea");
        elementos.forEach(elemento => {
            let idElemento = elemento.id.toLowerCase();

            if (!codigo && (idElemento.startsWith("nri") || idElemento.startsWith("id") || idElemento.startsWith("cod"))) {
                codigo = elemento.value;
            }

            if (!nombre && idElemento.startsWith("nom")) {
                nombre = elemento.value;
            }
        });

        // Asignar la combinación de código - nombre al campo de búsqueda
        if (codigo && nombre) {
            input.value = `${codigo} - ${nombre}`;
        } else {
            console.warn(`No se encontró código y/o nombre en div_${nombreCampo}`);
        }
    });
}



function asignarval_local(){
	console.log("aqi")
	var jSondet=document.getElementsByClassName('local');
	console.log(jSondet)
	nTam=jSondet.length;
	for(var i=0;i<nTam;i++){
		nCampo=jSondet[i].name
		iCampo=jSondet[i].id
		
		
		vCampo=document.getElementById(jSondet[i].id).value
		clases=document.getElementById(jSondet[i].id).classList 
		nvector=clases[0]
		vector=localStorage.getItem(nvector)
		vector=vector.substring(9,vector.length-1);
		array=JSON.parse(vector)

		var jSonhijos=document.getElementsByClassName(iCampo);
		console.log(jSonhijos)
		var idx = array.find((vector) => vector.Id === vCampo)
		console.log(idx.nombre)
		ocampo = jSonhijos[0].name;
		jCampo = jSonhijos[0].id;
		console.log(jCampo)
		document.getElementById(jCampo).value=idx.nombre
		
		return
		
		
		/*jSondet=document.getElementsByClassName('local');
		if (nCampo=="nrorem"){
			cRemi=vCampo
		}
		zCampo="c"+z.toString()
		if(fin==0 && i==0){}else{cadcampos+=",";caddatos+=","}
		caddatos+='"'+nCampo+'":'+'"'+vCampo+'"';
		cadcampos+='"'+zCampo+'":'+'"'+nCampo+'"';
		*/
		z++
	}
	
			//////////////////////////////////////INICIO PARA UBICAR UN ELEMENTO DENTRO DE UN VECTOR GENERICO
	/*	ciu=localStorage.getItem("ciudades")
		ciu=ciu.substring(9,ciu.length-1);	
		array=JSON.parse(ciu)
		var idx = array.find((vector) => vector.Id === vCampo)
		console.log(idx.nombre)
		*/
		///////////////////////////////////FIN FUNCION PARA UBICAR UN ELEMENTO

	
}

function limpiarElementos(idParametro) {
	
    let contenedor = document.getElementById("div_" + idParametro.id);

    if (!contenedor) return; // Evita errores si el div no existe

    // Limpiar todos los inputs dentro del contenedor
    let inputs = contenedor.querySelectorAll("input");
    inputs.forEach(input => {
        input.value = ""; // Vaciar el contenido
    });

    // Restablecer todos los selects dentro del contenedor
    let selects = contenedor.querySelectorAll("select");
    selects.forEach(select => {
        select.selectedIndex = 0; // Volver al primer valor del select
    });

    console.log(`Se han limpiado los elementos dentro de #div_${idParametro}.`);
}


function refresh(nMod,vCampo,cValor,cCondicion){
	
	ocampo = document.getElementsByName(cCondicion);
	iCampo=ocampo[0].id;
	nVlrCond=document.getElementById(iCampo).value
	cCondicion=' and '+cCondicion+'="'+nVlrCond+'"'
	
	url="modulo="+nMod;
	url+="&tipo="+"l";
	url+="&accion="+"i";
	url+="&condicion="+cCondicion;
	url+="&codemp="+VGempresa;
	console.log(url)
	
	vGidref=vCampo;

	vTmod=nMod
	vGval=cValor;
	console.log(vGval);
	console.log(url);
	var Rpage =VGRutaRiz+"controllers/registros/";
	console.log(Rpage+vGmod);
	doAjax(Rpage,url,'resp_filtrar_refresh','gets','0','Ccargar');
	}

function resp_filtrar_refresh(ResTex) {
	console.log(vGnum)
	console.log(jGfunciones.Datos.length);
	console.log(ResTex+vGid);
	Detalle="<option value='' ></option>";
	//Detalle="";
	voption="";
	var oJsonDatos = JSON.parse(ResTex);
	z=0;
	if(oJsonDatos.Datos!="ERROR" && ResTex.length>15){
	    if(ResTex.length>1){
			
			cCombo=document.getElementById(vGidref);
			JsonActividad=ResTex;
			var oJsonDatos = JSON.parse(JsonActividad);
	        var NJsonItem=oJsonDatos.Datos.length;
			RowArray=0;//esto lo adicione nuevo
			cCombo.options[RowArray] = new Option("Seleccione","")
			for (RowArray=0;RowArray<NJsonItem; RowArray++){
				cad=oJsonDatos.Datos[RowArray];	
				
			//if(vGid='c0'){	
          	//Detbuscador+='<tr><td>'+oJsonDatos.Datos[RowArray].codigo+'</td><td>'+oJsonDatos.Datos[RowArray].nombre+'</td><td>'+oJsonDatos.Datos[RowArray].nombre+'</td></tr>'
			//}
				j=RowArray+1;
				if(vGval==oJsonDatos.Datos[RowArray].codigo && vGval!=""){
					z=1;
					Detalle+='<option value="'+oJsonDatos.Datos[RowArray].codigo+'" selected>'+oJsonDatos.Datos[RowArray].nombre+'</option>'
					//Detalle+='<option value="'+oJsonDatos.Datos[RowArray].codigo+'" >'+oJsonDatos.Datos[RowArray].nombre+'</option>'
				}else{
					Detalle+='<option value="'+oJsonDatos.Datos[RowArray].codigo+'">'+oJsonDatos.Datos[RowArray].nombre+'</option>'
				}
			}
			console.log(Detalle)
			Detalle=rpt_textos(Detalle);
			cCombo.innerHTML=Detalle;
		}else{
			alert("no hay registros");
    	}
	}
	

}