var idEstudio;

$(document).ready(
	function() {
		inicial();
	}
);

function inicial(){
	limpiarTabla();
	realizaConsulta();
	inicializarBotones();
	$("table thead tr").addClass("encabezado");
}

function limpiarTabla(){	
	$('#divTablaIn').remove();
	var div = '<div id="divTablaIn"></div>';
	$('#divTablaExt').append(div);
	var tabla = $("<table class='table table-striped'/>").attr('id',"cataEstudio");       
	$("#divTablaIn").append(tabla);	
}

function realizaConsulta(){				
    // Obtener número de menú
    var menu = $("#pmn").val();
    var menuRegreso = $("#pmnReturn").val();
    var namespace = "/catalogos/addons/";
    var rowId = null;
    var oTable = null;
    
    oTable = $('#cataEstudio').DataTable({		    
        autoWidth: false,
        language: {	
            processing: "Procesando...",
            lengthMenu: "Mostrar _MENU_ registros",
            zeroRecords: "Sin eventos encontrados",
            emptyTable: "Sin eventos encontrados",
            info: "Mostrando _START_ al _END_ de _TOTAL_",
            infoEmpty: "0 registros",
            infoFiltered: "(filtrado de un total de _MAX_ registros)",
            search: "Buscar:",
            thousands: ",",
            loadingRecords: "Cargando...",
            paginate: {
                first: "Primero",
                last: "&Uacute;ltimo",
                next: "Siguiente",
                previous: "Anterior"
            }
        },
        pageLength: 10,
        info: false,
        filter: true,
        ordering: false,
        paging: true,
        pagingType: "full_numbers",
        order: [],
        ajax: {
            url: "listadoEstudiosAddons",
            dataSrc: ""
        },
        columns: [
            { title: "Nombre", data: "nombre", searchable: true, width: "100px" },
            { title: "Addon", data: "addon", searchable: true, width: "50px" },
            { title: "Reducci\u00F3n de clientes", data: "reduClientes", searchable: true, width: "50px" },
            { title: "Reporte", data: "formula", searchable: true, width: "500px" }
        ],
        rowCallback: function(row, data, index) {
            var link = '<a onClick="guardaIdEstudio(' + data["idEstudio"] + ')" data-bs-toggle="modal" data-bs-target="#modalAgregaActualiza">' + data["nombre"] + '</a>';
            $(row).attr("id", data["idEstudio"]);
            $('td:eq(0)', row).html(link);
            $('td:eq(1)', row).html(data["addon"]);
            $('td:eq(2)', row).html(data["reduClientes"]);
            $('td:eq(3)', row).html(data["formula"]);
        }
    });
}


function validarAgregar(){
	
	$("#forma").validate(
		      {
		        rules: 
		        {
		        	nombreEstudio: 
		          {
		            required: true,
		            maxlength: 50,
		            regex:"^[a-zA-Z0-9 ]+$"
		          }
		        },
		        messages: 
		        {
		        	nombreEstudio: 
		          {
		            required: "Nombre del Estudio es obligatorio.",
		            maxlength: "Nombre no debe exceder 50 caracteres",
		            regex: "Nombre debe ser con caracteres alfanum\u00E9ricos"
		          }
		        }
	});
	
	$.validator.addMethod("regex",function(value,element,regexp){
	      var re= new RegExp(regexp);
	      return this.optional(element) || re.test(value);
	},"Only Characters from A-z");
}

function inicializarBotones(){
	$("#nuevo").click(function()  
	{		
		window.location.href = contextPath + "/catalogos/addons/dirigirAgregarEstudio.action?pmn=210&pmnReturn=210";				
	});
}

function regreso(){	
	var menu = $("#pmn").val();
	if(menu == '' || menu == null || menu == undefined)
		menu = 210;
	window.location.href = contextPath + "/catalogos/addons/index.action?pmn=" + menu;
}

function guardaIdEstudio(idEstud) {	
	idEstudio = idEstud;
	llamaObtenEstudio(idEstud);
}

function llamaObtenEstudio(idEstudio) {
	var jsonString = '{"idEstudio" : "'+ idEstudio +'"}';
	var stringJson = JSON.parse(jsonString);
	callActionAjax( "/catalogos/addons/llamaObtenAddon", stringJson, procesaRespuestaObtenEstudio);
}

function procesaRespuestaObtenEstudio(jsonData) {
	var est = jsonData.estudio;
	var reps = jsonData.reportes;
	var rep;
	//debugger
	$('#inpNombreEstudio').val(est.nombre);
	$('#inpSigla').val(est.addon);
	$('#inpReduClientes').val(est.reduClientes);
	
	$('#campoReporte').children().remove();
	
	var option;
	for(var i = 0; i < reps.length; i++){
		rep = reps[i];
		if(est.idReporte == rep.idReporte) {
			$('#campoReporte').append('<option value="'+ rep.idReporte +'" selected> '+ rep.descFormula +' </option>');
		}else {
			$('#campoReporte').append('<option value="'+ rep.idReporte +'"> '+ rep.descFormula +' </option>');
		}						
	}
}

function llamaActualizaEstudio() {
	
	var adon = $('#inpSigla').val();
	var nombre = $('#inpNombreEstudio').val();
	var reduclientes = $('#inpReduClientes').val();
	var jsonString = '{"idEstudio" : "'+ idEstudio + '", "adon" : "' + adon + '", "nombreEstudio" : "' + nombre 
		+ '", "redClientes" : "' + reduclientes+ '", "reporte" : "' + $('#campoReporte').val() +'"}';	
	var stringJson = JSON.parse(jsonString);
	callActionAjax( "/catalogos/addons/llamaActualizaAddon", stringJson, procesaRespuestaActualiza);

}

function procesaRespuestaActualiza(jsonData) {
	
	var seRepite = jsonData.seRepiteSigla;
	
	$('#modalAgregaActualiza').modal('hide');
	
	if(!seRepite) {
		showMessage("Actualizado con \u00E9xito");
	}else {
		showError("La sigla se repite en otro Estudio.");
	}
	
	inicial();	
}

function callActionAjax(actionRoute, jsonActionParameter, functionProcessor){
	 $.ajax({
	     url: contextPath + actionRoute,
	     type: 'POST',
	     data:  jsonActionParameter, 
		 dataType: "json",
	     success:function(response){ 
	    	 functionProcessor(response);    
	     },
	     error:function(jqXhr, textStatus, errorThrown){
	         showError("Problemas al enviar los datos.");
	     }
	 });	
}