//@ sourceURL=direccion.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 initDirComponent = (settings) => {
	
	const prefix = settings.prefix;
	const pisoTutelado = settings.pisoTutelado;
	const callbacks = settings.callbacks;
	const provinciasNoCAV = settings.provinciasNoCAV;
	
	const emptyFunction = () => {
		console.log("emptyfunction");
	}; 
	const getCallback = (id, type) => {
		let callback = emptyFunction;
		Object.keys(callbacks).forEach((c) => {
			if(c == id) callback = callbacks[c][type] || emptyFunction;
		});
		return callback;
	}		

	$("#"+prefix+"cp06_detail_table").data("prev", $("#"+prefix+"cp06_detail_table").val());	
	
	let provUrl = $.rup.CTX_PATH + 'nora/provincias';
	if(provinciasNoCAV){	
		// TODAS LAS PROVINCIAS
		provUrl = $.rup.CTX_PATH + 'nora/allProvincias';		
	}
	$("#"+prefix+"idprovincia06_detail_table").rup_combo({
		source:  provUrl,
		sourceParam: {label: "descProvincia", value:"codProvincia"},
		rowStriping: true,
		width: 'auto',
		blank: '',
		customClasses: ['select-material'],
		change: function(){
			getCallback("provincia", "change")();
		},
		onLoadSuccess: function(obj){					
			getCallback("provincia", "success")();	
		},
		selected: getCallback("provincia", "selected")()
	});
	
	//if($("#"+prefix+"idmunicipio06_detail_table").length == 1){
		//MUNICIPIO
		$("#"+prefix+"idmunicipio06_detail_table").rup_combo({
			parent: [prefix+"idprovincia06_detail_table"],			
			source: $.rup.CTX_PATH + 'nora/municipioEnlazado?cp06='+$("#"+prefix+"cp06_detail_table").val(),
			sourceParam: {label: "descripcion", value:"codMunicipio"},
			rowStriping: true,
			width: 'auto',
			blank: '',
			customClasses: ['select-material'],
			change: function(){
    			getCallback("municipio", "change")();
			},
			onLoadSuccess: function(obj){					
    			getCallback("municipio", "success")();
			},
			selected: getCallback("municipio", "selected")()
		});
	//}
	
	
	//if($("#"+prefix+"idlocalidad06_detail_table").length == 1){
		//LOCALIDAD
		$("#"+prefix+"idlocalidad06_detail_table").rup_combo({
			parent: [prefix+"idprovincia06_detail_table", prefix+"idmunicipio06_detail_table"],			
			source: $.rup.CTX_PATH + 'nora/localidadEnlazado?cp06='+$("#"+prefix+"cp06_detail_table").val(),
			sourceParam: {label: "descripcion", value:"codLocalidad"},
			rowStriping: true,
			width: 'auto',
			blank: '',
			customClasses: ['select-material'],
			change: function(){					
				getCallback("localidad", "change")();
			},
			onLoadSuccess: function(obj){					
				getCallback("localidad", "success")();
			},
			selected: getCallback("localidad", "selected")()
		});
	//}
		
	//if($("#"+prefix+"idcalle06_detail_table").length == 1){
		//CALLE	
		$("#"+prefix+"idcalle06_detail_table").rup_combo({
			parent: [prefix+"idlocalidad06_detail_table"],
			source:  $.rup.CTX_PATH + 'nora/calleEnlazado?cp06='+$("#"+prefix+"cp06_detail_table").val(),
			sourceParam: {label: "descripcion", value:"idCalle"},
			rowStriping: true,
			width: 'auto',
			blank: '',
			customClasses: ['select-material'],
			change: function(){
				getCallback("calle", "change")();
			},
			onLoadSuccess: function(obj){
				getCallback("calle", "success")();					
			},
			selected: getCallback("calle", "selected")()
		});
	//}
		
		// PORTAL
		$("#"+prefix+"idportal06_detail_table").rup_combo({
			parent: [prefix+"idlocalidad06_detail_table", prefix+"idcalle06_detail_table"],
			source:  $.rup.CTX_PATH + 'nora/portalEnlazado?cp06='+$("#"+prefix+"cp06_detail_table").val(),
			sourceParam: {label: (($.rup_utils.capitalizedLang() == ("Es")) ? "portalCompletoEs" : "portalCompletoEu" ), value:"codPortal"},
			rowStriping: true,
			width: 'auto',
			blank: '',
			customClasses: ['select-material'],
			change: function() {			
				getCallback("portal", "change")();
			},
			onLoadSuccess: function(obj){
				getCallback("portal", "success")();					
			},
			selected: getCallback("portal", "selected")()
		});
		
	

	
	getCallback("general", "success")();	
}