//var _URL_INGRESO = "/2021_itz/poa_local/";
var _HREF = "https://poa.zitacuaro.tecnm.mx/";
var _URL_INGRESO = "";
//var _HREF = "http://localhost:8888/2021_itz/poa_local/";

var _TOKEN_NGRS = document.getElementsByName("_token")[0].value;

$(document).ready(function() {
  $("#ngrs_confi"     ).click(function (e) { ngrs_confi();      });
  $("#ngrs_listado"   ).click(function (e) { ngrs_listado();    });
  $("#ngrs_repo_exa"  ).click(function (e) { ngrs_repo_exa();   });
  $("#ngrs_repo_socio").click(function (e) { ngrs_repo_socio(); });
  $("#ngrs_area"      ).click(function (e) { ngrs_area();       });
  
  //Solo deben de ser funciones temporales
  $("#ngrs_asig_temp" ).click(function (e) { ngrs_asig_temp();  });
  $("#ngrs_soci_temp" ).click(function (e) { ngrs_soci_temp();  });
  $("#ngrs_repo_temp" ).click(function (e) { ngrs_repo_temp();  });
  
  //funciones para publicar resultados
  $("#ngrs_cargar"  ).click(function (e) { ngrs_cargar();   });
  $("#ngrs_publicar").click(function (e) { ngrs_publicar(); });
});


//**********************************************
//                CONFIGURACION
//**********************************************

  function ngrs_confi(){
    mp();
    var titulo = "Configurar Examen Nuevo Ingreso";
    titulos(titulo, "");
    $.ajax({ url: _URL_INGRESO+'configuracion/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); init_SmartWizard(); init_dropZone(); })
    .fail(function() {  ae(titulo,'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function init_dropZone(){
    $("#dropzone_socio").dropzone({ 
      url: _URL_INGRESO+"import_socioeconomico", 
      headers: { 'X-CSRF-TOKEN':  _TOKEN_NGRS },  
      maxFiles:1,
      acceptedFiles:'.csv',
      dictMaxFilesExceeded: "Solo puedes subir un archivo",
      init: function() {
        var _this = this;

        this.on("sending", function(file, xhr, formData){
          var inicio = $("#socio_inicio").val();
          var cierre = $("#socio_cierre").val();
          var idConf = $("#peri-paso").val();
          
          if ( inicio=="" ) {
            ae("Examen Socioeconómico", "Selecciona la fecha de inicio");
            _this.removeAllFiles(true);   //para cancelar el envio de los archivos
          }
          if ( cierre=="" ) {
            ae("Examen Socioeconómico", "Selecciona la fecha de cierre");
            _this.removeAllFiles(true);
          }
          formData.append("inicio", inicio);
          formData.append("cierre", cierre);
          formData.append("idConf", idConf);
        });
        
        this.on("error", function(file, errorMessage ) {  
          var inicio = $("#socio_inicio").val();
          var cierre = $("#socio_cierre").val();

          if (inicio!="" && cierre!="") {
            ae('Configuración Examen Socioeconómico', errorMessage.message);   
          }
        });
        
        this.on("success", function(file, text) { 

          var resp = JSON.parse(text['message']);
          as('Alumnos', resp['mensaje']); 
          $("#soci-paso").val(resp['id']);
          $("#form-socioeconomico").html("");
          $("#form_socio").html("");
          $("#socio_respuesta").show().html(resp['vista']);

          upd_wizard_h();

        });

      }
    });
  }

  /*
  * va a guardar las preguntas del examen y 
  * retorna vista de configuracion
  */
  function init_dropZoneAreaConocimiento(id){
    $("#dropzone"+id).dropzone({ 
      url: _URL_INGRESO+"confi_examen", 
      headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS },  
      maxFiles:1,
      acceptedFiles:'.csv',
      dictMaxFilesExceeded: "Solo puedes subir un archivo",
      init: function() {
        var _this = this;
        
        this.on("sending", function(file, xhr, formData){
          
          var idConf = $("#peri-paso").val();
              formData.append("idConf", idConf);
              formData.append("idArea", _this.element.dataset.id);
        });
        
        this.on("error", function(file, errorMessage ) {  
          var inicio = $("#socio_inicio").val();
          var cierre = $("#socio_cierre").val();

          if (inicio!="" && cierre!="") {
            ae('Configuración Examen Socioeconómico', errorMessage.message);   
          }
        });
        
        this.on("success", function(file, text) { 

          var resp = JSON.parse(text['message']);
          console.log(resp);
          document.getElementById('exa_resp_'+_this.element.dataset.id).innerHTML = resp['vista'];
          $("#div_csv_"+_this.element.dataset.id).hide('slow');
          $("#btn_cancelar_"+_this.element.dataset.id).hide('slow');
          
          as('Alumnos', resp['mensaje']); 
          
          setTimeout(function() {
            init_dropZone_imagenes(resp['id']);
            valid_img();
            upd_wizard_h();
          }, 1000);
          

        });

      }
    });
  }

  function init_dropZone_imagenes(id){
    console.log("init_dropZone_imagenes");
    $("#dropzone_"+id).dropzone({ 
      url: _URL_INGRESO+"confi_xmn_img", 
      headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS },  
      maxFiles:50,
      acceptedFiles:'image/*',
      dictMaxFilesExceeded: "Puedes subir máximo 50 archivos juntos",
      addRemoveLinks: true,
      dictRemoveFile : "Eliminar archivo",

      removedfile(file) {
        console.log(file);
        if (file.previewElement != null && file.previewElement.parentNode != null) {
          file.previewElement.parentNode.removeChild(file.previewElement);
        }
        return this._updateMaxFilesReachedClass();
      },

      init: function() {
        var _this = this;

        this.on("sending", function(file, xhr, formData){
          formData.append("idExamenIngreso", id);
          formData.append("idConfi", $("#peri-paso").val());
        });
        
        this.on("error", function(file, errorMessage ) {  
          
          var resp = JSON.parse(errorMessage.message);
          
          var elem = file.previewTemplate.querySelectorAll('span');
              elem[elem.length-1].innerHTML = resp['mensaje'];
              elem[elem.length-1].style.top = '145';


          
          ae('Imagenes Examen', resp['mensaje']);   
          /*var inicio = $("#socio_inicio").val();
          var cierre = $("#socio_cierre").val();

          if (inicio!="" && cierre!="") {
            ae('Configuración Examen Socioeconómico', errorMessage.message);   
          }*/
        });
        
        this.on("success", function(file, text) { 

          /*var resp = JSON.parse(text['message']);
          as('Alumnos', resp['mensaje']); 
          $("#soci-paso").val(resp['id']);
          $("#form-socioeconomico").html("");
          $("#form_socio").html("");
          $("#socio_respuesta").show().html(resp['vista']);*/

          upd_wizard_h();

        });

      }
    });
  }

  function valid_img(){
    var imgs = document.getElementsByClassName('img_exa');
    if (imgs.length>0) {
      for (var i = 0; i < imgs.length; i++) {
        if (imgs[i].naturalHeight==0) {
          imgs[i].parentNode.innerHTML = "";
        }
      }
      valid_img();
    } else {
      $("#msj_no_img").show('slow');
    }
      
  }

  function init_SmartWizard() {

    $('#wizard').smartWizard({
      labelNext:'Siguiente', // label for Next button
      labelPrevious:'Regresar', // label for Previous button
      labelFinish:'Terminar',  // label for Finish button   

      onLeaveStep: validar, // triggers when leaving a step
      onShowStep: null,  // triggers when showing a step
      onFinish: null,  // triggers when Finish button is clicked       
    });

    $('.buttonNext').addClass('btn btn-success');
    $('.buttonPrevious').addClass('btn btn-primary');
    $('.buttonFinish').addClass('btn btn-default');

  };

  function validar(obj, context){
    //console.log("Leaving step " + context.fromStep + " to go to step " + context.toStep);
    var nom_step = "";
    var paso = true;

    switch (context.fromStep) {
      case 1: nom_step="periodo";       paso = $("#peri-paso").val()!="" ? true : false; break;
      case 2: nom_step="socioeconomico";paso = $("#soci-paso").val()!="" ? true : false;  break;
      case 3: nom_step="examen";        paso = false;  break; 
      case 4: nom_step="asignacion";    paso = false;  break;
      case 5: nom_step="alumnos";       paso = $("#alum-paso").val()!="" ? true : false;  break;
      case 6: nom_step="mensajes";      paso = $("#mens-paso").val()!="" ? true : false;  break;
      default: ae("Configurar Examen Nuevo Ingreso", "Error al validar el step en que se encuentra."); return; break;
    }

    if (paso) { // no hagas nada y sigue el proceso
      return true; 
    } else { // return false to stay on step and true to continue navigation 
      return validateSteps(nom_step);  
    }
    
  }

  function update_confi(){
    console.log("Falta validar que la fecha de inicio sea menor que la fecha de cierre");
    mp();
    var form = document.querySelector("#form-nuevo");
    var titulo = "Configurar Fechas de Examen";
        
    if (form.elements['fecha_inicio'].value=="") { //no avanza
      ae(titulo,'Selecciona una fecha de inicio'); op(); return;
    }
    if (form.elements['fecha_cierre'].value=="") { //no avanza
      ae(titulo,'Selecciona una fecha de cierre'); op(); return;
    } 

    $.ajax({ url: _URL_INGRESO+'configuracion/'+form.elements['peri-paso'].value, 
      headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, 
        data: { 
          fecha_inicio: form.elements['fecha_inicio'].value,
          fecha_cierre: form.elements['fecha_cierre'].value
        }, type: 'PUT', dataType: 'json'
      })
      .done(function(json) { 
        $("#xmn_form_areas").show();
        $("#btn_xmn_upd_fecha").hide();
        upd_wizard_h();

        console.log(json);
        if (json['estado']=='exito') {
          as(titulo, json['mensaje']);
          form.elements['fecha_inicio'].disabled = true;
          form.elements['fecha_cierre'].disabled = true;
        } else {  ae(titulo,'Ocurrió un error.'); }
      })
      .fail(function() { ae(titulo,'Ocurrió un error.'); })
      .always(function() { tp(); op(); });
  }


  // Your Step validation logic
  function validateSteps(stepname){
    var isStepValid = true;
    var form = document.querySelector("#form-nuevo");
    var titulo;

    switch (stepname) {
      case "periodo":
        titulo = "Configurar Periodo";
        
        if (form.elements['periodo'].value=="") { //no avanza
          ae(titulo,'Selecciona un periodo'); op();
          isStepValid = false;
          console.log("Step valid: " + isStepValid);
        } else { //guarda

          $.ajax({ url: _URL_INGRESO+'configuracion', headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, 
            data: { periodo: form.elements['periodo'].value }, type: 'POST', dataType: 'json', async: false
          })
          .done(function(json) { 
            console.log(json);
            if (json['estado']=='exito') {
              as(titulo, json['mensaje']);
              form.elements['periodo'].disabled = true;
              $("#peri-paso").val(json['id']);
            } else {  ae(titulo,'Ocurrió un error.'); isStepValid = false; }
          })
          .fail(function() { ae(titulo,'Ocurrió un error.'); isStepValid = false; })
          .always(function() { tp(); op(); });

        }    
        
        break;
      case "socioeconomico":
        //validar si esta seleccionado el check para capturar el xamen en la base de datos 
        //para ese periodo y mostrar las preguntas que se registraron con las fechas seleccionadas

        var idSoc = $("#soci-paso").val();
            titulo = "Configurar Examen Socioeconómico";

        if (idSoc=="") {
          var chk = document.getElementById('reutilizar');
          if (chk && chk.checked) {

            if (form.elements['socio_periodo'].value=="") { //no avanza
              ae(titulo,'Selecciona un periodo en que se aplico el examen'); op();
              isStepValid = false;
            } else if (form.elements['socio_inicio'].value=="") { //no avanza
              ae(titulo,'Selecciona la fecha de inicio'); op();
              isStepValid = false;
            } else if (form.elements['socio_cierre'].value=="") { //no avanza
              ae(titulo,'Selecciona la fecha de cierre'); op();
              isStepValid = false;
            } else {
              //enviar a duplicar el examen seleccionado pero para este periodo
              $.ajax({ url: _URL_INGRESO+'socioeconomico', headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, data: { 
                  idConf: form.elements['peri-paso'].value, 
                  sociop: form.elements['socio_periodo'].value, 
                  inicio: form.elements['socio_inicio'].value, 
                  cierre: form.elements['socio_cierre'].value, 
                }, type: 'POST', dataType: 'json', async: false
              })
              .done(function(json) { 
                console.log(json);
                if (json['estado']=='exito') {
                  as('Examen Socioeconomico', json['mensaje']); 
                  $("#soci-paso").val(json['id']);
                  $("#form-socioeconomico").html("");
                  $("#form_socio").html("");
                  $("#socio_respuesta").show().html(json['vista']);
                } else {  ae(titulo,'Ocurrió un error.'); }
                isStepValid = false;
              })
              .fail(function() { ae(titulo,'Ocurrió un error.'); isStepValid = false; })
              .always(function() { tp(); op(); });
            }

              
          }
        }

        break;
      case "examen":

        var $areas_existen = $(".encabezados");
        var $areas_captura = $(".btn-collapse");
        var $exam_captura  = $(".examen_cargado");
        var total = 0; //total de reactivos disponibles por examen

        //fechas seleccionadas
        if ($("#btn_xmn_upd_fecha").css('display')!='none') {
          ae('Examen de Admisión', 'Por favor configura las fechas de aplicación del examen.');
          isStepValid = false;

        //csv de examen cargado
        } else if ( $exam_captura.length==0 ) {
          ae('Examen de Admisión', 'Para continuar en necesario capturar mínimo un examen completo.');
          isStepValid = false;

        } else if ($areas_captura.length!=$exam_captura.length) {
          ae('Examen de Admisión', 'Un examen por área de conocimiento aun falta de ser capturado.');
          isStepValid = false;
        } else {

          console.log('validar aqui que aun no le falten imagenes por capturar');  

          $(".jpk").show();

          //Ocultando las area de conocimiento que no se capturaron en asignacion
          $.each( $areas_existen, function(index_e, elem_e) {            
            var bandera = "_NO";
            $.each( $areas_captura, function(index_c, elem_c) {
              //compara si se capturo el examne de esa area en especifico
              if (elem_e.classList.contains('asig_'+elem_c.dataset.id)) { 
                bandera="_SI"; 
                
                var total_ac = $("#exa_usar_"+elem_c.dataset.id).data('total')*1;

                $(".ac_asig_"+elem_c.dataset.id).html(total_ac+" /");
                $(".ac_asig_"+elem_c.dataset.id).data('aciertos', total_ac);
                $(".txt_asig_"+elem_c.dataset.id).val(total_ac);

              }
            });
            if (bandera=="_NO") { 
              //recorre las clases para encontrar la que no se capturo el examen para ocultarla
              var c = elem_e.classList;
              for (var i = 0; i < c.length; i++) {
                if ( c[i].includes('asig_') ) { $("."+c[i]).hide('slow'); }
              }
            }
            bandera = "_NO";
          });

          //sumando todos los reactivos para saber cuantos tienen qe contestar por carrera
          $.each($exam_captura, function(index, elemento) { total = total + parseInt(elemento.dataset.total); });
          $(".ac_total").html(total+" /");
          
        }
          
        break;
      case "asignacion":

        var asignaciones = [];
        var aciertos = [];
        
        $.each($(".chk:checked"), function(index, element) {
          var clases = element.classList;
          for (var i = 0; i < clases.length; i++) {
            if (clases[i].includes('cuadrito_')) {
              //separar la clase cuadrito_1_2
              //donde 1 es el id del area  posicion 1 y 2 es el id de la carrera posocion 2
              var v_ids = clases[i].split("_");
              var n_ac  = $("."+clases[i]).first().find('.cuadrito').val();
              asignaciones.push({ "idArea":v_ids[1], "idCarrera":v_ids[2], "aciertos":n_ac });
            }
          }
        });
        if (asignaciones.length==0) { ae('Asignación', 'Por favor, asigna el examen a las carreras, de otra forma no les aparecerá el examen.' ); }
        asignaciones = JSON.stringify(asignaciones);
        
        $.each($(".ac_carrera"), function(index, elemento) {
          var idCarrera = elemento.dataset.idcarrera;
          var n_aciertos = elemento.value;
              if (n_aciertos=="") { n_aciertos='0'; } //y se debe de ignorar
          var total_reac = $(".ac_carrera_"+idCarrera).html();
              total_reac = total_reac.split(" ");
              total_reac = total_reac[0];

          aciertos.push({ "idCarrera":idCarrera, "aciertos":n_aciertos, "total":total_reac });
        });
        aciertos = JSON.stringify(aciertos);

        $.ajax({
          url: _URL_INGRESO+'asignar', type: 'POST', dataType: 'json',
          headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS },
          data: {'asignaciones':asignaciones, 'aciertos':aciertos, 'idConfi': $("#peri-paso").val() },
        })
        .done(function(json) {
          console.log(json);
        })
        .fail(function() { console.log("error"); })
        .always(function() { console.log("complete"); });
        
        

        break;
      case "alumnos":
        
        break;
      case "mensajes":
        
        break;
      default:
        isStepValid = false;
        break;
    }
    console.log("Step valid: " + isStepValid);
    return isStepValid;
  
  }


//**********************************************
//          ENCUESTA SOCIOECONOMICA
//**********************************************
  //Muestra u oculta form para cargar examen nuevo socioeconomico
  function form_socio(elem){
    if (elem.checked) { $("#form_socio").hide('slow'); } else { $("#form_socio").show('slow'); }
    upd_wizard_h();
  }

  /* Descarga excel de examen socio del periodo seleccionado */
  function exa_socio_ant_exportar(){
    var periodo = $("#socio_periodo").val();
    if (periodo!="") {
      window.open(_HREF + 'socio/export?periodo='+periodo, '_blank');
    } else {
      ae('Examen Socioeconómico', "Selecciona un periodo"); 
    }
  }

  function ngrs_repo_socio(){
    mp();
    titulos("Encuesta Socioeconómica", "Reporte");
    $.ajax({ url: _URL_INGRESO+'socioeconomico', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae("Encuesta Socioeconómica",'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ngrs_repo_socio_filtro(pagina){
    /*mp();
    magia_datalist('deptos', 'filtro_departamento', 'filtro_departamento_nombre');

    titulos("Requisiciones de Bienes y Servicios", "")
    $.ajax({ 
      url: _URL_POA+'requisicion/filtro?page='+pagina, type: 'POST', dataType: 'html', data: $("#filtro_requisicion").serialize(), 
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(vista) {  $("#contenedor").html(vista); paginar('requi_listado_filtro'); })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });*/
  }

  function ngrs_repo_socio_filtro_exportar(){
    var periodo = $("#socio_periodo").val();
    if (periodo!="") {
      window.open( _HREF + 'socio/result?'+$("#filtro_socio").serialize(), '_blank');
    
    } else {
      ae('Examen Socioeconómico', "Selecciona un periodo"); 
    }
  }

//FIN ENCUESTA SOCIOECONOMICA



//**********************************************
//          EXAMEN DE ADMISIÓN
//**********************************************
  function ngrs_repo_exa(){
    mp();
    var titulo = "Examen de Admisión";
    titulos(titulo, "Reporte");
    $.ajax({ url: _URL_INGRESO+'confi_examen', type: 'GET', dataType: 'html', })
    .done(function(vista) {  
      $("#contenido_principal").html(vista);  
      paginar('ngrs_repo_exa_filtro');
    })
    .fail(function() {  ae(titulo,'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ngrs_repo_exa_filtro(pagina){
    mp();
    magia_datalist('carrera', 'filtro_carrera', 'filtro_carrera_nombre');

    titulos("Examen de Admisión", "");
    $.ajax({ 
      url: _URL_INGRESO+'confi_examen/filtro?page='+pagina, type: 'POST', dataType: 'html', 
      data: $("#filtro_exa").serialize(), 
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(vista) {  $("#contenedor").html(vista); paginar('ngrs_repo_exa_filtro'); })
    .fail(function() {  ae('Examen de Admisión','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  //funcion para descargar excel con respuestas
  function ngrs_download_respuestas(folio){
    window.open(_HREF + 'respuestas/export/'+folio, '_blank');
  }

  /*
    borrar si nadie se ha quejado
  function ngrs_repo_exa_filtro_exportar(){
    var periodo = $("#socio_periodo").val();
    if (periodo!="") {
      window.open(_HREF + 'socio/export?'+$("#filtro_pagos").serialize(), '_blank');
    } else {
      ae('Examen Socioeconómico', "Selecciona un periodo"); 
    }
  }*/

  function ngrs_repo_exa_filtro_exportar(){
    magia_datalist('carrera', 'filtro_carrera', 'filtro_carrera_nombre');
    //var s = $("#filtro_servicios").val();
    var datos = $("#filtro_exa").serialize();
        //datos+="&filtro_servicios="+s;
    window.open(_HREF + 'confi_examen/export?'+datos, '_blank');
  }

  /* Descarga excel de examen de admision del periodo seleccionado */
  function exa_ant_exportar(){
    var periodo = $("#exa_periodo").val();
    var area    = $("#exa_area").val();
    if (periodo!="") {
      window.open(_HREF + 'admision/export?periodo='+periodo+'&area='+area, '_blank');
    } else {
      ae('Examen de Admisión', "Selecciona un periodo"); 
    }
  }

  //cuando cambia select de area de conocimiento, 
  //va a buscar si ya existe un examen anterior para mostrarlo
  //y ya sea q lo descargue o lo pueda usar 
  function busca_periodo(){
    mp();
    var area = $("#exa_area").val();

    if (periodo!="") {
      $.ajax({
        url: _URL_INGRESO+'confi_examen/periodo', type:'GET', dataType:'json', data:{'idArea':area},
      })
      .done(function(json) {
        if(json.length>0){
          var $select = $("#exa_periodo").html('<option value>.:Seleccione:.</option>');

          $.each(json, function(index, elemento) {
             $select.append("<option value='"+elemento['idPeriodo']+"'>"+elemento['periodo']+"</option>");
          });

          $("#div_consulta").show('slow');
          $("#div_btn_usar").show('slow');
          $("#div_btn_descargar").show('slow');

        } else {
          $("#div_consulta").hide('slow');
          $("#div_btn_usar").hide('slow');
          $("#div_btn_descargar").hide('slow');
        } 
          
      })
      .fail(function() { console.log("error"); })
      .always(function() { console.log("complete"); op(); });
    
    } else {
      $("#div_consulta").hide('slow');
      $("#div_btn_usar").hide('slow');
      $("#div_btn_descargar").hide('slow');
    }
  }

  function exa_reutilizar(){
    console.log('falta duplicar las imagenes carpeta, ruta no se');
    mp();

    var area = $("#exa_area").val();
    var periodo = $("#exa_periodo").val();
    var idConfi = $("#peri-paso").val();
    var titulo = "Examen de Admisión";

    if (area!="") {
      if (periodo!="") {

        $("#div_btn_usar").hide('slow');
        generar_collapse_vacio();

        $.ajax({ 
          url: _URL_INGRESO+'confi_examen/reusar', 
          headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, 
          data: { 'area':area, 'periodo':periodo, 'confi':idConfi }, 
          type: 'POST',
          dataType: 'json'
        })
        .done(function(json) { 
          document.getElementById('exa_resp_'+area).innerHTML = json['vista'];
          as('Examen de Admisión', json['mensaje']); 
          
          setTimeout(function() {
            init_dropZone_imagenes(json['id']);
            valid_img();
            upd_wizard_h();
          }, 1000);
        })
        .fail(function() { ae(titulo,'Ocurrió un error.'); isStepValid = false; })
        .always(function() { tp(); op(); });        

      } else { ae('Examen', 'Selecciona un periodo anterior de aplicación.'); op(); }
    } else { ae('Examen', 'Selecciona un area de conocimiento.'); op(); }
  }

  //Generar un nuevo acorden para el area de conocimiento seleccionada
  //validar q no exista, antes de generarlo,
  function generar_collapse_vacio(){
    var $btns = $("#exa_btn_area");
    var area = document.getElementById('exa_area');
    var text = area.options[area.selectedIndex].text; //texto del option seleccionado

    if (area.value!="") {
      if ($btns.find("."+area.value).length==0) {
        hide_collapse();

        $btns.append("<button class='btn btn-info btn-sm btn-collapse " + area.value + 
          "' type='button' data-toggle='collapse' data-target='#collapse_" + area.value + 
          "' aria-expanded='false' aria-controls='" + area.value + "' onclick='upd_wizard_h();hide_collapse(this);' id='btn-area-" + area.value + "' data-id='" + area.value + "'>" + text + 
        "</button>");

        $("#exa_form_area").append(
          "<div class='row' id='div-area-" + area.value + "'>"+
            "<div class='col'>"+
              "<div class='collapse show multi-collapse' id='collapse_" + area.value + "'>"+
                "<div class='card card-body'>"+
                  "<div class='row'>"+
                    "<div class='col-md-10 col-sm-10 text-center'><h2>Área de conocimiento - " + text + "</h2></div>"+
                    /*"<div class='col-md-2 col-sm-2 text-rigth'><button type='button' class='btn btn-outline-danger btn-sm' onclick='delete_collapse(" + area.value + ")' id='btn_cancelar_" + area.value +"'>Cancelar</button></div>"+*/
                  "</div>"+
                  /*este se poculta  
                  "<div id='div_csv_"+ area.value +"'>"+
                    "<div class='row'>"+
                      "<div class='col-md-2 col-sm-12'></div>"+
                      "<div class='col-md-8 col-sm-12'>"+
                        "<div class='form-group'>"+
                          
                          "<form action='#' id='dropzone" + area.value + "' class='dropzone' style='min-height: 150px;' data-id='" + area.value + "'>"+
                            "<div class='dz-message' data-dz-message>"+
                              "<span>Arrastra o selecciona un archivo para subirlo</span>"+
                            "</div>"+
                          "</form>"+
                        "</div>"+
                      "</div>"+
                    "</div>"+
                  "</div>"+*/

                  "<div id='exa_resp_" + area.value + "'></div>"+
                "</div>"+
              "</div>"+
            "</div>"+
          "</div>");
        
        upd_wizard_h();
        init_dropZoneAreaConocimiento(area.value);

      } else {
        ae("Examen", "Esa área de conocimiento ya fue agregada anteriormente.");
      }
      
      
    } else {
      ae("Examen", "Selecciona un área de conocimiento");
    }
  }

  //cuando se esta configurando un examen nuevo del area de conocimiento, 
  //antes de finalizar, la configuracion se puede borrar
  function eliminar_examen(idExamen, idArea){
    mp();
    $.ajax({
      url: _URL_INGRESO+'confi_examen/'+idExamen, 
      type: 'DELETE',
      dataType: 'JSON',
      headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, 
    })
    .done(function(json) {
      if (json['estado']=='exito') {
        delete_collapse(idArea);
        upd_wizard_h();
      }
    })
    .fail(function() {  })
    .always(function() { op(); });
    
  }

//FIN EXAMEN DE ADMISIÓN

  //Generar un nuevo acorden para el area de conocimiento seleccionada
  //validar q no exista, antes de generarlo,
  //o quitar del select ese valor
  function generar_collapse(){
    var $btns = $("#exa_btn_area");
    var area = document.getElementById('exa_area');
    var text = area.options[area.selectedIndex].text; //texto del option seleccionado

    if (area.value!="") {
      if ($btns.find("."+area.value).length==0) {
        hide_collapse();

        $btns.append("<button class='btn btn-info btn-sm btn-collapse " + area.value + 
          "' type='button' data-toggle='collapse' data-target='#collapse_" + area.value + 
          "' aria-expanded='false' aria-controls='" + area.value + "' onclick='upd_wizard_h();hide_collapse(this);' id='btn-area-" + area.value + "' data-id='" + area.value + "' >" + text + 
        "</button>");

        $("#exa_form_area").append(
          "<div class='row' id='div-area-" + area.value + "'>"+
            "<div class='col'>"+
              "<div class='collapse show multi-collapse' id='collapse_" + area.value + "'>"+
                "<div class='card card-body'>"+
                  "<div class='row'>"+
                    "<div class='col-md-10 col-sm-10 text-center'><h2>Área de conocimiento - " + text + "</h2></div>"+
                    "<div class='col-md-2 col-sm-2 text-rigth'><button type='button' class='btn btn-outline-danger btn-sm' onclick='delete_collapse(" + area.value + ")' id='btn_cancelar_" + area.value +"'>Cancelar</button></div>"+
                  "</div>"+

                  "<div id='div_csv_"+ area.value +"'>"+
                    "<div class='row'>"+
                      "<div class='col-md-2 col-sm-12'></div>"+
                      "<div class='col-md-8 col-sm-12'>"+
                        "<div class='form-group'>"+
                          
                          "<form action='#' id='dropzone" + area.value + "' class='dropzone' style='min-height: 150px;' data-id='" + area.value + "'>"+
                            "<div class='dz-message' data-dz-message>"+
                              "<span>Arrastra o selecciona un archivo para subirlo</span>"+
                            "</div>"+
                          "</form>"+
                        "</div>"+
                      "</div>"+
                    "</div>"+
                  "</div>"+

                  "<div id='exa_resp_" + area.value + "'></div>"+
                "</div>"+
              "</div>"+
            "</div>"+
          "</div>");
        
        upd_wizard_h();
        init_dropZoneAreaConocimiento(area.value);
        $("#div_btn_usar").hide('slow');

      } else {
        ae("Examen", "Esa área de conocimiento ya fue agregada anteriormente.");
      }
      
      
    } else {
      ae("Examen", "Selecciona un área de conocimiento");
    }
  }

  function delete_collapse(id){
    //muestra u oculta el boton para usar examen anterior
    var select = $("#exa_area").val();
    if (select!="") { $("#div_btn_usar").show('slow'); }

    $("#btn-area-"+id).remove();
    $("#div-area-"+id).remove();


  }

  function upd_wizard_h(){
    setTimeout(() => {  $("#wizard").smartWizard('fixHeight');  }, 300); //tarda .3 segundos
  }

  function hide_collapse(btn = null){
    $(".collapse").collapse('hide');
    $(".btn-collapse").removeClass('btn-info');
    $(".btn-collapse").addClass('btn-outline-info');
   
    if (btn) { console.log(btn.classList);
      btn.classList.add('btn-info');
      btn.classList.remove('btn-outline-info');  
    }
    
  }

  //habilita o deshabilita input para numero de preguntas a aplicar por examen por carrera
  function chk_asignacion(elem, clase){
    console.log(elem);
    console.log(elem.checked);
    console.log(clase);
    console.log($("."+clase).first().find('.cuadrito'));
    if (elem.checked) {
      $("."+clase).first().find('.cuadrito').removeAttr('disabled');
    } else {
      $("."+clase).first().find('.cuadrito').attr('disabled', 'disabled');
    }
  }

  //suma los reactivos de cada examen para mostrarlos en no ac acreditar
  function aciertos(idRenglon){
    var lbl_ac = $("#"+idRenglon).find('.ac_total');
    var inputs = $("#"+idRenglon).find("td.jpk");
    var total = 0; //numero posibles de reactivos a contestar

    $.each(inputs, function(index, elemento) {
      if ( elemento.style.display!="none" ) {
        var npt = elemento.querySelector('.cuadrito');
        if (!npt.disabled) {
          total = total + parseInt(npt.value);
        }
      }
    });
    $("#"+idRenglon).find(".ac_total").first().html(total + " /");
  }


//FIN CONFIGURACION


//**********************************************
//             ASIGNACION TEMPORAL
//**********************************************
  /**
   * muestra el formulario solo para los examene configurados del 2022-2
   * @return {[type]} [description]
   */
  function ngrs_asig_temp(){
    mp();
    var titulo = "CARRERAS EXAMANES";
    titulos(titulo, "");
    $.ajax({ url: _URL_INGRESO+'temp_asig/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae(titulo,'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }
  /**
   * manda al servidor los datos para guardar
   * no esta validado, nada
   * @param {[type]} form [description]
   */
  function add_asig_temp(form){
    mp();
    $.ajax({ url: _URL_INGRESO+'temp_asig/add', type: 'POST', dataType: 'html', 
      headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, 
      data: { 'carrera': form.carrera.value, 'examen': form.examen.value },
    })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae(t,'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ngrs_repo_temp(){
    mp();
    $.ajax({ url: _URL_INGRESO+'temp_exa/reporte', type: 'GET', dataType: 'html', 
      headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }
    })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae(t,'Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }


  //**********************************************
//             CORREO SOCIOECONOMICO
//**********************************************
  /**
   * MUESTRA LISTA DE ASPIRANTES REGISTRADOS
   * @return {[type]} [description]
   */
  function ngrs_soci_temp(){
    mp();
    var titulo = "Correo Encuesta Socioeconómica";
    titulos(titulo, "");
    $.ajax({ url: _URL_INGRESO+'temp_socio/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae(titulo,'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }
  /**
   * envia correo de forma masiva a cada aspirante
   * @param {[type]} form [description]
   */
  function ngrs_socio_enviar(){
    mp();
    $.ajax({ url: _URL_INGRESO+'temp_socio/enviar', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae("Encuesta Socioeconómica",'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }


//**********************************************
//             AREAS DE CONOCIMIENTO
//**********************************************

  function ngrs_area(){
    mp();
    var titulo = "Áreas de Conocimiento";
    titulos(titulo, "");
    $.ajax({ url: _URL_INGRESO+'areas/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae(titulo,'Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function add_area(form){
    mp();
    var t = "Áreas de Conocimiento";
    titulos(t, "");

    if (!form.checkValidity()) {
      ae(t,'Llena todos los campos'); op();
    } else {

      $.ajax({ url: _URL_INGRESO+'areas', type: 'POST', dataType: 'html', 
        headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, 
        data: { nombre: form.elements['nueva_area'].value },
      })
      .done(function(vista) {  $("#contenedor").html(vista); })
      .fail(function() {  ae(t,'Ocurrió un error.');  })
      .always(function() {  tp(); op(); });

    }    
  }

  function edit_area(id, nombre){
    var titulo;
    var cuerpo;
    var boton;

    titulo = "Editar Área de Conocimiento";
    cuerpo =  "<form id='form-upd'>"+
                "<div class='row'>"+
                  "<div class='col'>"+
                    "<label>Área de conocimiento:</label>"+
                  "</div>"+
                  "<div class='vw-100'></div>"+
                  "<div class='col'>"+
                    "<div class='form-group'>"+
                      "<input type='hidden' value='"+id+"' id='id_area' name='id_area'>"+
                      "<input type='text' class='form-control form-control-sm' placeholder='Ej. Matemáticas' value='"+nombre+"' id='new_nombre' name='new_nombre' required>"+
                    "</div>"+
                  "</div>"+
                "</div>"+
              "</form>";
    boton = "<input type='button' class='btn btn-success' onclick='upd_area(this.form);' form='form-upd' value='Actualizar'>";
    modal_mediano(titulo, cuerpo, boton);

  }

  function upd_area(form){
    mmo(); mp();
    var t = "Áreas de Conocimiento";

    if (!form.checkValidity()) {
      ae(t,'Llena todos los campos'); op();
    } else {

      $.ajax({ url: _URL_INGRESO+'areas/'+form.elements['id_area'].value, type: 'PUT', dataType: 'html', 
        headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS }, 
        data: { nombre: form.elements['new_nombre'].value },
      })
      .done(function(vista) {  $("#contenedor").html(vista); })
      .fail(function() {  ae(t,'Ocurrió un error.');  })
      .always(function() {  tp(); op(); });

    }    
  }


  
//FIN AREAS DE CONOCIMIENTO

//web service de resultados para inge dario
function ws(){
  $.ajax({
    url: _URL_INGRESO+'resultado',
    type: 'get',
    dataType: 'json',
    //data: {'no_solicitud': '3442', 'password': '6E7896'},
    data: {'no_solicitud': '3412', 'password': '4AD4DC'},
  })
  .done(function(json) {
    console.log(json);
    console.log("success");
  })
  .fail(function() {
    console.log("error");
  })
  .always(function() {
    console.log("complete");
  });
  
}


//**********************************************
//             Publicar resultados
//**********************************************
/*
 * funcion para mostrar formulario para subir excel con 
 * no. solicitud, aceptado 1/0
 */
function ngrs_cargar(){
  mp();
  var titulo = "Publicación de resultados";
  titulos(titulo, "Aceptados");
  $.ajax({ url: _URL_INGRESO+'resultados/create', type: 'GET', dataType: 'html', })
  .done(function(vista) {  
    $("#contenido_principal").html(vista);  
    $(".dropzone").dropzone({ 
      url: _URL_INGRESO+"resultados", 
      headers: { 'X-CSRF-TOKEN':  _TOKEN_NGRS },  
      maxFiles:1,
      acceptedFiles:'.xlsx',
      dictMaxFilesExceeded: "Solo puedes subir un archivo",
      init: function() {
        this.on("error", function(file, errorMessage ) {  ae(titulo, errorMessage.message); ngrs_cargar(); });
        this.on("success", function(file, text) { as(titulo, 'Importanción Exitosa'); });
      }
    });

  })
  .fail(function() {  ae(titulo,'Ocurrió un error.');  })
  .always(function() {  tp(); op(); });
}


/**
 * funcion que muestra el listado de los periodos para 
 * consultar los resultados solo de ese periodo
 */
function ngrs_publicar(){
  mp();
  var titulo = "Publicación de resultados";
  titulos(titulo, "Reporte");
  $.ajax({ url: _URL_INGRESO+'resultados', type: 'GET', dataType: 'html', })
  .done(function(vista) {  
    $("#contenido_principal").html(vista);  
    init_switch();
  })
  .fail(function() {  ae(titulo,'Ocurrió un error.');  })
  .always(function() {  tp(); op(); });
}

/**
 * funcion para guardar periodo de fechas para configuracion de 
 * publicacion de resultados
 */
function ngrs_publicar_validar(id){
  mp();
  var bandera = 'apagar';
  var titulo = "Publicación de resultados";

  if( $("#chk_9")[0].checked ){ bandera='encender'; }
  titulos(titulo, "Reporte");
  
  $.ajax({ url: _URL_INGRESO+'resultados/'+id, type: 'PUT', dataType: 'json', 
    headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS },
    data: { 'bandera':bandera }, 
  })
  .done(function(json) {
    if (json['estado']=='exito') { as(titulo, 'Cambios realizados con éxito'); } 
    else { ae(titulo, 'Error al realizar los cambios');  }
    ngrs_publicar();
  })
  .fail(function() {  ae(titulo,'Ocurrió un error.');  })
  .always(function() {  tp(); op(); });

}

/**
 * vista para mostrar los periodos en loq e se ha realizado examen 
 * para mostrar u ocultar modal de resultados en la pagina de la escuela
 */
function ngrs_confi_mensajes(idConfi){
  mp();
  var titulo = "Publicación de resultados";
  titulos(titulo, "Reporte");
  $.ajax({ url: _URL_INGRESO+'msj/resultados', type: 'GET', dataType: 'html', data: { 'idConfi': idConfi },  })
  .done(function(vista) {  
    $("#contenido_principal").html(vista); 

    show_etiquetas('aceptado');
    show_etiquetas('rechazado');

    vista_previa(document.getElementById('aceptado'));
    vista_previa(document.getElementById('rechazado'));
  })
  .fail(function() {  ae(titulo,'Ocurrió un error.');  })
  .always(function() {  tp(); op(); });
}

function show_etiquetas(id){
  var elemento = $("#" + id).html();

  elemento = elemento.replaceAll('{nombre}', document.getElementById('nombre').outerHTML );
  elemento = elemento.replaceAll('{paterno}', document.getElementById('paterno').outerHTML );
  elemento = elemento.replaceAll('{materno}', document.getElementById('materno').outerHTML );
  elemento = elemento.replaceAll('{sexo}', document.getElementById('sexo').outerHTML );
  elemento = elemento.replaceAll('{carrera}', document.getElementById('carrera').outerHTML );
  elemento = elemento.replaceAll('{correo}', document.getElementById('correo').outerHTML );
  elemento = elemento.replaceAll('{aciertos}', document.getElementById('aciertos').outerHTML );
  elemento = elemento.replaceAll('{reactivos}', document.getElementById('reactivos').outerHTML );

  $("#" + id).html(elemento);
}

/**
 * el id puede ser aceptado o rechazado
 * @return {[type]}    [description]
 */
function valida_posicion(id){
  var actual = document.getElementById(id);
  
  if (id=='aceptado') {
    var otro = document.getElementById('rechazado');  
  } else {
    var otro = document.getElementById('aceptado');  
  }
  
  actual.dataset.inicio = actual.selectionStart;
  actual.dataset.fin = actual.selectionEnd;
  
  actual.dataset.activo = "true";
  otro.dataset.activo = "false";
}

function add_etiqueta(tipo){
  var activo = "";
  if (document.getElementById('aceptado').dataset.activo=="true") {
    activo = $('#aceptado');
  } else {
    activo = $('#rechazado');
  }

  activo.html("<span class='globito'>hola</span>");

}

function add_mensajes(){
  mp();
  var titulo = "Mensaje de Resultados";
  var aceptado  = $("#aceptado").html();
  var rechazado = $("#rechazado").html();

  var msj_aceptado = limpiar_mensaje( 'bd', aceptado);
  var msj_rechazado = limpiar_mensaje('bd', rechazado);
  var idConfi = $("#idConfi").val();

  if ($("#aceptado").text().trim().length <=0) { ae(titulo, 'Por favor, ingresa el mensaje de los aspirantes aceptados');  op(); return; }
  if ($("#rechazado").text().trim().length<=0) { ae(titulo, 'Por favor, ingresa el mensaje de los aspirantes rechazados'); op(); return; }
  
  $.ajax({
    url: _URL_INGRESO+'msj/resultados/add', type: 'POST', dataType: 'json',
    data: {msj_aceptado: msj_aceptado, msj_rechazado: msj_rechazado, idConfi: idConfi},
    headers: { 'X-CSRF-TOKEN': _TOKEN_NGRS },
  })
  .done(function(json) {
    if(json['estado']=='exito'){
      as(titulo, json['mensaje']);
      ngrs_publicar();
    } else {
      ae(titulo, "Ocurrio un error");
    }
  })
  .fail(function() { ae(titulo, "Ocurrio un error en el servidor"); })
  .always(function() { op(); });
  
}

/**
 * el tipo puede ser ['bd' => 'que son las etiquetas que se usan para almacenar as imagenes'
 *                    'vp' => 'que va a ser la vista previa del mensaje'] 
 * @return {[type]}      [description]
 */
function limpiar_mensaje(tipo, msj){
  var mensaje = msj;
  var mensaje_nuevo = "";
  var fin = 0;
  
  while (mensaje.indexOf('<img')>=0) { // si no encuentra nada sera -1, y si la cadena empieza con la etiqueta <img devolvera 0
    var fin = mensaje.indexOf('<img');

    //cortamos desde donde empieza la cadena hasta donde empieza la etiqueta de imagen
    mensaje_nuevo += mensaje.slice(0, fin);
    mensaje = mensaje.slice(fin);

    //buscamos la etiqueta de cierre de imagen
    fin = mensaje.indexOf('>');
    
    if (tipo=='bd') {
      mensaje_nuevo += busca_cadena( mensaje.slice(0, fin) );  
    } else { //va a ser la vista previa
      mensaje_nuevo += busca_cadena_datos( mensaje.slice(0, fin) );
    }
    
    mensaje = mensaje.slice(fin+1);

  }
  mensaje_nuevo+= mensaje;
  return mensaje_nuevo;
}

function busca_cadena(cad){
  if (cad.search('nombre')>0) {
    return "{nombre}";
  } else if (cad.search('paterno')>0) {
    return "{paterno}";
  } else if (cad.search('materno')>0) {
    return "{materno}";
  } else if (cad.search('sexo')>0) {
    return "{sexo}";
  } else if (cad.search('carrera')>0) {
    return "{carrera}";
  } else if (cad.search('correo')>0) {
    return "{correo}";
  } else if (cad.search('aciertos')>0) {
    return "{aciertos}";
  } else if (cad.search('reactivos')>0) {
    return "{reactivos}";
  }
  return "error";
}

function vista_previa(element){
  var cad = limpiar_mensaje('vp', element.innerHTML);
  $("#vp_"+element.id).html(cad);
}

function busca_cadena_datos(cad){
  if (cad.search('nombre')>0) {
    return "Dulce Caroll";
  } else if (cad.search('paterno')>0) {
    return "Peñaloza";
  } else if (cad.search('materno')>0) {
    return "Tello";
  } else if (cad.search('sexo')>0) {
    return "mujer";
  } else if (cad.search('carrera')>0) {
    return "Ingenieria en Sistemas Computacionales";
  } else if (cad.search('correo')>0) {
    return "caroll@gmail.com";
  } else if (cad.search('aciertos')>0) {
    return "54";
  } else if (cad.search('reactivos')>0) {
    return "60";
  }
  return "error";
}


/*
  Agrega las {nombre} asi en el text area
 */
/*function add_etiqueta(tipo){
  var activo = "";
  if (document.getElementById('aceptado').dataset.activo=="true") {
    activo = document.getElementById('aceptado');
  } else {
    activo = document.getElementById('rechazado');
  }
  


  if (activo.dataset.activo=='true'){

    if (activo.dataset.inicio==activo.dataset.fin) {
      var text_nuevo = "";
      var text = activo.value;
      var n = 2;
      var p1 = text.slice(0, activo.dataset.inicio);
      var p2 = text.slice(activo.dataset.inicio, activo.value.length);
      
      text_nuevo= p1;
      if (p1[p1.length-1] !=" ") { text_nuevo+=" "; n++; }
      text_nuevo+= "{" + tipo + "}";
      if (p2[0] !=" ") { text_nuevo+=" "; n++; }
      text_nuevo+= p2;
      activo.value = text_nuevo;
      activo.selectionStart = activo.dataset.inicio*1 + n + tipo.length ;
      activo.selectionEnd = activo.dataset.inicio*1 + n + tipo.length ;
      activo.focus();

      activo.dataset.activo="false";

    }
    
  }

  if(rechazado.dataset.activo=='true' ) {

  }
}*/




function resultados (){
  $.ajax({
    url: _URL_INGRESO+'ws/xm/result',
    type: 'POST',
    dataType: 'JSON',
    data: {solicitud: '1', password: '1234'},
  })
  .done(function(json) {
    console.log(json);
    console.log("success");
  })
  .fail(function() {
    console.log("error");
  })
  .always(function() {
    console.log("complete");
  });  
}






















