/*
 * Componente catalogo con jerarquia
 */
function objetoElementoCatalogoArbol(tipo,codigo,texto,action,listado,elBusqueda,catalogo,objMsjEstado){
	this.tipo = tipo;
	this.catalogo = catalogo;
	this.elBusqueda = elBusqueda;
	this.action = action;
	this.codigo = codigo;
	this.listado = listado;
	this.parentNodeId = 0;
	this.texto = texto;
  	this.store;
  	this.primeraCarga = true;
	this.htmlListado = 	'<div class="elCatalogo"><a href="javascript:void(0)">{texto}</a></div>';
	this.htmlPie	 = 	'<div class="separador"></div>'+
						'<div style="padding-bottom:20px;">'+
							'<div class="navegacionCatalogo">'+
								'<span id="inicio" class="inicioCatalogo"><a href="javascript:void(0)"><img src="../img/inicio.gif" width="10" height="10"/></a></span>'+
								'<span class="barraCatalogo"><a href="javascript:void(0)"><img src="../img/barraCatalogo.gif" width="2" height="10"/></a></span>'+
								'<span id="atras" class="atrasCatalogo"><a href="javascript:void(0)"><img src="../img/atras.gif" width="6" height="10"/></a></span>'+
							'</div>'+
						'</div>';
	this.htmlCabecera = '<div>'+
							'<div class="navegacionCatalogo">'+
								'<span id="inicioCabecera" class="inicioCatalogo"><a href="javascript:void(0)"><img src="../img/inicio.gif" width="10" height="10"/></a></span>'+
								'<span class="barraCatalogo"><a href="javascript:void(0)"><img src="../img/barraCatalogo.gif" width="2" height="10"/></a></span>'+
								'<span id="atrasCabecera" class="atrasCatalogo"><a href="javascript:void(0)"><img src="../img/atras.gif" width="6" height="10"/></a></span>'+
							'</div>'+
						'</div>'+
						'<div class="separador"></div>';
	this.tplListado = null;
	this.tplPie = null;
	this.idMarcado = null;
	this.textoMarcado = null;
	
	this.init = function(){
		// compilar templates
		this.tplListado = new Ext.Template(this.htmlListado);
		this.tplListado.compile();		
		this.tplPie = new Ext.Template(this.htmlPie);
		this.tplPie.compile();
		this.tplCabecera = new Ext.Template(this.htmlCabecera);
		this.tplCabecera.compile();
		this.idMarcado = null;
		this.textoMarcado = null;
	}
		
	this.cargarNodos = function(){
		var padre = this;
		//cargamos el store necesario
		this.store = new Ext.data.StoreCatalogo(this.codigo,this.texto,this.action,listado,this.parentNodeId);	
		this.store.load();
		
		this.store.on('load',function(){
			padre.pintarNodos();
			padre.actualizaCaminoBotones();
		});		
	}	
		
	this.pintarNodos = function(){
	
		var htmlComposiciones	 = 	'<div class="composicionBusqueda" id="composicionBusqueda">'+
									'<div id="composicionMask" style="padding-top:150px;"></div>'+
									'</div>';					
		var tplComposiciones = new Ext.Template(htmlComposiciones);
		
		tplComposiciones.compile();		
		padre = this;	
		
		if(this.store.getCount()>0){
			if(this.parentNodeId>0){
				// cargamos el componente grid de busqueda
				var composiciones = Ext.get('composicionBusqueda')
				if(composiciones!=null){
					composiciones.remove();
				}
				tplComposiciones.append('composiciones', {});
				var compContenido = Ext.get('composicionBusqueda');
				if(compContenido!=null){
					componenteBusqueda('composicionBusqueda',this.tipo,this.parentNodeId,objMsjEstado);
				}	
			}
			this.elBusqueda.update();
			// pintamos los nodos
			padre.pintarCabecera();
			
			for(i=0;i<this.store.getCount();i++){				
				var record = this.store.getAt(i);
				var textoNodo = record.get(this.texto);
				var elementoDiv = this.tplListado.append(this.elBusqueda, {
					texto: record.get(this.texto)
				},true);
				elementoDiv.idSub = record.get(this.codigo);											
				elementoDiv.on('click', function(){
					if(padre.elementoAnterior!=null){
						padre.elementoAnterior.replaceClass('elCatalogoNegrita','elCatalogo');
						this.idMarcado = this.idSub;
						this.textoMarcado = textoNodo;
					}
					this.replaceClass('elCatalogo','elCatalogoNegrita');
					padre.elementoAnterior = this;
					padre.parentNodeId = this.idSub;
					padre.cargarNodos();
				});				
			}
			padre.pintarPie();
		}else{
			var composiciones = Ext.get('composicionBusqueda')
			if(composiciones!=null){
				composiciones.remove();
			}
			tplComposiciones.append('composiciones', {});
			var compContenido = Ext.get('composicionBusqueda');
			if(compContenido!=null){
				componenteBusqueda('composicionBusqueda',this.tipo,this.parentNodeId,objMsjEstado);
				var titulo = Ext.get('tituloBusqueda');
				titulo.dom.firstChild.nodeValue = localize('resultados');
			}	
		}
	}
	// pie de pagina y botones
	this.pintarPie = function(){	
		Ext.get('pieCatalogo').update();
		this.tplPie.append('pieCatalogo', {});
	    var botonInicio =  Ext.get('inicio');
		var padre = this;
		if(botonInicio!=null){
			botonInicio.on('click', function(){
				padre.elBusqueda.update();
				padre.catalogo.componenteCatalogo();	
			});
		}
	    var botonAtras =  Ext.get('atras');
		if(botonAtras!=null){
			botonAtras.on('click', function(){
				padre.elBusqueda.update();	
				if(padre.ascendientesId==null){
					padre.catalogo.componenteCatalogo();
				}else if(padre.ascendientesId.length==0){
					padre.parentNodeId = 0;
					padre.cargarNodos();
				}else{
					padre.parentNodeId = padre.ascendientesId[padre.ascendientesId.length-1];
					padre.cargarNodos();
				}			
			});
		}	
	}
	// pie de pagina y botones
	this.pintarCabecera = function(){	
		this.tplCabecera.append(this.elBusqueda, {});
	    var botonInicio =  Ext.get('inicioCabecera');
		var padre = this;
		if(botonInicio!=null){
			botonInicio.on('click', function(){
				padre.elBusqueda.update();
				padre.catalogo.componenteCatalogo();	
			});
		}
	    var botonAtras =  Ext.get('atrasCabecera');
		if(botonAtras!=null){
			botonAtras.on('click', function(){
				padre.elBusqueda.update();				
				if(padre.ascendientesId==null){
					padre.catalogo.componenteCatalogo();
				}else if(padre.ascendientesId.length==0){
					padre.parentNodeId = 0;
					padre.cargarNodos();
				}else{
					padre.parentNodeId = padre.ascendientesId[padre.ascendientesId.length-1];
					padre.cargarNodos();
				}	
			});
		}	
	}
	
	this.actualizaCaminoBotones = function(){
		 this.ascendientesId = this.store.reader.jsonData.ascendientesId;
		 this.ascendientes = this.store.reader.jsonData.ascendientes;
		 
		 this.ordenUltimo = 3;
		 if((this.ascendientes)&&(this.ascendientes.length>0)){
			 var arrayCamino = new Array();
			 
			 var arrayPaso1 = new Array(2);
			 arrayPaso1[0] = localize("musica");
			 arrayPaso1[1] = "../portal/musica-royalty-free-libre-de-derechos.adl";
			 arrayPaso1[2] = false;
			 arrayCamino[0] = arrayPaso1;
	
			 var arrayPaso2 = new Array(2);
			 arrayPaso2[0] = localize(musicaTipoBusquedaArray(tipo));
			 arrayPaso2[1] = "../portal/musica-royalty-free-libre-de-derechos.adl?param1="+tipo+"&param2=0";
			 arrayPaso2[2] = false;
			 arrayCamino[1] = arrayPaso2;
			 		 
			 for(i=0;i<this.ascendientes.length;i++){
			 	var arrayPaso = new Array(2);
			 	arrayPaso[0] = this.ascendientes[i];
			 	arrayPaso[1] = tipo + "|" + this.ascendientesId[i];
			 	arrayPaso[2] = true;
			 	arrayCamino[i+2] = arrayPaso;
			 }
			 this.ordenUltimo += this.ascendientes.length;
			 
		}else{
			 var arrayCamino = new Array(2);
			 
			 var arrayPaso1 = new Array(2);
			 arrayPaso1[0] = localize("musica");
			 arrayPaso1[1] = "../portal/musica-royalty-free-libre-de-derechos.adl";
			 arrayPaso1[2] = false;
			 arrayCamino[0] = arrayPaso1;
	
			 var arrayPaso2 = new Array(2);
			 arrayPaso2[0] = localize(musicaTipoBusquedaArray(tipo));
			 arrayPaso2[1] = "../portal/musica-royalty-free-libre-de-derechos.adl?param1="+tipo+"&param2=0";
			 arrayPaso2[2] = false;
			 arrayCamino[1] = arrayPaso2;
			 
		}
		
		// El enlace del elemento actual (no hará nada)
		var arrayPasofinal = new Array(2);
		arrayPasofinal[0] = this.store.reader.jsonData.texto;
		arrayPasofinal[1] = "javascript:void(0);";
		arrayPaso2[2] = false;
		arrayCamino[this.ordenUltimo] = arrayPasofinal;
		
		/*if(this.idMarcado!=null){
			var arrayPasoMarcado = new Array(2);
			arrayPasofinal[0] = this.textoMarcado;
			arrayPasofinal[1] = "../portal/TabMusica.adl?param1="+tipo+"&param2="+this.idMarcado;
			arrayCamino[this.ordenUltimo+1] = arrayPasoMarcado;
		}*/
		
		escribeCamino(arrayCamino);
	}
}

/**
 * Clase Store 
 */
Ext.data.StoreCatalogo = function (campo1,campo2,action,root,parentNodeId) {
	Ext.data.StoreCatalogo.superclass.constructor.call(this,{
	    url: action,
	    root: root,
	    fields:[
			{name: campo1},
			{name: campo2}],
	    	baseParams: {  
	    		parentNodeId:parentNodeId
            }
	});
};
Ext.extend(Ext.data.StoreCatalogo, Ext.data.JsonStore, {});