
// -----------------------------------------------------------------------------
// Internal only
// -----------------------------------------------------------------------------

var playersState = new Object(); 
var playersTime = new Object();  
var playersReady = new Object(); 
var playersTimeHandler = new Object();

function playerReady(obj) {
	playersReady[obj['id']] = true;
};

function timeListener(paramList) {
	var playerId = paramList['id'];
	var time = paramList['position'];
	playersTime[playerId] = time;
  	var handler = playersTimeHandler[playerId];
  	if (handler) {
  		handler(time);
  	}
}

function stateListener(paramList) {
	var playerId = paramList['id'];
	var state = paramList['newstate'];
	playersState[playerId] = state;
}

function getPlayer(playerId) {
	return YAHOO.util.Dom.get(playerId);
};

// Register the listeners with the player
function registerListeners(playerId) {
	var player = getPlayer(playerId);
	player.addModelListener("TIME","timeListener"); 
	player.addModelListener("STATE","stateListener");
}

var gtoPlayerId;
var gtoOffset;
function waitAndSeek(playerId, offset) {
	gtoPlayerId = playerId;
	gtoOffset = offset;
	setTimeout('getPlayer(gtoPlayerId).sendEvent("SEEK",gtoOffset)', 250);
}


// -----------------------------------------------------------------------------
// External API
// -----------------------------------------------------------------------------

function initializePlayer(playerId) {
	
	// If the player is ready, then register the listeners
	if (playersReady[playerId]) {
		setTimeout('registerListeners("'+playerId+'")', 250);
	}
	
	// If the player is not ready, then set a timeout to call this method
	// again in 1/2 second (500 milliseconds)
	else {
		setTimeout('initializePlayer("'+playerId+'")', 250);
	}
}

function togglePlayback(playerId) {
	getPlayer(playerId).sendEvent('PLAY');
}

function pausePlayback(playerId) {
	getPlayer(playerId).sendEvent('PLAY', 'false');
}

function startPlayback(playerId) {
	getPlayer(playerId).sendEvent('PLAY', 'true');
}

function sendPlayerToOffset(playerId, offset) {
	
	// If not currently playing, then start playing and wait a moment
	// before seeking
	var state = playersState[playerId];
	if (state != "PLAYING" && state != "BUFFERING") {
		startPlayback(playerId);
		waitAndSeek(playerId, offset)
	}
	
	// If currently playing, then just seek right away
	else {
		getPlayer(playerId).sendEvent("SEEK",offset);
	}
}


function getPlayerTime(playerId) {
	var time = playersTime[playerId];
	if (!time) {
		return 0;
	}
	else {
		return time;
	}
}

function setPlayerTimeHandler(playerId, handler) {
	playersTimeHandler[playerId] = handler;
}

function refreshNotes(playerId) {
	getPlayer(playerId).sendEvent('RELOAD_CAPTIONS');
}



