<!-- Copyright 2008 Crossnet AB - www.crossnet.net Author: Marcus Carlsson -->
function setPlayerSource(url, showPlayBigImage) {
		if ( typeof(imgUrl) != 'undefined')
		{
			if (imgUrl.length > 1)
			{
				silverlightPlugin.RootCanvas.findName("soundImg").Source = imgUrl
			}
		}
		
		silverlightPlugin.Player.Instance.Source = url;
		silverlightPlugin.Player.Instance.play();
		/*
		silverlightPlugin.ClipId = mediaClipId;
		silverlightPlugin.RootCanvas.findName("clipTitle").Text = silverlightPlugin.Clips[mediaClipId].Title;
		
		if (showPlayBigImage)
		{
			silverlightPlugin.Player.Instance.AutoPlay = "true";
			showPlayBig(false);
		} else {
			showPlayBig(true);
		}*/

}
function enterScreenArea() {
	if (silverlightPlugin.Instance.content.fullScreen)
	{
		return;
	}
	if (silverlightPlugin.Player.Instance.currentState == 'Playing')
	{	
		if (liveStreaming() == false)
		{
			showPauseBig(true);
		}
	} else {
		showPlayBig(true);
	}
}

function leaveScreenArea() {
	showPlayBig(false);
	showPauseBig(false);
	
}
function showPlayBig(show) {
	if (show) {
		silverlightPlugin.RootCanvas.findName("playBigImg").Visibility = "Visible";
	} else {
		silverlightPlugin.RootCanvas.findName("playBigImg").Visibility = "Collapsed";
	}
}
function showPauseBig(show) {
	if (show) {
		silverlightPlugin.RootCanvas.findName("pauseBigImg").Visibility = "Visible";
	} else {
		silverlightPlugin.RootCanvas.findName("pauseBigImg").Visibility = "Collapsed";
	}
}
function clickedScreenArea() {
	if (silverlightPlugin.Instance.content.fullScreen)
	{
		silverlightPlugin.Instance.content.fullScreen = !silverlightPlugin.Instance.content.fullScreen;
		return;
	}
	var live = liveStreaming();

	if (silverlightPlugin.Player.Instance.currentState == 'Playing' && !live)
	{
		showPauseBig(false);
		showPlayBig(true);
		silverlightPlugin.Player.Instance.pause();
	} else {
		if (!live)
		{
			showPauseBig(true);
		}
		showPlayBig(false);
		playerPlayEvent();
	}
}
function playerPlayEvent() {
	if (silverlightPlugin.Player.Instance.currentState == 'Playing') {
		silverlightPlugin.Player.Instance.pause();
	} else {
		if (silverlightPlugin.Player.Instance.Source != null && silverlightPlugin.Player.Instance.Source.length > 1) {
			silverlightPlugin.Player.Instance.play();
		}
	}
}

function playerPauseEvent(sender, args) {
    silverlightPlugin.Player.Instance.pause();
}


function liveStreaming() {
	if (silverlightPlugin.Player.Instance.naturalDuration.seconds == null || silverlightPlugin.Player.Instance.naturalDuration.seconds == 0) {
		return true;
	} else {
		return false;
	}
}
function fullscreenLeaveEvent() {
	silverlightPlugin.RootCanvas.findName("fullscreenImg").Source = silverlightPlugin.Player.FullscreenSrc;
}
function fullscreenEnterEvent() {
	silverlightPlugin.RootCanvas.findName("fullscreenImg").Source = silverlightPlugin.Player.FullscreenHooverSrc;
}

function media_state_changed(sender, args) {
	//Buffering, Closed, Error, Opening, Paused, Playing, or Stopped.
	var state = silverlightPlugin.Player.Instance.currentState;
	if (state == null || state == 'undefined')
		{return;}
	if (state == 'Paused'  || state == 'Stopped') {
		silverlightPlugin.Player.PlayXaml.Source = silverlightPlugin.Player.PlayHooverSrc;
		showPlayBig(true);
	} else if (state == 'Playing') {
		silverlightPlugin.Player.PlayXaml.Source = silverlightPlugin.Player.PauseHooverSrc;
		showPlayBig(false);
	} else if (state == 'Opening') {

	}
}
function playHoover(sender, args) {
	if (silverlightPlugin.Player.Instance.currentState == 'Playing') {
		silverlightPlugin.RootCanvas.findName('playerPlayImg').Source = silverlightPlugin.Player.PauseHooverSrc;
	} else if (silverlightPlugin.Player.Instance.currentState == 'Paused')
	{
		silverlightPlugin.RootCanvas.findName('playerPlayImg').Source = silverlightPlugin.Player.PlayHooverSrc;
	}
}

function playNotHoover(sender, args) {
	if (silverlightPlugin.Player.Instance.currentState == 'Playing') {
		silverlightPlugin.RootCanvas.findName('playerPlayImg').Source = silverlightPlugin.Player.PauseSrc;
	} else if (silverlightPlugin.Player.Instance.currentState == 'Paused')
	{
		silverlightPlugin.RootCanvas.findName('playerPlayImg').Source = silverlightPlugin.Player.PlaySrc;
	}
}

function rootCanvasLoaded(sender, args)
{
	updatePosition(sender);
}

function playerMuteEvent() {
	if (silverlightPlugin.Player.Instance.IsMuted) {
		silverlightPlugin.Player.Instance.IsMuted="False";
		silverlightPlugin.RootCanvas.findName('playerMuteImg').Source = silverlightPlugin.Player.MuteSrc;
	} else {
		silverlightPlugin.Player.Instance.IsMuted="True";
		silverlightPlugin.RootCanvas.findName('playerMuteImg').Source = silverlightPlugin.Player.MutedSrc;
	}
}

function buffering_status() {
	var bufferPercent = silverlightPlugin.Player.Instance.BufferingProgress * 100;
	bufferPercent = Math.round(bufferPercent);
	setBufferAndDownloadStatus(bufferPercent);
}
function download_status(sender, args) {
	var downloadPercent = silverlightPlugin.Player.Instance.DownloadProgress * 100;
	downloadPercent = Math.round(downloadPercent);
	setBufferAndDownloadStatus(downloadPercent);
}
function setBufferAndDownloadStatus(statusPercent)
{
	var textBlock = silverlightPlugin.RootCanvas.findName("bufferText");
	
	textBlock.Text = "Buffer: "+statusPercent + "%";
	if (statusPercent == null || statusPercent < 1 || statusPercent > 99  )
	{	
		if (silverlightPlugin.BufferTimeout == null || silverlightPlugin.BufferTimeout == "undefined")
		{} else {
			clearTimeout (silverlightPlugin.BufferTimeout);
		}
		silverlightPlugin.BufferTimeout = setTimeout(hideBufferText, 4000);
		/*textBlock.Text="";*/
		return;
	}
	
}
function hideBufferText() {
	var textBlock = silverlightPlugin.RootCanvas.findName("bufferText");
	textBlock.Text="";
	silverlightPlugin.BufferTimeout = null;
}

function fullScreenEvent(sender, args)
{
	silverlightPlugin.Instance.content.fullScreen = !silverlightPlugin.Instance.content.fullScreen;
}

function onFullScreenChanged(sender, args) {
	var rectBg = silverlightPlugin.RootCanvas.findName("fullscreenRect");
	if (silverlightPlugin.Instance.content.fullScreen)
	{
		rectBg.Width = silverlightPlugin.Instance.content.actualWidth;
		rectBg.Height = silverlightPlugin.Instance.content.actualHeight;
		silverlightPlugin.Player.Instance.Width = silverlightPlugin.Instance.content.actualWidth;
		silverlightPlugin.Player.Instance.Height = silverlightPlugin.Instance.content.actualHeight;
		showPlayBig(false);
		showPauseBig(false);	
	} else {
		rectBg.Width = "0";
		rectBg.Height = "0";
		silverlightPlugin.Player.Instance.Width = silverlightPlugin.Player.Width;
		silverlightPlugin.Player.Instance.Height = silverlightPlugin.Player.Height;
	}
}

function clipEnded(sender, args) {
	silverlightPlugin.Marker.Instance['Canvas.Left'] = silverlightPlugin.Timeline.Instance['Canvas.Left'];
	showPlayBig(true);
}

function volumeEvent(sender, args) {
	var rectImg = silverlightPlugin.RootCanvas.findName('volumeImg');
	var rectWidth = args.getPosition(null).x - rectImg["Canvas.Left"];
	var percentage = (rectWidth / rectImg.Width);
	setVolume(percentage*10);
}
function setVolume(percentage) {
	percentage = percentage / 10;
	percentage = percentage.toFixed(1);
	silverlightPlugin.Player.Instance.volume = percentage;
	silverlightPlugin.VolumeRect.Instance.Width = percentage * silverlightPlugin.VolumeImg.Instance.Width;
}

function updatePosition(sender) {
	if (silverlightPlugin.Player.Instance != null)
	{
		if (silverlightPlugin.MarkerTimeout == null || silverlightPlugin.MarkerTimeout == "undefined")
		{
			var currentPos = silverlightPlugin.Player.Instance.position.seconds;
			var length = silverlightPlugin.Player.Instance.naturalDuration.seconds;
			var slider = silverlightPlugin.Timeline.Instance;
			var time = slider.findName('timeText');
			if (length == null || length == 0)
			{
				time.Text = "";
			} else {
				var relativePosition = (currentPos/length) * silverlightPlugin.Timeline.Instance.Width;
				if (currentPos == 0 && length == 0)
				{
					relativePosition =0;
				}
				var newMarkerPos = 	silverlightPlugin.Timeline.Instance['Canvas.Left'] + relativePosition;
				if (newMarkerPos + silverlightPlugin.Marker.Instance.Width > silverlightPlugin.Timeline.Instance['Canvas.Left'] + silverlightPlugin.Timeline.Instance.Width)
				{
					newMarkerPos = silverlightPlugin.Timeline.Instance['Canvas.Left'] + silverlightPlugin.Timeline.Instance.Width - silverlightPlugin.Marker.Instance.Width;
				}
				silverlightPlugin.Marker.Instance['Canvas.Left'] = newMarkerPos;
				
				var currentTime = getDuration(silverlightPlugin.Player.Instance.position.seconds);
				var totalTime = getDuration(silverlightPlugin.Player.Instance.naturalDuration.seconds);
				time.text =  getTimeText(currentTime) + " (" + getTimeText(totalTime)+")";
			}
		}
	}
	setTimeout(updatePosition, 500);
}

function getTimeText(duration) {
	var time = duration.split(":");
	var hours;
	var minutes;
	var seconds;
	if (time[0] < 10) { 
		if (time[0] == 0) 
			{hours = "";} 
		else 
			{hours = "0"+time[0]+":";}
	}
	if (time[1] < 10) { 
		minutes = "0"+time[1];
	} else { 
		minutes = time[1];
	}
	if (time[2] < 10) {
		seconds = "0"+time[2];
	} else { 
		seconds = time[2];
	}
	return hours + minutes + ":" +seconds;
}

function timeline_button_down(sender, args) {
	
	sender["Canvas.Left"] = "0";
	sender["Canvas.Top"] = "0";
	sender.Width = silverlightPlugin.Instance.content.actualWidth;
	sender.Height = silverlightPlugin.Instance.content.actualHeight;

	if (silverlightPlugin.Player.Instance.naturalDuration.seconds == null || silverlightPlugin.Player.Instance.naturalDuration.seconds == 0)
	{
		return;
	}
	silverlightPlugin.MarkerMove = 1;
	updateMarker(args.getPosition(null).x);	
}

function timeline_button_move(sender, args) {
	if (silverlightPlugin.MarkerMove == 1)
	{
		updateMarker(args.getPosition(null).x);	
	}
}

function resetTimelineRect(sender, args) {
	sender["Canvas.Left"] = silverlightPlugin.Timeline.OriginalLeft;
	sender["Canvas.Top"] = silverlightPlugin.Timeline.OriginalTop;
	sender.Width = silverlightPlugin.Timeline.OriginalWidth;
	sender.Height = silverlightPlugin.Timeline.OriginalHeight;
}

function slider_button_up(sender, args) {
	if (silverlightPlugin.MarkerMove == 1)
	{
		silverlightPlugin.MarkerMove = 0;
		resetTimelineRect(sender,args);
	}
}
function slider_button_leave(sender, args) {
	silverlightPlugin.Marker.Instance.Source = "/silverlight/images/markerHoover.png";
	if (silverlightPlugin.MarkerMove == 1)
	{
		silverlightPlugin.MarkerMove = 0;
		resetTimelineRect(sender,args);
	}
}
function slider_button_enter(sender, args) {
	silverlightPlugin.Marker.Instance.Source = "/silverlight/images/marker.png";
}

function updateMarker(markerX) {
	if (markerX < silverlightPlugin.Timeline.Instance["Canvas.Left"])
	{
		silverlightPlugin.Marker.Instance["Canvas.Left"] = silverlightPlugin.Timeline.Instance["Canvas.Left"];
	} else {

		if (markerX + silverlightPlugin.Marker.Instance.Width > silverlightPlugin.Timeline.Instance["Canvas.Left"] + silverlightPlugin.Timeline.Instance.Width) {
			silverlightPlugin.Marker.Instance["Canvas.Left"] = silverlightPlugin.Timeline.Instance["Canvas.Left"] + silverlightPlugin.Timeline.Instance.Width - silverlightPlugin.Marker.Instance.Width;
		} else {
			silverlightPlugin.Marker.Instance["Canvas.Left"] = markerX - 1;
		}
	}
	var slider = silverlightPlugin.Timeline.Instance;
	var time = slider.findName('timeText');
	var totalTime = getDuration(silverlightPlugin.Player.Instance.naturalDuration.seconds);
	var currentTime =  getNewTime(markerX);
	time.text =  getTimeText(currentTime) + " (" + getTimeText(totalTime)+")";

	if (silverlightPlugin.MarkerTimeout != null && silverlightPlugin.MarkerTimeout != "undefined")
	{
		clearTimeout(silverlightPlugin.MarkerTimeout);
	}
	silverlightPlugin.MarkerTimeout = setTimeout("doMarkerUpdate("+markerX+")", 1000);
}
function getNewTime(markerX)
{
	var percent = (markerX - silverlightPlugin.Timeline.Instance["Canvas.Left"]) / silverlightPlugin.Timeline.Instance.Width;
	var newTime = Math.round(percent * silverlightPlugin.Player.Instance.naturalDuration.seconds);
	if (newTime > silverlightPlugin.Player.Instance.naturalDuration.seconds) {
		newTime = silverlightPlugin.Player.Instance.naturalDuration.seconds;
	} else if (newTime < 0)
	{
		newTime = 0;
	}
	return getDuration(newTime);
	
}
function doMarkerUpdate(markerX) {
	silverlightPlugin.MarkerTimeout = null;
	var newTime = getNewTime(markerX);
	silverlightPlugin.Player.Instance.position = newTime;
}

function getDuration(seconds) {
	var hours = (seconds / 3600);
	seconds = (seconds % 3600);
	var minutes = (seconds / 60);
	var newSeconds = (seconds % 60);	
	return Math.floor(hours) + ":" + Math.floor(minutes) + ":" + Math.floor(newSeconds);
}

