// the last returned video
var oneCachedVideoItem = new VideoItem();

var playImmediately 		= false;
var forcePlayImmediately 	= false;

// Brightcove player variables 
var bcExp;
var modVP;
var modExp;
var modCon;

var playerReadiness = new Array();

var playerName = "brightcovePlayer";
var isPlayerAdded = false;

function getVideoById( aVideoId )
{

	if (oneCachedVideoItem)
	{
		if (oneCachedVideoItem.getId() == aVideoId)
		{
			return oneCachedVideoItem;
		}
	}
	
	$.ajax({
		url:    "lib/json.php?getVideoById=" + aVideoId,
		success: function( jsonData ) 
		{
			var myVideoObject = eval( "("+jsonData+")" );
			oneCachedVideoItem = new VideoItem (myVideoObject);
		},
		async:   false
	});
	
	return oneCachedVideoItem;
}


/**
 * Creates a player with the video loaded, does not autoplay it. 
 */
function loadVideo ( aVideoItem )
{
	if (new String(aVideoItem.constructor).indexOf("String") != -1)
	{
		removePlayer();
		aVideoItem = getVideoById(aVideoItem);
		addPlayer( aVideoItem, false );
	} else if (new String(aVideoItem.constructor).indexOf("Object") != -1)
	{
		removePlayer();

		addPlayer( aVideoItem, false );
	}
} // END of loadVideo()


/**
 * Creates a player and auto plays the video. 
 */
function playVideo ( aVideoItem )
{
	if (new String(aVideoItem.constructor).indexOf("String") != -1)
	{
		removePlayer();
		aVideoItem = getVideoById(aVideoItem);
		addPlayer( aVideoItem, true );
	} else if (new String(aVideoItem.constructor).indexOf("Object") != -1)
	{
		removePlayer();
		addPlayer( (aVideoItem), false );
	}
} // END of playVideo()


/**
 * Adds a brand new player to the site
 */
function addPlayer( aVideoItem, isImmediate ) 
{

	if ( isPlayerAdded == false ) 
	{

		if ( parseInt(aVideoItem.getId()) == aVideoItem.getId() )
		{
		
			isPlayerAdded = true;

			var params = {};
			params.playerID 	= "23736824001";
			params.videoId 		= aVideoItem.getId();
			params.autoStart 	= isImmediate || forcePlayImmediately ? "true" : "";
			params.bgcolor 		= "#FFFFFF";
			params.width 		= "545";
			params.height 		= "356";
			params.isVid 		= "true";

			var player 	= brightcove.createElement("object");
			player.id 	= playerName; // global. Set at beginning of file. Maybe set as parameter in next iteration
		
			var parameter;
		
			for (var i in params) 
			{
				parameter 		= brightcove.createElement("param");
				parameter.name 	= i;
				parameter.value = params[i];
				player.appendChild(parameter);
			}

			var playerContainer = document.getElementById("playerContainer");

			brightcove.createExperience(player, playerContainer, true);

		} else
		{

			isPlayerAdded = true;

			var params = {};
			params.movie 				= "http://www.youtube.com/v/" + aVideoItem.getId() + "&hl=en&fs=1&hd=1&border=1"
			params.allowFullScreen 		= "true";
			params.allowscriptaccess 	= "always";

			var player 		= document.createElement("object");
			player.width 	= "500";
			player.height 	= "315";

			var parameter;

			for (var i in params) 
			{
				parameter 		= brightcove.createElement("param");
				parameter.name 	= i;
				parameter.value = params[i];
				player.appendChild(parameter);
			}

			var embed = document.createElement("embed");
			embed.src 				= "http://www.youtube.com/v/" + aVideoItem.getId() + "&hl=en&fs=1&hd=1&border=1";
			embed.type				= "application/x-shockwave-flash";
			embed.allowscriptaccess = "always";
			embed.allowfullscreen 	= "true";
			embed.width 			= "500";
			embed.height 			= "315";
			
			player.appendChild(embed);
			
			$("#playerContainer").append( player );
			
		}

		forcePlayImmediately = false;

		videoMenuObject.updatePlayerTitleDescription( aVideoItem );

	}
	

} // END of addPlayer();


function removePlayer() {

	if(isPlayerAdded == true) 
	{
	
		isPlayerAdded = false;

		try 
		{
			brightcove.removeExperience(playerName);
		} catch (e )
		{
			// don't do anything
		} finally
		{
			$("#playerContainer").empty();
		}
		
	}

} // END of removePlayer
