var guardadoOk = sessionStorage.getItem("guardadoDatosBasicosOk");
var valorComboProtocoloInicial = "";
var protocoloCambiado = false;

var idResultadoInspeccionLoad = 0;
var idResultadoInspeccionChange = 0;
var idEstadoInspeccionLoad = 0;
var idEstadoInspeccionChange = 0;
var idProtocoloLoad = 0;
var idProtocoloChange = 0;
var idCampainaLoad = 0;
var idCampainaChange = 0;
var idAgrupacionLoad = 0;
var idAgrupacionChange = 0;
var idInspectoresLoad = 0;
var idInspectorChange;
var informeTecnicoObligatorio = false;

var botonGuardar = false;

jQuery(function($){
	
	cargarFormulario();
		
	inicializaControlCambios("datosBasicosInspeccionForm");
	
	if(sessionStorage.getItem("mostrarBtnVerCenso") === "true"){
		$("#btnVerCenso").removeAttr("hidden");
	}else{
		$("#btnVerCenso").attr("hidden", "true");
	}
	
	if($("#inspeccionSinExpediente").val() === "true"){
		$("#btnVerDocumentos").css("opacity", 0.7);
		$("#btnVerDocumentos").removeAttr("href");
		
	} else{
		$("#btnVerDocumentos").css("opacity", 1);
	}
	
	 $("#btnGuardarUbicacion").attr("hidden","true");
	 $("#btnGuardar").prop("disabled", false);
	 $("#btnCrearExpediente").attr("hidden","true");
	 $("#btnActualizar").attr("hidden","true");
	 $("#btnAsociarEstablecimientoInspeccion").attr("hidden", "true");
	 
	if(guardadoOk === "true"){
		$("#datosBasicos_feedback").rup_feedback({ gotoTop : true, block : false, closeLink : true });
		$("#datosBasicos_feedback").rup_feedback("set",$.rup.i18n.app.feedback.correcto.datos_guardados_OK, "ok");
		sessionStorage.setItem("guardadoDatosBasicosOk", false);
	}
	
	//Comprobar si el tipo de infomre técnico es obligatorio
	$.ajax({
		async:false,
		url: CTX_PATH + "relOriDir/findByOrigenDireccion/" + $("#origenInspeccionFicha").val() + "/" + $("#direccionFicha").val(),
		type: "GET",
		contentType: "application/json",
		dataType: "json",
		success : function(data){
			
			if(data.informeTecnico == INFORME_TECNICO_OBLIGATORIO){
				informeTecnicoObligatorio = true;
				$("#protocoloDatosBasicos").addClass("validation-label-fix");
				$("#protocoloComboLabel").addClass("required");
			} else {
				$("#protocoloDatosBasicos").removeClass("validation-label-fix");
				$("#protocoloComboLabel").removeClass("required");
			}
		}
	});
	
	var fechaActual = new Date();
	
	var dd = String(fechaActual.getDate()).padStart(2, '0');
	var mm = String(fechaActual.getMonth() + 1).padStart(2, '0'); 
	var yyyy = fechaActual.getFullYear();
	
	
	var fechaEsp = dd + "/" + mm + "/" + yyyy;
	
	var fechaEu = yyyy + "/" + mm + "/" + dd;
	
	$("#fechaFinInspeccion").rup_date({
		maxDate:  (("eu"===$.rup_utils.get("language")) ? fechaEu: fechaEsp)
	});
		
	$("#estadoSelect").rup_combo({
		blank : "",
		source : "/ab79WebAppWar/estadosinspeccion/datosBasicos/"+$("#idInspeccion").val(),
		sourceParam : {
			label : (("eu"==$.rup_utils.get("language")) ? "desEstIns.descripcionEuskera": "desEstIns.descripcionCastellano"),
			value : "idEstadoInspeccion"
		},
		width: 500,
		onLoadSuccess : function() {
			idEstadoInspeccionLoad = $("#estado").val();
			if (" " !== idEstadoInspeccionLoad) {
				$("#estadoSelect").rup_combo("setRupValue", idEstadoInspeccionLoad);
			}
			
			if($.inArray(parseInt($("#estadoSelect").val()), idsEstadoTerminado) !== -1){
				$("#inspectoresComboLabel").addClass("required");
			} else{
				$("#inspectoresComboLabel").removeClass("required");
			}
			
			mostrarFechaInspeccion();
			mostrarResultadoCombo();

		},
		select: function(){
			idEstadoInspeccionChange = $("#estadoSelect").val();
			$("#estado").val(idEstadoInspeccionChange);
			
			if($.inArray(parseInt($("#estadoSelect").val()), idsEstadoTerminado) !== -1){
				$("#inspectoresComboLabel").addClass("required");
				$("#inspectoresDatosBasicos").addClass("validation-label-fix");
				$("#inspectoresCombo").rup_combo("enable");
			} else {
				$("#inspectoresComboLabel").removeClass("required");
				$("#inspectoresDatosBasicos").removeClass("validation-label-fix");
			}
			mostrarFechaInspeccion();
			mostrarResultadoCombo();
		},
		change: function() {
			if(validarFechaFinInspeccion()){
				$("#resultadoCombo").addClass("required");
				$("#labelResultado").addClass("required");
			}else{
				$("#resultadoCombo").removeClass("required");
				$("#labelResultado").removeClass("required");
			}
		}
	});
	
	$("#fechaFinInspeccion").rup_date();
	
	$("#protocoloCombo").rup_combo({
		blank : "",
		source : "/ab79WebAppWar/protocolos/validados",
		sourceParam : {
			label : (("eu"==$.rup_utils.get("language")) ? "descripcionEuskera": "descripcionCastellano"),
			value : "idProtocolo"
		},
		width: 500,
		onLoadSuccess : function() {
			idProtocoloLoad = $("#protocolo").val();
			if (" " !== idProtocoloLoad) {
				$("#protocoloCombo").rup_combo("setRupValue", idProtocoloLoad);
			}
			
			
			valorComboProtocoloInicial = $("#protocoloCombo").rup_combo("getRupValue");
		},
		select: function(){
			idProtocoloChange = $("#protocoloCombo").val();
			$("#protocolo").val(idProtocoloChange);
			
			if(valorComboProtocoloInicial !== $("#protocoloCombo").rup_combo("getRupValue") && valorComboProtocoloInicial !== "") {
				protocoloCambiado = true;
				cargarFormulario();
			} else {
				protocoloCambiado = false;
			}
		}
	});
	
	if($("#origenCampainaOficio").val() === "true"){
		$("#campainaComboDiv").show();
		$("#campainaCombo").rup_combo({
			blank : "",
			source : "/ab79WebAppWar/campainasinspeccion?idProcedimiento=" + $("#idProcedimiento").val(),
			sourceParam : {
				label : (("eu"==$.rup_utils.get("language")) ? "descripcionEuskera": "descripcionCastellano"),
				value : "idCampaina"
			},
			width: 500,
			onLoadSuccess : function() {
				idCampainaLoad = $("#campaina").val();
				if (" " !== idCampainaLoad) {
					$("#campainaCombo").rup_combo("setRupValue", idCampainaLoad);
				}			
			},
			select: function(){
				idCampainaChange = $("#campainaCombo").val();
				$("#campaina").val(idCampainaChange);
			}
		});
	} else {
		$("#campainaComboDiv").hide();
	}
	
	$("#agrupacionesCombo").rup_combo({
		blank : "",
		source : "/ab79WebAppWar/agrupaciones",
		sourceParam : {
			label : (("eu"==$.rup_utils.get("language")) ? "descripcionEuskera": "descripcionCastellano"),
			value : "idAgrupacion"
		},
		width: 500,
		onLoadSuccess : function() {
			idAgrupacionLoad = $("#agrupaciones").val();
			if (" " !== idAgrupacionLoad) {
				$("#agrupacionesCombo").rup_combo("setRupValue", idAgrupacionLoad);
			}
			
			
		},
		select: function(){
			idAgrupacionChange = $("#agrupacionesCombo").val();
			$("#agrupaciones").val(idAgrupacionChange);
		}
	});
	
	$("#inspectoresCombo").rup_combo({
		blank : "_blank",
		source : "/ab79WebAppWar/inspectores/datosBasicos/"+$("#idInspeccionDatos").val(),
		sourceParam : {
			label : "nombreInspector",
			value : "idInspector"
		},
		width: 500,
		onLoadSuccess : function() {
			idInspectoresLoad = $("#inspectores").val();
			if (" " !== idInspectoresLoad) {
				$("#inspectoresCombo").rup_combo("setRupValue", idInspectoresLoad);
			}
			
			$("option[value=_blank]").val("");
		},
		select: function(){
			idInspectorChange = $("#inspectoresCombo").val();
			$("#inspectores").val(idInspectorChange);
		}
	});
	
	$("#resultadoCombo").rup_combo({
		blank : "",
		source : "/ab79WebAppWar/resultadosinspeccion/datosBasicos/"+$("#idInspeccion").val(),
		sourceParam : {
			label : (("eu"==$.rup_utils.get("language")) ? "desResIns.descripcionEuskera": "desResIns.descripcionCastellano"),
			value : "idResultadoInspeccion"
		},
		width: 500,
		onLoadSuccess : function() {
			idResultadoInspeccionLoad = $("#resultado").val();
			if (" " !== idResultadoInspeccionLoad) {
				$("#resultadoCombo").rup_combo("setRupValue", idResultadoInspeccionLoad);
			}
			
			if($.inArray(parseInt($("#resultadoCombo").val()), idsResultadoIncorrecto) !== -1){
				$("#observacionesResultadoLabel").addClass("required");
			} else{
				$("#observacionesResultadoLabel").removeClass("required");
			}
			
			mostrarResultadoCombo();
			
		},
		select: function(){
			var idResultadoInspeccionChange = $("#resultadoCombo").val();
			$("#resultado").val(idResultadoInspeccionChange);
			if($.inArray(parseInt($("#resultadoCombo").val()), idsResultadoIncorrecto) !== -1){
				$("#observacionesResultadoLabel").addClass("required");
				$("#observacionesResultado").prop("disabled", false);
			} else{
				$("#observacionesResultadoLabel").removeClass("required");
			}
		}
	});
	
	if($("#identificadorEstablecimiento").val() != 0){		
		$("#establecimientoCensadoSi").attr('checked', 'checked');
	}else{
		$("#establecimientoCensadoNo").attr('checked', 'checked');
	}
	
	if($("#idCampaina").val() != 0){		
		$("#asociadoCampaniaSi").attr('checked', 'checked');
	}else{
		$("#asociadoCampaniaNo").attr('checked', 'checked');
	}
	
	if($("#campania").val()!= 0){
		$("#divCampaina").removeClass("d-none");
	}
	
	$("#asociadoCampaniaSi").click(function() {
		$("#idCampaina").val($("#asociadoCampaniaSi").val());
		$("#divCampaina").removeClass("d-none");
	});
	
	$("#asociadoCampaniaNo").click(function() {
		$("#idCampaina").val($("#asociadoCampaniaNo").val());
		$("#divCampaina").addClass("d-none");
	});
	
	$("#btnGuardar").click(function() {
		bloquearInterfaz();
		if($.inArray(parseInt($("#estadoSelect").val()), idsEstadoTerminado) !== -1
				&& ($("#inspectores").val() == "0" || $("#inspectores").val() == "")) {
			$("#inspectoresCombo").addClass("error");
			$("#inspectoresComboError").removeClass("d-none");
		} else {
			
			$("#inspectoresCombo").removeClass("error");
			$("#inspectoresComboError").addClass("d-none");
			
			if(!protocoloCambiado) {
				botonGuardar = true;
				$("#datosBasicosInspeccionForm").submit();
			} else{
				$.rup_messages("msgConfirm", {
					title: $.rup.i18n.app.atencion,
					message: $.rup.i18n.app.datosBasicos.protocoloCambiado,
					OKFunction:	function() {
						botonGuardar = true;
						$("#datosBasicosInspeccionForm").submit();
					}
				});
			}
		}
		
		desbloquearInterfaz();
	});
	
	
	if($("#esExpedienteCerrado").val() === "true"){
		setTimeout(function() { 
			bloquearInspeccion();
	    }, 500);
		
	} else {
		setTimeout(function() { 
			desbloquearInspeccion();
	    }, 500);
	}

});

function cargarFormulario() {
	
	//Formulario
	$("#datosBasicosInspeccionForm").rup_form({
		url : "/ab79WebAppWar/datosbasicosdeinspeccion/guardar/" + protocoloCambiado,
		type : "POST",
		contentType : "application/json",
		dataType : 'json',
		validate:{
			liveCheckingErrors : false,
			showFieldErrorAsDefault : true,
			showErrorsInFeedback : false,
			showFieldErrorsInFeedback : true,
			rules:{
				"objetoInspeccion"		: { maxlength : 500 },
				"observacionesResultado": { required : {
												depends: function(){
													if($.inArray(parseInt($("#resultadoCombo").val()), idsResultadoIncorrecto) !== -1){
														return true;
													} else{
														return false;
													}
												}
				}, maxlength : 2000 },
				"idProtocolo.idProtocolo": {required : {
					depends: function() {
						if(informeTecnicoObligatorio) {
							return true;
						} else {
							return false;
						}
					}
				}},
				"inspector.idInspector": {required : {
					depends: function() {
						if(validarInspector()) {
							return true;
						} else {
							return false;
						}
					}
				}},
				"fechaFinInspeccion": {required : {
					depends: function() {
						if(validarFechaFinInspeccion()) {
							return true;
						} else {
							return false;
						}
					}
				}, fechaFinInspeccionMenorActual:true}
			},
			invalidHandler: function(){
				desbloquearInterfaz();
				if(!botonGuardar){
					sessionStorage.setItem("reloadDatosBasicos", true);
					location.reload();
				}
				botonGuardar = false;
			}
		},
		success : function(resultado) {
			desbloquearInterfaz();
			inicializaControlCambios("datosBasicosInspeccionForm");
			sessionStorage.setItem("reloadDatosBasicos", true);
			sessionStorage.setItem("guardadoDatosBasicosOk", true);
			location.reload();
		},
		error : function(resultado) {
			if(resultado.responseText == 'errorFechaFinInspeccion'){
				desbloquearInterfaz();
				$("#datosBasicos_feedback").rup_feedback({ gotoTop : true, block : false, closeLink : true });
				$("#datosBasicos_feedback").rup_feedback("set",$.rup.i18n.app.feedback.error.fechaActuacionNoValida, "error");
			} else{
				desbloquearInterfaz();
				$("#datosBasicos_feedback").rup_feedback({ gotoTop : true, block : false, closeLink : true });
				$("#datosBasicos_feedback").rup_feedback("set",$.rup.i18n.app.feedback.error.errorGenerico, "error");
			}
		}
	});
	
	$("#fechaFinInspeccion").focusout(function() {
		var fechaFinInspeccion = $("#fechaFinInspeccion").val();
		if(fechaFinInspeccion){
		    var fechaFinInspeccionArray = fechaFinInspeccion.split("/");
		    if("es" == $.rup_utils.get("language")){
		    	fechaFinInspeccion = fechaFinInspeccionArray[2] + "-" + fechaFinInspeccionArray[1] + "-" + fechaFinInspeccionArray[0];
		    } else {
		    	fechaFinInspeccion = fechaFinInspeccionArray[0] + "-" + fechaFinInspeccionArray[1] + "-" + fechaFinInspeccionArray[2];
		    }
		    
	    	if(new Date(fechaFinInspeccion) > new Date()){
	    		$("#datosBasicos_feedback").rup_feedback({ gotoTop : true, block : false, closeLink : true });
				$("#datosBasicos_feedback").rup_feedback("set",$.rup.i18n.app.feedback.error.fechaFinInspeccionMayorActual, "alert");
				$("#fechaFinInspeccion").rup_date("setDate", new Date());
	    	}
		}
	});
	
	//Validacion fecha fin inspección menor que la fecha actual
	$.validator.addMethod('fechaFinInspeccionMenorActual', function() {
	    var fechaFinInspeccion = $("#fechaFinInspeccion").val();
	    var fechaFinInspeccionArray = fechaFinInspeccion.split("/");
	    if("es" == $.rup_utils.get("language")){
	    	fechaFinInspeccion = fechaFinInspeccionArray[2] + "-" + fechaFinInspeccionArray[1] + "-" + fechaFinInspeccionArray[0];
	    } else {
	    	fechaFinInspeccion = fechaFinInspeccionArray[0] + "-" + fechaFinInspeccionArray[1] + "-" + fechaFinInspeccionArray[2];
	    }
	    
    	if(new Date(fechaFinInspeccion) <= new Date()){
    		return true;
    	}else{
    		return false;
    	}
	 },$.rup.i18n.app.feedback.error.fechaFinInspeccionMayorActual);
	
}
//Si algun atributo tiene valor, es obligatorio asignar un inspector
function validarInspector() {

	var retorno = true;
	
	var existenActuaciones = validarExistenActuacionesInspeccion();
	var resultado = $("#resultadoCombo").val();
	var estado = $("#estadoSelect").val();
	var protocolo = $("#protocoloCombo").val();
	var inspeccion = $("#objetoInspeccion").val();
	var observaciones = $("#observacionesResultado").val();
	var agrupacion = $("#agrupacionesCombo").val();
	var campaina = $("#campainaCombo").val();
	
	if(!existenActuaciones && (resultado == "" || resultado == 0)
			&& (estado == "" || estado == 0) 
			&& (protocolo == "" || protocolo == 0)
			&& (agrupacion == "" || agrupacion == 0)
			&& (campaina == "" || campaina == 0)
			&& (inspeccion == "")
			&& (observaciones == "")){
		retorno =  false;
	}
	
	if(retorno){
		$("#inspectoresDatosBasicos").addClass("validation-label-fix");
	}else{
		$("#inspectoresDatosBasicos").removeClass("validation-label-fix");
	}
	
	return retorno;
};

function validarFechaFinInspeccion(){
	
	//Si la situacion es finalizada, la fecha de fin debera ser obligatoria
	var retorno = true;
	
	if($("#estadoSelect").val() == null || $("#estadoSelect").val() == "" || ($("#estadoSelect").val() != "" && $("#estadoSelect").val() != $("#estadoInspeccionTerminadaHidden").val())){
		retorno = false;
	}
	
	return retorno;
}

function validarExistenActuacionesInspeccion(){
	
	var retorno = false;
	$.ajax({
		async:false,
		url: CTX_PATH + "actuaciones/countActuacionesInspeccion/" +$("#idInspeccionDatos").val(),
		type: "GET",
		contentType: "application/json",
		dataType: "json",
		success : function(data){	
			if(data > 0){
				retorno = true;
			}
		}
	});
	
	return retorno;
}
 	
function mostrarFechaInspeccion() {
	if($("#estadoSelect").val() == $("#estadoInspeccionTerminadaHidden").val()) {
		$("#divFechaFin").show();
		if($("#fechaFinInspeccion").val() == "") {
			$("#fechaFinInspeccion").rup_date("setDate", new Date());
		}else{	
			if("eu"==$.rup_utils.get("language") ){
				$("#fechaFinInspeccion").rup_date("setRupValue", $("#fechaFinInspeccion").val().split('-').join('/'));
			}else{
				$("#fechaFinInspeccion").rup_date("setRupValue", $("#fechaFinInspeccion").val().split('-').reverse().join('/'));
			}	
		}

		$("#labelFechaFin").addClass("required");
		
    	$("#botonesTablet *").prop('disabled',true);
    	$("#botonesTablet *").addClass("tabletToggleDisabled");
	} else {
		
		$("#labelFechaFin").removeClass("required");
		
		$("#divFechaFin").hide();
		
		$("#botonesTablet *").prop('disabled',false);
    	$("#botonesTablet *").removeClass("tabletToggleDisabled");
	}
}

function mostrarResultadoCombo() {
	
	if($("#estadoSelect").val() == $("#estadoInspeccionTerminadaHidden").val()) {
		
		$("#resultadoCombo").rup_combo("enable");
		
	}else{
		
		$("#resultadoCombo").rup_combo("disable");
		
	}
	
}
