function MasterPlayer()
{
	this.player = null;
	this.objtetoExt = null;
	
	this.categoriaSeleccionada = masterConf.categoriaInicialId;
	this.categoriaActual = "";
	this.categoriasTab;
	this.playlistSeleccionado = masterConf.playlistInicialId;
	this.playlistActual = "";
	this.playlistSonando = null;
	this.cancionSeleccionada = masterConf.cancionInicialId;
	this.cancionesObj = null;
	this.cancionActual;
	this.favoritas = null;
	this.pintandoFavoritas = false;
	this.vieneDeExplorar = false;
	
	this.categoriaOrdenDireccion = "DESC";
	this.categoriaOrdenarPor = "posicion";
	
	this.contenedor = null;
	this.cuerpo = null;
	this.cola = null;
	this.lPContenedor = null;
	this.lpHeight = masterConf.windowAltura - 71;
	this.cContenedor = null;
	this.infoContenedor = null;
	this.icHeight = 30;
	this.descContenedor = null;
	this.dcHeight = 500;
	this.cancionesContenedor = null;
	this.ccHeight = this.lpHeight - this.icHeight - 2;
	this.myPlaylistContenedor = null;
	this.libreriaContenedor = null;	
	this.pContenedor = null;
	
	this.popupInfo = new PopupInfo();
	
	this.pintarSeleccion = function()
	{
		categoriasTab.idSeleccionado = masterPlayer.categoriaSeleccionada;
		categoriasTab.construir();
		
		this.bajarPlaylistsDeLaCategoria();
		
		masterPlayer.playlistActual.contenedor.style.backgroundColor = "#dadadb";
		masterPlayer.playlistActual.span.style.color = "#404040";
	}
	
	this.dibujar = function(contenedor)
	{
		this.popupInfo.construir(document.body);
		this.contenedor = contenedor;
		this.contenedor.style.width = "100%";
		this.crearContenedores();
		this.bajarMiPlayList();	
	}
	
	this.crearContenedores = function()
	{
		this.contenedor.innerHTML = "";
		
		var div = cE("div", this.contenedor);
		div.style.height = masterConf.windowAltura - 61;
		div.className = "player_cuerpo";
		div.style.overflowY = "scroll";	
		this.cuerpo = div;		
		
		this.cuerpoContenedores()	
		
		var div = cE("div", this.contenedor);
		div.className = "cola";
		div.style.width = "100%";
		div.innerHTML = "&nbsp;";		
		this.cola = div;	
	}
	
	this.cuerpoContenedores = function()
	{
		this.cuerpo.innerHTML = "";
		
		var tbody = crearTabla(this.cuerpo);
		tbody.parentNode.style.width ="100%";
		tbody.parentNode.style.height ="100%";
		
		var tr = cE("tr", tbody);
		var td = cE("td", tr);
		td.style.width = 232;
		td.vAlign = "top";
		
		var div = cE("div", td);
		div.style.marginTop = 8;
		div.style.height = this.lpHeight;
		div.className = "libreria";			
		this.lPContenedor = div;
		
		this.lPContenedores();	
		
		var td = cE("td", tr);
		td.align = "left";
		td.vAlign = "top";
		
		var div = cE("div", td);
		div.style.marginTop = 8;
		div.style.height = this.lpHeight;		
		this.cContenedor = div;
		
		this.CContenedores()
		
		var td = cE("td", tr);
		td.className = "canciones_titulo";
		td.style.backgroundColor = "#dee0e1";
		td.style.width = 200;
		td.style.padding = 4;
		td.style.paddingLeft = 10;
		td.vAlign = "top";
		this.pContenedor = td;
		
		this.construirPublicidad()
	}
	
	this.construirPublicidad = function()
	{
		this.pContenedor.innerHTML = "";
		var div = cE("div", this.pContenedor);
		
		var tbody = crearTabla(div);
		tbody.parentNode.style.width ="100%";
		tbody.parentNode.style.height ="100%";
		tbody.vAlign = "top";
		
		var tr = cE("tr", tbody);
		var td = cE("td", tr);
		td.vAlign = "top";
		
		var publicidad = new Publicidad()
		publicidad.texto = "Elsordo - Postproducción de sonido y composición musical para video:";
		publicidad.website = "www.elsordo.net";
		publicidad.construir(td);
		
		var publicidad = new Publicidad()
		publicidad.texto = "Moebius - Animación experimental colombiana:";
		publicidad.website = "www.animamob.com";
		publicidad.construir(td);
		
		var publicidad = new Publicidad()
		publicidad.texto = "Compra música independiente colombiana en bullalatienda.com:";
		publicidad.website = "www.bullalatienda.com";
		publicidad.construir(td);
		
		var publicidad = new Publicidad()
		publicidad.texto = "Todo sobre el jazz en Colombia:";
		publicidad.website = "www.jazzcolombia.com";
		publicidad.construir(td);
		
		var publicidad = new Publicidad()
		publicidad.texto = "Matik Matik - programación de música independiente en Bogotá";
		publicidad.website = "www.matik-matik.com";
		publicidad.construir(td);
		
		var publicidad = new Publicidad()
		publicidad.texto = "Circulo Colombiano de Música Contemporánea";
		publicidad.website = "www.ccmc.com.co";
		publicidad.construir(td);
	}
	
	this.lPContenedores = function()
	{
		this.lPContenedor.innerHTML = "";
		
		var div = cE("div", this.lPContenedor);
		div.style.paddingBottom = 8;
		div.style.borderBottom = "1px solid #adadad";
		this.myPlaylistContenedor = div;
		
		var div = cE("div", this.lPContenedor);	
		this.libreriaContenedor = div;
		
		var div = cE("div", this.lPContenedor);	
		div.style.paddingTop = 6;
		this.playlistContenedor = div;	
	}
	
	this.CContenedores = function()
	{
		this.cContenedor.innerHTML = "";
		masterPlayer.cContenedor.style.overflowY = "auto";
		
		var div = cE("div", this.cContenedor);
		div.style.height = this.icHeight;
		this.infoContenedor = div;
		
		var div = cE("div", this.cContenedor);
		div.style.display = "none";
		div.style.height = this.dcHeight;
		div.innerHTML = "hola";
		this.descContenedor = div;
		
		var div = cE("div", this.cContenedor);
		div.style.height = this.ccHeight;
		this.cancionesContenedor = div;			
	}
	
	this.bajarMiPlayList = function()
	{	
		var masterData = new MasterData();
		masterData.phpLink = "/../player/php/bajarMiPlaylist.php?json=";
		masterData.despuesDeProcesar = this.dibujarMiPlaylists;
		masterData.correr();			
	}
	
	this.bajarCategorias = function()
	{
		var masterData = new MasterData();
		masterData.phpLink = "/../player/php/bajarCategorias.php?json=";
		masterData.despuesDeProcesar = this.dibujarCategorias;
		masterData.correr();	
	};
	
	this.revisarSiExiste = function()
	{
		var categoriaEscogida = this.categoriasTab.categorias.traer(this.categoriaSeleccionada);		
		
		if(null == categoriaEscogida)
		{	
			categoriaEscogida = this.categoriasTab.categorias.traerNo(0);
		
			this.categoriaSeleccionada = categoriaEscogida.id;
		}
		
		masterPlayer.categoriaOrdenarPor = categoriaEscogida.ordenarPor;
		masterPlayer.categoriaOrdenDireccion = categoriaEscogida.ordenDireccion;
	}
	
	this.bajarPlaylistsDeLaCategoria = function()
	{
		this.revisarSiExiste();
		
		var masterData = new MasterData();
		masterData.phpLink = "/../player/php/bajarCategoriaPlaylists.php?json=";
		masterData.despuesDeProcesar = this.dibujarCategoriaPlaylists;
		masterData.agregarAlJson("categoria_id", this.categoriaSeleccionada);
		masterData.agregarAlJson("orden", masterPlayer.categoriaOrdenDireccion);
		masterData.agregarAlJson("ordenar_por", masterPlayer.categoriaOrdenarPor);
		masterData.correr();
	};
	
	this.revisarSiExiste2 = function()
	{
		var playlist = playlistManager.playlistObjetos.traer(this.playlistSeleccionado);		
		
		if(null == playlist)
		{			
			if(this.vieneDeExplorar)
			{
				alert("El playlist Seleccionado ha sido eliminado")
				
				return;
			}
			
			var numero = (playlistManager.pintarFavoritas) ? 1 : 0;
			
			var playlist = playlistManager.playlistObjetos.traerNo(numero);
			playlist.contenedor.style.backgroundColor = playlist.colorSeleccionado;
			playlist.span.style.color = "white";
			
			this.playlistSeleccionado = playlist.id;
			
			this.playlistSonando = playlist;
			
			this.playlistActual = playlist;
		}
	}
	
	this.bajarCancionesDelPlaylist = function()
	{
		this.revisarSiExiste2();
			
		var masterData = new MasterData();
		masterData.phpLink = "/../player/php/bajarPlaylistMusica.php?json=";
		masterData.despuesDeProcesar = this.dibujarPlaylistCanciones;
		masterData.agregarAlJson("playlist_id", this.playlistSeleccionado);		
		masterData.correr();

	};
	
	this.dibujarMiPlaylists = function(obj)
	{	
		masterPlayer.myPlaylistContenedor.innerHTML = "";		
		
		var divG = cE("div", masterPlayer.myPlaylistContenedor);
		divG.style.paddingTop = 10;
		
		var div = cE("div", divG);
		div.style.paddingLeft = 6;
		div.style.paddingBottom = 6;
		div.className = "player_titulos";
		div.innerHTML = masterConf.idiomaManager.lr;
			
		if(playlistManager.pintarFavoritas)
		{		
			var miPlaylist = obj[0];
			
			var div = cE("div", divG);	
			
			var playlist = playlistManager.agregarPlaylist(miPlaylist.id)
			playlist.esEditable = true;
			playlist.nombre = miPlaylist.nombre;
			playlist.descripcion = miPlaylist.descripcion;		
			playlist.crearContenedores(div);	
			playlist.construir();	
			
			masterPlayer.favoritas = playlist;	
		}
		
		var miPlaylist = obj[1];
		
		var div = cE("div", divG);	
		
		var playlist = playlistManager.agregarPlaylist(miPlaylist.id)
		//playlist.esEditable = true;
		playlist.nombre = miPlaylist.nombre;
		playlist.descripcion = miPlaylist.descripcion;		
		playlist.crearContenedores(div);	
		playlist.construir();	
		
		masterPlayer.bajarCategorias();	
	}
	
	this.dibujarCategorias = function(obj)
	{
		masterPlayer.libreriaContenedor.innerHTML = "";
		
		var divG = cE("div", masterPlayer.libreriaContenedor);
		divG.style.paddingTop = 14;
		
		var div = cE("div", divG);
		div.style.paddingLeft = 6;
		div.style.paddingBottom = 10;
		div.className = "player_titulos";
		div.innerHTML = masterConf.idiomaManager.libreria;
		
		var divC = cE("div", divG);
		divC.vAlign = top;
		divC.style.height = 27;
		divC.className = "categoria_degrade";
	
		categoriasTab = new CategoriasTab();
		categoriasTab.contenedor = divC;
		
		for(var i=0; i<obj.lista.length; i++)
		{
			var categoria = obj.lista[i];
			
			if(categoria.id == masterPlayer.categoriaSeleccionada)
			{
				categoriasTab.idSeleccionado = categoria.id;
				masterPlayer.categoriaActual = categoria.nombre;
			};
			
			var tab = categoriasTab.agregarTab(categoria.id);
			tab.nombre = categoria.nombre;	
			tab.ordenarPor = categoria.ordenar_por;
			tab.ordenDireccion = categoria.orden_direccion;
		};
		
		categoriasTab.construir();
		
		masterPlayer.categoriasTab = categoriasTab;
		
		masterPlayer.bajarPlaylistsDeLaCategoria();
	}
	
	this.dibujarCategoriaPlaylists = function(obj)
	{
		masterPlayer.lPContenedor.style.overflowY = "auto";
		var parentEl = masterPlayer.playlistContenedor;		
		parentEl.innerHTML = "";
		
		var div = cE("div", parentEl);
		div.style.paddingTop = 6;
		div.style.paddingBottom = 6;
		div.style.paddingLeft = 15;
		div.className = "player_titulos";
		div.innerHTML = masterPlayer.categoriaActual;
		
		var div2 = cE("div", parentEl);
		div2.style.paddingBottom = 15;
		
		var div3  = cE("div", div2);
	
		for(var i=0; i<obj.length; i++)
		{
			var list = obj[i];
			
			var playlist = playlistManager.agregarPlaylist(list.id)
			playlist.esEditable = false;
			playlist.nombre = list.nombre;
			playlist.descripcion = list.descripcion;
			playlist.crearContenedores(div3);	
			playlist.construir();			
		}
		
		masterPlayer.bajarCancionesDelPlaylist();
	}	
	
	this.dibujarPlaylistCanciones = function(obj)
	{
		if(obj.info == null)
		{
			return;
		}
		
		var playlist = playlistManager.playlistObjetos.traer(obj.info.id);
		playlist.info = obj.info;
		playlist.infoContenedor = masterPlayer.infoContenedor;
		playlist.cancionesContenedor = masterPlayer.cancionesContenedor;		
		
		if(playlist.primeraVez)
		{		
			for(var i=0; i<obj.lista.length; i++)
			{
				var cancion = obj.lista[i];
				var cancionObj = playlist.agregarCancion(cancion.id);
				cancionObj.nombre = cancion.nombre;
				cancionObj.artista = cancion.artista;
				cancionObj.album = cancion.album;
				cancionObj.path = cancion.path;
				
				if(masterPlayer.cancionSeleccionada == cancion.id)
				{
					masterPlayer.cancionActual = cancionObj;
					
					var nombre = (masterPlayer.cancionActual.nombre.length > 28) ? masterPlayer.cancionActual.nombre.substring(0, 25)  + ".."  : masterPlayer.cancionActual.nombre;
					
					cancion = 
					{
						nombre : nombre + " - " + masterPlayer.cancionActual.artista,
						path : masterPlayer.cancionActual.path
					}
					flashPlayer.index = i;
					flashPlayer.song = cancion;
					flashPlayer.play();
				}
	
			}
			
			if(null == masterPlayer.cancionActual)
			{
				var numeroRandom = Math.floor(Math.random()*masterPlayer.playlistSonando.canciones.length);
				
				//esto es solo para Jors
				
				numeroRandom = 0;
				
				var cancionObj = masterPlayer.playlistSonando.canciones.traerNo(numeroRandom);
				
				masterPlayer.cancionSeleccionada = cancionObj.id;				
				masterPlayer.cancionActual = cancionObj;
				
				var nombre = (masterPlayer.cancionActual.nombre.length > 28) ? masterPlayer.cancionActual.nombre.substring(0, 25)  + ".."  : masterPlayer.cancionActual.nombre;
				
				cancion = 
				{
					nombre : nombre + " - " + masterPlayer.cancionActual.artista,
					path : masterPlayer.cancionActual.path
				}

				flashPlayer.index = numeroRandom;	
				flashPlayer.song = cancion;
				
				if(masterConf.playIt)
				{
					flashPlayer.play();
				}
			}
			
			playlist.primeraVez = false;
			playlist.crearTitulos();
			
			playlist.construirListado()
			
		}
		else
		{
			playlist.construirListado()
		}	
		
		if(masterPlayer.playIt)
		{
			masterPlayer.playlistSonando = playlist;
			
			if(masterPlayer.cancionActual)
			{
				masterPlayer.cancionActual.contenedor.style.backgroundColor = masterPlayer.cancionActual.backgroundColor;
				if(playlistManager.pintarFavoritas)
				{
					masterPlayer.cancionActual.contenedorAgregar.style.backgroundColor = masterPlayer.cancionActual.backgroundColor;
				}
				masterPlayer.cancionActual.numeroC.style.color = "#000000";
				masterPlayer.cancionActual.nombreC.style.color = "#000000";
				masterPlayer.cancionActual.artistaC.style.color = "#000000";
				masterPlayer.cancionActual.albumC.style.color = "#000000";			
				masterPlayer.cancionActual.estaSonando = false;
			}
			
			var cancionObj = masterPlayer.playlistSonando.canciones.traer(masterPlayer.cancionSeleccionada);
			
			if(cancionObj == null)
			{
				var cancionObj = masterPlayer.playlistSonando.canciones.traerNo(0);	
			}
			
			masterPlayer.cancionSeleccionada = cancionObj.id;
			
			masterPlayer.cancionActual = cancionObj;			
			masterPlayer.cancionActual.estaSonando = true;			
			masterPlayer.cancionActual.contenedor.style.backgroundColor = cancionObj.sBackgroundColor;			
			masterPlayer.cancionActual.numeroC.style.color = "#ffffff";
			masterPlayer.cancionActual.nombreC.style.color = "#ffffff";
			masterPlayer.cancionActual.artistaC.style.color = "#ffffff";
			masterPlayer.cancionActual.albumC.style.color = "#ffffff";
			
			var nombre = (masterPlayer.cancionActual.nombre.length > 28) ? masterPlayer.cancionActual.nombre.substring(0, 25)  + ".."  : masterPlayer.cancionActual.nombre;
			
			cancion = 
			{
				nombre : nombre + " - " + masterPlayer.cancionActual.artista,
				path : masterPlayer.cancionActual.path
			}
			
			flashPlayer.index = masterPlayer.cancionActual.indice - 1;			
			flashPlayer.song = cancion;
			flashPlayer.play();
			
			masterPlayer.playIt = false;
		}		
					
		layoutManager.ocultarIconoDeEspera();
	}
}

