var PlaylistManager = new Class({
	initialize: function(options) {
		this.fifo = [];
		
		this.feature_managers = {};
		this.features = options.features.split(" ");
		var self = this;
		this.features.each(function(el) {
			switch (el)
			{
				case 'playlist':
					this.feature_managers.playlist = new Playlist(options.playlist,this);
					break;
				case 'slideshow':
					this.feature_managers.slideshow = new Slideshow(options.slideshow,this);
					break;
			}
		}, this);
	},
	
	stack: function()
	{
		if (this.fifo.length)
		{
			var job = this.fifo.shift();
			if (job.job == 'halt') return;
			var params = '';
			if (job.args.length)
			{
				params = "'"+job.args.join("','")+"'";
			}
			if (job.job.length)
			{
				var prefix = job.job[0];
				var suffix = job.job[1];
			}
			else
			{
				var prefix = "this";
				var suffix = job.job;
			}
			var next = prefix+'.'+suffix+'('+params+')';
			eval(next);
		}
		if (this.fifo.length)
			this.stack();
	},
	
	job: function(jobname,params) {
		var job = {job: jobname};
		job.args = params || [];
		
		this.fifo.push(job);
	},
	
	deploy: function(deploy,opt)
	{
		this.job(["this.feature_managers['"+deploy+"']",'deploy'],[opt]);
		this.stack();
	},
	
	recall: function(mode) {
		this.feature_managers[mode].recall();
	}
	
});
