vGtitulo=""
function asignar_s_storage(var_item,vlr_item){
    if(sessionStorage.hasOwnProperty(var_item)){
		sessionStorage.removeItem(vlr_item)
	}
	sessionStorage.setItem(var_item,vlr_item)
}
function mostrarFormulario(){
	document.getElementById("form-container").style.display='block'
	document.getElementById("bodydetalle").style.display='none'
}
var vGmodulo=""
function mudulemaster(nMod,tCampo,campo,accion,nTam,cIni,cFin,tipo) {
	
	var boton = document.getElementById("btn_report");
	console.log(tipo)
	if (tipo === "RPT") {
		vGtitulo="SEGUIMIENTO TAREAS"//PENDIENTE REVISAR PARA CORREGIR
		DetalleBtn='<button onclick="mostrarFormulario()">Crear</button><button id="btn_report" onclick="listados(\''+nMod+'\',\''+vGtitulo+'\')">Listado</button>'
	   
		document.getElementById("btn_actions").innerHTML=DetalleBtn
	document.getElementById("tit_modulo").innerHTML='<h1>'+vGtitulo+'</h1>'
		// Simula el clic programáticamente
    	boton.click(); // Esto ejecutará el evento como si el usuario hiciera clic
		return;
	}
	document.getElementById("bodydetalle").innerHTML="";
	document.getElementById("bodydetalle").style.display='none'

	//document.getElementById("main").innerHTML=vGdetalle
	//var el=document.getElementById("main")
	//console.log(el.outerHTML)
	
	vGtam=nTam
	vGmodulo=nMod
    asignar_s_storage("modulo",nMod)
    asignar_s_storage("tipo",tipo)
    asignar_s_storage("campoi",cIni)
    asignar_s_storage("length",nTam)
    asignar_s_storage("accion",accion)
	if(nTam!=''){
		vGtam=nTam
	}
	tId=campo;
	url="modulo="+nMod;
	url+="&tipo="+"l";
	url+="&accion="+accion;
	url+="&codemp="+VGempresa;
	console.log(accion+url)
    Rpage="pdo/pdoquestion.php"
	send_data(url,Rpage,"create_form");
}
function eliminar(mod,id){
	url="modulo="+nMod;
	url+="&accion=d";
	url+="&codemp="+VGempresa;
	url+="&id="+id;
	console.log(url)
    Rpage="pdo/delete.php"
	const fila = document.getElementById('fila-' + id); 
	if (fila) { 
		fila.remove(); 
	}
	send_data(url,Rpage,"show_listado");
}
function show_listado(answer){
	console.log(answer)
}
function create_form(answer){
	swAdj=0
	swAct=0
	console.log(answer)
	var oJsonDatos = JSON.parse(answer);//forma
    cad=oJsonDatos[0];
    console.log(Object.keys(cad));
    var NJsonItem=oJsonDatos.length;
	vDiv=oJsonDatos[0].bloque.trim()
	vGtitulo=oJsonDatos[0].titmod
	nMod=oJsonDatos[0].modulo
	//Detalle='<a href="javascript:listados(\'' + sessionStorage.getItem("modulo") + '\')><span class="material-symbols-sharp" >grid_view</span></a>'
	//Detalle='<div class="bloqueph divboton"><a href="javascript:listados(\'' + sessionStorage.getItem("modulo") + ' \',\' '+oJsonDatos[0].titmod+' \' ) "><span class="material-symbols-sharp" style="cursor:pointer">Print</span></a></div>'
	//Detalle+="<div id='"+vDiv+"' class='bloqueph'>"
	Detalle="<fieldset><legend>"+vDiv+"</legend>"
	iDet=0//para saber en que campo arranca el detalle
	swdet=0
	cAnt=""
	vCampo_padre=""//para cuando hay bloques que se arman con + de 1 campo
	vJfunciones='{"Datos":[{';
	for (RowArray=0;RowArray<NJsonItem; RowArray++){
		if(RowArray>0 && vDiv!=oJsonDatos[RowArray].bloque.trim()){
			//Detalle+="</div><div id='"+oJsonDatos[RowArray].bloque.trim()+"' class='bloqueph' >"
			Detalle+="</fieldset>"
			Detalle+="<fieldset><legend>"+oJsonDatos[RowArray].bloque.trim()+"</legend>"
			
			vDiv=oJsonDatos[RowArray].bloque.trim()
		}else{
			if(vDiv!=oJsonDatos[RowArray].bloque.trim()){
				if(vDiv=='bloquedet'){
					Detalle+='<a href="javascript:guardardetalle(\''+oJsonDatos[RowArray].nommod.trim()+'\',\''+iDet+'\',\''+(RowArray-1)+'\',\'c0\')">+ Agregar Item</a>';
					Detalle+="<div id='det_prod' class='form-msg'>...</div>"
				}
				Detalle+="</div>";
				//Detalle+=oJsonDatos[RowArray].titulo+"<div id='"+oJsonDatos.[RowArray].bloque+"' class='"+oJsonDatos.[RowArray].clase+"'>"
				vDiv=oJsonDatos[RowArray].bloque.trim()
				
			}
			//console.log(oJsonDatos[RowArray].titmod)
			//document.getElementById("tit_modulo").innerHTML="<h1 style='color:blue;margin-top:10px ;'>"+oJsonDatos[RowArray].titmod+"</h1>"
		}
		vCampo=oJsonDatos[RowArray].nombre.trim()//"c"+RowArray.toString()
		if(oJsonDatos[RowArray].chkblq==1){vCampo_padre=vCampo}
		if(oJsonDatos[RowArray].chkblq==0){vCampo_padre=""}
		etipo=oJsonDatos[RowArray].etifin.trim()//aqui debe ir etiqueta en vez de etifin
		eIni=oJsonDatos[RowArray].etiini.trim()
		eFin=oJsonDatos[RowArray].etifin.trim()
		//console.log(etipo)
        aReq=""
		//Detalle+="<div class='"+oJsonDatos[RowArray].nomdiv.trim()+"'>"
		if(oJsonDatos[RowArray].chkblq==0 || oJsonDatos[RowArray].chkblq==1){//para campos noson del mismo bloque
			Detalle+="<div class='"+oJsonDatos[RowArray].nomdiv+"'"
			
			if(oJsonDatos[RowArray].chkpub==0){
				Detalle+="  style='display:none' "
			}
			Detalle+=" Id='div_"+vCampo+"' "
			if(oJsonDatos[RowArray].campoadi.trim()!=""){
				Detalle+=" title='"+oJsonDatos[RowArray].campoadi.trim()+"'"
			}
			if(oJsonDatos[RowArray].chkocu==1 ){
				Detalle+="' style='display: none' "
			}
			Detalle+=">";
			detlabel="<label for='"+oJsonDatos[RowArray].nombre.trim()+"'>"+oJsonDatos[RowArray].descripcion.trim()+"</label>"
		}
		
        switch (etipo) {
            case "input":
				if(oJsonDatos[RowArray].nomdiv.trim()=='conte_adjuntar'){
					Detalle+='<div class="form-group"> '
					Detalle+='<label for="images">Selecciona imágenes:</label> '
					//accept="image/*"
					Detalle+='<input type="file" id="images" name="images[]"  multiple required> '
					Detalle+='</div> '
					Detalle+='<div class="dropzone" id="dropzone">Arrastra y suelta tus imágenes aquí</div>'
					Detalle+='<div class="preview" id="preview"></div>'
					Detalle+='<div class="error" id="error"></div>'
					//Detalle+="<div class='drop-area'><h2>Arrastra y suelta imagenes</h2>";
					//Detalle+="<span>o</span>";
					//Detalle+='<a href="javascript:simula_inputfile(\'input-file\')"> Selecciona tus archivos </a>';
					//Detalle+="<input type='file' name='"+oJsonDatos[RowArray].nombre.trim()+"' id='input-file' hidden multiple />"
					//Detalle+="</div><div id='preview'></div><progress id='progressBar' value='0' max='100' style='width:300px;'></progress><h3 id='status'></h3><p id='loaded_n_total'></p>"
					swAdj=1

				}else{
					
					if(oJsonDatos[RowArray].chkblq!=2){
						Detalle+=detlabel;
					}
					
					Detalle+="<"+eIni+"  name='"+oJsonDatos[RowArray].nombre.trim()+"' id='"+oJsonDatos[RowArray].nombre.trim()+"' "
                	if(oJsonDatos[RowArray].funcion!=""){//para buscardor al escribir
						divConte=vDiv.replace('det_','')//para identificar la clase a la que queda amarrado
						Detalle+=' onkeyup="buscador(\''+oJsonDatos[RowArray].funcion+'\',this,\''+oJsonDatos[RowArray].chknew+'\',\''+divConte+'\')" '
					}
					if(oJsonDatos[RowArray].lost.trim()!=""){
						Detalle+=' onblur="'+oJsonDatos[RowArray].lost.trim()+'"'
					}
					
				}
                
				
                break;
            case "select":
				Detalle+=detlabel;
                Detalle+="<"+eIni+"  name='"+oJsonDatos[RowArray].nombre.trim()+"' id='"+oJsonDatos[RowArray].nombre.trim()+"' "
				if(oJsonDatos[RowArray].inicio.trim().length>3){
					if(vJfunciones.length>12){vJfunciones+=",{";}
					vJfunciones+='"modulo":"'+oJsonDatos[RowArray].inicio.trim()+'",';
					vJfunciones+='"objeto":"'+oJsonDatos[RowArray].nombre.trim()+'",';
					vJfunciones+='"valor":"'+oJsonDatos[RowArray].predeterminado.trim()+'",';
					vJfunciones+='"condicion":"'+oJsonDatos[RowArray].condicion.trim()+'"';
					vJfunciones+=',"modalidad":"'+oJsonDatos[RowArray].chkimg+'"';
					vJfunciones+=',"lost":"'+oJsonDatos[RowArray].lost.trim()+'"';
					vJfunciones+='}';
				}
				if(oJsonDatos[RowArray].lost.trim()!=""){
					Detalle+=' onblur="'+oJsonDatos[RowArray].lost.trim()+'"'
				}
                break;
			case "textarea":
				if(oJsonDatos[RowArray].nombre=="actividad"){
					swAct=1
					//Detalle+='<label for="editor-container">Descripción de la Actividad</label>'
        		   	Detalle+='<div id="editor-container"></div>'
        			//Campo oculto para enviar el contenido del editor 
        			Detalle+='<input type="hidden" id="actividad" name="actividad"></input>'
					//Adicionar la estructura que debo tener para que pon
				}else{
					Detalle+=detlabel+"<"+eIni+"  name='"+oJsonDatos[RowArray].nombre.trim()+"' id='"+oJsonDatos[RowArray].nombre.trim()+"' "
				}
				
				break;
			case "table"://aqui debemos: 1) poner un buscador 2) poner una tabla que se creara automatico con el filtro de la linea
					//Detalle+='<div id="buscar_item" ></div>'
					//Detalle+="<"+eIni+"  name='"+oJsonDatos[RowArray].nombre.trim()+"' id='"+oJsonDatos[RowArray].nombre.trim()+"' "
					Detalle+="<div  name='"+oJsonDatos[RowArray].nombre.trim()+"' id='"+oJsonDatos[RowArray].nombre.trim()+"' "
					eFin="div"
					break;
            default:
                // Código a ejecutar si ninguno de los casos coincide con la expresión
                break;
	    }
		

        if(oJsonDatos[RowArray].keypress!=""){
			Detalle+=" onkeypress='"+oJsonDatos[RowArray].keypress+"'"//Restringiendo caracteres indicados
		}
		if(oJsonDatos[RowArray].length!=0){
			Detalle+=" style='width:"+oJsonDatos[RowArray].length+"%'"
		}
        if(oJsonDatos[RowArray].chkreq=="1" ){
			aReq+=" required "//valido que solo sea numeros positivos
		}
		if(vCampo_padre!='' && oJsonDatos[RowArray].chkblq==2){//Agregando a las clases para poder ubicarles y asignarles datos respectivos
		    aReq+=" "+vCampo_padre+" "
		}
		if(oJsonDatos[RowArray].chktmp=="1" ){
			aReq+=" tmp "//para campos que no van a guardar
		}
		if(oJsonDatos[RowArray].etiini=="table" ){
			aReq+=" table "//para indicar que es una tabla
		}
		if(oJsonDatos[RowArray].nomdiv.trim()!='conte_adjuntar' && oJsonDatos[RowArray].nombre!="actividad"){
        	Detalle+=" class='"
			if(vDiv=="bloquedet"){
				Detalle+=" 'bloquedet "
			}
			//Detalle+="bloqueph "+aReq+"' "
			Detalle+=aReq+"' "
        	Detalle+=">"
			Detalle+=oJsonDatos[RowArray].valorhtml.trim();	
			Detalle+=" </"+eFin+">"
		}
		
		
		if((oJsonDatos[RowArray].chkblq==0 || oJsonDatos[RowArray].chkblq==2)  ){
			if(etipo!="textarea" && oJsonDatos[RowArray].nomdiv.trim()!='conte_adjuntar' && etipo!='table'){
				//Detalle+=detlabel
			}
			Detalle+="</div>";
			if(etipo=='table'){//Aqui crear un div que almacenara los productos/servicios que se añadiran
				Detalle+="<div id='detpedido'> </div>";
			}
		}
		
    }
	vJfunciones+="]}";
	Detalle+="</div><input type='submit' id='guardarBtn' value='Guardar'><div id='mimodal' class='mdsearch'><table id='table'></table></div><div id='respuesta'></div>"
	Detalle+='<div id="mimodal" class="mdsearch"><table id="table"></table></div><label id="vmod" style="display:none" >'+nMod+'</label>'
	DetalleBtn='<button onclick="mostrarFormulario()">Crear</button><button id="btn_report" onclick="listados(\''+nMod+'\',\''+vGtitulo+'\')">Listado</button>'
	//TRABAJAR EL ANCHO DEPENDIENDO del tamaño total de la pantalla
	vTam=vGtam*10+parseInt(100)

	// Obtener el tamaño actual de la pantalla
	var screenWidth = window.innerWidth; // Ancho de la pantalla actual
	if (screenWidth <600){
		screenWidth=screenWidth-60
		document.getElementById("conteright").style.display='none'
	}else{
		if (screenWidth <800){
			document.getElementById("conteright").style.display='none'
		}
		screenWidth=screenWidth-200
	}
	//const screenHeight = window.innerHeight; // Altura de la pantalla actual
	// Ajustar el tamaño del formulario sin exceder el tamaño de la pantalla
	const formWidth = Math.min(vTam, screenWidth - 40); // 20px de margen opcional
	//const formHeight = Math.min(dbFormHeight, screenHeight - 20);

	// Asignar el tamaño al formulario
	const formElement = document.getElementById('formulario');
	if (formElement) {
    	formElement.style.width = formWidth + 'px';
    	//formElement.style.height = formHeight + 'px';
    	//formElement.style.overflow = 'auto'; // Añadir scroll si el contenido supera el tamaño asignado
	}
	if (swAdj==1){
		/*DetalleSup=""
		localStorage.setItem("contenido",Detalle)
		localStorage.setItem("botones",DetalleBtn)
		localStorage.setItem("funciones",vJfunciones)
		crut=localStorage.getItem("ruta")
		crut=crut.replace('index','index_adj')
		cRuta=crut+"&modulo="+sessionStorage.getItem("modulo")+"&titulo="+vGtitulo+"&width="+vTam
		console.log(cRuta)
		window.open(cRuta,'_blank');
		return*/
	}
	
	//console.log(Detalle)
	document.getElementById("bodyform").innerHTML=Detalle;
	document.getElementById("form-container").style.display='block'
	
	//DetalleBtn='<button onclick="mostrarFormulario()">Crear</button><button onclick="mostrarListado(\''+nMod+'\',\''+vGtitulo+'\')">Listado</button>'
	
	document.getElementById("btn_actions").innerHTML=DetalleBtn
	document.getElementById("tit_modulo").innerHTML='<h1>'+vGtitulo+'</h1>'

	
	if(vGtam=="" || vGtam==0){
		document.getElementById("formulario").style.width='100%'	
		document.getElementById("formulario").style.maxWidth='800px'
	}else{
		/*document.getElementById("formulario").style.width=(vTam)+'px'
		document.getElementById("formulario").style.maxWidth=(vTam)+'px'*/
		formElement.style.width = formWidth + 'px';
	}
	
	if (swAdj==1){
		initializeDragAndDrop();
	}
	if (swAct==1){
		initializeQuill();
	}
	if(vJfunciones.length>13){
		//console.log(vJfunciones)
		vGnum=0;
		jGfunciones = JSON.parse(vJfunciones);
		filtrar(jGfunciones.Datos[0].modulo,jGfunciones.Datos[0].objeto,jGfunciones.Datos[0].valor,jGfunciones.Datos[0].condicion,jGfunciones.Datos[0].modalidad,jGfunciones.Datos[0].lost);
	}else{
		
	}
	
}

// Inicializar eventos de arrastre y soltado
function initializeDragAndDrop() {

	console.log("Entra en inicializa draganddrop")
    const dropZone = document.getElementById("dropzone");
    const fileInput = document.getElementById("images");
    const preview = document.getElementById("preview");
	const error = document.getElementById("error");
    // Abrir selector de archivos al hacer clic
    dropZone.addEventListener("click", () => fileInput.click());

    // Manejar el arrastre de archivos
    dropZone.addEventListener("dragover", (event) => {
        event.preventDefault();
        dropZone.style.borderColor = "#333";
    });

    dropZone.addEventListener("dragleave", () => {
        dropZone.style.borderColor = "#ccc";
    });

    dropZone.addEventListener("drop", (event) => {
		event.preventDefault();
		dropZone.style.borderColor = "#ccc";
		const files = event.dataTransfer.files; // Archivos arrastrados y soltados
	
		// Asignar los archivos al input file
		const dataTransfer = new DataTransfer();
		Array.from(files).forEach((file) => dataTransfer.items.add(file));
		fileInput.files = dataTransfer.files;
	
		handleFiles(files, preview);
	});

	
    // Manejar los archivos seleccionados con el input
    fileInput.addEventListener("change", (event) => {
        const files = event.target.files;
        handleFiles(files, preview);
    });
}

// Función para manejar la previsualización de archivos
function handleFiles(files, preview) {
    // Tipos permitidos
    const allowedFileTypes = [
        "image/jpeg", // JPG
        "image/png",  // PNG
        "image/webp", // WebP
        "application/pdf", // PDF
        "application/vnd.openxmlformats-officedocument.wordprocessingml.document", // Word (DOCX)
        "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", // Excel (XLSX)
    ];

    // Limpiar previsualización anterior
    preview.innerHTML = "";
    const error = document.getElementById("error");
    error.textContent = ""; // Limpiar mensajes de error anteriores

    // Iterar sobre los archivos seleccionados
    Array.from(files).forEach((file) => {
        if (allowedFileTypes.includes(file.type)) {
            // Crear previsualización solo para imágenes
            if (file.type.startsWith("image/")) {
                const reader = new FileReader();

                reader.onload = (e) => {
                    const img = document.createElement("img");
                    img.src = e.target.result;
                    img.style.width = "100px";
                    img.style.height = "100px";
                    img.style.objectFit = "cover";
                    img.style.margin = "5px";
                    preview.appendChild(img);
                };

                reader.readAsDataURL(file);
            } else {
                // Mostrar nombre del archivo para documentos (PDF, Word, Excel)
                const docPreview = document.createElement("div");
                docPreview.textContent = `Archivo cargado: ${file.name}`;
                docPreview.style.margin = "5px";
                docPreview.style.fontSize = "14px";
                docPreview.style.color = "green";
                preview.appendChild(docPreview);
            }
        } else {
            // Mostrar error si el tipo de archivo no es permitido
            error.textContent = `El archivo ${file.name} no es un tipo permitido.`;
        }
    });
	console.log(document.getElementById("images")); 
}



function iniciar(vJfunciones,vIdsup){
	//document.getElementById(vIdsup).innerHTML=localStorage.getItem("botones")
	console.log(vJfunciones.length)
	if(vJfunciones.length>13){
		console.log(vJfunciones)
		vGnum=0;
		jGfunciones = JSON.parse(vJfunciones);
		filtrar(jGfunciones.Datos[0].modulo,jGfunciones.Datos[0].objeto,jGfunciones.Datos[0].valor,jGfunciones.Datos[0].condicion,jGfunciones.Datos[0].modalidad,jGfunciones.Datos[0].lost);
	}
}

function insertar(tcontenido,funciones,contsuperior,contbotones){
	console.log(DetalleSup)
	console.log(contbotones)
	localStorage.setItem("contenido",tcontenido+" <div class='mmenud' id='lderecho'></div>")
	localStorage.setItem("funciones",funciones)
	localStorage.setItem("contesuperior",contsuperior)
	localStorage.setItem("botones",contbotones)
	localStorage.setItem("modulo",vGmodulo)
	
	document.getElementById("cuerpo").style.marginTop="0px";
	document.getElementById("cuerpo").innerHTML ="<iframe src='index_adjunto.html?titulo="+vGtitulo+"' width='100%',height='100%'></frame>";
	document.getElementById("cuerpo").style.width="100%"
	document.getElementById("cuerpo").style.height="100%"


}

function consecutivo(nId,tipo) {
	console.log(nId)
	fuente=document.getElementById(nId).value
	if(fuente.length<=0){
		document.getElementById('c0').value=""
		return
	}
	
	document.getElementById('nrorem').value=uniqid(fuente,false);
	vaccion="conse"
	url="fuente="+fuente;
	url+="&tipo="+tipo;
	url+="&sede=001";
	url+="&accion="+vaccion;
	url+="&codemp="+VGempresa;

}

function uniqid(prefix = '', more_entropy = false) {
    let id = prefix + Date.now().toString(16) + Math.floor(Math.random() * 10000).toString(16);
    if (more_entropy) {
        id += (Math.random() * 10).toFixed(8).toString();
    }
    return id.substring(0,15);
}



function resp_conse(ResTex){
	console.log(ResTex)
	cNro=ResTex.substring(0,12)
	ResTex=ResTex.substring(13,ResTex.length)
	console.log(ResTex)
	return
	JsonActividad=ResTex;
	var oJsonDatos = JSON.parse(JsonActividad);
	var NJsonItem=oJsonDatos.Datos.length;
	cPre=""
	for (RowArray=0;RowArray<NJsonItem; RowArray++){
		cPre=oJsonDatos.Datos[RowArray].presed;
	}
	document.getElementById('c0').value=cPre+cNro;
	
}

let quill; // Declaramos la variable para el editor globalmente

function initializeQuill() {
	//Quill.register('modules/imageResize', QuillImageResize.default);

	quill = new Quill('#editor-container', {
		theme: 'snow',
		modules: {
			toolbar: [
				[{ header: [1, 2, false] }],
				['bold', 'italic', 'underline'],
				['link', 'image', 'video'],
				[{ list: 'ordered' }, { list: 'bullet' }],
				[{ align: [] }],
				['clean'],
			],
			imageResize: {
				modules: ['Resize', 'DisplaySize', 'Toolbar'],
			},
		},
	});

	
}

function editar(nmodulo,vId){
	//Enivar a consultar datos, y en api se verifica que campo consulta el registro para devolver respuesta
	if(nmodulo=='estudiantes' || nmodulo=='docentes'){
		cId="nriper"	
	}else{
		cId="Id"
	}
	let campo=document.getElementById('div_'+cId);
	let campoId=document.getElementById(cId);
	campo.style.display="block";
	campoId.value=vId;
	campoId.readonly=true;

	console.log(vId)
	document.getElementById("bodydetalle").innerHTML="";
	document.getElementById("bodydetalle").style.display='none'
	console.log(vGtam)
	

	// Asignar el tamaño al formulario
	const formElement = document.getElementById('formulario');
	if (formElement) {
    	//formElement.style.width = formWidth + 'px';
		formElement.style.width = vGtam;
    	//formElement.style.height = formHeight + 'px';
    	//formElement.style.overflow = 'auto'; // Añadir scroll si el contenido supera el tamaño asignado
	}

	document.getElementById("form-container").style.display='block'
	buscar(nmodulo,cId,cId,' ',1);

}