var brightcoveVideo = {
	initialize: function(param)
	{
		var self = this;
		
		/* Default values */
		this.param = {
			name: (param.name)?param.name:'brightcove',
			addPlayerBtn: (param.addPlayerBtn)?param.addPlayerBtn:'.brightcoveAddBtn',
			removePlayerBtn: (param.removePlayerBtn)?param.removePlayerBtn:'.brightcoveRemoveBtn',
			showPlayerBtn: (param.showPlayerBtn)?param.showPlayerBtn:'.brightcoveShowBtn',
			hidePlayerBtn: (param.hidePlayerBtn)?param.hidePlayerBtn:'.brightcoveHideBtn',
			run: (param.run)?param.run:false,
			params: {
				width: '480',
				height: '320',
				autoStart: 'false',
				bgcolor: '000000',
				isVid: 'true',
				isUI: 'true',
				dynamicStreaming: 'true'
			}
		}
		
		if(param)
		{
			$.extend(this.param.params,param.params);
		}
		
		this.playerIsAdded = false;
		
		this.setObservers();
	},	
	setObservers: function()
	{
		var self = this;
		
		/* Adds a player by clicking on a link. Place the video id in the rel attribute like this: rel="video_863776558001" */
		$(this.param.addPlayerBtn).click(function(ev)
		{
			ev.preventDefault();
			self.showPlayer();
			self.addPlayer(self.getId($(ev.currentTarget).attr('rel')));
		});
		
		/*Removes the player completely */
		if($(this.param.removePlayerBtn).size() > 0)
		{
			$(this.param.removePlayerBtn).click(function(ev)
			{
				ev.preventDefault();
				self.removePlayer();
			});
		}
		
		/* Hids the player */
		if($(this.param.hidePlayerBtn).size() > 0)
		{
			$(this.param.hidePlayerBtn).click(function(ev)
			{
				ev.preventDefault();
				self.hidePlayer();
			});
		}
		/* Shows the player */
		if($(this.param.showPlayerBtn).size() > 0)
		{
			$(this.param.showPlayerBtn).click(function(ev)
			{
				ev.preventDefault();
				self.showPlayer();
			});
		}
		
		/* Auto play */
		if(this.param.run)
		{
			self.showPlayer();
			self.addPlayer();
		}
		
	},	
	addPlayer: function(videoId)
	{
		//console.log('video');
		var self = this;
		
		if(videoId)
		{
			this.param.params.videoId = videoId;
		}
		
		var player = window.brightcove.createElement("object");
		player.id = this.param.name;
		
		var parameter;

		for (var i in self.param.params)
		{
			parameter = window.brightcove.createElement("param");
			parameter.name = i;
			parameter.value = self.param.params[i];
			player.appendChild(parameter);
		}

		var playerContainer = document.getElementById(this.param.name);

		window.brightcove.createExperience(player, playerContainer, true);
		
		this.playerIsAdded = true;
	},	
	removePlayer: function()
	{
		if(this.playerIsAdded)
		{
			window.brightcove.removeExperience(this.param.name);
			this.playerIsAdded = false;
		}
	},	
	hidePlayer: function()
	{
		$('#'+this.param.name).hide();
	},
	
	showPlayer: function()
	{
		$('#'+this.param.name).show();
	},    
	getId: function(value)
	{    
	var pattern = new RegExp("^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$","m");
	var patternArray = pattern.exec(value);
	return patternArray[1];
	}
}

/*
	This script is also needed:
	<script type="text/javascript" src="http://admin.brightcove.com/js/BrightcoveExperiences.js"></script>
*/
