

function sendLogout(){
	$('<form action="login" method="POST"></form>').appendTo('body').submit();
}

// Locale lang change event
function changeLocale(locale){
	console.log(locale);
    window.location.replace('?lang=' + locale);
}


class ReportLayout{
	
	constructor(){
		this.scrollTo = null;
		if($(window).width() <= 768){
			$("#sidebarResponsive").toggle();
		    $("#uv-content-wrapper").toggleClass("navVisible");
		}
		
		$("#uv-sidebar-toggle").click(function(e) {
		    e.preventDefault();
		    $("#sidebarResponsive").toggle();
		    $("#uv-content-wrapper").toggleClass("navVisible");
		    $('.table').css("width", "");
		});
		
	}
	
	setHeight(){}
	
	footerFix(){}
	
	footerFixBySelector(e){}
	
	setScrollTo(scrollTo){
		this.scrollTo = scrollTo;
	}
	
	scrollAuto(){
		if(this.scrollTo != null){
			$("html, body").animate({ scrollTop: ($(this.scrollTo).offset().top-100) }, 1);
		}
	}
	
	scrollToElement(e){
		$("html, body").animate({ scrollTop: ($(e).offset().top-100) }, 1);
	}
	
	scrollTop(){
		$("html, body").animate({ scrollTop: 0 }, 1);
	}
	
	closeLoadingSpinner(e){
		$(e).remove();
	}
	
}


class Layout{
	
	constructor(emptyMsg){
		this.scrollTo = null;
		this.emptyMsg = emptyMsg;
		if($(window).width() <= 768){
			$("#sidebarResponsive").toggle();
		    $("#uv-content-wrapper").toggleClass("navVisible");
		}
		
		$("#uv-sidebar-toggle").click(function(e) {
		    e.preventDefault();
		    $("#sidebarResponsive").toggle();
		    $("#uv-content-wrapper").toggleClass("navVisible");
		    $('.table').css("width", "");
		});
		
		$(".inBtnOpenRemover").click(function(e) {
		    e = e.currentTarget;
		    $('.delConfirmation').hide();
		    $('.delConfirmation[inelemid="'+$(e).attr('inelemid')+'"][ingroupid="'+$(e).attr('ingroupid')+'"][inrowid="'+$(e).attr('inrowid')+'"]').show();
		});
	}
	
	initTableLayout(params){
		$('.uv-container-floating').hide();
		$('.uv-btn-close').click(function(){
			$('.uv-container-floating').hide();
			$('.uv-container').show();
			layout.footerFix();
			layout.scrollAuto();
		});
		
		if(params.orderCellsTop){
		    $('.table thead tr')
		        .clone(true)
		        .addClass('filters')
		        .appendTo('.table thead');
	    }
	        
		$('.table').DataTable({
			searching: params.searching, 
			paging: params.paging, 
			orderCellsTop: params.orderCellsTop,
			fixedHeader: params.fixedHeader,
			info: params.info,
	        responsive: params.responsive,
	        order: params.order,
	        "language": ((!("language" in params)) ? { "emptyTable": this.emptyMsg } : params.language),
	        initComplete: params.initComplete
		});
		$("[inHidden]").hide();
		$('.uv-table-upload-button').click(function(){
		    $('<input type="file">').on('change', function () {
		        var myfiles = this.files;
		    }).click();
		});
		
		$(window).trigger('resize');
		this.footerFix();
	}
	
	setHeight(){}
	
	footerFix(){}
	
	footerFixBySelector(e){}
	
	setScrollTo(scrollTo){
		this.scrollTo = scrollTo;
	}
	
	scrollAuto(){
		if(this.scrollTo != null){
			$("html, body").animate({ scrollTop: ($(this.scrollTo).offset().top-100) }, 1);
		}
	}
	
	scrollToElement(e){
		$("html, body").animate({ scrollTop: ($(e).offset().top-150) }, 1);
	}
	
	scrollTop(){
		$("html, body").animate({ scrollTop: 0 }, 1);
	}
	
	closeLoadingSpinner(e){
		$(e).remove();
	}
		
}

function footerFix(){}

function footerFixBySelector(e){}



class ItemRegistrer {
	
	constructor(layout){	
		this.layout = layout;
		$('#sectionSelector').change(this.generateSection.bind(this));
		$('#s1TypeSelector, #s2TypeSelector, #s3TypeSelector, #s4TypeSelector').change(this.generateForm.bind(this));
		$('.inBtnOpenRegistrer').click(this.openForm.bind(this));
		
		$('.datepicker').datepicker({
			language: $('#currLang').val(),
		    autoclose: true,
		    todayHighlight: true,
		    orientation: "bottom center",
		    endDate: 'now',
		    clearBtn: true
		});
		this.layout.footerFixBySelector('#registrerForm');
	}
	
	init(){
		$('.itemFormElement').hide();
		$('.itemTypeSelector').hide();
	}
	
	openForm(e){
		e = e.currentTarget;
		this.layout.setScrollTo("#table"+$(e).attr('inTableID'));
		$('#registrerItemContainer').show();
		$('.uv-container').hide();
		$("#sectionSelector").val($(e).attr('inSectionID')).change();
		$("#s"+$(e).attr('inSectionID')+"TypeSelector").val($(e).attr('inItemID')).change();
		this.layout.scrollTop();
		this.layout.footerFixBySelector('#registrerForm');
	}
	
	generateSection(e){
		$('.itemTypeSelector').hide();
		$('#s'+$(e.target).val()+'TypeSelector').show();
		this.generateForm($('#s'+$(e.target).val()+'TypeSelector'));
	}
	
	generateForm(e){
		$('.itemFormContainer').show();
		$('.itemFormElement').hide();
		
		if(e.target){
			e = e.target;
		}

		$('#dateInitLabel').show();
		$('#dateSimpleLabel').hide();
		
		switch(parseInt($(e).val())){
			case 1:
				
				$('#s1TypeSelector').prop('disabled', false);
				$('#s2TypeSelector').prop('disabled', true);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementEncargo').show();
				$('#itemFormElementInformacion').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#info').prop('disabled', false);
				$('#encargo').prop('disabled', false);
				
				break;
			case 12:
				
				$('#s1TypeSelector').prop('disabled', false);
				$('#s2TypeSelector').prop('disabled', true);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementCurso').show();
				$('#itemFormElementHoras').show();
				$('#itemFormElementInformacion').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#info').prop('disabled', false);
				$('#curso').prop('disabled', false);
				$('#horas').prop('disabled', false);
				
				break;
			case 2:
				
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', false);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementCurso').show();
				$('#itemFormElementOrganismo').show();
				$('#itemFormElementHoras').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#organismo').prop('disabled', false);
				$('#curso').prop('disabled', false);
				$('#horas').prop('disabled', false);
				
				break;
			case 3:
				
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', false);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementCurso').show();
				$('#itemFormElementOrganismo').show();
				$('#itemFormElementHoras').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#organismo').prop('disabled', false);
				$('#curso').prop('disabled', false);
				$('#horas').prop('disabled', false);
				
				break;
			case 4:
				
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', false);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementProyecto').show();
				$('#itemFormElementInformacion').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#proyecto').prop('disabled', false);
				$('#info').prop('disabled', false);
				
				break;
			case 42:
				
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', false);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementCongreso').show();
				$('#itemFormElementComunicacion').show();
				$('#itemFormElementTitulo').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#congreso').prop('disabled', false);
				$('#esComunicacion').prop('disabled', false);
				$('#comunicacion').prop('disabled', false);
				
				break;
			case 43:
				
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', false);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementPrograma').show();
				$('#itemFormElementInformacion').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#programa').prop('disabled', false);
				$('#info').prop('disabled', false);
				
				break;
			case 5:
				
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', false);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementPublicacion').show();
				$('#itemFormElementInformacion').show();
				$('#itemFormElementMaterial').show();
				//$('#itemFormElementUrl').show();
				$('#itemFormElementEvidencia').show();
				$('#itemFormElementIndividual').show();
				
				$('.itemForm').prop('disabled', true);
				$('#publicacion').prop('disabled', false);
				$('#individual').prop('disabled', false);
				//$('#urlMaterial').prop('disabled', false);
				$('#info').prop('disabled', false);
				$('#tipoMaterial').prop('disabled', false);
				
				break;
			case 6:
				
				break;
			case 7:
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', true);
				$('#s3TypeSelector').prop('disabled', false);
				$('#s4TypeSelector').prop('disabled', true);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementFechaFin').show();
				$('#itemFormElementDescripcion').show();
				$('#itemFormElementTrabajos').show();
				$('#itemFormElementInformacion').show();
				$('#itemFormElementEvidencia').show();
				
				$('.itemForm').prop('disabled', true);
				$('#descripcion').prop('disabled', false);
				$('#info').prop('disabled', false);
				$('#trabajos').prop('disabled', false);
				break;
			case 8:
				
				$('#dateInitLabel').hide();
				$('#dateSimpleLabel').show();
				
				$('#s1TypeSelector').prop('disabled', true);
				$('#s2TypeSelector').prop('disabled', true);
				$('#s3TypeSelector').prop('disabled', true);
				$('#s4TypeSelector').prop('disabled', false);
				$('#s5TypeSelector').prop('disabled', true);
				
				$('#itemFormElementFechaIni').show();
				$('#itemFormElementInformacion').show();
				$('#itemFormElementPremio').show();
				$('#itemFormElementOrganismo').show();
				$('#itemFormElementEvidencia').show();
				
				
				$('.itemForm').prop('disabled', true);
				$('#info').prop('disabled', false);
				$('#premio').prop('disabled', false);
				$('#organismo').prop('disabled', false);
				break;
				
		}
		
		this.layout.footerFixBySelector('#registrerForm');
	}
	
}

class FormBuilder{
	
	constructor(layout){
		this.layout = layout;
		$('.inBtnOpenBuilder').click(this.build.bind(this));
	}
	
	build(e){
			
		e = e.currentTarget;
		var selTable = $('#table'+$(e).attr('inTableID'));
		$('#elemID').attr('value', $(e).attr('inElemID'));
		$('#groupID').attr('value', $(e).attr('inGroupID'));		
		this.layout.setScrollTo("#table"+$(e).attr('inTableID'));
		var dataTable = $(selTable).DataTable();
		var selRow = dataTable.row($(e).attr('inRowID')).data();
		var sectionID = "";
		$('#editItemCurrent').html("");
		var dateRow = document.createElement('div');
		$(dateRow).addClass('row').addClass('uv-mar-l-0');
		for(var i = 0; i<parseInt(dataTable.columns().header().length); i++){	
			
			if($(selRow[i])[0].display){
				selRow[i] = $(selRow[i])[0].display;
			}
			
			$(selRow[i]).find("span[inComponent='element']").each(function(j, d){
				
				var group = document.createElement('div');
				$(group).addClass('form-group');

				var input = $(document.createElement('input'));
				$(input).attr('name', $(d).attr('inName'));
				if($(d).attr('inType') == "date"){			
					var dateGroup = document.createElement('div');
					$(dateGroup).addClass('form-group');
					var dateInGroup = document.createElement('div');
					$(dateInGroup).addClass('col')
						.addClass('input-group')
						.addClass('date')
						.addClass('datepicker');
					$(document.createElement('label'))
						.html($(d).attr("inTitle"))
						.css("margin-left","15px")
						.appendTo($(dateGroup));
					$(document.createElement('br')).appendTo($(dateGroup));
					$(input)
						.attr('data-date-format', 'dd/mm/yyyy')
						.attr('type', 'text')
						.attr('value', $(d).text())
						.attr('autocomplete', 'false')
						.addClass('uv-datePicker');
					$(input).addClass('form-control')
						.appendTo($(dateInGroup));
					if($(d).is("[inRequired]")){
						$(input).attr('required', 'true');
						$(input).attr('pattern', '.{1,}');
						
					}
					var addonGroup = document.createElement('div');
					$(addonGroup)
						.html('<div class="input-group-addon input-group-text"><span class="fa fa-calendar"></span></div>')
						.addClass('input-group-prepend')
						.addClass('uv-date-icon')
						.appendTo($(dateInGroup));
					$(dateInGroup).appendTo($(dateGroup));
					$(dateGroup).appendTo($(dateRow));
				}
				else if($(d).attr('inType') == "file"){					
					var visible = true;
					$(document.createElement('label'))
						.html($(d).attr("inTitle"))
						.appendTo($(group));
					
					if($(d).attr('inFile') != null){
						var delGroup = $(document.createElement('div'))
							.addClass('deleteAttachmentGroup')
							.append(
								$(document.createElement('span'))
									.html('<a href="'+$(d).attr('inPath')+'" target="_blank"><span><i class="fas fa-paperclip" style="color:#007bff;font-size:110%;"></i></span></a>')
									.css('margin-right', '20px'))
							.append(
								$(document.createElement('span'))
									.html('<span class="btn btn-danger uv-btn-close">'+evidenceMsg+' <i class="fa fa-trash-alt" style=""></i></span>')
									.click(function(){
										$('.deleteAttachmentGroup').hide(); 
										$('.attachmentFileGroup').show();
										$(this).parent().find('input').val(1);
									}))
							.append(
								$(document.createElement('input'))
									.attr('name', 'delEvidencia')
									.attr('type', 'hidden')
									.attr('value', '0')
									.addClass('inputDelEvidencia'))
							.appendTo($(group));
						visible = false;
					}
					
					var fileGroup = document.createElement('div');
					$(fileGroup).addClass('custom-file').addClass('attachmentFileGroup');
					
					if(!visible){
						$(fileGroup).hide();
					}
					
					$(input)
						.addClass('custom-file-input')
						.attr('id', 'customFile2')
						.attr('type', $(d).attr('inType'))
						.attr('name', 'evidencia')
						.addClass('uv-filePicker')
						.on("change", function() {
							var fileName = $(this).val().split("\\").pop();
							$(this).siblings(".custom-file-label").addClass("selected").html(fileName);
						});
					$(input).appendTo($(fileGroup));
					$(document.createElement('label'))
						.html("Selecciona un fichero")
						.attr('for', 'customFile2')
						.addClass("custom-file-label")
						.appendTo($(fileGroup));
					$(document.createElement('span'))
						.html("*"+uploadLimitsMsg)
						.appendTo($(fileGroup));
					$(fileGroup).appendTo($(group));
					
					$(group).appendTo($('#editItemCurrent'));
				}
				else if($(d).attr('inType') == 'hidden'){					
					$(input)
						.attr('value', $(d).attr('inValue'))
						.attr('type', $(d).attr('inType'))
						.attr('name', $(d).attr('inName'))
						.appendTo($('#editItemCurrent'));
				}
				else if($(d).attr('inType') == 'checkbox'){	
					$(document.createElement('label'))
						.html($(d).attr("inTitle"))
						.appendTo($(group));
					$(input).attr('value', $(d).attr('inValue'))
						.attr('type', 'checkbox')
						.attr('name', $(d).attr('inName'))
						.addClass('form-control')
						.addClass('itemForm');
					if($(d).attr('inValue') == 1 || $(d).attr('inValue') == 'true' || $(d).attr('inValue') == '1'){
						$(input).attr('checked', true);
					}
					$(input).appendTo($(group));
					$(group).appendTo($('#editItemCurrent'));
				}
				else if($(d).attr('inType') == 'selectType'){	
					group = $("#itemFormElementMaterial").clone(true);
					$('select', group).attr('id', 'editTipoMaterial')
						.val($(d).attr('inValue'))
						.change();
					$(group).attr('id', 'editTypeSelect')
						.removeClass('col-sm-12')
						.removeClass('itemFormElement');
					
					$(group).appendTo($('#editItemCurrent'));
				}
				else{					
					$(document.createElement('label'))
						.html($(d).attr("inTitle"))
						.appendTo($(group));
					$(input)
						.attr('value', $(d).text())
						.attr('type', $(d).attr('inType'))
						.addClass('form-control');
					if($(d).attr('inType') == 'number'){
						$(input).css('max-width', '150px');
					}
					if($(d).is("[inRequired]")){
						$(input).attr('required', 'true');
						$(input).attr('pattern', '.{1,}');
					}
					$(input).appendTo($(group));
					$(group).appendTo($('#editItemCurrent'));
					
				}

			});
		}
		$(dateRow).prependTo($('#editItemCurrent'));
		$('.datepicker').datepicker({
			language: $('#currLang').val(),
		    autoclose: true,
		    todayHighlight: true,
		    endDate: 'now',
		    clearBtn: true
		});
		$('.uv-container').hide();
		$('#editItemContainer').show();		
		layout.footerFixBySelector('#editItemForm');
		layout.scrollTop();
	}
}

function validateAndRegistrer(){
	
	$('#validateModal').modal('hide');
	$('#validateModal').modal('show');
	
	$.get("/selfReport/validate", function(data){
		 $("#validateModalContent").html(data);
	});
}

function resetColReorderMD() {
  $('.table thead th').each(function() {
    var md = $._data($(this)[0]).events.mousedown;
    for (var i=0, l=md.length; i<l; i++) {
      if (md[i].namespace == 'ColReorder') {
        md[i].handler = function() {}
      }
    }  
  })
}

