/**
automatic.js

18-02-2016 - CREACIÓN

- Generará filas de tablas con campos de texto con función "suggest" y botones de añadir nuevo (opcional)
- La clase esablecerá que es un campo "auotmatic"
- El ID establecerá a qué tabla(s) tace referencia
- El value establecerá el texto de la fila

*/
var php_auto= "/" + DIRECTORY + "index.php?js=automatic" ;
var numSuggest = new Array();

function eliminarDiacriticosEs(texto) {
    return texto
           .normalize('NFD')
           .replace(/([^n\u0300-\u036f]|n(?!\u0303(?![\u0300-\u036f])))[\u0300-\u036f]+/gi,"$1")
           .normalize();
}

function auto_suggest(){
	//var autoLayer = $("#autoteam");
	var cl = "visible";
	
	function suggSelect( tarjet, box, autoLayer, current){
		$(".sugg").unbind("click");
		$(".sugg").click(function(){

			auto_load( $(this) );

			var id = $(this).attr("id");

			id = id.split("-");

			id = id[1].trim();

			console.log($(this));

			//$("#"+tarjet).val(id);
			tarjet.val(id);
			if($("#add_user_line").length==0){
				$("#"+box).val($(this).text());
			}else{
				$("#"+box).val("");
			}
			
			//enableNext( true );
			hide( autoLayer );
			if($("#autosubmit").length>0){
				$("#aplicar").attr("disabled", "disabled");
				$("#busqueda").submit();
			}

		});
		$(".sugg").hover(function(){
			$(".sugg").removeClass('selected');
    		$(this).addClass('selected');
    		current = $(this).index();
		});

		change_selection( current );
	}
	function change_selection( current ){
		$(".sugg").removeClass('selected');
    	$(".sugg").eq(current).addClass('selected');
	}
	function hide( autoLayer ){
		autoLayer.hide();
		autoLayer.html(""); //Al vaciar el autoLayer, los índices de los elementos vuelve a funcionar (como si fueran relativos al contenedor)
		autoLayer.removeClass(cl);
		/*

		Podemos añadir que, si al ocultarse no está seleccionado ningún ID, se vacíe

		*/
	}

	function clearVal(autohidden){
		autohidden.val("");
	}

	

	//enableNext( false );

	if($(".sugg_auto").length>0){
		$(window).keydown(function(event){
		    if(event.keyCode == 13) {//event.keyCode == 9 || 
		      	event.preventDefault();
		     	return false;
		    }
		});
	}

	$(".sugg_auto").each(function(){			

		var box 		= $(this).attr("id");
		var tarjet 		= $("#"+box+"_hidden");

		var autoLayer 	= $("#"+box+"_auto");
		var autoLayerId = autoLayer.attr("id");

		var field 		= box.split("__");

		var idnum  = field[1];

		field = field[0];

		//alert(box+" - "+autoLayerId+" - "+field);
		//$( this ).unbind("keyup");

		$( this ).focusin(function(){
			var current 	= 0;
			var elements;
			var total;

			$( this ).keyup(function(event){

				if(event.which == 40) {
					if (current + 1 < total) {
			            current++;
			            change_selection( current );
			        }
				}else if(event.which == 38) {
					if (current > 0) {
			            current--;
			            change_selection( current );
			        }
				}else if( event.which == 13 ) { //  || event.which == 9 || event.keyCode==9 
					$( "#" + autoLayerId +" .sugg.selected").trigger("click");
					//alert(autoLayerId);
					event.preventDefault();
					return false;
				}else{
					var txt 	= $(this).val();

					var fields = { action: "suggest", text: txt, table: field, campos: $("#field-"+field).val() , options: $("#opt-"+field+"-"+idnum).val() };
					

					current 	= 0;
					if(txt.length>1){
						$.get( php_auto, fields,
							function(data){
								if(data!=""){
									hide( $(".auto_display") );
									autoLayer.html(data);
									autoLayer.slideDown(500);

									elements 	= $( "#" + autoLayerId + " .sugg");
									total 		= elements.length;

									suggSelect( tarjet, box, autoLayer, current );

								}else{
									//enableNext( false );
									hide( autoLayer );
									clearVal(tarjet);
								}
							}
						);
					}else{
						//enableNext( false );
						hide( autoLayer );
						clearVal(tarjet);
					}
				}
				
			});
		});
		
		$( this ).focusout(function(){
			$( this ).unbind("keyup");
			//hide( autoLayer );
		});
	});
}

function auto_load( obj ){
	var id = obj.attr("id");

	var rellenar = false;
	var addline = false;

	if( id.indexOf("control_accesos") != -1){
		rellenar = true;
	}else if( id.indexOf("individuos") != -1){
		rellenar = true;
	}else if( id.indexOf("vehiculos") != -1){
		rellenar = true;
	}else if( id.indexOf("tarjetas") != -1){
		rellenar = true;
	}

	if($("#add_user_line").length>0){
		//Add line
		addline = true;
	}

	if(rellenar){

		var rellenable = obj.parents(".rellenable");
		//alert(rellenable.attr("id"));

		obj.find(".metadata").each(function(){

			var meta = $(this)
			var idmeta = meta.attr("id").split("-");
			idmeta = idmeta[2];

			rellenable.find(".r"+idmeta).each(function(){
				$(this).val(  meta.val() );
			});

		});
	}else{
		console.log("rellenar false");
	}
	if(addline){

		var contenedor = $("#add_user_line");

		var iduser = '';
		var nomuser = '';
		var apeuser = '';

		obj.find(".metadata").each(function(){

			var meta = $(this);
			console.log(meta);
			var idmeta = meta.attr("id").split("-");
			idmeta = idmeta[2];

			if(idmeta == 'id_usuario' || idmeta == 'id'){
				iduser = meta.val();
			}else if(idmeta == 'nombre'){
				nomuser = meta.val();
			}else if(idmeta == 'apellidos'){
				apeuser = meta.val();
			}

		});

		if(iduser!=''){
			//alert(iduser +' '+nomuser +' '+apeuser )

			var html = '<div class="destin">'+
				'<div class="deldestin" title="Eliminar destinatario"><i class="fas fa-times-circle"></i></div>'
				+nomuser+' '+ apeuser+
				'<input type="hidden" name="destin-'+iduser+'" value="'+iduser+'" />'+
				'</div>';
			contenedor.append(html);

			$(".deldestin").unbind("click");
			$(".deldestin").click(function(){
				$(this).parents(".destin").remove();
			});
			//$(".sugg_auto").val(" ");
		}else{
			console.log("iduser vacio");
		}
		
	}else{
		console.log("addline false");
	}
}
function sumaSuggest(field){
	if (typeof numSuggest[ field ] === 'undefined'){
		numSuggest[ field ] = 0;
	}else{
		numSuggest[ field ]++;
	}
}
$(document).ready(function() {

	
	//Añadimos un listado de los campos suggest para precargar datos y el array numSuggest en caso de edición

	

	$(".sugg_auto").each(function(){
		var id=$(this).attr("id").split("_");
		sumaSuggest(id[0]);
	});

	$(".automatic").each(function(){
		var id 		= $(this).attr("id");
		var f 		= id.split("-");
		var field 	= f[1];
		var val 	= $(this).val();

		var addbtn 	= "";



		/*var f = fila(data[1]);
		$(this).after(f);*/
		
		$("#btn-"+field).click(function(){
			
			//if(! field in numSuggest){
			
			sumaSuggest(field);

			if($("#add-"+field).length>0){
				addbtn = $("#add-"+field).val();
			}

			$.get(php_auto, { action: "tr_suggest", idelemnt: field, text: val, num: numSuggest[ field ], add: addbtn },
		   		function(data){
		   			$("#tr-"+field).before(data);

		   			auto_suggest();
		   			lydia_popup();
		   		}
			);
		});	

	});


	

	auto_suggest();
	//lydia_popup();

	/**
	Redundante por necesidades especiales
	*/

	var numEdiciones = $(".campoediciones").length;

	$( "#btn-addedicion" ).click(function(){
			
		numEdiciones++;

		$.get(php_auto, { action: "filaedicion", num: numEdiciones },
	   		function(data){
	   			$("#tr-ediciones").before(data);

	   			auto_suggest();
	   			lydia_popup();
	   		}
		);
	});	

	$(".deletr").click(function(){
		var id=$(this).attr("id");
		var tr=id.replace("delete_", "");

		$("."+tr).remove();
	});


	//Sólo para urls, si se exporta a otros proyectos, es inutil (por sí mismo, claro)

	//var php_auto= "index.php?js=automatic" ;
	var numUrls = $(".urlbox").length + 1;
	var addUrl 	= $("#addUrl");
	var filaUrl = $("#filaadurl");

	if(addUrl.length>0){
		addUrl.click(function(){
			var id = "url_" + numUrls;

			filaUrl.before("<tr><td>URL " + numUrls +"</td><td><input type='text' id='"+id+"' name='"+id+"' size='35' class='campo_texto urlbox' /></td></tr>");

			numUrls++;
		}); 
	}
	
	function culta_cab_vacia(){
		/*$(".estandar").each(function(){
			var tabla = $(this);

			var last = 0;
			var last_tr = "";
			var tr = "";
			tabla.find("tr").each(function(){

				tr = $(this);
				if(tr.hasClass("cabfecha") || !tr.is(':visible')){
					if(last==1){
						last_tr.hide();
					}else if(last_tr!=""){
						last_tr.show();
					}
					last = 1;

					last_tr = tr;
				}else{
					last = 0;
				}
				
			});
			if(last_tr!=""){
				if(last==1){
					last_tr.hide();
				}else{
					last_tr.show();
				}
			}
		});*/
	}
	culta_cab_vacia();
	// Filter box

	$(".filter_box").each(function(){
		var fbox 		= $(this).attr("id");

		var target = $("#"+fbox+"_target").val();

		var fields = $("#"+fbox+"_fields").val();

		fields = fields.split(";");

		var array_fields = []

		//Obtenemos las columnas involucradas, de la cabecera
		var cont = 0;
		$("#"+target+" .cab td").each(function(){
			//console.log("campo " + $(this).html());
			if(fields.indexOf($(this).html()) !=-1 ){
				array_fields[cont] = true;
			}

			cont ++;
		});

		console.log("array_fields " + array_fields);

		$( this ).focusin(function(){
			
			//alert("focusin "+target);
			console.log("focusin "+target);

			$( this ).keyup(function(event){

				if(event.which == 40) {
					/*if (current + 1 < total) {
			            current++;
			            change_selection( current );
			        }*/
				}else if(event.which == 38) {
					/*if (current > 0) {
			            current--;
			            change_selection( current );
			        }*/
				}else if( event.which == 13 ) { //  || event.which == 9 || event.keyCode==9 
					
					event.preventDefault();
					return false;
				}else{
					var txtlower 	= $(this).val().toLowerCase();
					var txtlowerplain 	= eliminarDiacriticosEs($(this).val().toLowerCase());

			
					console.log("txt "+txtlower);

					var show_sin_turnos = true;
					if($("#servicios_sin_turnos").length>0){
						if(!$("#servicios_sin_turnos").prop( "checked" )){
							show_sin_turnos = false;
						}
					}

					$("#"+target+" tr").each(function(){
						
						if(!$(this).hasClass("cab") && !$(this).hasClass("cabfecha") ){

							
							var ocultar = true;

							cont=0;

							var tr = $(this);

							var trid = $(this).attr("id");

							tr.find("td").each(function(){
								if(array_fields[cont]==true){
									var td = $(this).text().toLowerCase();
									var tdplain = eliminarDiacriticosEs($(this).text().toLowerCase());

									if(td.indexOf(txtlower) > -1 || 
										td.indexOf(txtlowerplain) > -1 || 
										tdplain.indexOf(txtlower) > -1 || 
										tdplain.indexOf(txtlowerplain) > -1 || 
										txtlower==""){

										ocultar = false;
										console.log("Coincidencia: " + td + " -> " + txtlower  + " -> " + ocultar );
									}
									
								}
								cont++;
							});
							/*if(!show_sin_turnos){
								if(tr.hasClass("sinturno")){
									ocultar = true;
								}
							}*/

							if(ocultar){
								//								
								//console.log("Ocultamos : " + tr.html() );
								//tr.hide();
								//tr.remove();
								//$("#"+trid).hide();
								//tr.hide();

								//Funcionan								
								//tr.css({"display":"block", "opacity":"0"});
								//tr.children("td").css({"display":"none", "opacity":"0"});

								tr.addClass("fb_hidden");
							}else{
								//$("#"+trid).show();
								//tr.show();

								//Funcionan								
								//tr.css({"display":"table-row", "opacity":"1"});
								//tr.children("td").css({"display":"table-cell", "opacity":"1"});

								tr.removeClass("fb_hidden");
							}
						}

					});
				}
				culta_cab_vacia();
				
			});
		});
		
		$( this ).focusout(function(){
			$( this ).unbind("keyup");
		});
	});
	
});
function fill_auto(field, text, id){
	$("#"+field).val( text );
	$("#"+field+"__hidden").val( id );
}