/**
 *  
 * @classDescription  Manage a playlist of medias
 * @author            Jordan Samouh
 * @version           0.1
 * @since             2008/02/08
 * 
 */




/** 
* Manage a playlist of medias
* 
* @param {String}  base_url base url of the website
* @param {Object} options  ajax_update_url - internal symfony uri to update media description, ajax_update_element - element to update
* @type {Class}
*/
var Playlist = function(base_url){
		
	this.options = jQuery.extend({
    	ajax_update_url:       '/bsMedia/details/media_id/',
    	ajax_update_element:   'media_detail',
			config_name:           'eztv'
	}, arguments[1] || {});

	this.tab_media = new Array();
	this.indice    = 0;
	this.active    = 1;
	this.base_url  = base_url;
}

Playlist.prototype =
{
	/** 
	* Add a media id at the end of the playlist
	* 
	* @param {Number} media_id
	*/
	addInPlaylist : function(media_id)
	{
		this.tab_media.push(media_id);
	},
	
	/** 
	* Launch the next media in playlist by an ajax request
	*/
	loadPlaylist : function()
	{
		//console.log(this.tabMedia);

		if (this.active == 0)
			return;

		if (this.indice == this.tab_media.length)
			this.indice = 0;

		var media = this.tab_media[this.indice++];
		if(media) refresh_media( this.base_url + this.options.ajax_update_url + media, this.base_url + '/bsComment/add', media, this.options.config_name, {asynchronous:true, evalScripts:true,  parameters:'playlist=1',method:'get'});
	},
	
	/**
	 * Load a media
	 * 
	 * @param int media_id  id of the media to load
	 * @param int active    playlist activation
	 */
	loadMedia : function (media_id, active)
	{
	  for (var i = 0; i < this.tab_media.length; i++)
		  if (this.tab_media[i] == media_id)
				this.indice = i;		
		this.active = active;
		
		if (this.active == 0)
			return;
		if (this.indice == this.tab_media.length)
			this.indice = 0;
		this.indice++;
		
		refresh_media( this.base_url + this.options.ajax_update_url + media_id, this.base_url + '/bsComment/add', media_id, this.options.config_name, {asynchronous:true, evalScripts:true,  parameters:'playlist=1',method:'get'});		
	}
	
}

			
