var idioma=$.rup.lang;
var camposTabla = [];
var campoBloqueo97;
var campoServ97;
var serviciousu;
var tabla97;

jQuery(function($){
	/**
	 * 
	 * Obtengo el nombre de la tabla y el nombre del campo de bloqueo del controller
	 * 
	 */
	tabla97 = $("#tablaID").val();
	campoBloqueo97 = $("#bloqueoID").val();
	campoServ97 = $("#campoServ97").val();
	serviciousu = $("#serviciousu").val();
	
	var colNamesDetalle = [];
	var colModelDetalle = [];
	var camposClave = "";
	
	/**
	 * Obtención de datos de la tabla 98
	 * Obtengo el alias de la tabla 98 para crear los nombres de las columnas metiendolos en un array
	 * Otro array en el que voy metiendo los colmodels con su nombre especifico de columna obtenido de la tabla 98
	 * 
	 */
	jQuery
	.ajax({
		type : "GET",
		dataType : "json",
		url : "../desbloqueosTablasDetalle/" + tabla97,
		cache : false,
		success : function(xhr, response) {
			listAa21b98s01 = xhr;
			var indice=0;
			for(var i=0;i<listAa21b98s01.length;i++){

				var visible = listAa21b98s01[i].vis98;
				
				if(visible == 1 || (visible == 2 && idioma=="es") || (visible == 3 && idioma=="eu")){
					
					camposTabla[indice] = listAa21b98s01[i].campo98;
					
					colNamesDetalle[indice] = eval("$.rup.i18n.app."+tabla97.toLowerCase()+"."+listAa21b98s01[i].alias98.toLowerCase()+"");
					var tamanio=listAa21b98s01[i].long98;

					var colModelCampo = {
							name: listAa21b98s01[i].campo98.toLowerCase(),
							label:  eval("$.rup.i18n.app."+tabla97.toLowerCase()+"."+listAa21b98s01[i].alias98.toLowerCase()+""),
							align: "left",
							width: tamanio,
							sortable: false
						};
					colModelDetalle[indice] = colModelCampo;
					
					
					if(listAa21b98s01[i].clave98 == "1"){
						if(camposClave != ""){
							camposClave = camposClave + "," + listAa21b98s01[i].campo98;
						}else{
							camposClave = listAa21b98s01[i].campo98; 
						}
					}
					
					indice++;
					
				}else{
					camposTabla[indice] = listAa21b98s01[i].campo98;
					colNamesDetalle[indice] = eval("$.rup.i18n.app."+tabla97.toLowerCase()+"."+listAa21b98s01[i].alias98.toLowerCase()+"");
					
					var colModelCampo = {
							name: listAa21b98s01[i].campo98.toLowerCase(),
							label:  eval("$.rup.i18n.app."+tabla97.toLowerCase()+"."+listAa21b98s01[i].alias98.toLowerCase()+""),
							hidden: true
						};
					colModelDetalle[indice] = colModelCampo;
					
					
					if(listAa21b98s01[i].clave98 == "1"){
						if(camposClave != ""){
							camposClave = camposClave + "," + listAa21b98s01[i].campo98;
						}else{
							camposClave = listAa21b98s01[i].campo98; 
						}
					}
					
					indice++;
					
				}
			}

			//Url el nombre de la tabla en minúsculas. Irá al controller de la tabla específico.
			var url = "../"+tabla97.toLowerCase();
			var model = tabla97.substring(0,1) + tabla97.substring(1).toLowerCase();
			
			//Añado el campo bloqueo específico en el formulario de filtrado de rup_table para
			//que cuando vaya a buscar me devuelva solo los campos bloqueados
			jQuery("#DesbloqueosTablasDetalle_filter_form").append("<input type='hidden' name='"+campoBloqueo97.toLowerCase()+"' id='"+campoBloqueo97.toLowerCase()+"' value='1'/>");
			if(campoServ97 != ""){
				jQuery("#DesbloqueosTablasDetalle_filter_form").append("<input type='hidden' name='"+campoServ97.toLowerCase()+"' id='"+campoServ97+"' value='"+serviciousu+"'/>");
			}	
			$("#DesbloqueosTablasDetalle").rup_table({
				rowNum:20,
				url: url,
				colNames: colNamesDetalle,
				colModel: colModelDetalle,
				 model:model,
		        usePlugins:[
					"formEdit",
		        	"feedback",
					"toolbar",
		        	"contextMenu",
		        	"fluid",
		        	"filter",
		        	"multiselection",
	         	],
				primaryKey: camposClave,
				sortname: camposClave,
				sortorder: "asc",
				loadOnStartUp: true,
				toolbar:{
					defaultButtons:[],
					newButtons:[
					    {
							id:"desbloquear",
							obj: {i18nCaption:$.rup.i18n.app.botonerasMantGenerales.desbloquear, css: "desbloquear"},
							click: handlerDesbloquear
						},
						{
							id:"refrescar",
							obj: {i18nCaption:$.rup.i18n.app.botonerasMantGenerales.recargar, css: "recargar"},
							click: handlerRecargar
						}
					    ]
				},
				formEdit:{
		        	detailForm: "#DesbloqueosTablasDetalle_detail_div",
					fillDataMethod: "clientSide"
				}
			});
			
		},
        onPaging: function(){
			$("#DesbloqueosTablasDetalle").rup_table("deselectAllRows");
		}
	});
	
	/**
	 * 
	 * Capturo los eventos de editar y pre editar para que no cargue el formulario de detalle 
	 */
	$("#DesbloqueosTablasDetalle").on("rupTable_beforeEditRow", function(deleteOptions,selectedRow){
		return false;
	});
	
	jQuery("#DesbloqueosTablasDetalle").on("jqGridDblClickRow", function(event, form, oper) {
		return false;
	});
	
	/**
	 * Oculto el botón de clonar y la barra de criterios de búsqueda
	 */
	$("[id='DesbloqueosTablas_toolbar"+$.rup.i18n.base.rup_maint.clone+"']").css("display","none");
	$("#DesbloqueosTablasDetalle_filter_toolbar").css("display","none");
	
});

function handlerRecargar(){
	
	$("#DesbloqueosTablasDetalle").rup_table("filter");
}

/**
 * 
 * Función que desbloquea los registros seleccionados de la tabla de la que se están mostrando los detalles.
 * Para ello paso en la url la tabla en minúsculas, que corresponde a su controller. Se llama al método updateBloqueos.
 * Creo un objeto json mediante el array de campos de la tabla 98 y le asigno a cada uno su valor, excepto al campo BLOQ(num tabla) y
 * USUB(num tabla) a los que asignaré 0 y null respectivamente
 */
function handlerDesbloquear(){
	var registros = [];
	if($("#DesbloqueosTablasDetalle").rup_table("getSelectedRows") != ""){
		
		$.rup_messages("msgConfirm", { 
			title: $.rup.i18n.app.mensajesMantGenerales.titPreguntaConfirmar,
			message: $.rup.i18n.app.mensajesMantGenerales.msjConfirmarDesbloqueoCampos,
			siNo:true,
			OKFunction: function() {
				   
			   registros = $("#DesbloqueosTablasDetalle").rup_table("getSelectedLines");
			   var url = "../"+tabla97.toLowerCase()+"/updateBloqueos";
			   
			   for(var i=0;i<registros.length;i++){
				   //Resto uno al índice para coger el registro que esta seleccionado.
				   var indice = registros[i]-1;
				   var registro = $("#DesbloqueosTablasDetalle").rup_table("getRowData")[indice];
				   
				   var send = {};
				   //Si el campo es USUB(num tabla) debemos meter en el objeto json un null
				   for(var z=0;z<camposTabla.length;z++){
					   if(camposTabla[z].indexOf("USUB") != -1){
						   send[camposTabla[z].toLowerCase()] = null;
					   }else{
						   send[camposTabla[z].toLowerCase()] = eval("registro."+camposTabla[z].toLowerCase()+"");
					   } 
				   }
				   //El campo BLOQ(num tabla) se pone a 0 (Desbloqueado)
				   send[campoBloqueo97.toLowerCase()] = 0;
				   
				   var dt = jQuery.toJSON(send);
				   $.ajax({
					   url:url,
					   type: "POST",
					   contentType: "application/json; charset=utf-8",
					   dataType: "json",
					   data: dt,
					   async:false,
					   cache:false,
					   error: callback_error,
					   success: function(data) {
						   $("#DesbloqueosTablasDetalle_feedback").rup_feedback("option", "delay", defaultDelay);
						   if(registros.length > 1){
							   $("#DesbloqueosTablasDetalle_feedback").rup_feedback("set",$.rup.i18nParse($.rup.i18n.app,"mensajesMantGenerales.desbloqueoOK"), "ok");
						   }else{
							   $("#DesbloqueosTablasDetalle_feedback").rup_feedback("set",$.rup.i18nParse($.rup.i18n.app,"mensajesMantGenerales.desbloqueoOK"), "ok");
						   } 
						   $("#DesbloqueosTablasDetalle_feedback").rup_feedback("show");
						  
					   }
				   });
				   
			   }
			   $("#DesbloqueosTablasDetalle").rup_table("filter");
			}
		});
	}else{
		$.rup_messages("msgAlert", {message: $.rup.i18n.app.mensajesMantGenerales.msjNoRegistro});
	}
};

function callback_error(xhr, ajaxOptions, thrownError){
	 var errorTXT = $.rup.i18nParse($.rup.i18n.base,"rup_maint.validateError"), errors = null, errorKey = null, causedErrors = null, errMsg = "", errorMesg = "";
	 if (xhr.responseText != null && xhr.responseText != "") {	
		 if (xhr.status === 406) {//si ha habido algun error en las validaciones...
			 $("#DesbloqueosTablasDetalle_feedback").rup_feedback("option", "delay", null);
			 $("#DesbloqueosTablasDetalle_feedback").rup_feedback("set",errorTXT + " " + xhr.responseText,"error");
			 $("#DesbloqueosTablasDetalle_feedback").rup_feedback("option", "delay", defaultDelay);
		 } else {
			 $("#DesbloqueosTablasDetalle_feedback").rup_feedback("option", "delay", null);
			 $("#DesbloqueosTablasDetalle_feedback").rup_feedback("set", errorTXT, "error");								
			 $("#DesbloqueosTablasDetalle_feedback").rup_feedback("option", "delay", defaultDelay);
		 }
	 }
}



