/**
* 	Objeto grid de composiciones de la busqueda avanzada
*/	

function objetoGridBusqueda(elBusqueda,tipo,idPadre,tabMusica,numeroObras,playfirst,palabra){  
	
	this.elBusqueda=elBusqueda;
	this.tipoBusqueda=tipo;
	this.idSeleccionado=idPadre;
	this.numeroObras = numeroObras;
	this.playall = false;
	this.obraReproduccion = null;
	this.playfirst = playfirst;
	this.palabra = palabra;
	
	this.playAllEl = null;

	this.htmlNoResultados = '<div style="text-align:center;height:60px;">{texto}</div>';
	
	this.store = new Ext.data.JsonStore({
	    url: '../portal/json/ListaComposiciones.adl',
	    root: 'lista',
	    fields:[
			{name: 'idComposicion'},	
			{name: 'codigoComposicion'},
			{name: 'fichero1'},
			{name: 'duracionFichero1'},
			{name: 'fichero2'},
			{name: 'duracionFichero2'},
			{name: 'fichero3'},
			{name: 'duracionFichero3'},
			{name: 'fichero4'},
			{name: 'duracionFichero4'},
			{name: 'fichero5'},
			{name: 'duracionFichero5'},
			{name: 'tempo'},
			{name: 'tempoFormato'},
			{name: 'novedad'},
			{name: 'destacado'},
			{name: 'listaGeneros'},
			{name: 'titulo'},
			{name: 'instrumentos'},
			{name: 'nota'},
			{name: 'color'},
			{name: 'compositoresPseudonimo'},
			{name: 'interpretesPseudonimo'},
			{name: 'generoPadre'},
			{name: 'generoBase'},
			{name: 'nombreCompositorPrincipal'},
			{name: 'duracionOriginal'},
			{name: 'textoOferta'},
			{name: 'seleccion'},
			{name: 'carrito'},
			{name: 'duracionCarrito'},
			{name: 'licenciaCarrito'},
			{name: 'duracionFichero1Formato'},
			{name: 'duracionFichero2Formato'},
			{name: 'duracionFichero3Formato'}
		],
	    totalProperty: 'elementCount',
	    baseParams: {
	    	tipoBusqueda:this.tipoBusqueda,
	    	idSeleccionado:this.idSeleccionado
        }
	});
	
	this.storePalabra = new Ext.data.JsonStore({
	    url: '../portal/json/BusquedaPorPalabra.adl',
	    root: 'lista',
	    fields:[
			{name: 'idComposicion'},	
			{name: 'codigoComposicion'},
			{name: 'fichero1'},
			{name: 'duracionFichero1'},
			{name: 'fichero2'},
			{name: 'duracionFichero2'},
			{name: 'fichero3'},
			{name: 'duracionFichero3'},
			{name: 'fichero4'},
			{name: 'duracionFichero4'},
			{name: 'fichero5'},
			{name: 'duracionFichero5'},
			{name: 'tempo'},
			{name: 'tempoFormato'},
			{name: 'novedad'},
			{name: 'destacado'},
			{name: 'listaGeneros'},
			{name: 'titulo'},
			{name: 'instrumentos'},
			{name: 'textoOferta'},
			{name: 'nota'},
			{name: 'color'},
			{name: 'compositoresPseudonimo'},
			{name: 'interpretesPseudonimo'},
			{name: 'generoPadre'},
			{name: 'generoBase'},
			{name: 'nombreCompositorPrincipal'},
			{name: 'seleccion'},
			{name: 'carrito'},
			{name: 'duracionCarrito'},
			{name: 'licenciaCarrito'},
			{name: 'duracionFichero1Formato'},
			{name: 'duracionFichero2Formato'},
			{name: 'duracionFichero3Formato'}
		],
	    totalProperty: 'elementCount',
	    baseParams: {
	    	palabra:this.palabra,
	    	tipoBusqueda: this.tipoBusqueda
        }
	});
	
	// busqueda por palabra
	if(palabra!=null){
		this.store = this.storePalabra;
	}
	
	this.tplNoResultados = new Ext.Template(this.htmlNoResultados);
	this.initGrid = function(){			
			
		var parent = this;
		this.tplNoResultados.compile();
		var paging = new Ext.BarBusqueda('barraPaginacion',this.store,{
		    pageSize:this.numeroObras ,
		    afterPageText : localize("de") + ' {0}',
		    beforePageText:localize("pagina") 
		});
		
		this.store.load({params:{start:0, limit:this.numeroObras }});
		this.store.on("load", function () {
			parent.stopObraReproduccion();
			parent.pintar();
		});
		
		// marcamos el grid en el player
		objGrid = this;
		this.playAllEl = Ext.get('playall');
		if(this.playAllEl!=null){	
			this.playAllEl.removeAllListeners();
			this.playAllEl.addListener('click',function(){
				parent.initPlayAll();
			});
		}
	}

	// Pintamos las composiciones cuando este cargado el store	
	this.pintar = function(){	
		
		this.composiciones = new Array();
		try{					
			Ext.get('composicionBusqueda').update();
			if(this.store.getCount()>0){	
				for (var i = 0; i < this.store.getCount(); i++) {
					var objComp = new objetoComposicionBusqueda(this.store.getAt(i),i,tabMusica,this);
					objComp.pintar();
					this.composiciones[i] = objComp;		
				}
			}else{
				// no hay resultados
				this.tplNoResultados.append('composicionBusqueda', {texto:localize('busquedaVacia')});
			}
			if(this.playall){
				this.initPlayAll();
			}
			if(this.playfirst>=0){
				this.reproducirObraConcreta(this.playfirst);
			}
		}catch(e){
			alert(e);
		}
	}
	
	this.initPlayAll = function (){
		if(logado){
			// Caso 1, estaba en stop
			if (!this.playall) {
				this.playall = true;
				if(this.obraReproduccion!=null){
					this.stopObraReproduccion();
				}
				this.composiciones[0].play();
				this.obraReproduccion = this.composiciones[0];
				// Cambiamos el icono de playall
				this.playAllEl.dom.getElementsByTagName("img")[0].src = '../img/playalls.gif';
			} else {
				this.playall = false;
				if(this.obraReproduccion!=null){
					this.stopObraReproduccion();
				}
				this.obraReproduccion = null;
				// Cambiamos el icono de playall
				this.playAllEl.dom.getElementsByTagName("img")[0].src = '../img/playall.gif';
			}		
			
		}else{
			Ext.MessageBox.alert(localize("addlibrary"), localize("soloRegist"));
		}
	}		
	
	this.stopObraReproduccion = function(){
		if (this.obraReproduccion != null){
			this.obraReproduccion.stop();
			this.obraReproduccion = null;
		}
	}			
	
	this.setObraReproduccion = function(composicion){
		this.obraReproduccion = composicion;
	}	
	
	this.completed = function (){
		if(this.playall==true){
			var nuevoIndice = this.obraReproduccion.indice + 1;
			var obraNueva = this.composiciones[nuevoIndice];
			this.stopObraReproduccion();
			if(obraNueva){
				obraNueva.play();
			}else{
				var start = this.store.reader.jsonData.start;
				var limit = this.store.reader.jsonData.limit;
				var elementCount = this.store.reader.jsonData.elementCount;
				var idSeleccionado = this.store.reader.jsonData.idSeleccionado;
				var ultimaObra = start + limit;
				if(ultimaObra<elementCount){
					this.store.load({params:{start:start+limit, limit:limit,elementCount:elementCount,idSeleccionado:idSeleccionado}});
				}
			}
		}else{
			this.stopObraReproduccion();
		}
	}
	
	this.reproducirObraConcreta = function (numero){
		if(this.obraReproduccion!=null){
			this.stopObraReproduccion();
		}
		this.composiciones[numero].play();
		this.playfirst = -1;
		this.obraReproduccion = this.composiciones[numero];
	}
}