//@ sourceURL=direccionAutomplete.js
//Inicializa el componente dirección
/* Parámetros:
	- direccion: datos de la dirección
	- pisoTutelado: boolean que indica si se ha de tener en cuenta los pisoso tutelados
	- callbacks: objeto con las funciones callback (success, change, select) para cada combo del componente
	- provinciasNoCAV booleano para saber si incluir todas las provincias del estado o solo la CAV (true -- Todas las provincias ; false -- sólo provincias CAV) 
 */
const FNRefrescarEstadoCamposAuxiliares=(settings)=>{
	if($("#"+settings.prefix+"idprovincia06_detail_table").rup_autocomplete("getRupValue") != '' &&
		($("#"+settings.prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')!='01'
			|| $("#"+settings.prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')!='20'
				|| $("#"+settings.prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')!='48')
	){						
		$("#"+settings.prefix+"localidadDesc").show();					
		$("#"+settings.prefix+"calleDesc").show();					
		$("#"+settings.prefix+"portalDesc").show();
	}
	
}
const FNLimpìarAutocomplete = (settings) => {
	$("#"+settings.id).rup_autocomplete("set",'','');
	//$("#"+settings.id).data("prev",'');
};
const FNSeleccionarAutocomplete = (settings) => {
	var selected=false;
	if($("#"+settings.id+"_label").data('loadObjects').length==0){
		FNRecargarLista({id:"#"+settings.id});
	}
	$.each($("#"+settings.id+"_label").data('loadObjects'), function (label, key) {
        if (key !== undefined) {
          if (key == settings.value) {
        	  $("#"+settings.id).rup_autocomplete("set",key,label);
        	  //$("#"+settings.id).data("prev",key);
        	  selected=true;
            return;
          }
        }
      });
	if(!selected){
		FNLimpìarAutocomplete({id:settings.id});
	}
	
	return selected;
};
const FNActivarAutocomplete = (settings) => {
	$("#"+settings.id+"_label").removeAttr('readonly');
	$("#"+settings.id+"_label +a").removeClass('ui-button-disabled ui-state-disabled ui-selectmenu-disabled');
};
const FNDesactivarAutocomplete = (settings) => {
	$("#"+settings.id+"_label").attr('readonly','true');
	$("#"+settings.id+"_label +a").addClass('ui-button-disabled ui-state-disabled ui-selectmenu-disabled');
	if(settings.hijos!=null){
		settings.hijos.forEach(function(item) {
			FNLimpìarAutocomplete({id:item});
			FNDesactivarAutocomplete({id:item});
		});
	}
};
const FNRecargarLista = (settings) => {
	if ($("#"+settings.id+"_label").data('tmp.loadObjects.term') !== undefined) {
		$("#"+settings.id+"_label").removeData('tmp.loadObjects.term');
     }
	$("#"+settings.id).rup_autocomplete('search', undefined);
	$("#"+settings.id+"_label").trigger('blur');
};
const FNSeleccionarMunicipio = (settings) => {
	$.rup_ajax({
		'url': $.rup.CTX_PATH +"nora/municipioEnlazado" ,
		'type': "GET",            
		data: settings,     
		'dataType': 'json',
		'contentType': 'application/json',
		'beforeSend': function(){
			Ad74aUtils.bloquearInterfaz();
		},
		'complete': function() {
			//Sólo se desbloquea al fallar para prevenir doble click	                	
		},
		'success': function (data){
			if(data.length==1){
				$("#"+settings.prefix+"idmunicipio06_detail_table").data("value2load",data[0].codMunicipio);
//				$("#"+settings.prefix+"idmunicipio06_detail_table").trigger("rupAutocomplete_loadComplete");
//			}else{

//				FNRecargarLista({id:settings.prefix+"idmunicipio06_detail_table"});
			}
        	Ad74aUtils.desBloquearInterfaz();
		},
		'error': function(error){ 
        	Ad74aUtils.desBloquearInterfaz();
		}
		
	});	 
};
const FNSeleccionarLocalidad = (settings) => {
	var datos = {
			codCalle:  $("#"+settings.prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'),
			codPortal: ''//$("#"+settings.prefix+"idportal06_detail_table").rup_autocomplete('getRupValue')
	};
	$.rup_ajax({
		"url": $.rup.CTX_PATH +"nora/findLocalidadByCallePortal",
		"type": "GET",            
		"data": datos,           
		"dataType": "json",
		"contentType": "application/json",
		"complete": function() {
			//Sólo se desbloquea al fallar para prevenir doble click	                	
		},
		"beforeSend": function(){
			Ad74aUtils.bloquearInterfaz();
		},
		"success": function (data){
			FNSeleccionarAutocomplete({id:settings.prefix+"idlocalidad06_detail_table",value:data.codLocalidad});
			if(data.codLocalidad!=null && data.codLocalidad!=''){
				$("#"+settings.prefix+"localidadDesc").hide();	
			}
        	Ad74aUtils.desBloquearInterfaz();
			
		},
		"error": function(error){ 
        	Ad74aUtils.desBloquearInterfaz();
		}
		
	});	 
};
const FNSeleccionarCP = (settings) => {
	const ajaxData = {
			'url': $.rup.CTX_PATH + 'nora/conseguirCP?portal='+ $("#"+settings.prefix+"idportal06_detail_table").rup_autocomplete('getRupValue') ,
			'type': 'GET',
			'contentType': 'application/json',   
			async:false,   
			'dataType': 'json',
			'beforeSend': function(){
				Ad74aUtils.bloquearInterfaz();
			},
			success: function (res) {
				$("#"+ settings.prefix + "cp06_detail_table").val(res);
	        	Ad74aUtils.desBloquearInterfaz();
			},
			error: function (error) {
	        	Ad74aUtils.desBloquearInterfaz();
			}
		};
		
	$.rup_ajax(ajaxData);
};
const FNNoValue= (settings) => {
	return $("#"+settings.prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='' && 
			($("#"+settings.prefix+"idprovincia06_detail_table").data("prev")=='' || 
			$("#"+settings.prefix+"idprovincia06_detail_table").data("prev")==null ||
			$("#"+settings.prefix+"idprovincia06_detail_table").data("prev")==undefined );
};

const FNResetComponent = (prefix) => {
	console.log("Borrar inicios anteriores");
	try{		
		$("#"+prefix+"_direccionAutocomplete [component-div='provincia_div'] .rup-combobox").filter(":not(:eq(0))").remove();
		$("#"+prefix+"_direccionAutocomplete [component-div='municipio_div'] .rup-combobox").filter(":not(:eq(0))").remove();
		$("#"+prefix+"_direccionAutocomplete [component-div='localidad_div'] .rup-combobox").filter(":not(:eq(0))").remove();
		$("#"+prefix+"_direccionAutocomplete [component-div='calle_div'] .rup-combobox").filter(":not(:eq(0))").remove();
		$("#"+prefix+"_direccionAutocomplete [component-div='portal_div'] .rup-combobox").filter(":not(:eq(0))").remove();
	}catch(err){
		alert(err);
	}
}

const initDirComponentAutocomplete = (settings) => {

	const defaultOptions={
			"callbacks": {
				"componente":{
					"general": {
						"success": () => {											
							console.log(prefix+"provincia rup_autocomplete  "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"municipio rup_autocomplete  "+$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"provincia pre val  "+$("#"+prefix+"idprovincia06_detail_table").data("prev"));
							console.log(prefix+"municipio pre val  "+$("#"+prefix+"idmunicipio06_detail_table").data("prev"));
							//si provincia vacía bloquear dependencias
							if(FNNoValue({'prefix':prefix})){
								FNDesactivarAutocomplete({id:prefix+"idmunicipio06_detail_table"});
								FNDesactivarAutocomplete({id:prefix+"idlocalidad06_detail_table"});
								FNDesactivarAutocomplete({id:prefix+"idcalle06_detail_table"});
								FNDesactivarAutocomplete({id:prefix+"idportal06_detail_table"});
							}
							getCallback("general", "success")();
						}
					},
					"provincia":{
						"isChanged": () => {
							console.log(prefix+"componente->provincia->isChanged");
							console.log(prefix+"provincia rup_autocomplete  "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"provincia label val  "+$("#"+prefix+"idprovincia06_detail_table_label").val());
							console.log(prefix+"provincia pre val  "+$("#"+prefix+"idprovincia06_detail_table").data("prev"));
							if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')!=
								$("#"+prefix+"idprovincia06_detail_table").data("prev")){
								$("#"+prefix+"idprovincia06_detail_table").data("prev",$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'))
								return true
							}
							return false;
						},
						"change": () => {
							console.log(prefix+"componente->provincia->change");
							console.log(prefix+"provincia rup_autocomplete  "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"provincia label val  "+$("#"+prefix+"idprovincia06_detail_table_label").val());
							console.log(prefix+"provincia pre val  "+$("#"+prefix+"idprovincia06_detail_table").data("prev"));
							
							if(!getCallback("componente","provincia", "isChanged")()){
								return false;
							}
							if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete("getRupValue")!=$('#'+prefix+'cp06_detail_table').val().substring(0,2)
									&& $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete("getRupValue")!=''
								){
								$('#'+prefix+'cp06_detail_table').val('');
							}
							
//							$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete("set",'','');
							FNLimpìarAutocomplete({id:prefix+"idmunicipio06_detail_table"});
							
							if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='' 
								|| $("#"+prefix+"idprovincia06_detail_table_label").val()==''){
								FNDesactivarAutocomplete({id:prefix+"idmunicipio06_detail_table",hijos:[prefix+"idlocalidad06_detail_table",prefix+"idcalle06_detail_table",prefix+"idportal06_detail_table"]});
							}else{
								if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')!=''){
									//DEPENDENCIA MUNICIPIO
									FNActivarAutocomplete({id:prefix+"idmunicipio06_detail_table"});
									//recargar lista de municipios
									FNRecargarLista({id:prefix+"idmunicipio06_detail_table"});
								}
							}
							FNRefrescarEstadoCamposAuxiliares({prefix:prefix});
							getCallback("provincia", "change")();
							return true;
						},
						"loadComplete": () => {
								console.log(prefix+"componente->provincia->loadComplete");
								console.log(prefix+"provincia rup_autocomplete  "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));
								console.log(prefix+"provincia label val  "+$("#"+prefix+"idprovincia06_detail_table_label").val());
								console.log(prefix+"provincia pre val  "+$("#"+prefix+"idprovincia06_detail_table").data("prev"));
								setTimeout(() => {
									if($("#"+prefix+"idprovincia06_detail_table").data("value2load")!=null && $("#"+prefix+"idprovincia06_detail_table").data("value2load")!=''){
										FNSeleccionarAutocomplete({id:prefix+"idprovincia06_detail_table",value:$("#"+prefix+"idprovincia06_detail_table").data("value2load")});
										getCallback("componente","provincia", "change")();
										
										$("#"+prefix+"idprovincia06_detail_table_label").val($("#"+prefix+"idprovincia06_detail_table_label").val().replace(/<strong>/g, '').replace(/<\/strong>/g, ''));
										$("#"+prefix+"idprovincia06_detail_table").data("value2load",null);
									}
							}, 1000);
						}
					},
					"municipio":{
						"isChanged": () => {
							console.log(prefix+"componente->municipio->isChanged");
							console.log(prefix+"provincia rup_autocomplete  "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"municipio rup_autocomplete  "+$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"municipio label val  "+$("#"+prefix+"idmunicipio06_detail_table_label").val());
							console.log(prefix+"municipio pre val  "+$("#"+prefix+"idmunicipio06_detail_table").data("prev"));
							if($("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue')!=
								$("#"+prefix+"idmunicipio06_detail_table").data("prev")){
								$("#"+prefix+"idmunicipio06_detail_table").data("prev",$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue'))
								return true
							}
							return false;
						},
						"change": () => {
							console.log(prefix+"componente->municipio->change");
							console.log(prefix+"provincia rup_autocomplete  "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"municipio rup_autocomplete  "+$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue'));
							console.log(prefix+"municipio label val  "+$("#"+prefix+"idmunicipio06_detail_table_label").val());
							console.log(prefix+"municipio pre val  "+$("#"+prefix+"idmunicipio06_detail_table").data("prev"));
							
							if(!getCallback("componente","municipio", "isChanged")()){
								return false;
							}

							FNLimpìarAutocomplete({id:prefix+"idlocalidad06_detail_table"});
							FNLimpìarAutocomplete({id:prefix+"idcalle06_detail_table"});
							
							if($("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue')=='' 
								|| $("#"+prefix+"idmunicipio06_detail_table_label").val()==''){
								FNDesactivarAutocomplete({id:prefix+"idlocalidad06_detail_table"});
								FNDesactivarAutocomplete({id:prefix+"idcalle06_detail_table",hijos:[prefix+"idportal06_detail_table"]});
							}else{
								
								if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')!='' &&
										$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue')!=''	){
									//DEPENDENCIA LOCALIDAD
									FNActivarAutocomplete({id:prefix+"idlocalidad06_detail_table"});
									//recargar lista de localidades
									FNRecargarLista({id:prefix+"idlocalidad06_detail_table"});
									if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='01'
										|| $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='20'
											|| $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='48'
									){
										//DEPENDENCIA CALLE
										FNActivarAutocomplete({id:prefix+"idcalle06_detail_table"});
										//recargar lista de calles
										FNRecargarLista({id:prefix+"idcalle06_detail_table"});
									}
								}
							}
							getCallback("municipio", "change")();
							return true;
						},
						"loadComplete": () => {
							setTimeout(() => {
								if($("#"+prefix+"idmunicipio06_detail_table").data("value2load")!=null && $("#"+prefix+"idmunicipio06_detail_table").data("value2load")!=''){
									FNSeleccionarAutocomplete({id:prefix+"idmunicipio06_detail_table",value:$("#"+prefix+"idmunicipio06_detail_table").data("value2load")});
									getCallback("componente","municipio", "change")();
									
									$("#"+prefix+"idmunicipio06_detail_table_label").val($("#"+prefix+"idmunicipio06_detail_table_label").val().replace(/<strong>/g, '').replace(/<\/strong>/g, ''));
									$("#"+prefix+"idmunicipio06_detail_table").data("value2load",null);
								}
							}, delay);  
						}
					},
					"localidad":{
							"isChanged": () => {
								if($("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue')!=
									$("#"+prefix+"idlocalidad06_detail_table").data("prev")){
									$("#"+prefix+"idlocalidad06_detail_table").data("prev",$("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue'))
									return true
								}
								return false;
							},
							"change": () => {
								console.log(prefix+"componente->localidad->change");
								console.log(prefix+"localidad rup_autocomplete  "+$("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue'));
								console.log(prefix+"localidad label val  "+$("#"+prefix+"idlocalidad06_detail_table_label").val());
								console.log(prefix+"localidad pre val  "+$("#"+prefix+"idlocalidad06_detail_table").data("prev"));
								
								if(!getCallback("componente","localidad", "isChanged")()){
									return false;
								}
								if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='01'
									|| $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='20'
										|| $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue')=='48'
								){
									$("#"+prefix+"idcalle06_detail_table").data("value2load",$("#"+prefix+"idcalle06_detail_table").data("value2load")||$("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'));
									$("#"+prefix+"idportal06_detail_table").data("value2load",$("#"+prefix+"idportal06_detail_table").data("value2load")||$("#"+prefix+"idportal06_detail_table").rup_autocomplete('getRupValue'));
									FNLimpìarAutocomplete({id:prefix+"idcalle06_detail_table"});
									
									//DEPENDENCIA CALLE
									//recargar lista de calles
									FNRecargarLista({id:prefix+"idcalle06_detail_table"});
								}
								//campos auxiliares
								if($("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete("getRupValue") == ''
									|| $("#"+prefix+"idlocalidad06_detail_table_label").val() == ''){						
									$("#"+prefix+"localidadDesc").show();
								}else{
									$("#"+prefix+"localidadDesc").hide();
									$("#"+prefix+"localidad06_detail_table").val('');
								}
								getCallback("localidad", "change")();
								return true;
							},
							"loadComplete": () => {
								setTimeout(() => {
									if($("#"+prefix+"idlocalidad06_detail_table").data("value2load")!=null && $("#"+prefix+"idlocalidad06_detail_table").data("value2load")!=''){
										FNSeleccionarAutocomplete({id:prefix+"idlocalidad06_detail_table",value:$("#"+prefix+"idlocalidad06_detail_table").data("value2load")});
										getCallback("componente","localidad", "change")();
										
										$("#"+prefix+"idlocalidad06_detail_table_label").val($("#"+prefix+"idlocalidad06_detail_table_label").val().replace(/<strong>/g, '').replace(/<\/strong>/g, ''));
										$("#"+prefix+"idlocalidad06_detail_table").data("value2load",null);
									}
								}, delay);  
							}
						},
						"calle":{
							"isChanged": () => {
								if($("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue')!=
									$("#"+prefix+"idcalle06_detail_table").data("prev")){
									$("#"+prefix+"idcalle06_detail_table").data("prev",$("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'))
									return true
								}
								return false;
							},
							"change": () => {
								console.log(prefix+"componente->calle->change");
								console.log(prefix+"calle rup_autocomplete  "+$("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'));
								console.log(prefix+"calle label val  "+$("#"+prefix+"idcalle06_detail_table_label").val());
								console.log(prefix+"calle pre val  "+$("#"+prefix+"idcalle06_detail_table").data("prev"));
								
								if(!getCallback("componente","calle", "isChanged")()){
									return false;
								}
								
								FNLimpìarAutocomplete({id:prefix+"idportal06_detail_table"});
								
								if($("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue')=='' 
									|| $("#"+prefix+"idcalle06_detail_table_label").val()==''){
									FNDesactivarAutocomplete({id:prefix+"idportal06_detail_table"});
								}else{
									
									if($("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue')!='' ){

										//DEPENDENCIA PORTAL
										FNActivarAutocomplete({id:prefix+"idportal06_detail_table"});
										//recargar lista de portal
										FNRecargarLista({id:prefix+"idportal06_detail_table"});
									}
								}
								//campos auxiliares
								if($("#"+prefix+"idcalle06_detail_table").rup_autocomplete("getRupValue") == ''
									|| $("#"+prefix+"idcalle06_detail_table_label").val() == ''){						
									$("#"+prefix+"calleDesc").show();					
									$("#"+prefix+"portalDesc").show();										
								}else{
									$("#"+prefix+"calle06_detail_table").val('');
									$("#"+prefix+"calleDesc").hide();
								}
								getCallback("calle", "change")();
							},
							"loadComplete": () => {
								setTimeout(() => {
									if($("#"+prefix+"idcalle06_detail_table").data("value2load")!=null && $("#"+prefix+"idcalle06_detail_table").data("value2load")!=''){
										FNSeleccionarAutocomplete({id:prefix+"idcalle06_detail_table",value:$("#"+prefix+"idcalle06_detail_table").data("value2load")});
										getCallback("componente","calle", "change")();
										
										$("#"+prefix+"idcalle06_detail_table_label").val($("#"+prefix+"idcalle06_detail_table_label").val().replace(/<strong>/g, '').replace(/<\/strong>/g, ''));
										$("#"+prefix+"idcalle06_detail_table").data("value2load",null);
									}
								}, delay);  
							},
							"select": (data) => {
								console.log("componente->calle->select");
								console.log(data);
								if($("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue')==''){
									FNSeleccionarLocalidad({'prefix':prefix});
								}
							}
					},
				"portal":{
					"isChanged": () => {
						if($("#"+prefix+"idportal06_detail_table").rup_autocomplete('getRupValue')!=
							$("#"+prefix+"idportal06_detail_table").data("prev")){
							$("#"+prefix+"idportal06_detail_table").data("prev",$("#"+prefix+"idportal06_detail_table").rup_autocomplete('getRupValue'))
							return true
						}
						return false;
					},
					"change": () => {
	//					if(settings.direccion.cp06==null){
	//						$("#"+prefix+"cp06_detail_table").val('');
	//					}
						if(!getCallback("componente","portal", "isChanged")()){
							return false;
						}
						//campos auxiliares
						if($("#"+prefix+"idportal06_detail_table").rup_autocomplete('getRupValue')=='' 
							|| $("#"+prefix+"idportal06_detail_table_label").val()==''){						
							$("#"+prefix+"portalDesc").show();
						}else{
							$("#"+prefix+"portalDesc").hide();
							$("#"+prefix+"portal06_detail_table").val('');
						}
						
						getCallback("portal", "change")();
					},
					"loadComplete": () => {
						setTimeout(() => {
							if($("#"+prefix+"idportal06_detail_table").data("value2load")!=null && $("#"+prefix+"idportal06_detail_table").data("value2load")!=''){
								FNSeleccionarAutocomplete({id:prefix+"idportal06_detail_table",value:$("#"+prefix+"idportal06_detail_table").data("value2load")});
								getCallback("componente","portal", "change")();
								
								$("#"+prefix+"idportal06_detail_table_label").val($("#"+prefix+"idportal06_detail_table_label").val().replace(/<strong>/g, '').replace(/<\/strong>/g, ''));
								$("#"+prefix+"idportal06_detail_table").data("value2load",null);
							}
						}, delay);
					},
					"select": (data) => {
						console.log("componente->portal->select");
						console.log(data);
						if($("#"+prefix+"idportal06_detail_table").rup_autocomplete('getRupValue')!=''){
							FNSeleccionarCP({'prefix':prefix});
						}
					}
				}
			}
		}
	};
	//extender config por defecto con options
	settings=$.extend(true, defaultOptions, settings);
	const prefix = settings.prefix;
	const pisoTutelado = settings.pisoTutelado;
	const callbacks = settings.callbacks;
	const provinciasNoCAV = settings.provinciasNoCAV;
	const delay = settings.delay==null?800:settings.delay;
		
	const emptyFunction = () => {
		console.log("emptyfunction");
	}; 
	const getCallback = (id, type,subtype) => {
		let callback = emptyFunction;
		Object.keys(callbacks).forEach((c) => {
			if(subtype==null){
				if(c == id) callback = callbacks[c][type] || emptyFunction;
			}else{
				if(c == id){
					Object.keys(callbacks[c]).forEach((d) => {
						if(d == type) callback = callbacks[c][type][subtype] || emptyFunction;
					});
					return callback;
				}
			}
			
		});
		return callback;
	}		
	$("#"+prefix+"_direccionAutocomplete").clearForm();
//
	//CODIGO POSTAL
	$("#"+prefix+"cp06_detail_table").on('blur', () => {
		if($("#"+prefix+"cp06_detail_table").val().trim().length!=5){
			$("#"+prefix+"cp06_detail_table").data('prev','');
			$("#"+prefix+"cp06_detail_table").val('');
			if($("#"+prefix+"idprovincia06_detail_table").rup_autocomplete("getRupValue")!=''){
				$("#"+prefix+"idprovincia06_detail_table").data("value2load",$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete("getRupValue"));
				$("#"+prefix+"idmunicipio06_detail_table").data("value2load",$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete("getRupValue"));
				$("#"+prefix+"idlocalidad06_detail_table").data("value2load",$("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete("getRupValue"));
				$("#"+prefix+"idcalle06_detail_table").data("value2load",$("#"+prefix+"idcalle06_detail_table").rup_autocomplete("getRupValue"));
				$("#"+prefix+"idportal06_detail_table").data("value2load",$("#"+prefix+"idportal06_detail_table").rup_autocomplete("getRupValue"));
				FNRecargarLista({id:prefix+"idprovincia06_detail_table"});
			}
			return;
		}
		if($("#"+prefix+"cp06_detail_table").val()!='' && $("#"+prefix+"cp06_detail_table").val() != $("#"+prefix+"cp06_detail_table").data('prev')){

			$("#"+prefix+"cp06_detail_table").data('prev', $("#"+prefix+"cp06_detail_table").val());
			// Seleccionar la provincia
				$("#"+prefix+"idprovincia06_detail_table").data("value2load",$('#'+prefix+'cp06_detail_table').val().substring(0,2));
				FNSeleccionarMunicipio({'prefix':prefix,codProvincia:$('#'+prefix+'cp06_detail_table').val().substring(0,2),cp06:$("#"+prefix+"cp06_detail_table").val()});
				$("#"+prefix+"idlocalidad06_detail_table").data("value2load",$("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete("getRupValue"));
				$("#"+prefix+"idcalle06_detail_table").data("value2load",$("#"+prefix+"idcalle06_detail_table").rup_autocomplete("getRupValue"));
				$("#"+prefix+"idportal06_detail_table").data("value2load",$("#"+prefix+"idportal06_detail_table").rup_autocomplete("getRupValue"));
				FNRecargarLista({id:prefix+"idprovincia06_detail_table"});
		}else if($("#"+prefix+"cp06_detail_table").val()=='' && $("#"+prefix+"cp06_detail_table").data('prev')!=''){
			$("#"+prefix+"cp06_detail_table").data('prev','');
		}
	});	
	
	
	//PROVINCIA
	let provUrl = $.rup.CTX_PATH + 'nora/provincias';
	if(provinciasNoCAV){	
		// TODAS LAS PROVINCIAS
		provUrl = $.rup.CTX_PATH + 'nora/allProvincias';		
	}
	$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete({
			source:  provUrl,
			sourceParam: {label: "descProvincia", value:"codProvincia"},
			contains: true,
			combobox: true,
			disabledCache: true
	});
	$("#"+prefix+"idprovincia06_detail_table_label").on("rupAutocomplete_change", function(event, data){
		console.log("idprovincia06_detail_table change "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));
		
		getCallback("componente","provincia", "change")();
	});
//	
	$("#"+prefix+"idprovincia06_detail_table_label").on("rupAutocomplete_loadComplete", function(event, data){
		console.log("idprovincia06_detail_table rupAutocomplete_loadComplete "+$("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue'));

		getCallback("componente","provincia", "loadComplete")();
	});
	$("#"+prefix+"idprovincia06_detail_table_label").on("blur",function(event){
		if($("#"+prefix+"idprovincia06_detail_table_label").val()==''){
			getCallback("componente","provincia", "change")();
		}
	});
//
	//MUNICIPIO
	$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete({
		source: $.rup.CTX_PATH + 'nora/municipioEnlazado',
		sourceParam: {label: "descripcion", value:"codMunicipio"},
		contains: true,
		combobox: true,
		disabledCache: true,
		extraParams:{
			cp06:function(){
				return $("#"+prefix+"cp06_detail_table").val();
			},
			codProvincia:function(){
				return $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue');
			}
		}
	});
////
	$("#"+prefix+"idmunicipio06_detail_table_label").on("rupAutocomplete_change", function(event, data){
		console.log("idmunicipio06_detail_table change "+$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","municipio", "change")();
	});
	$("#"+prefix+"idmunicipio06_detail_table_label").on("rupAutocomplete_loadComplete", function(event, data){
		console.log("idmunicipio06_detail_table rupAutocomplete_loadComplete "+$("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","municipio", "loadComplete")();
	});
	$("#"+prefix+"idmunicipio06_detail_table_label").on("blur",function(event){
		if($("#"+prefix+"idmunicipio06_detail_table_label").val()==''){
			getCallback("componente","municipio", "change")();
		}
	});
	//LOCALIDAD
	$("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete({
		source: $.rup.CTX_PATH + 'nora/localidadEnlazado',
		sourceParam: {label: "descripcion", value:"codLocalidad"},
		contains: true,
		combobox: true,
		disabledCache: true,
		extraParams:{
			cp06:function(){
				return $("#"+prefix+"cp06_detail_table").val();
			},
			codProvincia:function(){
				return $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue');
			},
			codMunicipio:function(){
				return $("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue');
			}
		}
	});

	$("#"+prefix+"idlocalidad06_detail_table_label").on("rupAutocomplete_change", function(event, data){
		console.log("idlocalidad06_detail_table change "+$("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","localidad", "change")();
	});
	
	$("#"+prefix+"idlocalidad06_detail_table_label").on("rupAutocomplete_loadComplete", function(event, data){

		console.log("idlocalidad06_detail_table rupAutocomplete_loadComplete "+$("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue'));

		getCallback("componente","localidad", "loadComplete")();
	});
	$("#"+prefix+"idlocalidad06_detail_table_label").on("blur",function(event){
		if($("#"+prefix+"idlocalidad06_detail_table_label").val()==''){
			getCallback("componente","localidad", "change")();
		}
	});

	//CALLE
	$("#"+prefix+"idcalle06_detail_table").rup_autocomplete({
		source : $.rup.CTX_PATH + 'nora/calleEnlazado',
		sourceParam: {label: "descripcion", value:"idCalle", style:'css'},
		contains: true,
		combobox: true,
		disabledCache: true,
		extraParams:{
			cp06:function(){
				return $("#"+prefix+"cp06_detail_table").val();
			},
			codProvincia:function(){
				return $("#"+prefix+"idprovincia06_detail_table").rup_autocomplete('getRupValue');
			},
			codMunicipio:function(){
				return $("#"+prefix+"idmunicipio06_detail_table").rup_autocomplete('getRupValue');
			},
			codLocalidad:function(){
				return $("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue');
			}
		}
	});
	$("#"+prefix+"idcalle06_detail_table_label").on("rupAutocomplete_change", function(event, data){
		console.log("idcalle06_detail_table change "+$("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","calle", "change")();
	});
	$("#"+prefix+"idcalle06_detail_table_label").on("rupAutocomplete_loadComplete", function(event, data){
		console.log("idcalle06_detail_table rupAutocomplete_loadComplete "+$("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","calle", "loadComplete")();
	});
	$("#"+prefix+"idcalle06_detail_table_label").on("blur",function(event){
		if($("#"+prefix+"idcalle06_detail_table_label").val()==''){
			getCallback("componente","calle", "change")();
		}
	});
	$("#"+prefix+"idcalle06_detail_table_label").on("rupAutocomplete_select", function(event, data){
		console.log("idcalle06_detail_table select "+$("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","calle", "select")(data);
	});
	//PORTAL
	$("#"+prefix+"idportal06_detail_table").rup_autocomplete({
		source : $.rup.CTX_PATH + 'nora/portalEnlazado',
		sourceParam: {label: (($.rup_utils.capitalizedLang() == ("Es")) ? "portalCompletoEs" : "portalCompletoEu" ), value:"codPortal", style:'css'},
		contains: true,
		combobox: true,
		disabledCache: true,
		extraParams:{
			cp06:function(){
				return $("#"+prefix+"cp06_detail_table").val();
			},
			codCalle:function(){
				return $("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue');
			},
			codLocalidad:function(){
				return $("#"+prefix+"idlocalidad06_detail_table").rup_autocomplete('getRupValue');
			}
		}
	});
	$("#"+prefix+"idportal06_detail_table_label").on("blur",function(event){
		if($("#"+prefix+"idportal06_detail_table_label").val()==''){
			getCallback("componente","portal", "change")();
		}
	});

	$("#"+prefix+"idportal06_detail_table_label").on("rupAutocomplete_loadComplete", function(event, data){
		console.log("idportal06_detail_table rupAutocomplete_loadComplete "+$("#"+prefix+"idportal06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","portal", "loadComplete")();
	});
	$("#"+prefix+"idportal06_detail_table_label").on("rupAutocomplete_change", function(event, data){
		console.log("idportal06_detail_table change "+$("#"+prefix+"idcalle06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","portal", "change")();
	});
	$("#"+prefix+"idportal06_detail_table_label").on("rupAutocomplete_select", function(event, data){
		console.log("idportal06_detail_table select "+$("#"+prefix+"idportal06_detail_table").rup_autocomplete('getRupValue'));
		getCallback("componente","portal", "select")(data);
	});
////	$("#"+prefix+"idportal06_detail_table_label").on("blur",function(event){
////		getCallback("componente","portal", "isChanged")();
////	});
//	
//	//FIN COMPONENTES
//	$("#"+prefix+"idprovincia06_detail_table").data("value2load", settings.direccion.idProvincia06);
//	$("#"+prefix+"idprovincia06_detail_table").data("prev", settings.direccion.idProvincia06);
//	$("#"+prefix+"idmunicipio06_detail_table").data("value2load", settings.direccion.idMunicipio06);
//	$("#"+prefix+"idmunicipio06_detail_table").data("prev", settings.direccion.idMunicipio06);
//	$("#"+prefix+"idlocalidad06_detail_table").data("value2load", settings.direccion.idLocalidad06);
//	$("#"+prefix+"idlocalidad06_detail_table").data("prev", settings.direccion.idLocalidad06);
//	$("#"+prefix+"idcalle06_detail_table").data("value2load", settings.direccion.idCalle06);
//	$("#"+prefix+"idcalle06_detail_table").data("prev", settings.direccion.idCalle06);
//	$("#"+prefix+"idportal06_detail_table").data("value2load", settings.direccion.idPortal06);
//	$("#"+prefix+"idportal06_detail_table").data("prev", settings.direccion.idPortal06);
//	if(settings.direccion.idProvincia06!=null){
//		$("#"+prefix+"idprovincia06_detail_table_label + a").trigger('click');
//		$("#"+prefix+"idprovincia06_detail_table_label").trigger('blur');
//		//$("#"+prefix+"idprovincia06_detail_table_label").trigger("rupAutocomplete_loadComplete")
//	}
	//inicializar valores de campos dirección
	$("#"+prefix+"idprovincia06_detail_table").data("value2load",settings.direccion.idProvincia06);
	$("#"+prefix+"idmunicipio06_detail_table").data("value2load",settings.direccion.idMunicipio06);
	$("#"+prefix+"idlocalidad06_detail_table").data("value2load",settings.direccion.idLocalidad06);
	$("#"+prefix+"idcalle06_detail_table").data("value2load",settings.direccion.idCalle06);
	$("#"+prefix+"localidad06_detail_table").val(settings.direccion.localidad06);
	$("#"+prefix+"calle06_detail_table").val(settings.direccion.calle06);
	$("#"+prefix+"idportal06_detail_table").data("value2load",settings.direccion.idPortal06);
	$("#"+prefix+"portal06_detail_table").val(settings.direccion.portal06);
	$("#"+prefix+"cp06_detail_table").val(settings.direccion.cp06);
	$("#"+prefix+"escalera06_detail_table").val(settings.direccion.escalera06);
	$("#"+prefix+"piso06_detail_table").val(settings.direccion.piso06);
	$("#"+prefix+"letra06_detail_table").val(settings.direccion.letra06);
	
	if(settings.direccion.idProvincia06!=null){
		FNRecargarLista({id:prefix+"idprovincia06_detail_table"});
	}
	
	FNResetComponent(prefix);
	
	console.log("antes de getCallback('general', 'success')();");
	
	getCallback("componente","general", "success")();	
}