var player; // player object
var position; // track timeline value (in seconds)

// if the player hasn't played yet, it got stuck buffering
function bufferOverride() {
	var currentState = player.getConfig().state; // gets the player state
	if(currentState == 'BUFFERING') { 
		// still buffering? seek to current position to jump start it
		// position 0 still works, so it doesn't matter if it hasn't played yet!
		player.sendEvent("SEEK", position);
	}
}

// actions based on state
function stateListener(obj) {
	var currentState = obj.newstate; 
	var previousState = obj.oldstate;
	
	// if I need to see whats going on...
	var tmp = document.getElementById("stat");
	if (tmp) { 
		tmp.innerHTML = "current state: " + currentState + 
		"<br />previous state: " + previousState; 
	}
	// if the player gets stuck buffering, take action
	if(currentState == 'BUFFERING') {
		setTimeout(bufferOverride, 5000);
	}
	// fix 'replay on complete' problem
	if(currentState == 'COMPLETED') player.sendEvent("STOP", "true");
}

// report time
function timeListener(obj) {
	position = obj.position;
}

// when player loads, add listeners
function playerReady(obj) { 
	player = document.getElementById(obj['id']);
	player.addModelListener("STATE", "stateListener");
	player.addModelListener("TIME", "timeListener");
	// a little hack to ensure autoplay
	player.sendEvent("STOP", "true");
	player.sendEvent("PLAY", "true");
}