//var _URL_POA = "/2021_itz/poa_local/";
var _URL_POA = "";

$(document).ready(function() {
  $("#pta_subir").click(function(event) { pta_subir(); });
  $("#pta_listado").click(function(event) { pta_listado(); });
  $("#pta_cambio_clave").click(function(event) { pta_cambio_clave(); });
  $("#departamento_listado").click(function(event) { departamento_listado(); });
  $("#departamento_nuevo").click(function(event) { departamento_nuevo(); });
  $("#puesto_listado").click(function(event) { puesto_listado(); });
  $("#departamento_puesto_listado").click(function(event) { departamento_puesto_listado(); });
  $("#personal_listado").click(function(event) { personal_listado(); });
  $("#poa_subir_partida_normal").click(function(event) { poa_subir_partida_normal(); });
  $("#poa_subir_partida_restringida").click(function(event) { poa_subir_partida_restringida(); });
  $("#poa_limites").click(function(event) { poa_limites(); });
  $("#poa_consultar").click(function(event) { poa_consultar(); });
  $("#requi_listado").click(function(event) { requi_listado(); });
  $("#requi_nueva").click(function(event) { requi_nueva(); });
  $("#spr_listado").click(function(event) { spr_listado(); });
  $("#spr_nuevo").click(function(event) { spr_nuevo(); });
  $("#ia_temp_listado").click(function(event) { ia_temp_listado(); });
  $("#ia_temp_nueva").click(function(event) { ia_temp_nueva(); });
  $("#ea_temp_listado").click(function(event) { ea_temp_listado(); });
  $("#ea_temp_nueva").click(function(event) { ea_temp_nueva(); });

  $("#proveedor_listado" ).click(function(event) { proveedor_listado(); });
  $("#proveedor_nuevo"   ).click(function(event) { proveedor_nuevo();   });
  $("#catalogo_listado"  ).click(function(event) { catalogo_listado();  });
  $("#catalogo_nuevo"    ).click(function(event) { catalogo_nuevo();    });
  $("#seleccion_nueva"   ).click(function(event) { seleccion_nueva();   });
  $("#evaluacion_listado").click(function(event) { evaluacion_listado();});
  $("#evaluacion_nueva"  ).click(function(event) { evaluacion_nueva();  });

});

/* alert success */
function autorizar_firma(titulo, funcion){ 
    //mp();
    $('#modal-firma').modal('show');
    $("#modal-firma .modal-title").html(titulo);
    $("#modal-firma .modal-header").removeClass('bg-danger').removeClass('text-white').addClass('bg-green');
    $("#modal-firma .modal-body").html(
      "<form action=\"javascript:"+funcion+"\" method='POST' id='form-autorizar'>"+
        "<div class='row'>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
          "<div class='col-lg-10 col-md-10 col-sm-12 col-xs-12'>"+
            "<label for='pass'>Ingresa tu contraseña para autorizar: </label>"+
            "<input type='password' id='pass' name='pass' class='form-control' placeholder='* * * * *' required />"+
          "</div>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
        "</div>"+
      "<form>");
    $("#modal-firma .modal-footer").html("<button type='button' form='form-autorizar' class='btn btn-success' onclick=\"javascript:"+funcion+"\">Aceptar</button><button type='button' class='btn btn-dark' data-dismiss='modal'>Cancelar</button>");

    op();
}

function eliminar_firma(titulo, funcion){ 
    //mp();
    $('#modal-firma').modal('show');
    $("#modal-firma .modal-title").html(titulo);
    $("#modal-firma .modal-header").removeClass('bg-green').addClass('bg-danger text-white');
    $("#modal-firma .modal-body").html(
      "<form action=\"javascript:"+funcion+"\" method='POST' id='form-autorizar'>"+
        "<div class='row'>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
          "<div class='col-lg-10 col-md-10 col-sm-12 col-xs-12'>"+
            "<label for='pass'>Ingresa tu contraseña para confirmar: </label>"+
            "<input type='password' id='pass' name='pass' class='form-control' placeholder='* * * * *' required />"+
          "</div>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
        "</div>"+
      "<form>");
    $("#modal-firma .modal-footer").html("<button type='button' form='form-autorizar' class='btn btn-danger' onclick=\"javascript:"+funcion+"\">Aceptar</button><button type='button' class='btn btn-dark' data-dismiss='modal'>Cancelar</button>");

    op();
}

function autorizar_firma_comentario(titulo, funcion){ 
    //mp();
    $('#modal-firma').modal('show');
    $("#modal-firma .modal-title").html(titulo);
    $("#modal-firma .modal-header").removeClass('bg-danger').removeClass('text-white').addClass('bg-green');
    $("#modal-firma .modal-body").html(
      "<form action=\"javascript:"+funcion+"\" method='POST' id='form-autorizar'>"+
        "<div class='row'>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
          "<div class='col-lg-10 col-md-10 col-sm-12 col-xs-12'>"+
            "<label for='comentario'>Comentario: </label>"+
            "<textarea id='comentario' rows='3' name='comentario' class='form-control form-control-sm' style='resize:none;' placeholder='Puedes hacer algún comentario o agregar alguna nota, sera visible para todos los implicados. En caso de no ser necesario déjalo en blanco.' /></textarea>"+
            "<div style='margin-top:10px;'>"+
              "<label for='pass'>Ingresa tu contraseña para autorizar: </label>"+
              "<input type='password' id='pass' name='pass' class='form-control' placeholder='* * * * *' required />"+
            "</div>"+
          "</div>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
        "</div>"+
      "<form>");
    $("#modal-firma .modal-footer").html("<button type='button' form='form-autorizar' class='btn btn-success' onclick=\"javascript:"+funcion+"\">Aceptar</button><button type='button' class='btn btn-dark' data-dismiss='modal'>Cancelar</button>");

    //op();
}

/**
 * Modal que solicita algun comentario, firma y 
 * check para permitir elaborar requisiciones o no
 * solo lo puede ver financieron o planeacion
 * @param  {string} titulo  titulo del modal
 * @param  {string} funcion nombre de la funcion que mandara llamar cuando acepten
 * @return {nothing}
 */
function autorizar_firma_comentario_spr(titulo, funcion){ 
    //mp();
    $('#modal-firma').modal('show');
    $("#modal-firma .modal-title").html(titulo);
    $("#modal-firma .modal-header").removeClass('bg-danger').removeClass('text-white').addClass('bg-green');
    $("#modal-firma .modal-body").html(
      "<form action=\"javascript:"+funcion+"\" method='POST' id='form-autorizar'>"+
        "<div class='row'>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
          "<div class='col-lg-10 col-md-10 col-sm-12 col-xs-12'>"+
            "<label for='comentario'>Comentario: </label>"+
            "<textarea id='comentario' rows='3' name='comentario' class='form-control form-control-sm' style='resize:none;' placeholder='Puedes hacer algún comentario o agregar alguna nota, sera visible para todos los implicados. En caso de no ser necesario déjalo en blanco.' /></textarea>"+
            "<div style='margin-top:10px;'>"+
              "<label for='pass'>Ingresa tu contraseña para autorizar: </label>"+
              "<input type='password' id='pass' name='pass' class='form-control' placeholder='* * * * *' required />"+
            "</div>"+
            "<div style='margin-top:10px;'>"+
              "<input type='checkbox' id='auto_requis' name='auto_requis'>"+
              "<label for='auto_requis' style='margin-left:5px;'>Permitir elaboración de requisicion de bienes y servicios</label>"+
            "</div>"+
          "</div>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
        "</div>"+
      "<form>");
    $("#modal-firma .modal-footer").html("<button type='button' form='form-autorizar' class='btn btn-success' onclick=\"javascript:"+funcion+"\">Aceptar</button><button type='button' class='btn btn-dark' data-dismiss='modal'>Cancelar</button>");

    //op();
}

/**
 * Modal que solicita algun comentario, firma y 
 * se puede subir un pdf para autorizar
 * @param  {string} titulo  titulo del modal
 * @param  {string} funcion nombre de la funcion que mandara llamar cuando acepten
 * @return {nothing}
 */
function autorizar_firma_comentario_pdf_spr(titulo, funcion){ 
    //mp();
    $('#modal-firma').modal('show');
    $("#modal-firma .modal-title").html(titulo);
    $("#modal-firma .modal-header").removeClass('bg-danger').removeClass('text-white').addClass('bg-green');
    $("#modal-firma .modal-body").html(
      "<form action=\"javascript:"+funcion+"\" method='POST' id='form-autorizar'>"+
        "<div class='row'>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
          "<div class='col-lg-10 col-md-10 col-sm-12 col-xs-12'>"+
            
            "<label for='comentario'>Comentario: </label>"+
            "<textarea id='comentario' rows='3' name='comentario' class='form-control form-control-sm' style='resize:none;' placeholder='Puedes hacer algún comentario o agregar alguna nota, sera visible para todos los implicados. En caso de no ser necesario déjalo en blanco.' /></textarea>"+
            
            "<div style='margin-top:10px;'>"+
              "<label for='archivo'>Subir Subpresupuesto PDF: </label>"+
              "<div class='custom-file'>"+
                "<input type='file' class='custom-file-input' id='archivo' name='archivo' lang='es' accept='.pdf' onchange=\"$('#lbl_file').text(document.getElementById('archivo').files[0].name.slice(0, 30)+'...');\">"+
                "<label class='custom-file-label' for='archivo' id='lbl_file'>Seleccionar archivo en formato PDF</label>"+
              "</div>"+
            "</div>"+

            "<div style='margin-top:10px;'>"+
              "<label for='pass'>Ingresa tu contraseña para autorizar: </label>"+
              "<input type='password' id='pass' name='pass' class='form-control' placeholder='* * * * *' required />"+
            "</div>"+

          "</div>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
        "</div>"+
      "<form>");
    $("#modal-firma .modal-footer").html("<button type='button' form='form-autorizar' class='btn btn-success' onclick=\"javascript:"+funcion+"\">Aceptar</button><button type='button' class='btn btn-dark' data-dismiss='modal'>Cancelar</button>");

    //op();
}

function declinar(titulo, funcion){ 
    $('#modal-firma').modal('show');
    $("#modal-firma .modal-title").html(titulo);
    $("#modal-firma .modal-header").removeClass('bg-green').addClass('bg-danger text-white');
    $("#modal-firma .modal-body").html(
      "<form action=\"javascript:"+funcion+"\" method='POST' id='form-autorizar'>"+
        "<div class='row'>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
          "<div class='col-lg-10 col-md-10 col-sm-12 col-xs-12'>"+
            "<label for='comentario'>Justificación: </label>"+
            "<textarea id='comentario' rows='3' name='comentario' class='form-control form-control-sm' style='resize:none;' placeholder='Ingresa el motivo del por qué lo estas declinando.' /></textarea>"+
            "<div style='margin-top:10px;'>"+
              "<label for='pass'>Ingresa tu contraseña para autorizar: </label>"+
              "<input type='password' id='pass' name='pass' class='form-control' placeholder='* * * * *' required />"+
            "</div>"+
          "</div>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
        "</div>"+
      "<form>");
    $("#modal-firma .modal-footer").html("<button type='button' form='form-autorizar' class='btn btn-danger' onclick=\"javascript:"+funcion+"\">Aceptar</button><button type='button' class='btn btn-dark' data-dismiss='modal'>Cancelar</button>");
}

/**
 * muestra el modal y pide contraseña, observaciones del tecnm y check 
 * para saber si el spr lo rechazaron del tecnm, si lo habilita
 * el departamento ya no podra enviarlo
 * @param  {[type]} titulo  nombre del modal
 * @param  {[type]} funcion nombre de la funcion que mandara llamar cuando se de clic en aceptar
 */
function declinar_spr_tecnm(titulo, funcion){ 
    $('#modal-firma').modal('show');
    $("#modal-firma .modal-title").html(titulo);
    $("#modal-firma .modal-header").removeClass('bg-green').addClass('bg-danger text-white');
    $("#modal-firma .modal-body").html(
      "<form action=\"javascript:"+funcion+"\" method='POST' id='form-autorizar'>"+
        "<div class='row'>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
          "<div class='col-lg-10 col-md-10 col-sm-12 col-xs-12'>"+
            "<label for='comentario'>Observaciones por parte del TecNM: </label>"+
            "<textarea id='comentario' rows='3' name='comentario' class='form-control form-control-sm' style='resize:none;' placeholder='Ingresa las observaciones por parte del TecNM.' /></textarea>"+
            "<div style='margin-top:10px;'>"+
              "<label for='pass'>Ingresa tu contraseña para autorizar: </label>"+
              "<input type='password' id='pass' name='pass' class='form-control' placeholder='* * * * *' required />"+
            "</div>"+
            "<div style='margin-top:10px;'>"+
              "<input type='checkbox' id='declinado_tecnm' name='declinado_tecnm'>"+
              "<label for='declinado_tecnm' style='margin-left:5px;'>Declinado por parte del TecNM </label>"+
              "<label>(Al activar la casilla se regresará al departamento y no podrá enviarlo nuevamente)</label>"+
            "</div>"+
          "</div>"+
          "<div class='col-lg-1 col-md-1 visible-lg visible-md'></div>"+
        "</div>"+
      "<form>");
    $("#modal-firma .modal-footer").html("<button type='button' form='form-autorizar' class='btn btn-danger' onclick=\"javascript:"+funcion+"\">Aceptar</button><button type='button' class='btn btn-dark' data-dismiss='modal'>Cancelar</button>");
}

function principal(){
  mp();
  titulos("Control Programa Operativo Anual", "")
  $.ajax({ url: _URL_POA+'principal/paneles', type: 'GET', dataType: 'html', })
  .done(function(vista) {  
    $("#contenido_principal").html(vista);  
    mp();

    $.ajax({ url: _URL_POA+'principal/requisicion', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_requisicion").html(vista);  })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });

    $.ajax({ url: _URL_POA+'principal/spr', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_spr").html(vista);  })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  })
  .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.'); op(); })
  .always(function() {  tp();  });
}

function rms_principal(){
  mp();
  titulos("Control de Ordenes de Compra", "")
  $.ajax({ url: _URL_POA+'principal/rms_paneles', type: 'GET', dataType: 'html', })
  .done(function(vista) {  
    $("#contenido_principal").html(vista);  
    mp();

    $.ajax({ url: _URL_POA+'principal/rms_paneles/catalogo', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_proveedor").html(vista);  })
    .fail(function() {  ae('Catálogo de Proveedores','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });

    /*$.ajax({ url: _URL_POA+'principal/spr', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_spr").html(vista);  })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });*/
  })
  .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.'); op(); })
  .always(function() {  tp(); op(); });
}

/***    Funciones PTA   ***/
  function pta_subir(){ 
    mp();
    titulos("Programa de Trabajo Anual", "(PTA)")
    $.ajax({ url: _URL_POA+'pta/create', type:'GET', dataType:'html' })
    .done(function(vista) {
      $("#contenido_principal").html(vista);
      $(".dropzone").dropzone({ 
        url: "/import", 
        headers: { 'X-CSRF-TOKEN':  document.getElementsByName("_token")[0].value },  
        maxFiles:1,
        acceptedFiles:'.csv',
        dictMaxFilesExceeded: "Solo puedes subir un archivo",
        init: function() {
          this.on("error", function(file, errorMessage ) {  ae('PTA', errorMessage.message); pta_subir(); });
          this.on("success", function(file, text) { as('PTA', 'Importanción Exitosa'); principal(); });
        }
      });
    })
    .always(function() {  tp(); op(); });

  }

  function pta_cambio_clave(){ 
    mp();
    titulos("Programa de Trabajo Anual", "(PTA)")
    $.ajax({ url: _URL_POA+'cambio_clave', type:'GET', dataType:'html' })
    .done(function(vista) {
      $("#contenido_principal").html(vista);
      $(".dropzone").dropzone({ 
        url: _URL_POA+"/cambio_clave", 
        headers: { 'X-CSRF-TOKEN':  document.getElementsByName("_token")[0].value },  
        maxFiles:1,
        acceptedFiles:'.csv',
        dictMaxFilesExceeded: "Solo puedes subir un archivo",
        init: function() {
          this.on("error", function(file, errorMessage ) {  ae('PTA', errorMessage.message); pta_cambio_clave(); });
          this.on("success", function(file, text) { as('PTA', 'Importanción Exitosa'); principal(); });
        }
      });
    })
    .always(function() {  tp(); op(); });

  }

  function pta_listado(){
    mp();
    titulos("Programa de Trabajo Anual", "(PTA)")
    $.ajax({ url: _URL_POA+'pta', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('PTA','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });

    $.ajax({ url: _URL_POA+'vigencia/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $(".page-title .title_right").html(vista);  })
    .fail(function() {  ae('PTA','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function vigencia_add(){
    event.preventDefault();
    console.log("entro una vez");
    $("#nuevo_inicio").val( $("#nuevo_inicio").val().replace('T',' ')+":00" );
    $("#nuevo_termino").val( $("#nuevo_termino").val().replace('T',' ')+":00" );
    $.ajax({
      url: _URL_POA+'vigencia', type:'POST', dataType:'json', 
      data: $("#form-nuevo").serialize(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json){if(json['status']=='success'){as('PTA - Nuevo',json['message']);pta_listado();}else{ae('PTA - Nuevo',json['message']);}})
    .fail(function(msj){me(msj, 'PTA - Nuevo');});
  }

  function pta_consulta(anio){
    mp()
    titulos("Programa de Trabajo Anual", "(PTA)")
    $.ajax({ url: _URL_POA+'pta/'+anio, type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('PTA','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function pta_eliminar(anio){
    event.preventDefault();
    $('#modal-firma').modal('hide');
    $.ajax({
      url: _URL_POA+'pta/'+anio, type:'DELETE', dataType:'json',
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  if (json['status']=='success') { as('PTA', json['message']); } else { ae('PTA', json['message']); }  })
    .fail(function() { ae('PTA', 'Ocurrió un error.'); });
  }




/***  Fin Funciones PTA   ***/




/***    Funciones Departamentos   ***/
  function departamento_listado(){
    mp();
    titulos("Departamentos", "Listado");
    $.ajax({ url: _URL_POA+'departamento', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Departamentos','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  } 

  function departamento_nuevo(){
    mp()
    titulos("Departamentos", "Nuevo");
    $.ajax({ url: _URL_POA+'departamento/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae('Departamento','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function departamento_add(){
    mp();
    event.preventDefault();
    magia_datalist('deptos', 'departamento', 'filtro_departamento_nombre');
    $.ajax({
      url: _URL_POA+'departamento', type:'POST', dataType:'json', 
      data: $("#form-nuevo").serialize(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { 
        as('Puestos en el departamento', json['message']); 
        departamento_listado(); 
      } else { 
        ae('Puestos en el departamento', json['message']); 
      }  
    })
    .fail(function(msj) {       
      me(msj, "Departamento");
      op(); 
    })
  }

  function departamento_encargado(){
    titulos("Departamentos", "")
    $.ajax({ url: _URL_POA+'departamento/1', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Departamentos','Ocurrió un error.');  })
    .always(function() {  tp();  });

    $.ajax({ url: _URL_POA+'departamento/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $(".page-title .title_right").html(vista);  })
    .fail(function() {  ae('Puestos','Ocurrió un error.');  })
    .always(function() {  tp();  });
    
  }



/***  Fin Funciones Departamentos   ***/




/***    Funciones Puestos   ***/
  function puesto_listado(){
    titulos("Puestos", "")
    $.ajax({ url: _URL_POA+'puesto', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Puestos','Ocurrió un error.');  })
    .always(function() {  tp();  });
    
  }

/***  Fin Funciones Puestos   ***/



/***    Funciones Departamento Puesto Listado   ***/
  function departamento_puesto_listado(){
    mp();
    titulos("Asignación de Personal", "")
    $.ajax({ url: _URL_POA+'departamento_puesto', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Asignación de Personal','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });

    $.ajax({ url: _URL_POA+'departamento_puesto/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $(".page-title .title_right").html(vista);  })
    .fail(function() {  ae('Asignación de Personal','Ocurrió un error.');  })
    .always(function() {  tp(); });
    
  }

  function departamento_puesto_listado_filtro(pagina){
    mp();
    
    magia_datalist('deptos', 'filtro_departamento', 'filtro_departamento_nombre');
    magia_datalist('puestos', 'filtro_puestos', 'filtro_puestos_nombre');
    magia_datalist('datos_personal', 'filtro_datos_personal', 'filtro_datos_personal_nombre');

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

  function add_puesto_depto(){
    event.preventDefault();
    $.ajax({
      url: _URL_POA+'departamento_puesto', type:'POST', dataType:'json', 
      data: $("#form-nuevo").serialize(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  if (json['status']=='success') { as('Puestos en el departamento', json['message']); departamento_puesto_listado(); } else { ae('Puestos en el departamento', json['message']); }  })
    .fail(function() { ae('Puestos en el departamento', 'Ocurrió un error.'); });
  }

  function quitar_puesto_depto(id){
    event.preventDefault();
    //$('#modal-firma').modal('hide');
    $.ajax({
      url: _URL_POA+'departamento_puesto/'+id, type:'DELETE', dataType:'json',
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  if (json['status']=='success') { as('Puestos en el departamento', json['message']); departamento_puesto_listado(); } else { ae('Puestos en el departamento', json['message']); }  })
    .fail(function() { ae('Puestos en el departamento', 'Ocurrió un error.'); });
  }

/***  Fin Funciones Puestos   ***/



/***    Funciones Personal  ***/
  function personal_listado(){
    titulos("Personal Del ITZ", "")
    $.ajax({ url: _URL_POA+'personal', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Personal','Ocurrió un error.');  })
    .always(function() {  tp();  });
    
  }

/***  Fin Funciones Personal  ***/




/***    Funciones POA   ***/
  function poa_subir_partida_normal(){ 
    mp();
    titulos("Programa Operativo Anual", "(POA)");
    $.ajax({
      url: _URL_POA+'import_normal', type:'GET', dataType:'html',
    })
    .done(function(vista) {
      $("#contenido_principal").html(vista);
      $(".dropzone").dropzone({ 
        url: _URL_POA+"/import_normal", 
        headers: { 'X-CSRF-TOKEN':  document.getElementsByName("_token")[0].value },  
        maxFiles:1,
        acceptedFiles:'.csv',
        dictMaxFilesExceeded: "Solo puedes subir un archivo",
        init: function() {
          this.on("error", function(file, errorMessage ) {  ae('POA', errorMessage.message); poa_subir_partida_normal(); });
          this.on("success", function(file, text) { as('POA', 'Importanción Exitosa'); principal(); });
        }
      });
    });
    op();
  }

  function poa_subir_partida_restringida(){ 
    mp();
    titulos("Programa Operativo Anual", "(POA)");
    $.ajax({
      url: _URL_POA+'import_restringida', type:'GET', dataType:'html',
    })
    .done(function(vista) {
      $("#contenido_principal").html(vista);
      $(".dropzone").dropzone({ 
        url: _URL_POA+"/import_restringida", 
        headers: { 'X-CSRF-TOKEN':  document.getElementsByName("_token")[0].value },  
        maxFiles:1,
        acceptedFiles:'.csv',
        dictMaxFilesExceeded: "Solo puedes subir un archivo",
        init: function() {
          this.on("error", function(file, errorMessage ) {  ae('POA', errorMessage.message); poa_subir_partida_restringida(); });
          this.on("success", function(file, text) { as('POA', 'Importanción Exitosa'); principal(); });
        }
      });
    });
    op();
  }

  function poa_consultar(){
    mp();
    titulos("Programa Operativo Anual", "(POA)")
    $.ajax({ url: _URL_POA+'poa', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); poa_consulta(); })
    .fail(function() {  ae('Programa Operativo Anual','Ocurrió un error.');  })
    .always(function() {  tp();  });
    
  }

  function poa_consulta(){
    mp();
    magia_datalist('deptos', 'filtro_depto', 'filtro_departamento_nombre');
    $.ajax({ url: _URL_POA+'poa/1', type: 'GET', dataType: 'html', data: $("#filtro").serialize() })
    .done(function(vista) {  $("#poa-consulta").html(vista);  })
    .fail(function() {  ae('Programa Operativo Anual','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function poa_limites(){
    mp();
    titulos("Programa Operativo Anual", "(POA)")
    $.ajax({ url: _URL_POA+'departamento_limite/create', type: 'GET', dataType: 'html', /*data: $("#filtro").serialize()*/ })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Programa Operativo Anual','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function poa_limites_update(){  
    if ( $("#pass").val()=="") { ae('Programa Operativo Anual - Límites', 'Ingresa tu contraseña.'); op(); return false; }
    
    var formData = new FormData();
    var detalles = []; 

    var func = $(".limite").each(function(index, el) {
      var limite = $(this).val(); 
      var id = $(this)[0].dataset.id;
      detalles.push({"id": id, "limite": limite });
    });   

    detalles = JSON.stringify(detalles);
    formData.append('detalles', detalles);
    formData.append('password', $("#pass").val() );
    
    $.ajax({ // va a entrar al store en lugar del update 
      url: _URL_POA+'departamento_limite', type:'POST', dataType:'json', 
      data: formData,
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
      processData: false, contentType: false,
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Programa Operativo Anual - Límites', json['message']);  requi_listado(); } else {  ae('Programa Operativo Anual - Límites', json['message']); } op(); })
    .fail(function() { ae('Programa Operativo Anual - Límites', 'Ocurrió un error.');  op(); });
  }

  function detalle_clave_presupuestal( idAccion, clave ){ 
    //mp();

    $.ajax({ url: _URL_POA+'poa/'+idAccion+'/edit', type: 'GET', dataType: 'html', data: $("#filtro").serialize() })
    .done(function(vista) {  
      
      $('#modal-consulta').modal('show');
      $("#modal-consulta .modal-title").html("Detalles de la clave presupuestal ( "+clave+" )");
      $("#modal-consulta .modal-body").html(vista);
      $("#modal-consulta .modal-footer").html("<button type='button' class='btn btn-dark' data-dismiss='modal'>Cerrar</button>");
    
    })
    .fail(function() {  ae('Programa Operativo Anual','Ocurrió un error.');  })
    .always(function() {  tp();  });

    //op();
  }


/***    FIN Funciones POA   ***/


/***    Funciones Requisiciones   ***/

  function requi_listado(){
    mp();
    titulos("Requisición de Bienes y Servicios", "Listado")
    $.ajax({ url: _URL_POA+'requisicion', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function requi_listado_filtro(pagina){
    mp();
    
    /*$depto_nombre = $.trim($("#filtro_departamento_nombre").val());
    if($depto_nombre!=""){
      var $bandera=true;
      $("#deptos").find("option").each(function($id, $val){
        if($depto_nombre==$val.innerText){
          $("#filtro_departamento").val($val.dataset.id);$bandera=false;
        }
      });
      if ($bandera) {
        $("#filtro_departamento").val(""); 
        $("#filtro_departamento_nombre").val("");
      }
    }*/
    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 requi_nueva(){
    mp();
    titulos("Requisición de Bienes y Servicios", "Nueva")
    $.ajax({ url: _URL_POA+'requisicion/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function requi_nuevo_renglon(clave_presupuestal, partida, detalle_presupuesto_id){
    $("#table_bienes").show('slow');
    var $cont = $("#pie_detalles_requi");
    var $unidad = $("#unidad_master").html();

    $("#detalles_requi").append(
      "<div class='row cuerpo' id='rr_"+$cont.data('contador')+"'>"+
        "<div class='col-6 col-md-2 col-sm-6 d-block d-md-none bg-dark-blue text-white'>Clave Presupuestal</div>"+
        "<div class='col-6 col-md-2 col-sm-6 d-block d-md-none bg-dark-blue text-white '>"+
          "<div class='d-flex justify-content-around'>"+
            "<div class='btn-group btn-group-sm'  role='group'>"+
              "<button class='btn btn-outline-light' type='button' data-toggle='tooltip' data-placement='left' title='Eliminar' onclick=\"requi_del_renglon('rr_"+$cont.data('contador')+"');\"><i class='fa fa-trash-o'></i></button>"+
            "</div>"+
            "<label class='align-self-center m-0 mr-5' >"+clave_presupuestal+"</label>"+
          "</div>"+
        "</div>"+
        "<div class='col-6 col-md-2 col-sm-6 d-none d-md-block'>"+
          "<div class='d-flex justify-content-around'>"+
            "<div class='btn-group btn-group-sm' role='group'>"+
              "<button class='btn btn-outline-danger' type='button' data-toggle='tooltip' data-placement='left' title='Eliminar' onclick=\"requi_del_renglon('rr_"+$cont.data('contador')+"');\"><i class='fa fa-trash-o'></i></button>"+
            "</div>"+
            "<label class='align-self-center m-0 mr-5' >"+clave_presupuestal+"</label>"+
          "</div>"+
        "</div>"+
        
        "<div class='col-6 d-block d-md-none'>Partida</div>"+    
        "<div class='col-6 col-md-1 col-sm-6 d-flex justify-content-center'><label class='align-self-center m-0 partida'>"+partida+"</label></div>"+
        
        "<div class='col-6 col-md-1 col-sm-6 d-block d-md-none'>Cantidad</div>"+
        "<div class='col-6 col-md-1 col-sm-6'><input type='number' class='form-control form-control-sm cantidad' placeholder='Ej. 1' required='required'></div>"+
        
        "<div class='col-6 col-md-1 col-sm-6 d-block d-md-none'>Unidad</div>"+
        "<div class='col-6 col-md-1 col-sm-6'><select class='form-control form-control-sm unidad'>"+$unidad+"</select></div>"+
        
        "<div class='col-6 col-md-5 col-sm-6 d-block d-md-none'>Descripción de los bienes o servicios</div>"+
        "<div class='col-6 col-md-5 col-sm-6'><input type='text' class='form-control form-control-sm descripcion' placeholder='Descripción del bien acorde a la partida seleccionada' required='required'></div>"+
        
        "<div class='col-6 col-md-2 col-sm-6 d-block d-md-none'>costo estimado total + iva </div>"+
        "<div class='col-6 col-md-2 col-sm-6'>"+
          "<div class='input-group input-group-sm'>"+
            "<div class='input-group-prepend'><span class='input-group-text'>$</span></div>"+
            "<input type='number' class='form-control text-right costo' placeholder=' 0.00' data-detalleprepuesto='"+detalle_presupuesto_id+"' oninput='requi_totales();' required='required'>"+
          "</div>"+
        "</div>"+
      "</div>"
    );

    $cont.data('contador', $cont.data('contador')+1 );
  }

  function requi_del_renglon(idRow) {
    $("#"+idRow).remove();
    requi_totales();
    if ($("#detalles_requi input.costo").length ==0) {
      $("#table_bienes").hide('slow');
    }
  }

  function requi_totales(){
    var total = 0;
    $(".disponible").html('0.00');
    $.each( $(".row_detalle_presupuesto.bg-danger") , function(index, element) { element.classList.remove('bg-danger'); element.classList.remove('text-white'); });
    $.each( $("#detalles_requi input.costo") , function(index, element) {

      if (element.value>0 && element.value!="") {
        total = total + parseFloat(element.value);
        var dispo = $("#r_"+element.dataset.detalleprepuesto).find('.disponible');
            dispo.html( (parseFloat(dispo.html())+parseFloat(element.value)).toFixed(2) );

        if ( parseFloat(dispo[0].dataset.disponible) < parseFloat(dispo.html()) ) {
          $("#r_"+element.dataset.detalleprepuesto).addClass('bg-danger text-white');
        }
      }
        
    });
    $("#total_requi").html(total.toFixed(2));
  } 

  function validar_requi(bandera){
    mp();
    if($(".row_detalle_presupuesto.bg-danger").length>0){ ae('Requisición de Bienes y Servicios','Por favor, verifica el <b>MONTO DISPONIBLE</b> de la(s) partida(s), puesto que estas sobrepasando alguno.'); op(); return false; }
    $("#detalles_requi .error").each(function(index,el) { $(this).removeClass('error'); });

    var f = document.querySelector("#form-requisicion");
    if ( f.fecha_elaboracion.value=="" ) { ae('Requisición de Bienes y Servicios', 'Selecciona una fecha de elaboración correcta.'); op(); return false; }
    if ( f.fecha_necesita.value=="" ) { ae('Requisición de Bienes y Servicios', 'Ingresa la fecha en que se necesita el bien.'); op(); return false; }

    if ( $("#detalles_requi .row").length==0) { ae('Requisición de Bienes y Servicios', 'Debe de contener al menos un bien o servicio.'); op(); return false; }
    var func = $("#detalles_requi .row").each(function(index, el) {
      var cant = $(this).find('.cantidad').val();
      var unid = $(this).find('.unidad').val();
      var desc = $(this).find('.descripcion').val();
      var cost = $(this).find('.costo').val();
      if (cant=="" || cant<=0  || unid=="" || desc=="" || cost=="" || cost<=0 )  { $(this).addClass('error'); }
    }); 
    if ( $("#detalles_requi .error").length>0 ) { ae('Requisición de Bienes y Servicios', 'Por favor, revisa los bienes marcados de color.'); op(); return false; }   
    if ( f.justificacion.value=="" ) { ae('Requisición de Bienes y Servicios', 'Ingresa para que serán utilizados lo bienes.'); op(); return false; }
    
    switch(bandera){
      case 'firma': autorizar_firma( 'Requisición de Bienes y Servicios', "requi_add_nueva('firma');" ); break;
      case 'borrador': requi_add_nueva('borrador'); break;
      case 'u_borrador': requi_update('borrador'); break;
      case 'u_firma': autorizar_firma( 'Requisición de Bienes y Servicios', "requi_update('firma');" ); break;
      default: ae("Por favor, comunicate con planeación."); op(); break;
    }
  }

  function requi_add_nueva(bandera){  /* bandera= ['firma','borrador'] */
    mp();
    if (bandera=='firma' && $("#pass").val()=="") { ae('Requisición de Bienes y Servicios', 'Ingresa tu contraseña.'); op(); return false; }
    
    var f = document.querySelector("#form-requisicion");
    var formData = new FormData();
    var detalles = []; 

    var func = $("#detalles_requi .row").each(function(index, el) {
      var cant = $(this).find('.cantidad').val();
      var unid = $(this).find('.unidad').val();
      var desc = $(this).find('.descripcion').val();
      var cost = $(this).find('.costo').val();  
      var part = $(this).find('.partida').html();
      var deta = $(this).find('.costo')[0].dataset.detalleprepuesto;
      if (cant=="" || cant<=0 || unid=="" || desc=="" || cost=="" || cost<=0 )  { $(this).addClass('text-white bg-orange'); }
      detalles.push({"cantidad": cant, "unidad": unid, "descripcion": desc, "costo": cost, "partida":part, "detalle": deta });
    });   

    if ( $("#detalles_requi .error").length>0 ) { ae('Requisición de Bienes y Servicios', 'Por favor, revisa los bienes marcados de color.'); op(); return; }
    if (detalles.length==0) { ae('Requisición de Bienes y Servicios', 'Debe de contener al menos un bien o servicio.'); op(); return; }
    if ( f.justificacion=="" ) { ae('Requisición de Bienes y Servicios', 'Ingresa para que serán utilizados lo bienes.'); op(); return; }

    detalles = JSON.stringify(detalles);
    if (document.getElementsByName("contemplados")[0].checked ) { 
      formData.append('contemplados', "1" );
    } else { formData.append('contemplados', "2" ); }
    var total = $("#total_requi").html();
    var limit = $("#limite")[0].dataset.limite;
    if (parseFloat(limit)<parseFloat(total)) { ae('Requisición de Bienes y Servicios', 'No puedes gastar mas del disponible real, por favor verifica el total de la requisición.'); op(); return; }

    formData.append('fecha_elaboracion', f.fecha_elaboracion.value );
    formData.append('fecha_necesita', f.fecha_necesita.value );
    formData.append('justificacion', f.justificacion.value );
    formData.append('total', total );
    formData.append('detalles', detalles);
    if (bandera=="firma") { formData.append('password', $("#pass").val() ); }
    formData.append('bandera', bandera);

    $.ajax({
      url: _URL_POA+'requisicion', type:'POST', dataType:'json', 
      data: formData,
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
      processData: false, contentType: false,
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Requisición de Bienes y Servicios', json['message']);  requi_listado(); } else {  ae('Requisición de Bienes y Servicios', json['message']); } op(); })
    .fail(function() { ae('Requisición de Bienes y Servicios', 'Ocurrió un error.');  op(); });
  }

  function requi_consultar(id){
    mp();
    titulos("Requisición de Bienes y Servicios", "")
    $.ajax({ url: _URL_POA+'requisicion/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#div_consulta_requi").html(vista); $("#nav_filtros").hide(); $("#contenedor").hide(); })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function requi_regresar_listado(){
    mp(); $("#div_consulta_requi").html(""); $("#nav_filtros").show(); $("#contenedor").show(); op();
  }

  function requi_vista_rapida( id ){ 
      

    $.ajax({ url: _URL_POA+'requisicion/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {  
      
    $('#modal-consulta').modal('show');
      $("#modal-consulta .modal-title").html("Requisición de Bienes y Servicios ( "+id+" )");
      $("#modal-consulta .modal-body").html(vista);
      $("#div_botones").remove();
    
    })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp();  });

      //op();
  }

  function requi_editar(id){
    mp();
    titulos("Requisición de Bienes y Servicios", "")
    $.ajax({ url: _URL_POA+'requisicion/'+id+'/edit', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); requi_totales(); })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function requi_update(bandera){ /* bandera= ['firma','borrador'] */
    mp();
    if (bandera=='firma' && $("#pass").val()=="") { ae('Requisición de Bienes y Servicios', 'Ingresa tu contraseña.'); op(); return false; }
    
    var f = document.querySelector("#form-requisicion");
    var formData = new FormData();
    var detalles = []; 

    var func = $("#detalles_requi .row").each(function(index, el) {
      var iddr = $(this).data('iddetallerequi');
      var cant = $(this).find('.cantidad').val();
      var unid = $(this).find('.unidad').val();
      var desc = $(this).find('.descripcion').val();
      var cost = $(this).find('.costo').val();  
      var part = $(this).find('.partida').html();
      var deta = $(this).find('.costo')[0].dataset.detalleprepuesto;
      if (isNaN(iddr)){iddr=0;}
      if (cant=="" || cant<=0  || unid=="" || desc=="" || cost=="" || cost<=0 )  { $(this).addClass('text-white bg-orange'); }
      detalles.push({ "id":iddr, "cantidad":cant, "unidad":unid, "descripcion":desc, "costo":cost, "partida":part, "detalle":deta });
    });   

    if ( $("#detalles_requi .error").length>0 ) { ae('Requisición de Bienes y Servicios', 'Por favor, revisa los bienes marcados de color.'); return; }
    if (detalles.length==0) { ae('Requisición de Bienes y Servicios', 'Debe de contener al menos un bien o servicio.'); return; }
    if ( f.justificacion=="" ) { ae('Requisición de Bienes y Servicios', 'Ingresa para que serán utilizados lo bienes.'); return; }

    detalles = JSON.stringify(detalles);
    if (document.getElementsByName("contemplados")[0].checked ) { 
      formData.append('contemplados', "1" );
    } else { formData.append('contemplados', "2" ); }
    var total = $("#total_requi").html();
    var limit = $("#limite")[0].dataset.limite;
    if (parseFloat(limit)<parseFloat(total)) { ae('Requisición de Bienes y Servicios', 'No puedes gastar mas del disponible real, por favor verifica el total de la requisición.'); op(); return; }

    formData.append('fecha_elaboracion', f.fecha_elaboracion.value );
    formData.append('fecha_necesita', f.fecha_necesita.value );
    formData.append('justificacion', f.justificacion.value );
    formData.append('total', total );
    formData.append('detalles', detalles);
    if (bandera=="firma") { formData.append('password', $("#pass").val() ); }
    formData.append('bandera', bandera);

    $.ajax({
      url: _URL_POA+'requisicion/up/'+$("#id_requisicion").text(), type:'POST', dataType:'json', 
      data: formData,
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
      processData: false, contentType: false,
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Requisición de Bienes y Servicios', json['message']); requi_listado(); } else {  ae('Requisición de Bienes y Servicios', json['message']); op(); }  })
    .fail(function() { ae('Requisición de Bienes y Servicios', 'Ocurrió un error.'); mp(); });
  }

  function requi_consulta_sign(id){
    mp();
    titulos("Requisición de Bienes y Servicios", "")
    $.ajax({ url: _URL_POA+'requisicion/sign/'+id+'', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function requi_sign(){  
    mp();
    if ($("#pass").val()=="") { ae('Requisición de Bienes y Servicios', 'Ingresa tu contraseña.'); op(); return false; }
    var comentario = $.trim($("#comentario").val());
    $.ajax({
      url: _URL_POA+'requisicion/sign/'+$("#id_requisicion").text()+'/now', type:'POST', dataType:'json', 
      data: {password: $("#pass").val(), comentario: comentario },
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Requisición de Bienes y Servicios', json['message']); principal(); } else {  ae('Requisición de Bienes y Servicios', json['message']); } op(); })
    .fail(function() { ae('Requisición de Bienes y Servicios', 'Ocurrió un error.'); op(); });
  }

  function requi_declinar(){  
    mp();
    var comentario = $.trim($("#comentario").val());
    if (comentario=="") { ae('Requisición de Bienes y Servicios', 'Ingresa el motivo.'); op(); return false; }
    if ($("#pass").val()=="") { ae('Requisición de Bienes y Servicios', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({
      url: _URL_POA+'requisicion/sign/'+$("#id_requisicion").text()+'/declinar', type:'POST', dataType:'json', 
      data: {password: $("#pass").val(), comentario: comentario },
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Requisición de Bienes y Servicios', json['message']); principal(); } else {  ae('Requisición de Bienes y Servicios', json['message']); } op(); })
    .fail(function() { ae('Requisición de Bienes y Servicios', 'Ocurrió un error.'); op(); });
  }

  function requi_eliminar(id){
    mp();
    if ($("#pass").val()=="") { ae('Requisición de Bienes y Servicios', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({ url: _URL_POA+'requisicion/'+id, type: 'DELETE', dataType: 'json', data: {password:$("#pass").val() }, headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value }, })
    .done(function(json) {  if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Requisición de Bienes y Servicios', json['message']); } else {  ae('Requisición de Bienes y Servicios', json['message']); }  })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function requi_cancelar(id){
    mp();
    if ($("#pass").val()=="") { ae('Requisición de Bienes y Servicios', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({ url: _URL_POA+'requi/cancelar/'+id, type: 'POST', dataType: 'json', data: {password:$("#pass").val() }, headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value }, })
    .done(function(json) { if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Requisición de Bienes y Servicios', json['message']); } else {  ae('Requisición de Bienes y Servicios', json['message']); } requi_listado_filtro(); })
    .fail(function() {  ae('Requisición de Bienes y Servicios','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }
/***    FIN Requisiciones   ***/



/***    Funciones Subpresupuesto Partidas Restringidas    ***/

  function spr_listado(){
    mp();
    titulos("Subpresupuesto de Partidas Restringidas", "Listado")
    $.ajax({ url: _URL_POA+'spr', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function spr_listado_filtro(pagina){
    mp();
    $depto_nombre = $.trim($("#filtro_departamento_nombre").val());
    if($depto_nombre!=""){
      var $bandera=true;
      $("#deptos").find("option").each(function($id, $val){
        if($depto_nombre==$val.innerText){
          $("#filtro_departamento").val($val.dataset.id);$bandera=false;
        }
      });
      if ($bandera) {
        $("#filtro_departamento").val(""); 
        $("#filtro_departamento_nombre").val("");
      }
    }
    titulos("Subpresupuesto de Partidas Restringidas", "")
    $.ajax({ 
      url: _URL_POA+'spr/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('spr_listado_filtro'); })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function spr_nuevo(){
    mp();
    titulos("Subpresupuesto de Partidas Restringidas", "Nuevo")
    $.ajax({ url: _URL_POA+'spr/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); $("#iva").on("change", function(){ spr_iva(); }); })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function spr_details(id){
    mp();
    $.ajax({ url: _URL_POA+'spr_details/'+id, type:'GET', dataType:'json' })
    .done(function(json) {
      var iva = document.getElementById('iva').dataset.iva;
      $.each(json, function(index, dato) {
        console.log(dato);
        var fi = dato['fecha_inicio'].split(" ");
        var ft = dato['fecha_termino'].split(" ");
        $("#idDetallePresupuesto").val(dato['id']);
        $("#costo_participante").val(dato['costo']);
        $("#numero_participante").val(dato['participantes']);
        $(".partida").html(dato['partida_id']);
        $("#partida").val(dato['partida_id']);
        $("#fecha_inicio").val(fi[0]);
        $("#fecha_final").val(ft[0]);
        $("#total").val(dato['disponible']);
        $("#servicio").val(dato['servicio']);
        $("#sede").val(dato['sede']);
        $("#justificacion").val(dato['justificacion']);
        $("#poblacion").val(dato['poblacion']);
        $("#objetivo").val(dato['objetivo']);
        $("#riesgos").val(dato['riesgos']);
        $("#pie_total").val(dato['disponible']);
        $("#comentario_partida").html(dato['partida_restringida']['comentario']);
        document.getElementById("total").dataset.id=id;

        $.each($(".ejemplo_servicio"), function() { $(this)[0].dataset.originalTitle="Ejemplo:"; $(this)[0].dataset.content = dato['partida_restringida']['servicio_modelo']; });
        $.each($(".ejemplo_sede"), function() { $(this)[0].dataset.originalTitle="Ejemplo:"; $(this)[0].dataset.content = dato['partida_restringida']['sede_modelo']; });
        $.each($(".ejemplo_justificacion"), function() { $(this)[0].dataset.originalTitle="Ejemplo:"; $(this)[0].dataset.content = dato['partida_restringida']['justificacion_modelo']; });
        $.each($(".ejemplo_poblacion"), function() { $(this)[0].dataset.originalTitle="Ejemplo:"; $(this)[0].dataset.content = dato['partida_restringida']['poblacion_modelo']; });
        $.each($(".ejemplo_objetivo"), function() { $(this)[0].dataset.originalTitle="Ejemplo:"; $(this)[0].dataset.content = dato['partida_restringida']['objetivo_modelo']; });
        $.each($(".ejemplo_riesgos"), function() { $(this)[0].dataset.originalTitle="Ejemplo:"; $(this)[0].dataset.content = dato['partida_restringida']['riesgos_modelo']; });

        spr_totales();
      });
    })
    .fail(function() { ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.'); })
    .always(function() { op(); });  
  }

  function spr_iva(){
      var $iva = document.getElementById('iva').dataset.iva;
      var $importe = $("#total").val();
      if ($importe!==undefined) {  
      $importe = $importe.replace(/,/g, '');
      if ($importe=="") { $importe = 0; }
      if ($("#iva").prop("checked")) {
        $iva = parseFloat("1."+$iva);
        var i = parseFloat($importe / $iva);
        $("#pie_subtotal").val(i.toFixed(2));
        $("#pie_iva").val(parseFloat($importe-i).toFixed(2));
        $("#pie_total").val(parseFloat($importe).toFixed(2));
      } else {
        $("#pie_subtotal").val(parseFloat($importe).toFixed(2));
        $("#pie_iva").val("0.00");
        $("#pie_total").val(parseFloat($importe).toFixed(2));
      }    
      }
  }

  function spr_totales(){
    var total = 0;
    $(".disponible").html('0.00');
    $.each( $(".row_detalle_presupuesto.bg-danger") , function(index, element) { element.classList.remove('bg-danger'); element.classList.remove('text-white'); });
    var total = document.getElementById("total");
    if (total.value>0 && total.value!="") {
      var dispo = $("#r_"+total.dataset.id).find('.disponible');
        dispo.html( (parseFloat(total.value)).toFixed(2) );
      if ( parseFloat(dispo[0].dataset.disponible) < parseFloat(dispo.html()) ) {
        $("#r_"+total.dataset.id).addClass('bg-danger text-white');
      }
    }
    $("#pie_total").val(total.value);
    spr_iva();
  } 

  function spr_validar(bandera){
    mp();
    if($(".row_detalle_presupuesto.bg-danger").length>0){ ae('Subpresupuesto de Partidas Restringidas','Por favor, verifica el <b>MONTO DISPONIBLE</b> de la(s) partida(s), puesto que estas sobrepasando alguno.'); op(); return false; }

    var f = document.querySelector("#form-nuevo");
    if ( f.partida.value=="") { ae('Subpresupuesto de Partidas Restringidas', 'Selecciona una partida..'); op(); return false; }
    if ( f.costo_participante.value=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa el costo por participante.'); op(); return false; }
    if ( f.numero_participante.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa el número de participantes.'); op(); return false; }
    if ( f.fecha_inicio.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa una fecha de inicio correcta, debe coincidir con el siguiente formato <b>DD/MM/AAAA</b>.'); op(); return false; }
    if ( f.fecha_final.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa una fecha de termino correcta, debe coincidir con el siguiente formato <b>DD/MM/AAAA</b>.'); op(); return false; }
    if ( f.total.value=="" || f.total.value==0 ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa el total del subpresupuesto.'); op(); return false; }
    if ( parseFloat(f.total.value) > parseFloat(f.limite.dataset.limite) ) { ae('Subpresupuesto de Partidas Restringidas', 'No puedes gastar mas del disponible real, por favor verifica el total del subpresupuesto.'); op(); return false; }
    if ( f.servicio.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa la descripción del servicio o evento.'); op(); return false; }
    if ( f.sede.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa la sede del servicio o evento.'); op(); return false; }
    if ( f.justificacion.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa la justificación del servicio o evento, con todas las características como el ejemplo.'); op(); return false; }
    if ( f.desglose.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa el desglose de gastos.'); op(); return false; }
    if ( f.poblacion.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa la población beneficiaria del servicio o evento.'); op(); return false; }
    if ( f.objetivo.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa el objetivo del servicio o evento.'); op(); return false; }
    if ( f.riesgos.value=="" ) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa los riesgos que se tendrían si no se contratará el bien o servicio.'); op(); return false; }

    switch(bandera){
      case 'firma': autorizar_firma( 'Subpresupuesto de Partidas Restringidas', "spr_add_nueva('firma');" ); break;
      case 'borrador': spr_add_nueva('borrador'); break;
      case 'u_borrador': spr_update('borrador'); break;
      case 'u_firma': autorizar_firma( 'Subpresupuesto de Partidas Restringidas', "spr_update('firma');" ); break;
      default: ae("Por favor, comunícate con planeación."); op(); break;
    }
  }

  function spr_add_nueva(bandera){  /* bandera= ['firma','borrador'] */
    mp();
    if (bandera=='firma' && $("#pass").val()=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa tu contraseña.'); op(); return false; }
    var f = document.querySelector("#form-nuevo");  
    
    var data = $("#form-nuevo").serializeArray(); // convert form to array
      data.push({name: "bandera", value: bandera});
    if (bandera=="firma") { data.push({name: "password", value: $("#pass").val() }); }


    $.ajax({
      url: _URL_POA+'spr', type:'POST', dataType:'json', 
      data: $.param(data),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partidas Restringidas', json['message']);  principal(); } else {  ae('Subpresupuesto de Partidas Restringidas', json['message']); } op(); })
    .fail(function() { ae('Subpresupuesto de Partidas Restringidas', 'Ocurrió un error.');  op(); });
  }

  function spr_consultar(id){
    mp();
    titulos("Subpresupuesto de Partidas Restringidas", "")
    $.ajax({ url: _URL_POA+'spr/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#div_consulta_requi").html(vista); $("#nav_filtros").hide(); $("#contenedor").hide(); })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function spr_vista_rapida( id ){ 
      $.ajax({ url: _URL_POA+'spr/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {  
      $('#modal-consulta').modal('show');
        $("#modal-consulta .modal-title").html("Subpresupuesto de Partidas Restringidas ( "+id+" )");
        $("#modal-consulta .modal-body").html(vista);
        $("#div_botones").remove();
    })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp();  });
  }

  function spr_editar(id){
    mp();
    titulos("Subpresupuesto de Partidas Restringidas", "")
    $.ajax({ url: _URL_POA+'spr/'+id+'/edit', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); spr_totales(); $("#iva").on("change", function(){ spr_iva(); }); })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function spr_update(bandera){ /* bandera= ['firma','borrador'] */
    mp();
    if (bandera=='firma' && $("#pass").val()=="") { ae('Subpresupuesto de Partida Restringida', 'Ingresa tu contraseña.'); op(); return false; }
    
    var f = document.querySelector("#form-nuevo");  
    
    var data = $("#form-nuevo").serializeArray(); // convert form to array
      data.push({name: "bandera", value: bandera});
    if (bandera=="firma") { data.push({name: "password", value: $("#pass").val() }); }

    $.ajax({
      url: _URL_POA+'spr/up/'+$("#id_spr").val(), type:'POST', dataType:'json', 
      data: $.param(data),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partida Restringida', json['message']); principal(); } else {  ae('Subpresupuesto de Partida Restringida', json['message']); op(); } })
    .fail(function() { ae('Subpresupuesto de Partida Restringida', 'Ocurrió un error.'); mp(); });
  }

  function spr_consulta_sign(id){
    mp();
    titulos("Subpresupuesto de Partidas Restringidas", "")
    $.ajax({ url: _URL_POA+'spr/sign/'+id+'', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function spr_sign(){  
    mp();
    
    if ($("#pass").val()=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa tu contraseña.'); op(); return false; }
    /*var comentario = $.trim($("#comentario").val());
    var permiso = 0;
    if ($("#auto_requis")[0]!==undefined) {
      if (document.getElementById("auto_requis").checked) { permiso = 1; } 
    }*/
    var formData = new FormData(document.getElementById("form-autorizar"));

    $.ajax({
      url: _URL_POA+'spr/sign/'+$("#id_spr").text()+'/now', type:'POST', dataType:'json', 
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
      data: formData, contentType: false, processData: false, cache: false,
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partidas Restringidas', json['message']); principal(); } else {  ae('Subpresupuesto de Partidas Restringidas', json['message']); } op(); })
    .fail(function() { ae('Subpresupuesto de Partidas Restringidas', 'Ocurrió un error.'); op(); });
  }

  function spr_upload_pdf(id){  
    mp();
    
    if ($("#pass").val()=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa tu contraseña.'); op(); return false; }
    if ($("#comentario").val()=="" && document.getElementById("archivo").files.length==0) { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa un comentario o selecciona un archivo pdf para efectuar los cambios.'); op(); return false; }
    var formData = new FormData(document.getElementById("form-autorizar"));

    $.ajax({
      url: _URL_POA+'spr/'+id+'/pdf', type:'POST', dataType:'json', 
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
      data: formData, contentType: false, processData: false, cache: false,
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partidas Restringidas', json['message']); spr_listado(); } else {  ae('Subpresupuesto de Partidas Restringidas', json['message']); } op(); })
    .fail(function() { ae('Subpresupuesto de Partidas Restringidas', 'Ocurrió un error.'); op(); });
  }

  function spr_declinar(){  
    mp();
    var comentario = $.trim($("#comentario").val());
    if (comentario=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa el motivo.'); op(); return false; }
    if ($("#pass").val()=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({
      url: _URL_POA+'spr/sign/'+$("#id_spr").text()+'/declinar', type:'POST', dataType:'json', 
      data: {password: $("#pass").val(), comentario: comentario },
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partidas Restringidas', json['message']); principal(); } else {  ae('Subpresupuesto de Partidas Restringidas', json['message']); } op(); })
    .fail(function() { ae('Subpresupuesto de Partidas Restringidas', 'Ocurrió un error.'); op(); });
  }

  function spr_declinar_tecnm(){  
    mp();
    var comentario = $.trim($("#comentario").val());
    if (comentario=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa el motivo.'); op(); return false; }
    if ($("#pass").val()=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa tu contraseña.'); op(); return false; }

    var declinado = 0;
    if (document.getElementById("declinado_tecnm").checked) { declinado = 1; } 

    $.ajax({
      url: _URL_POA+'spr/sign/'+$("#id_spr").text()+'/declinar_tecnm', type:'POST', dataType:'json', 
      data: {password: $("#pass").val(), comentario: comentario, declinado: declinado },
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partidas Restringidas', json['message']); principal(); } else {  ae('Subpresupuesto de Partidas Restringidas', json['message']); } op(); })
    .fail(function() { ae('Subpresupuesto de Partidas Restringidas', 'Ocurrió un error.'); op(); });
  }

  /**
   * habilitar o deshabilitar elaborar requisiciones
   * @param  {[type]} bandera posibles valores ["_HABILITAR", "_DESHABILITAR"]
   * @param  {[type]} idSpr   ID De la base de datos del subpresupuesto
   */
  function spr_permitir_requi(idSpr){ 
    mp();
    if ($("#pass").val()=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({
      url: _URL_POA+'spr/enable_requi', type:'POST', dataType:'json', 
      data: {password: $("#pass").val(), id: idSpr },
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partidas Restringidas', json['message']); spr_listado(); } else {  ae('Subpresupuesto de Partidas Restringidas', json['message']); } op(); })
    .fail(function() { ae('Subpresupuesto de Partidas Restringidas', 'Ocurrió un error.'); op(); });
  }

  function spr_eliminar(id){
    mp();
    if ($("#pass").val()=="") { ae('Subpresupuesto de Partidas Restringidas', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({ url: _URL_POA+'spr/'+id, type: 'DELETE', dataType: 'json', data: {password:$("#pass").val() }, headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value }, })
    .done(function(json) {  if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Subpresupuesto de Partidas Restringidas', json['message']); principal(); } else {  ae('Subpresupuesto de Partidas Restringidas', json['message']); }  })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

  function spr_notificacion(idSpr, idNotificacion){
    mp();
    titulos("Subpresupuesto de Partidas Restringidas", "")
    $.ajax({ url: _URL_POA+'spr/'+idSpr+'/'+idNotificacion, type: 'get', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); if (document.getElementById('total')!=null) { spr_totales(); $("#iva").on("change", function(){ spr_iva(); }); } })
    .fail(function() {  ae('Subpresupuesto de Partidas Restringidas','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }

/***    FIN Funciones Subpresupuesto Partidas Restringidas    ***/




/////////////////////////////////
// Adecuacion interna temporal //
/////////////////////////////////

  function ia_temp_listado(){
    mp();
    titulos("Adecuación Interna", "Movimientos");
    $.ajax({ url: _URL_POA+'aitemporal', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Adecuación Interna','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ia_temp_nueva(){
    mp();
    titulos("Adecuación Interna", "Nueva")
    $.ajax({ url: _URL_POA+'aitemporal/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae('Adecuación Interna','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ia_temp_show_clave(idDepto){
    mp();
    //titulos("Adecuación Interna", "Nueva");
    $.ajax({ url: _URL_POA+'aitemporal/showclave/'+idDepto, type: 'GET', dataType: 'json', })
    .done(function(json) { 
      
      var r = "";
      if (json.length==1) { r='readonly'; }
      var s = "<select class='form-control form-control-sm' id='indicador' " + r + " name='indicador' onchange='ia_temp_show_partida()'>"
      for (var i = 0; i < json.length; i++) {
          s+="<option value='"+ json[i]['id'] +"'>" + json[i]['clave'] + " - " + json[i]['indicador'] + "</option>";
      }
      s+="</select>";
      $("#div_select_indicador").html(s);
      $("#div_select_accion").html("<select class='form-control form-control-sm' readonly='readonly'><option>.:Acción:.</option></select>");
      $("#div_select_partida").html("<select class='form-control form-control-sm' readonly='readonly'><option>.:Partida:.</option></select>");
      $("#div_adecuacion_interna").html("");
      $("#div_botones").css('display', 'none');

      ia_temp_show_partida();
    })
    .fail(function() {  ae('Adecuación Interna','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ia_temp_show_partida(){
    mp();
    //titulos("Adecuación Interna", "Nueva");
    var depto = $("#departamento").val();
    var indic = $("#indicador").val();
    $.ajax({ url: _URL_POA+'aitemporal/showpartida/'+indic+'/'+depto, type: 'GET', dataType: 'json', })
    .done(function(json) { 
      var r = "";
      if (json.length==1) { r='readonly'; }
      var s = "<select class='form-control form-control-sm' id='partida' " + r + " name='partida' oninput='ia_temp_show_formulario()'>"
      for (var i = 0; i < json.length; i++) {
          s+="<option value='"+ json[i]['partida_id'] +"'>" + json[i]['partida_id'] + " - " + json[i]['descripcion'] + "</option>";
      }
      s+="</select>";
      $("#div_select_partida").html(s);
      ia_temp_show_formulario();
      $("#div_adecuacion_interna").html("");
      $("#div_botones").css('display', 'none');
    })
    .fail(function() {  ae('Adecuación Interna','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ia_temp_show_formulario(){
    mp();
    var indic = $("#indicador").val();
    var parti = $("#partida").val();
    var depto = $("#departamento").val();
    $.ajax({ url: _URL_POA+'aitemporal/create/form', type: 'GET', dataType: 'html', data: {'indicador':indic, 'partida':parti, 'depto': depto}, })
    .done(function(vista) {  $("#div_adecuacion_interna").html(vista); $("#div_botones").css('display', 'block'); })
    .fail(function() {  ae('Adecuación Interna','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  /**
   * habilita o dehabilita la caja de reduccion o ampliación, dependiendo de que se ingrese el usuario
   * @param  {[type]} bandera   ['AMPLIACION', 'REDUCCION']
   * @param  {[type]} valor     [el valor escrito en la caja de texto]
   * @param  {[type]} idRenglon [id del renglon modificando]
   */
  function ia_temp_cajas(bandera, valor, idRenglon){
    switch(bandera){
      case 'AMPLIACION':
        if (valor!="" && valor>=0) {
          $("#"+idRenglon).find('.reduccion').attr({ readonly: 'true', value: '' });
        } else { $("#"+idRenglon).find('.reduccion').removeAttr('readonly'); }
      break;
      case 'REDUCCION':
        if (valor!="" && valor>=0) {
          $("#"+idRenglon).find('.ampliacion').attr({ readonly: 'true', value: '' });
          var disp = parseFloat($("#"+idRenglon).find('.disponible')[0].dataset.disponible);
          if (valor<=disp) { $("#"+idRenglon).removeClass('text-white'); $("#"+idRenglon).removeClass('bg-danger'); } else { $("#"+idRenglon).addClass('text-white bg-danger'); ae("Adecuación Interna", "Tu reducción supera el monto disponible."); }
        } else { $("#"+idRenglon).find('.ampliacion').removeAttr('readonly'); }
      break;
    }
  }

  function ia_temp_validar(){
    if ($(".bg-danger").length==0) {
      var t_ampliacion = 0;
      var t_reduccion = 0;
      $(".ampliacion").each(function(index, el) {
        if (el.value!="" && !isNaN(el.value) && el.value>0) { t_ampliacion=parseFloat(t_ampliacion)+parseFloat(el.value) }
      });
      
      $(".reduccion").each(function(index, el) {
        if (el.value!="" && !isNaN(el.value) && el.value>0) { t_reduccion=parseFloat(t_reduccion)+parseFloat(el.value); }
      });

      if (t_ampliacion!=t_reduccion) { ae("Adecuación Interna", "Las ampliaciones y reducciones no coinciden"); return; } 

      var nuevo_total = $("#nuevo_ampliacion").val();
      if ( nuevo_total!="" && nuevo_total>0 ){
        var presupue = $("#presupuesto").val();
        var servicio = $("#servicio").val();
        var f_inicio = $("#fecha_inicio").val();
        var f_final  = $("#fecha_final").val();
        if (presupue=="") { ae("Adecuación Interna", "Selecciona la clave presupuestal."); return; }
        if (servicio=="") { ae("Adecuación Interna", "Ingresa el nuevo servicio o evento."); return; }
        if (f_inicio=="") { ae("Adecuación Interna", "Ingresa la fecha de inicio del nuevo servicio o evento."); return; }
        if (f_final =="") { ae("Adecuación Interna", "Ingresa la fecha de termino del nuevo servicio o evento."); return; }
      }
      autorizar_firma( 'Adecuación Interna', "ia_temp_add();" );
    } else {
      ae("Adecuación Interna", "Verifica el disponible, al hacer una reducción."); return;
    }
  }

  function ia_temp_add(){
    mp();
    
    var nuevo = [];
    var movimientos = []; 
    var formData = new FormData();

    var nuevo_total = $("#nuevo_ampliacion").val();
    if ( nuevo_total!="" && nuevo_total>0 ){
      var presupue = $("#presupuesto").val();
      var servicio = $("#servicio").val();
      var f_inicio = $("#fecha_inicio").val();
      var f_final  = $("#fecha_final").val();
      nuevo.push({'presupuesto':presupue, 'partida':$("#partida").val(), 'servicio':servicio, 'fecha_inicio':f_inicio, 'fecha_final':f_final, 'total':nuevo_total});
    }

    var func = $(".detalles_restringidos").each(function(index, el) {
      var r = $(this).find('.reduccion').val();
      var a = $(this).find('.ampliacion').val();
      var id = $(this)[0].dataset.id;
      if (r!="" && r>0) { movimientos.push({"id": id, "reduccion": r, "ampliacion": '0' }); } 
      else if (a!="" && a>0 ){ movimientos.push({"id": id, "reduccion": '0', "ampliacion": a }); }
    });

    if (movimientos.length==0) { ae("Adecuación Interna", "Ingresa al menos un movimiento de ampliación y reducción."); op(); return; }

    nuevo = JSON.stringify(nuevo);
    movimientos = JSON.stringify(movimientos);
    
    formData.append('nuevo', nuevo );
    formData.append('movimientos', movimientos);
    formData.append('password', $("#pass").val() );

    $.ajax({
      url: _URL_POA+'aitemporal', type:'POST', dataType:'json', 
      data: formData,
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
      processData: false, contentType: false,
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Adecuación Interna', json['message']);  ia_temp_nueva(); } else {  ae('Adecuación Interna', json['message']); } op(); })
    .fail(function() { ae('Adecuación Interna', 'Ocurrió un error.');  op(); });


  }

////////////////////////////////////
//Fin adecuacion interna temporal //
////////////////////////////////////

////////////////////////////////////
// Adecuacion externa temporal //
/////////////////////////////////

  function ea_temp_listado(){
    mp();
    titulos("Adecuación Externa", "Movimientos");
    $.ajax({ url: _URL_POA+'aetemporal', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Adecuación Externa','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ea_listado_filtro(pagina){
    mp();
    magia_datalist('deptos', 'filtro_departamento', 'filtro_departamento_nombre');
    $.ajax({ 
      url: _URL_POA+'aetemporal/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('ea_listado_filtro'); })
    .fail(function() {  ae('Adecuación Externa','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ea_exportar(pagina){
    magia_datalist('deptos', 'filtro_departamento', 'filtro_departamento_nombre');
    var depto = $("#filtro_departamento").val();
    var capta = $("#filtro_captacion").val();
    var parti = $("#filtro_partida").val();
    if (depto=="") { depto=0; }
    if (capta=="") { capta=0; }
    if (parti=="") { parti=0; }
    location.href = "http://poa.zitacuaro.tecnm.mx/aeexcel/"+depto+"/"+capta+"/"+parti;
  }

  function ea_temp_nueva(){
    mp();
    titulos("Adecuación Externa", "Nueva")
    $.ajax({ url: _URL_POA+'aetemporal/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae('Adecuación Externa','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ea_temp_show_clave(idDepto){
    mp();
    //titulos("Adecuación Interna", "Nueva");
    $.ajax({ url: _URL_POA+'aetemporal/showclave/'+idDepto, type: 'GET', dataType: 'json', })
    .done(function(json) { 
      
      var r = "";
      if (json.length==1) { r='readonly'; }
      var s = "<select class='form-control form-control-sm' id='indicador' " + r + " name='indicador' onchange='ea_temp_show_formulario()'>"
      for (var i = 0; i < json.length; i++) {
          s+="<option value='"+ json[i]['id'] +"'>" + json[i]['clave'] + " - " + json[i]['indicador'] + "</option>";
      }
      s+="</select>";
      $("#div_select_indicador").html(s);
      $("#div_adecuacion_interna").html("");
      $("#div_botones").css('display', 'none');

      //ia_temp_show_partida();
      ea_temp_show_formulario();
    })
    .fail(function() {  ae('Adecuación Externa','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function ea_temp_show_formulario(){
    mp();
    $("#btn_nueva")[0].classList.remove('disabled');
    var indic = $("#indicador").val();
    var depto = $("#departamento").val();
    $.ajax({ url: _URL_POA+'aetemporal/form', type: 'GET', dataType: 'html', data: {'indicador':indic, 'depto': depto}, })
    .done(function(vista) {  
      $("#div_adecuacion_externa").html(vista); $("#div_botones").css('display', 'block'); 

      $('#modal_justificacion').on('show.bs.modal', function (event) {
        var button = $(event.relatedTarget) // Button that triggered the modal
        var id = button.data('id') // Extract info from data-* attributes
        // If necessary, you could initiate an AJAX request here (and then do the updating in a callback).
        // Update the modal's content. We'll use jQuery here, but you could use a data binding library or other methods instead.
        var modal = $(this)
        $("#justificacion").data('id', id);
        modal.find('#justificacion').val( $("#justificacion-"+id).val() );
      })

      $('#modal_justificacion').on('hide.bs.modal', function (event) {
        var id_input = $("#justificacion").data('id');
        $("#justificacion-"+id_input).val( $("#justificacion").val() );
        $("#justificacion").val("");
        
      })

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

  function ea_temp_show_partida(idRow){
    mp();
    //titulos("Adecuación Interna", "Nueva");
    var $idPresupuesto = $(idRow).find('.presupuesto').val();
    if ($idPresupuesto>0 && $idPresupuesto!="") {
      $.ajax({ url: _URL_POA+'aetemporal/showPartida/'+$idPresupuesto, type: 'GET', dataType: 'json', })
      .done(function(json) { 
        
        $(idRow).find('.partida').removeAttr('disabled').attr('list', 'list-'+idRow);

        var opt = "";
        $.each(json, function(index, dato) {
          opt+= "<option value='"+dato['id']+"'>"+dato['descripcion']+"</option>";
        });
        $(idRow).find('.div_list_partidas').html("<datalist id='list-"+idRow+"'>"+opt+"</datalist>");
        
        /*var r = "";
        if (json.length==1) { r='readonly'; }
        var s = "<select class='form-control form-control-sm' id='indicador' " + r + " name='indicador' onchange='ea_temp_show_formulario()'>"
        for (var i = 0; i < json.length; i++) {
            s+="<option value='"+ json[i]['id'] +"'>" + json[i]['clave'] + " - " + json[i]['indicador'] + "</option>";
        }
        s+="</select>";
        $("#div_select_indicador").html(s);
        $("#div_adecuacion_interna").html("");
        $("#div_botones").css('display', 'none');*/

        //ia_temp_show_partida();
        //ea_temp_show_formulario();
      })
      .fail(function() {  ae('Adecuación Externa','Ocurrió un error.');  })
      .always(function() {  tp(); op(); });
    }
      
  }

  function ea_add_partida_normal(){
    $("#0").clone().prependTo('#div_cn');
    var n = $("#div_cn").data('contador');
    n=n+1;
    $("#div_cn div.nueva").first().removeAttr('id').attr('id', "new-"+n).css('display', '');
    
    $("#new-"+n).find('.justificacion').first().attr('id', 'justificacion-'+n);
    $("#new-"+n).find('.btn-justificacion').first().data('id', n);
    
    $("#new-"+n).find('.btn-delete').first().attr('onclick', "$('#new-"+n+"').remove()");
    
    $("#new-"+n).find('.presupuesto').first().attr('onchange', "ea_temp_show_partida('#new-"+n+"')");



    $("#div_cn").data('contador', n);
    $("#div_tab_normal").show('slow');
    tp();
  }

  function ea_add_partida_restringida(){
    $("#1").clone().prependTo('#dic_cp');
    var n = $("#div_cn").data('contador');
    n=n+1;
    $("#dic_cp div.nueva_restringida").first().removeAttr('id').attr('id', "new-"+n).css('display', '');
    $("#new-"+n).find('.btn-modal-restringida').first().data('target', '#modal_restringida_'+n);
    $("#new-"+n).find('.modal_restringida').first().attr('id', 'modal_restringida_'+n);
    $("#new-"+n).find('.btn-modal-restringida').first().attr('onclick', "$('#modal_restringida_"+n+"').modal('show');");
    $("#new-"+n).find('.btn-delete').first().attr('onclick', "$('#new-"+n+"').remove()");
    $("#div_cn").data('contador', n);
    $("#div_tab_restringida").show('slow');
    tp();
  }

  function ea_temp_validar(){
    //Validar partidas normales nuevas
      var b = false;
      $.each($('.nueva'), function(index, elemento) {
        if ($(this)[0].id!="0") {
          $(this).find('.btn-outline-warning').addClass('btn-outline-info').removeClass('btn-outline-warning');
          var presu = $(this).find('.presupuesto'  ).first().val().trim();
          var parti = $(this).find('.partida'      ).first().val().trim();
          var ampli = $(this).find('.ampliacion'   ).first().val().trim();
          var justi = $(this).find('.justificacion').first().val().trim();
          if (presu=="") { ae("Adecuación Externa", "Selecciona la clave presupuestal para agregar la partida."); b=true; return; }
          if (parti=="") { ae("Adecuación Externa", "Selecciona una partida."); b=true; return; }
          if (ampli=="" || ampli=="0") { ae("Adecuación Externa", "Ingresa la cantidad ha ampliar la partida."); b=true; return; }
          if (justi=="") { ae("Adecuación externa", "Ingresa la justificación segun corresponda."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
        }
      });
      if (b) { return; }
    //Fin validar partidas normales nuevas

    //Validar partidas normales
      b = false;
      $.each($('.detalles'), function(index, elemento) {
        $(this).find('.btn-outline-warning').addClass('btn-outline-info').removeClass('btn-outline-warning');
        var reduc = $(this).find('.reduccion'    ).first().val().trim();
        var ampli = $(this).find('.ampliacion'   ).first().val().trim();
        var justi = $(this).find('.justificacion').first().val().trim();
        if ( reduc!="" || ampli!="" ) {
          if (reduc=="0" || ampli=="0") { ae("Adecuación Externa.", "Verificar reducción y ampliación, no puede tener valor 0."); b=true; return; }
          if (reduc!="" && reduc>0) {
            var disp = parseFloat($(this).find('.disponible')[0].dataset.disponible);
            if (disp<reduc) { ae("Adecuación Externa.", "Verifica el disponible, al hacer una reducción."); b=true; return; }
          }
          if (justi=="") { ae("Adecuación externa", "Ingresa la justificación segun corresponda."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
        }
      });
      if (b) { return; }
    //Fin validar partidas normales
    
    //Validar partidas restringidas nuevas
      b = false;
      $.each($('.nueva_restringida'), function(index, elemento) {
        if ($(this)[0].id!="1") {
          $(this).find('.btn-outline-warning').addClass('btn-outline-info').removeClass('btn-outline-warning');
          var presu = $(this).find('.presupuesto'  ).first().val().trim();
          var parti = $(this).find('.partida'      ).first().val().trim();
          var ampli = $(this).find('.ampliacion'   ).first().val().trim();
          var feini = $(this).find('.fecha_inicio' ).first().val().trim();
          var feter = $(this).find('.fecha_termino').first().val().trim();
          var costo = $(this).find('.costo'        ).first().val().trim();
          var parte = $(this).find('.participantes').first().val().trim();
          var servi = $(this).find('.servicio'     ).first().val().trim();
          var sede  = $(this).find('.sede'         ).first().val().trim();
          var justi = $(this).find('.justificacion').first().val().trim();
          var desgl = $(this).find('.desglose'     ).first().val().trim();
          var pobla = $(this).find('.poblacion'    ).first().val().trim();
          var objet = $(this).find('.objetivo'     ).first().val().trim();
          var riesg = $(this).find('.riesgos'      ).first().val().trim();
          var jmovi = $(this).find('.justificacion_movimiento').first().val().trim();
          
          if (presu=="") { ae("Adecuación Externa", "Selecciona la clave presupuestal para agregar la partida."); b=true; return; }
          if (parti=="") { ae("Adecuación Externa", "Selecciona una partida."); b=true; return; }
          if (ampli=="" || ampli=="0") { ae("Adecuación Externa", "Ingresa la cantidad ha ampliar la partida."); b=true; return; }
          if (feini=="") { ae("Adecuación externa", "Ingresa la fecha de inicio del evento correspondiente."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (feter=="") { ae("Adecuación externa", "Ingresa la fecha de termino del evento correspondiente."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (costo=="") { ae("Adecuación externa", "Ingresa el costo por participante."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (parte=="") { ae("Adecuación externa", "Ingresa el numero de participantes."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (servi=="") { ae("Adecuación externa", "Ingresa el servicio o evento."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (sede =="") { ae("Adecuación externa", "Ingresa la sede del evento."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (justi=="") { ae("Adecuación externa", "Ingresa la justificación según corresponda."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (desgl=="") { ae("Adecuación externa", "Ingresa el desglose de los gastos del evento."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (pobla=="") { ae("Adecuación externa", "Ingresa la población beneficiaria del bien."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (objet=="") { ae("Adecuación externa", "Ingresa el objetivo del bien o servicio."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (riesg=="") { ae("Adecuación externa", "Ingresa los riegos que se tendrían si no se contratará el bien o servicio."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
          if (justi=="") { ae("Adecuación externa", "Ingresa el motivo de la ampliación."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
        }
      });
      if (b) { return; }
    //Fin validar partidas restringidas nuevas
    
    //Validar partidas restringidas
      b = false;
      $.each($('.detalles_restringidos'), function(index, elemento) {
        $(this).find('.btn-outline-warning').addClass('btn-outline-info').removeClass('btn-outline-warning');
        var reduc = $(this).find('.reduccion'    ).first().val().trim();
        var ampli = $(this).find('.ampliacion'   ).first().val().trim();
        var justi = $(this).find('.justificacion').first().val().trim();
        if ( reduc!="" || ampli!="" ) {
          if (reduc=="0" || ampli=="0") { ae("Adecuación Externa.", "Verificar reducción y ampliación, no puede tener valor 0."); b=true; return; }
          if (reduc!="" && reduc>0) {
            var disp = parseFloat($(this).find('.disponible')[0].dataset.disponible);
            if (disp<reduc) { ae("Adecuación Externa.", "Verifica el disponible, al hacer una reducción."); b=true; return; }
          }
          if (justi=="") { ae("Adecuación externa", "Ingresa la justificación segun corresponda."); $(this).find('.btn-outline-info').addClass('btn-outline-warning').removeClass('btn-outline-info'); b=true; return; }
        }
      });
      if (b) { return; }
    //Fin validar partidas restringidas

    autorizar_firma( 'Adecuación Externa', "ea_temp_add();" );
  }

  function ea_temp_add(){
    mp();
    
    var movimientos = []; 
    var nuevas = []
    var restringidas = [];
    var nueva_restringida = [];
    var formData = new FormData();

    var func = $(".nueva").each(function(index, el) {
      if ($(this)[0].id!="0") {
        var presu = $(this).find('.presupuesto'  ).first().val().trim();
        var parti = $(this).find('.partida'      ).first().val().trim();
        var ampli = $(this).find('.ampliacion'   ).first().val().trim();
        var justi = $(this).find('.justificacion').first().val().trim();
        nuevas.push({"presupuesto": presu, "partida": parti, "ampliacion": ampli, "justificacion": justi });
      }
    });

    var func = $(".detalles").each(function(index, el) {
      var reduc = $(this).find('.reduccion'    ).first().val().trim();
      var ampli = $(this).find('.ampliacion'   ).first().val().trim();
      var justi = $(this).find('.justificacion').first().val().trim();
      var id = $(this)[0].dataset.id;
      if (reduc!="" && reduc>0) { movimientos.push({"id": id, "reduccion": reduc, "ampliacion": '0', "justificacion": justi }); } 
      else if(ampli!=""&&ampli>0){movimientos.push({"id": id, "reduccion": '0', "ampliacion": ampli, "justificacion": justi }); }
    });

    var func = $(".nueva_restringida").each(function(index, el) {
      if ($(this)[0].id!="1") {
        var presu = $(this).find('.presupuesto'  ).first().val().trim();
        var parti = $(this).find('.partida'      ).first().val().trim();
        var ampli = $(this).find('.ampliacion'   ).first().val().trim();
        var feini = $(this).find('.fecha_inicio' ).first().val().trim();
        var feter = $(this).find('.fecha_termino').first().val().trim();
        var costo = $(this).find('.costo'        ).first().val().trim();
        var parte = $(this).find('.participantes').first().val().trim();
        var servi = $(this).find('.servicio'     ).first().val().trim();
        var sede  = $(this).find('.sede'         ).first().val().trim();
        var justi = $(this).find('.justificacion').first().val().trim();
        var desgl = $(this).find('.desglose'     ).first().val().trim();
        var pobla = $(this).find('.poblacion'    ).first().val().trim();
        var objet = $(this).find('.objetivo'     ).first().val().trim();
        var riesg = $(this).find('.riesgos'      ).first().val().trim();
        var jmovi = $(this).find('.justificacion_movimiento').first().val().trim();

        nueva_restringida.push({"presupuesto":presu, "partida":parti, "ampliacion":ampli, "fecha_inicio":feini, "fecha_termino":feter, "costo":costo, "participantes":parte, "servicio":servi, "sede":sede, "justificacion":justi, "desglose":desgl, "poblacion":pobla, "objetivo":objet, "riesgos":riesg, "justificacion_movimiento":jmovi }); 
      }
    }); 

    var func = $(".detalles_restringidos").each(function(index, el) {
      var reduc = $(this).find('.reduccion'    ).first().val().trim();
      var ampli = $(this).find('.ampliacion'   ).first().val().trim();
      var justi = $(this).find('.justificacion').first().val().trim();
      var id = $(this)[0].dataset.id;
      if (reduc!="" && reduc>0) { restringidas.push({"id": id, "reduccion": reduc, "ampliacion": '0', "justificacion": justi }); } 
      else if(ampli!=""&&ampli>0){restringidas.push({"id": id, "reduccion": '0', "ampliacion": ampli, "justificacion": justi }); }
    });

    var total_mov = movimientos.length+restringidas.length+nuevas.length+nueva_restringida.length;
    if (total_mov==0) { ae("Adecuación Externa", "Ingresa al menos un movimiento de ampliación y reducción."); op(); return; }

    //nuevo = JSON.stringify(nuevo);
    movimientos       = JSON.stringify(movimientos);
    restringidas      = JSON.stringify(restringidas);
    nuevas            = JSON.stringify(nuevas);
    nueva_restringida = JSON.stringify(nueva_restringida);
    
    //formData.append('nuevo', nuevo );
    formData.append('movimientos',  movimientos);
    formData.append('restringidas', restringidas);
    formData.append('nuevas',       nuevas);
    formData.append('nueva_restringida', nueva_restringida);
    formData.append('password',     $("#pass").val() );
    formData.append('departamento', $("#departamento").val() );

    $.ajax({
      url: _URL_POA+'aetemporal', type:'POST', dataType:'json', 
      data: formData,
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
      processData: false, contentType: false,
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Adecuación Externa', json['message']);  ea_temp_nueva(); } else {  ae('Adecuación Externa', json['message']); } op(); })
    .fail(function() { ae('Adecuación Externa', 'Ocurrió un error.'); posicion(); op(); });
  }


////////////////////////////////////
//Fin adecuacion externa temporal //
////////////////////////////////////



/////////////////////////////////
// Materiales Proveedores      //
/////////////////////////////////

  function proveedor_listado(){
    mp();
    titulos("Proveedor", "Listado");
    $.ajax({ url: _URL_POA+'proveedor', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }



  function proveedor_listado_filtro(pagina){
    mp();
    //magia_datalist('deptos', 'filtro_departamento', 'filtro_departamento_nombre');
    $.ajax({ 
      url: _URL_POA+'proveedor/filtro?page='+pagina, type: 'POST', dataType: 'html', data: $("#filtro_proveedor").serialize(), 
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(vista) {  $("#div_listado").html(vista); paginar('proveedor_listado_filtro'); })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  /*function ea_exportar(pagina){
    magia_datalist('deptos', 'filtro_departamento', 'filtro_departamento_nombre');
    var depto = $("#filtro_departamento").val();
    var capta = $("#filtro_captacion").val();
    var parti = $("#filtro_partida").val();
    if (depto=="") { depto=0; }
    if (capta=="") { capta=0; }
    if (parti=="") { parti=0; }
    location.href = "http://127.0.0.1:8000/aeexcel/"+depto+"/"+capta+"/"+parti;
  }*/

  function proveedor_nuevo(){
    mp();
    titulos("Proveedor", "Nuevo")
    $.ajax({ url: _URL_POA+'proveedor/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista); })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  /**
   * [proveedor_validar description]
   * @param  {string} bandera Puede ser 'NUEVO' o 'UPDATE'
   * @return {[type]}         [description]
   */
  function proveedor_validar(bandera){
    var nombr = $("#nombre").val().trim();
    var rfc   = $("#rfc").val().trim();
    var repre = $("#representante").val().trim();
    var activ = $("#actividades").val().trim();
    var calle = $("#calle").val().trim();
    var numer = $("#numero").val().trim();
    var ciuda = $("#ciudad").val().trim();
    var tele1 = $("#telefono_1").val().trim();
    var corre = $("#correo").val().trim();
  
    var i = 0;
    if (nombr=="") { ae("Proveedor", "Ingresa el nombre de la empresa."); i++; }
    if (rfc  =="") { ae("Proveedor", "Ingresa el R.F.C."); i++; }
    if (repre=="") { ae("Proveedor", "Ingresa el nombre del representante legal."); i++; }
    if (activ=="") { ae("Proveedor", "Ingresa las actividades comerciales."); i++; }
    if (calle=="") { ae("Proveedor", "Ingresa el nombre de la calle del domicilio de la empresa."); i++; }
    if (numer=="") { ae("Proveedor", "Ingresa el número del domicilio de la empresa."); i++; }
    if (ciuda=="") { ae("Proveedor", "Ingresa el nombre de la ciudad donde se localiza la empresa."); i++; }
    if (tele1=="") { ae("Proveedor", "Ingresa el primer número telefónico de la empresa."); i++; }
    if (corre=="") { ae("Proveedor", "Ingresa el correo electrónico."); i++; }
    if (i>0) { return; }

    switch(bandera){
      case 'NUEVO': proveedor_add(); break;
      case 'UPDATE':proveedor_update(); break;
    }
    
  }

  function proveedor_add(){
    mp();
    $.ajax({
      url: _URL_POA+'proveedor', type:'POST', dataType:'json', 
      data: $("#form-proveedor").serialize(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { as('Proveedor', json['message']);  proveedor_listado(); } else {  ae('Proveedor', json['message']); } op(); })
    .fail(function(msj) { me(msj, 'Proveedor'); posicion(); op(); });
  }

  function proveedor_consultar(id){
    mp();
    titulos("Proveedor", "Listado");
    $.ajax({ url: _URL_POA+'proveedor/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {
      $("#show_datos").html(vista); $("#show_datos").show(); $("#div_listado").hide(); $("#nav_filtros").hide(); 
      $("input").attr('disabled', 'disabled');
      $("textarea").attr('disabled', 'disabled');
      $("#div_boton").html("<div class='col'><button type='button' onclick='javascript:proveedor_regresar();' class='btn btn-outline-dark btn-block'><i class='fa fa-times'></i> Regresar</button></div>");

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

  function proveedor_editar(id){ mp();
    $.ajax({ url: _URL_POA+'proveedor/'+id+'/edit', type: 'GET', dataType: 'html', })
    .done(function(vista) { $("#show_datos").html(vista); $("#show_datos").show(); $("#div_listado").hide(); $("#nav_filtros").hide(); $("#rfc").attr('disabled', 'disabled'); })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function proveedor_update(){
    mp();
    $.ajax({
      url: _URL_POA+'proveedor/'+$("#id").val(), type:'PUT', dataType:'json', 
      data: $("#form-proveedor").serialize(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { as('Proveedor', json['message']); proveedor_listado(); } else {  ae('Proveedor', json['message']); } op(); })
    .fail(function(msj) { me(msj, 'Proveedor'); posicion(); op(); });
  }

  function proveedor_regresar(){
    mp()
    $("#show_datos").hide(); 
    $("#div_listado").show();
    $("#nav_filtros").show();
    $("#filtro_nombre").removeAttr('disabled');
    $("#filtro_rfc").removeAttr('disabled');
    op();
  }

  function proveedor_eliminar(id){
    mp();
    if ($("#pass").val()=="") { ae('Proveedor', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({ url: _URL_POA+'proveedor/'+id, type: 'DELETE', dataType: 'json', data: {password:$("#pass").val() }, headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value }, })
    .done(function(json) { if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Proveedor', json['message']); } else {  ae('Proveedor', json['message']); } proveedor_listado(); })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); }); 
  }


//////////////////////////////////////////
// Materiales Seleccion de Proveedores  //
//////////////////////////////////////////
  function seleccion_nueva(){
    mp();
    titulos("Proveedor", "Selección")
    $.ajax({ url: _URL_POA+'proveedorSeleccion/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  
      $("#contenido_principal").html(vista);
      $('input[type=radio]').change( function() { seleccion_puntos(); });
      seleccion_puntos();
      seleccion_buscar_proveedor();
    })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function seleccion_puntos(){
    var total = 0;
    for (var i = 1; i < 9; i++) { total = total + parseInt( $("input[name=requisito_" + i + "]:checked").val() ); }
    $("#total_puntos").html(total);
    $("#puntos").val(total);
  }

  function seleccion_buscar_proveedor(){
    $( "#nombre" ).autocomplete({
      source: "proveedorSeleccion/buscar",
      minLength: 3,
      select: function(event, ui) {
        $('#id').val(ui.item.id);
        $('#domicilio').html(ui.item.calle+" "+ui.item.numero);
        $('#ciudad').html(ui.item.ciudad);
        $('#telefono').html(ui.item.telefono_1);
        $('#correo').html(ui.item.correo);
        $('#propietario').html(ui.item.representante_legal);
        $('#rfc').html(ui.item.rfc);
      },
      response: function (event, ui){
        if (ui.content.length==0) {
          ae("Selección - Proveedor", "No se encontraron coincidencias!!");
        }
      }
    });

  }

  function seleccion_validar(){
    var nombr = $("#nombre").val().trim();
    var fecha = $("#fecha").val().trim();
    
    if (nombr=="") { ae("Selección - Proveedor", "Selecciona un nombre de empresa"); op(); return; }
    if (fecha=="") { ae("Selección - Proveedor", "Selecciona una fecha correcta"); op(); return; }

    autorizar_firma( 'Proveedor - Selección', "seleccion_add();" ); 
  }

  function seleccion_add(){
    mp();
    if ($("#pass").val()=="") { ae('Proveedor - Selección', 'Ingresa tu contraseña.'); op(); return false; }
    $.ajax({
      url: _URL_POA+'proveedorSeleccion', type:'POST', dataType:'json', 
      data: $("#form-proveedor").serialize()+"&password="+$("#pass").val(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Selección - Proveedor', json['message']);  proveedor_listado(); } else {  ae('Selección - Proveedor', json['message']); } op(); })
    .fail(function(msj) { me(msj, 'Selección - Proveedor'); posicion(); op(); });
  }

  function seleccion_consultar(id){
    mp();
    console.log("oki");
    titulos("Proveedor", "Listado");
    $.ajax({ url: 'proveedorSeleccion/'+id , type: 'GET', dataType: 'html',
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value }, 
    })
    .done(function(vista) {
      $("#show_datos").html(vista); $("#show_datos").show(); $("#div_listado").hide(); $("#nav_filtros").hide(); 
      $("input").attr('disabled', 'disabled');
      seleccion_puntos();
      $("#div_boton").html("<div class='col'><button type='button' onclick='javascript:proveedor_regresar();' class='btn btn-outline-dark btn-block'><i class='fa fa-times'></i> Regresar</button></div>");
    })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }


///////////////////////////////////////////
// Materiales Evaluación de Proveedores  //
///////////////////////////////////////////
  
  function evaluacion_listado(){
    mp();
    titulos("Evaluación", "Listado");
    $.ajax({ url: _URL_POA+'proveedorEvaluacion', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Evaluación Listado','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function evaluacion_listado_filtro(pagina){
    mp();
    //magia_datalist('deptos', 'filtro_departamento', 'filtro_departamento_nombre');
    $.ajax({ 
      url: _URL_POA+'proveedorEvaluacion/filtro?page='+pagina, type: 'POST', dataType: 'html', data: $("#filtro_proveedor").serialize(), 
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },
    })
    .done(function(vista) {  $("#div_listado").html(vista); paginar('evaluacion_listado_filtro'); })
    .fail(function() {  ae('Evaluación Listado','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function evaluacion_nueva(){
    mp();
    titulos("Evaluación Listado", "Evaluación")
    $.ajax({ url: _URL_POA+'proveedorEvaluacion/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  
      $("#contenido_principal").html(vista);
      $('input[type=radio]').change( function() { evaluacion_puntos(); });
      evaluacion_puntos();
      evaluacion_buscar_proveedor();
    })
    .fail(function() {  ae('Evaluación Listado','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function evaluacion_puntos(){
    var total = 0;
    for (var i = 1; i < 9; i++) { total = total + parseInt( $("input[name=requisito_" + i + "]:checked").val() ); }
    $("#total_puntos").html(total);
    $("#puntos").val(total);
  }

  function evaluacion_buscar_proveedor(){
    $( "#nombre" ).autocomplete({
      source: "proveedorEvaluacion/buscar",
      minLength: 3,
      select: function(event, ui) {
        $('#id').val(ui.item.id);
        $('#domicilio').html(ui.item.calle+" "+ui.item.numero);
        $('#ciudad').html(ui.item.ciudad);
        $('#telefono').html(ui.item.telefono_1);
        $('#correo').html(ui.item.correo);
        $('#propietario').html(ui.item.representante_legal);
        $('#rfc').html(ui.item.rfc);
      },
      response: function (event, ui){
        if (ui.content.length==0) {
          ae("Evaluación - Proveedor", "No se encontraron coincidencias!!");
        }
      }
    });
  }

  function evaluacion_validar(){
    var nombr = $("#nombre").val().trim();
    var fecha = $("#fecha").val().trim();
    
    if (nombr=="") { ae("Evaluación - Proveedor", "Selecciona un nombre de empresa"); op(); return; }
    if (rfc  =="") { ae("Evaluación - Proveedor", "Selecciona una fecha correcta"); op(); return; }    

    autorizar_firma( 'Proveedor - Evaluación', "evaluacion_add();" ); 
  }

  function evaluacion_add(){
    mp();

    if ($("#pass").val()=="") { ae('Proveedor - Selección', 'Ingresa tu contraseña.'); op(); return false; }

    $.ajax({
      url: _URL_POA+'proveedorEvaluacion', type:'POST', dataType:'json', 
      data: $("#form-proveedor").serialize()+"&password="+$("#pass").val(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Evaluación - Proveedor', json['message']);  proveedor_listado(); } else {  ae('Evaluación - Proveedor', json['message']); } op(); })
    .fail(function(msj) { me(msj, 'Evaluación - Proveedor'); posicion(); op(); });
  }

  function evaluacion_consultar(id){
    mp();
    titulos("Proveedor", "Listado");
    $.ajax({ url: _URL_POA+'proveedorEvaluacion/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {
      $("#show_datos").html(vista); $("#show_datos").show(); $("#div_listado").hide(); $("#nav_filtros").hide(); 
      //$("input").attr('disabled', 'disabled');
      //$("textarea").attr('disabled', 'disabled');
      $("#div_boton").html("<div class='col'><button type='button' onclick='javascript:proveedor_regresar();' class='btn btn-outline-dark btn-block'><i class='fa fa-times'></i> Regresar</button></div>");
    })
    .fail(function() {  ae('Proveedor','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

///////////////////////////////////////////
// Materiales Catálogo de Proveedores  //
///////////////////////////////////////////
  
  function catalogo_listado(){
    mp();
    titulos("Catálogo", "Listado");
    $.ajax({ url: _URL_POA+'proveedorCatalogo', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Catálogo','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function catalogo_nuevo(){
    mp();
    titulos("Catálogo", "Listado");
    $.ajax({ url: _URL_POA+'proveedorCatalogo/create', type: 'GET', dataType: 'html', })
    .done(function(vista) {  $("#contenido_principal").html(vista);  })
    .fail(function() {  ae('Catálogo','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function catalogo_validar(){
    var finic = $("#fecha_inicio").val().trim();
    var fterm = $("#fecha_termino").val().trim();
    
    if (finic=="") { ae("Catálogo - Proveedor", "Selecciona una fecha de inicio correcta"); op(); return; }    
    if (finic=="") { ae("Catálogo - Proveedor", "Selecciona una fecha de termino correcta"); op(); return; }    

    //autorizar_firma( 'Proveedor - Catálogo', "catalogo_add();" ); 
    catalogo_add();
  }

  function catalogo_add(){
    mp();
    $.ajax({
      url: _URL_POA+'proveedorCatalogo', type:'POST', dataType:'json', 
      data: $("#form-nuevo").serialize(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { as('Catálogo - Proveedor', json['message']); window.location = '/rms_principal'; } else {  ae('Catálogo - Proveedor', json['message']); } op(); })
    .fail(function(msj) { me(msj, 'Catálogo - Proveedor'); posicion(); op(); });
  }

  function catalogo_vista_rapida( id ){ 
    $.ajax({ url: _URL_POA+'proveedorCatalogo/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {  
    $('#modal-consulta').modal('show');
      $("#modal-consulta .modal-title").html("Catálogo de Proveedores ( "+id+" )");
      $("#modal-consulta .modal-body").html(vista);
      $("#div_botones").remove();
    })
    .fail(function() {  ae('Catálogo - Proveedor','Ocurrió un error.');  })
    .always(function() {  tp();  });
  }

  function catalogo_consultar(id){
    mp();
    titulos("Catálogo", "Listado");
    $.ajax({ url: _URL_POA+'proveedorCatalogo/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {
      $("#show_datos").html(vista); $("#show_datos").show(); $("#div_listado").hide(); //$("#nav_filtros").hide(); 
    })
    .fail(function() {  ae('Catálogo','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function catalogo_consultar_subdireccion(id){
    mp();
    titulos("Catálogo", "Listado");
    $.ajax({ url: _URL_POA+'proveedorCatalogoSub/'+id, type: 'GET', dataType: 'html', })
    .done(function(vista) {
      $("#contenido_principal").html(vista);
    })
    .fail(function() {  ae('Catálogo','Ocurrió un error.');  })
    .always(function() {  tp(); op(); });
  }

  function catalogo_firmar(id){
    mp();
    $.ajax({
      url: _URL_POA+'proveedorCatalogo/'+id+"/firmar", type:'POST', dataType:'json', 
      data: "fecha="+$("#fecha").val()+"&password="+$("#pass").val(),
      headers: { 'X-CSRF-TOKEN': document.getElementsByName("_token")[0].value },   
    })
    .done(function(json) {  
      if (json['status']=='success') { $('#modal-firma').modal('hide'); as('Catálogo - Proveedor', json['message']);  catalogo_listado(); } else {  ae('Catálogo - Proveedor', json['message']); } op(); })
    .fail(function(msj) { me(msj, 'Catálogo - Proveedor'); posicion(); op(); });
  }




