var filaSeleccionadaPreguntasValidar;

jQuery(function($){
	
	$("#menuTablasBasicas").addClass("active");
	
	var inspeccionCargada = sessionStorage.getItem("inspeccionCargada");
	
	if (inspeccionCargada !== null)
	{
		$("#menuFichaInspeccion").removeClass("disabled");
		/* Para completar la url del menú Ficha Inspección */
		 var link=$("#menuFichaInspeccion a").attr("href");
		 $("#menuFichaInspeccion a").attr("href",link+inspeccionCargada);
		 
		/* Para completar la url del menú Listados */
		 var link=$("#menuListados a").attr("href");
		 $("#menuListados a").attr("href",link+inspeccionCargada);
	}
	
	$("#preguntaValidar_filter_table").val(VALIDAR);
	
	//Feedback tabla
	$("#preguntasValidarFeedback").rup_feedback({
		gotoTop : true,
		block : false,
		delay : 8000,
		fadeSpeed : 500
	});
	
	//Feedback modal mantenimiento
	$("#preguntasValidar_detail_feedback").rup_feedback({
		gotoTop : true,
		block : false,
		delay : 8000,
		fadeSpeed : 500
	});
	
	//Combo tipos de pregunta (filtro)
	$("#tiposPreguntaComboFiltro").rup_combo({
		blank: "",
		source: "/ab79WebAppWar/tipospreguntas/tiposPreguntaValidar",
		sourceParam: {
			label: (("eu" === $.rup_utils.get("language"))? "descripcionEuskera" : "descripcionCastellano"),
			value: "idTipoPregunta"
		},
		orderedByValue: true,
		width: 300,
		select: function(){
			$("#idTipoPregunta_filter_table").val($("#tiposPreguntaComboFiltro").val());
		}
	});
	
	//Combos tipo pregunta (mantenimiento)
	$("#tiposPreguntaComboEdit").rup_combo({
		blank: "",
		source: "/ab79WebAppWar/tipospreguntas/tiposPreguntaValidar",
		sourceParam: {
			label: (("eu" === $.rup_utils.get("language"))? "descripcionEuskera" : "descripcionCastellano"),
			value: "idTipoPregunta"
		},
		orderedByValue: true,
		width: 300
	});
	
	//Modal mantenimiento
	$("#preguntasValidar_detail_div").rup_dialog({
		autoOpen: false,
		width: 700,
		modal: true,
		position: { my: "center center" },
		type: $.rup.dialog.DIV,
		close: function(){
			limpiarFormulario();
		}
	});
	
	bloquearInterfaz();
	
	//Tabla preguntas validación
	$("#preguntasValidar").rup_datatable({
		
		primaryKey: "idPreguntaProtocolo",
		loadOnStartUp: true,
		pagingType: "full_numbers",
		dom: 'rt<"bottom"lip>',
		pageLength : 5,
		lengthMenu: [5, 10, 25, 50],
		colReorder: false,
		filter:{
  	  		id:"preguntasValidar_filter_form",
  	  		filterToolbar:"preguntasValidar_filter_toolbar",
  	  		collapsableLayerId:"preguntasValidar_filter_fieldset"
     	},
     	columnDefs: [
     		{
     			targets: [1,5],
     			visible: false
     		},
     		{
     			targets: [0,1,2,3,4,5,6],
     			orderable: false
     		}
     	],
     	drawCallback: function () {
     		filaSeleccionadaPreguntasValidar = "";
     	},
		initComplete: function(){
			
			var tablaPreguntasValidar = $("#preguntasValidar").DataTable();
			
			//Mostrar / ocultar campos dependiendo del idioma
			if ("eu" === $.rup_utils.get("language")){
				tablaPreguntasValidar.columns( [2,4] ).visible( false );
			} else if("es" === $.rup_utils.get("language")) {
				tablaPreguntasValidar.columns( [0,3] ).visible( false );
			}
			
			var spanM = document.createElement("span"); 
			var mostrando = document.createTextNode($.rup.i18n.app.paginador.mostrando); 
			spanM.appendChild(mostrando);
			spanM.className = "mostrando";
			var spanR = document.createElement("span"); 
			var registros = document.createTextNode($.rup.i18n.app.paginador.registros); 
			spanR.appendChild(registros);
			spanR.className = "registros";
			
			var longitudTabla = document.getElementById("preguntasValidar_length"); 
			longitudTabla.appendChild(spanM); 
			longitudTabla.appendChild(spanR);
			
			$("#botoneraPreguntasValidarTabla").css("display", "none");
			$("#preguntasValidar_wrapper").css("display", "none");
			desbloquearInterfaz();
			
		}
	});
	
	var tablaPreguntasValidar = $("#preguntasValidar").DataTable();
	
	//Fila seleccionada
	$('#preguntasValidar tbody').on( 'click', 'tr', function () {
		filaSeleccionadaPreguntasValidar = tablaPreguntasValidar.row(this).data();
		if ( $(this).hasClass('selected') ) {
	        $(this).removeClass('selected');
	    }
	    else {
	    	tablaPreguntasValidar.$('tr.selected').removeClass('selected');
	        $(this).addClass('selected');
	    }
		
		if(filaSeleccionadaPreguntasValidar.numeroRespuestas > 0){
			$("#btnEditarPreguntaValidar").prop("disabled", true);
			$("#btnBorrarPreguntaValidar").prop("disabled", true);
		} else{
			$("#btnEditarPreguntaValidar").prop("disabled", false);
			$("#btnBorrarPreguntaValidar").prop("disabled", false);
		}
		
	});
	
	$('#preguntasValidar tbody').on('dblclick', 'tr', function () {
		if(filaSeleccionadaPreguntasValidar.numeroRespuestas <= 0){
			$("#btnEditarPreguntaValidar").trigger("click");
		}
	});
	
	//Mostrar / ocultar campos dependiendo del idioma
	if("eu" === $.rup_utils.get("language")){
		$("#descripcionCastellanoFilterDiv").css("display", "none");
		$("#descripcionEuskeraFilterDiv").css("display", "block");
	} else if("es" === $.rup_utils.get("language")){
		$("#descripcionEuskeraFilterDiv").css("display", "none");
		$("#descripcionCastellanoFilterDiv").css("display", "block");
	}
	
	//Filtrar búsqueda
	$("#btnPreguntasValidarFiltrar").click(function(){
		$("#descripcionCastellano_filter_table").val($("#descripcionCastellanoFilter").val());
		$("#descripcionEuskera_filter_table").val($("#descripcionEuskeraFilter").val());
		$("#identDatoEstablecimiento_filter_table").val($("#identDatoEstablecimientoFilter").val());
		$("#preguntasValidar_filter_filterButton").click();
		$("#botoneraPreguntasValidarTabla").css("display", "block");
		$("#preguntasValidar_wrapper").css("display", "block");
	});
	
	//Limpiar filtro
	$("#btnPreguntasValidarLimpiar").click(function(){
		limpiarFiltro();
	});
	
	//Nueva pregunta
	$("#btnNuevaPreguntaValidar").click(function(){

		if(typeof filaSeleccionadaPreguntasValidar !== "undefined" && filaSeleccionadaPreguntasValidar !== "" && filaSeleccionadaPreguntasValidar !== null){
			$.rup_messages("msgConfirm", {
				title: $.rup.i18n.app.preguntasValidar.nueva,
				message: $.rup.i18n.app.preguntasProtocolo.nuevaPreguntaProtocoloConfirm,
				OKFunction:	function() {
					tablaPreguntasValidar
				    .rows( '.selected' )
				    .nodes()
				    .to$() 
				    .removeClass( 'selected' );
					$("#preguntasValidar_detail_div").rup_dialog("setOption", "title", $.rup.i18n.app.preguntasValidar.nueva);
					$("#preguntasValidar_detail_div").rup_dialog("open");
				}
			});
			
		}else{
			$("#preguntasValidar_detail_div").rup_dialog("setOption", "title", $.rup.i18n.app.preguntasValidar.nueva);
			$("#preguntasValidar_detail_div").rup_dialog("open");
		}
		
	});
	
	//Editar pregunta
	$("#btnEditarPreguntaValidar").click(function(){
		
		if(typeof filaSeleccionadaPreguntasValidar !== "undefined" && filaSeleccionadaPreguntasValidar !== null && filaSeleccionadaPreguntasValidar !== ""){
			bloquearInterfaz();
			recuperarPreguntaValidar();
		} else{
			$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.feedback.error.lineaNoSeleccionada, "alert")
		}		
		
	});
	
	//Eliminar pregunta
	$("#btnBorrarPreguntaValidar").click(function(){
		if(typeof filaSeleccionadaPreguntasValidar !== "undefined" && filaSeleccionadaPreguntasValidar !== null && filaSeleccionadaPreguntasValidar !== ""){
			
			if(existeEnOtroProtocolo(filaSeleccionadaPreguntasValidar.idPreguntaProtocolo) === "true"){
				// Mensaje de confirmación
				$.rup_messages("msgConfirm", {
					title: $.rup.i18n.app.tabla.botones.eliminar,
					message: $.rup.i18n.app.preguntasValidar.borrarPreguntaValidarModeloDatos,
					OKFunction:	function() {
						bloquearInterfaz();
						$.ajax({
							url: CTX_PATH + "preguntasValidar/" + filaSeleccionadaPreguntasValidar.idPreguntaProtocolo,
							type: "DELETE",
							success: function(){
								desbloquearInterfaz();
								tablaPreguntasValidar.ajax.reload();
								$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.borrarPreguntaOk, "ok");
								filaSeleccionadaPreguntasValidar = "";
							},
							error: function(){
								desbloquearInterfaz();
								$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.borrarPreguntaError, "error");
								filaSeleccionadaPreguntasValidar = "";
							}
						});
					}
				});
			} else{
				$.rup_messages("msgConfirm", {
					title: $.rup.i18n.app.tabla.botones.eliminar,
					message: $.rup.i18n.app.preguntasProtocolo.borrarPregunta,
					OKFunction:	function() {
						bloquearInterfaz();
						$.ajax({
							url: CTX_PATH + "preguntasValidar/" + filaSeleccionadaPreguntasValidar.idPreguntaProtocolo,
							type: "DELETE",
							success: function(){
								desbloquearInterfaz();
								tablaPreguntasValidar.ajax.reload();
								$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.borrarPreguntaOk, "ok");
								filaSeleccionadaPreguntasValidar = "";
							},
							error: function(){
								desbloquearInterfaz();
								$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.borrarPreguntaError, "error");
								filaSeleccionadaPreguntasValidar = "";
							}
						});
					}
				});
			}
		} else{
			$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.feedback.error.lineaNoSeleccionada, "alert");
		}
	});
	
	//Guardar pregunta
	$("#preguntasValidar_detail_button_save").click(function(){
		
		if(identDatoEstablecimientoRepetido($("#datoEstablecimientoModal").val()) === "true"){
			$("#preguntasValidar_detail_feedback").rup_feedback("set", $.rup.i18n.app.preguntasValidar.identDatoEstablecimientoRepetido, "alert");
		} else{
			
			//Edición
			if($("#idPreguntaProtocoloModal").val() !== ""){
				//Comprobar si la pregunta existe en otro protocolo
				if(existeEnOtroProtocolo(filaSeleccionadaPreguntasValidar.idPreguntaProtocolo) === "true"){
					$.rup_messages("msgConfirm", {
						title: $.rup.i18n.app.mensajes.alerta,
						message: $.rup.i18n.app.preguntasValidar.existeEnOtroProtocoloConfirm,
						//Se modifica el registro de la tabla AB7911T00
						OKFunction:	function() {
							
							//Formulario
							$("#preguntasValidar_detail_form").rup_form({
								feedback: $("#preguntasValidar_detail_feedback"),
								url: CTX_PATH + "preguntasValidar",
								type: "PUT",
								validate: {
									liveCheckingErrors : false,
									showFieldErrorAsDefault : true,
									showErrorsInFeedback : false,
									showFieldErrorsInFeedback : true,
									rules: {
										"descripcionCastellano"    : { required : true, maxlength : 300 },
										"descripcionEuskera"	   : { required : true, maxlength : 300 },
										"identDatoEstablecimiento" : { required : true, maxlength : 100 },
										"idTipoPregunta"		   : { required : true }
									}
								},
								success: function(){
									$("#preguntasValidar_detail_div").rup_dialog("close");
									$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaOk, "ok");
									tablaPreguntasValidar.ajax.reload();
									filaSeleccionadaPreguntasValidar = "";
								},
								error: function(){
									$("#preguntasValidar_detail_feedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaError, "error");
									filaSeleccionadaPreguntasValidar = "";
								}
							});
							$("#preguntasValidar_detail_form").submit();
						},
						CANCELFunction: function(){
							
							//Formulario
							$("#preguntasValidar_detail_form").rup_form({
								feedback: $("#preguntasValidar_detail_feedback"),
								url: CTX_PATH + "preguntasValidar",
								type: "POST",
								validate: {
									liveCheckingErrors : false,
									showFieldErrorAsDefault : true,
									showErrorsInFeedback : false,
									showFieldErrorsInFeedback : true,
									rules: {
										"descripcionCastellano"    : { required : true, maxlength : 300 },
										"descripcionEuskera"	   : { required : true, maxlength : 300 },
										"identDatoEstablecimiento" : { required : true, maxlength : 100 },
										"idTipoPregunta"		   : { required : true }
									}
								},
								success: function(){
									$("#preguntasValidar_detail_div").rup_dialog("close");
									$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaOk, "ok");
									tablaPreguntasValidar.ajax.reload();
									filaSeleccionadaPreguntasValidar = "";
								},
								error: function(){
									$("#preguntasValidar_detail_feedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaError, "error");
									filaSeleccionadaPreguntasValidar = "";
								}
							});
							$("#preguntasValidar_detail_form").submit();
						}
					});
				} else{
					
					//Formulario
					$("#preguntasValidar_detail_form").rup_form({
						feedback: $("#preguntasValidar_detail_feedback"),
						url: CTX_PATH + "preguntasValidar",
						type: "PUT",
						validate: {
							liveCheckingErrors : false,
							showFieldErrorAsDefault : true,
							showErrorsInFeedback : false,
							showFieldErrorsInFeedback : true,
							rules: {
								"descripcionCastellano"    : { required : true, maxlength : 300 },
								"descripcionEuskera"	   : { required : true, maxlength : 300 },
								"identDatoEstablecimiento" : { required : true, maxlength : 100 },
								"idTipoPregunta"		   : { required : true }
							}
						},
						success: function(){
							$("#preguntasValidar_detail_div").rup_dialog("close");
							$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaOk, "ok");
							tablaPreguntasValidar.ajax.reload();
							filaSeleccionadaPreguntasValidar = "";
						},
						error: function(){
							$("#preguntasValidar_detail_feedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaError, "error");
							filaSeleccionadaPreguntasValidar = "";
						}
					});
					$("#preguntasValidar_detail_form").submit();
				}
			//Nueva
			} else{
				
				//Formulario
				$("#preguntasValidar_detail_form").rup_form({
					feedback: $("#preguntasValidar_detail_feedback"),
					url: CTX_PATH + "preguntasValidar",
					type: "POST",
					validate: {
						liveCheckingErrors : false,
						showFieldErrorAsDefault : true,
						showErrorsInFeedback : false,
						showFieldErrorsInFeedback : true,
						rules: {
							"descripcionCastellano"    : { required : true, maxlength : 300 },
							"descripcionEuskera"	   : { required : true, maxlength : 300 },
							"identDatoEstablecimiento" : { required : true, maxlength : 100 },
							"idTipoPregunta"		   : { required : true }
						}
					},
					success: function(){
						$("#preguntasValidar_detail_div").rup_dialog("close");
						$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaOk, "ok");
						tablaPreguntasValidar.ajax.reload();
						filaSeleccionadaPreguntasValidar = "";
					},
					error: function(){
						$("#preguntasValidar_detail_feedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.guardarPreguntaError, "error");
						filaSeleccionadaPreguntasValidar = "";
					}
				});
				$("#preguntasValidar_detail_form").submit();
			}
		}
	});
	
	//Cerrar modal mantenimiento
	$("#preguntasValidar_detail_button_cancel").click(function(){
		$("#preguntasValidar_detail_div").rup_dialog("close");
	});
	
	//Exportar a Excel
	$("#btnExportarExcel").click(function(){
		var orderColumnIndex = tablaPreguntasValidar.order()[0][0];
		var sord = tablaPreguntasValidar.order()[0][1];
		var sidx = tablaPreguntasValidar.settings().init().columns[orderColumnIndex].sidx;
		var form=document.getElementById("preguntasValidar_filter_form");
		form.method = "POST";
		form.action = "/ab79WebAppWar/preguntasValidar/exportarExcel/"+sidx+"/"+sord;
		form.submit();
		});
	
});

//Limpiar filtro
function limpiarFiltro(){
	$("#tiposPreguntaComboFiltro").rup_combo("clear");
	$("#descripcionCastellanoFilter").val("");
	$("#descripcionEuskeraFilter").val("");
	$("#descripcionCastellano_filter_table").val("");
	$("#descripcionEuskera_filter_table").val("");
	$("#identDatoEstablecimientoFilter").val("");
	$("#identDatoEstablecimiento_filter_table").val("");
	$("#idTipoPregunta_filter_table").val(null);
}

//Limpiar formulario
function limpiarFormulario() {
	$("div.error").each(function(){
		$(this).remove();
	});

	$("i.error").each(function(){
		$(this).remove();
	});
	
	$("input.error").each(function(){
		$("#"+this.id).removeClass("error");
	});

	$("#descripcionCastellanoModal").val("");
	$("#descripcionEuskeraModal").val("");
	$("#datoEstablecimientoModal").val("");
	$("#tiposPreguntaComboEdit").rup_combo("clear");
}

//Recuperar la pregunta a editar
function recuperarPreguntaValidar(){
	$.ajax({
		type: "GET",
		url: CTX_PATH + "preguntasprotocolo/" + filaSeleccionadaPreguntasValidar.idPreguntaProtocolo,
		dataType: "json",
		success: function(data){
			$("#preguntasValidar_detail_div").rup_dialog("setOption", "title", $.rup.i18n.app.preguntasValidar.editar);
			$("#preguntasValidar_detail_div").rup_dialog("open");
			desbloquearInterfaz();
			$("#idPreguntaProtocoloModal").val(data.idPreguntaProtocolo);
			$("#descripcionCastellanoModal").val(data.descripcionCastellano);
			$("#descripcionEuskeraModal").val(data.descripcionEuskera);
			$("#datoEstablecimientoModal").val(data.identDatoEstablecimiento);
			$("#tiposPreguntaComboEdit").rup_combo("setRupValue", data.idTipoPregunta);
						
		},
		error: function(){
			desbloquearInterfaz();
			$("#preguntasValidarFeedback").rup_feedback("set", $.rup.i18n.app.preguntasProtocolo.recuperarPreguntaError, "error");
		}
	});
};

//Comprobar si la pregunta existe en otro informe técnico
function existeEnOtroProtocolo(idPreguntaProtocolo){
	var existe;
	$.ajax({
		type:"GET",
		url: CTX_PATH + "preguntasValidar/existeEnOtroProtocolo/" + idPreguntaProtocolo,
		async:false,
		success: function(data){
			desbloquearInterfaz();
			existe = data;
		},
		error: function(){
			desbloquearInterfaz();
		}
	});
	return existe;
}

//Comprobar si el dato establecimiento ya existe en BBDD
function identDatoEstablecimientoRepetido(identDatoEstablecimiento) {
	var repetido;
	$.ajax({
		type:"GET",
		url: CTX_PATH + "preguntasValidar/identDatoEstablecimientoRepetido/" + identDatoEstablecimiento,
		async: false,
		success: function(data){
			desbloquearInterfaz();
			repetido = data;
		},
		error: function(){
			desbloquearInterfaz();
		}
	});
	return repetido;
}
