//	State tracking variables
////////////////////////////////////////////////
var PlayingVOD 		= false;
var VOD_Length 		= -1;
var LastClock		= 0;
var ManualPause		= false;
var first_playback 	= true;
var SeekSelectionInProgress = false;
var stop = false;



//	Controlling functions
/////////////////////////////////////////////////////////////////////////////////

function player_pause()
{
	if (stop) { return;}
	setTimeout("player_stop()", 100000);
	var p = document.getElementById("Vid1");
	if(!p || (typeof p.ConnectURL == "undefined"))	
	{
		setMessage("plugin not found");
		return;
	}

//	player sends pause event before buffering !
	var x = $("#playbutton").hasClass("paused");
	if (x == true)
	{
		ManualPause = true;
		p.Pause();
	}
	else 
	{
		ManualPause = false;
		if(first_playback)
		{
			first_playback = false;
			p.ConnectURL(url);
		}
		else
			p.Play();
	}
}


function player_stop()
{
	stop =true;
	var p = document.getElementById("Vid1");
	if(!p || (typeof p.ConnectURL == "undefined"))	
	{
		setMessage("plugin not found");
		return;
	}

	p.Stop();
}


function player_fullscreen()
{
	var p = document.getElementById("Vid1");
	if(!p || (typeof p.ConnectURL == "undefined"))	
	{
		setMessage("plugin not found");
		return;
	}

	p.FullScreen(true);
}

//	Events responces
//////////////////////////////////////////////////////////////////////////////////
function evtVideoConnected()
{
	setMessage("Connected to server");

	if (PlayingVOD)
	{
		setMessage ("Connected to vod");
		$("#playbutton").addClass("paused");
	}
}

function evtVideoDisconnected()
{
	PlayButton = true;
	setMessage("Disconnected from server");
	$("#playbutton").removeClass("paused");
}

function evtPlayerPaused()
{
	$("#playbutton").removeClass("paused");
}

function evtPlayerResumed()
{
	$("#playbutton").addClass("paused");
}


function evtPortOpened(port)
{
	if(port == 0)
	{
		setMessage("No open ports");
	}
	else
	{
		setMessage("Using port: " + port);
	}
}

function evtMessage(code, msg)
{
	setMessage(msg);
}

function evtStreamInfo(vod, len)
{
	var msg = ["Streaming "];
	PlayingVOD = vod;
	if(vod)
	{
		msg[1] = "VOD channel.";
		VOD_Length = len;
		document.getElementById("vodprog").style.visibility = "visible";
		document.getElementById("progtext").style.visibility = "visible";
		setProgress(0);
	}
	else
	{
		msg[1] = "Live channel.";
		VOD_Length = -1;

		document.getElementById("progtext").style.visibility = "hidden";
		document.getElementById("vodprog").style.visibility = "hidden";
	}
	
	setMessage(msg.join(''));
}

function evtClockTick(clock)
{
	if (!PlayingVOD) return;
	
	if(!SeekSelectionInProgress)
	{
		setPlayhead(100.0 * clock / VOD_Length);
	}
	
	LastClock = clock;			//	required to update the buffering gui correctly
	setProgress(clock);
}


function roundNumber(rnum, rlength)
{
	var newnumber = Math.round(rnum*Math.pow(10,rlength))/Math.pow(10,rlength);
	return newnumber;
}


function volume_changed(percent)
{
	var p = document.getElementById("Vid1");
	if(!p || (typeof p.ConnectURL == "undefined"))	
	{
		setMessage("plugin not found");
		return;
	}

	p.SetVolume(percent);
	setMessage("Volume changed to " + percent + "%");
}


function set_seek_tooltip(percent)
{
	if(VOD_Length < 0)
	{	
		document.getElementById('seek_pos').innerHTML = "-None-";
		return;
	}
	
	var len = VOD_Length * percent / 100.0;
	var len_str = secs_to_str(len);
	document.getElementById('seek_pos').innerHTML = len_str;
}

function seek_in_progress(percent)
{
	if(VOD_Length == -1 || !PlayingVOD)	return;
	
	SeekSelectionInProgress = true;
	set_seek_tooltip(percent);
}


function seek_complete(percent)
{
	if(VOD_Length == -1 || !PlayingVOD)	return;
	
	var p = document.getElementById("Vid1");
	if(!p || (typeof p.ConnectURL == "undefined"))	
	{
		setMessage("Plugin not found");
		return;
	}
	
	var len = VOD_Length * percent / 100.0;
	var len_str = secs_to_str(len);
	p.Seek(percent);
	document.getElementById('seek_pos').innerHTML = len_str;

	SeekSelectionInProgress = false;
}


function secs_to_str(secs)
{
	var hours = parseInt(secs / 3600);
	var minutes = (parseInt(secs / 60) % 60);
	var seconds = (parseInt(secs % 60));
	
	return  [hours, ":", (minutes < 10) ? ("0" + minutes) : minutes, ":", (seconds < 10) ? ("0" + seconds) : seconds].join('');
}

function setProgress(seconds_passed)
{
	if(VOD_Length == -1 || !PlayingVOD)
	{
		$("#progtext").html("0:00:00\u00a0/\u00a00:00:00");
		return;
	}

	var str_len = secs_to_str(seconds_passed);
	var str_dur = secs_to_str(VOD_Length);
	var str_all = [str_len, "\u00a0/\u00a0", str_dur].join('');
	$("#progtext").html(str_all);
}


function evtEOF()
{
	var v = document.getElementById("Vid1");
	v.Play();
}

