var zoomed = false
var moving = false
var menuVisible = false
var videoContainerHeight = 478
var videoContainerStartPos = 0
var tInfo
var scrollTimer
var checkTimer
var objsArr=new Array()
var itemHash = 0
var _root_xmouse=0
var _root_ymouse=0
var pinging = false;
var plugin
var main = false
var updateTimeCodesInt
var controlsTimer
var checkMediaInt
var objsArr=new Array()
var _root_xmouse=0
var _root_ymouse=0
var LiveStream = true;

function mainCanvasLoaded(s) 
{
	main=s.findName("mainCanvas")
	//main.opacity=0 //hide while resizing
	plugin = s.getHost()
	plugin.content.onfullScreenChange = onFullScreenChanged
	objsArr["Playhead"]=new Object()
	objsArr["Playhead"].el=s.findName("Playhead")
	
	objsArr["volumeSlider"]=new Object()
	objsArr["volumeSlider"].el=s.findName("volumeSlider")
	
	vid=s.findName("videoElement")
	dpcToken=vid.addEventListener("downloadProgressChanged", updateDownloadProgress)
	vid.addEventListener("bufferingProgressChanged", handleBufferProgressChanged)
	

	var ph=s.findName("Playhead")
	ph.addEventListener("mouseLeftButtonDown", PlayheadPress)
	ph.addEventListener("mouseLeftButtonUp", PlayheadRelease)
	ph.addEventListener("mouseEnter", PlayheadEnter)

	var lp=s.findName("LoadedPath")
	lp.addEventListener("mouseLeftButtonDown", progressBarPress)
	lp.addEventListener("mouseEnter", PlayheadEnter)	

	clearTimeout (controlsTimer)
	controlsTimer = setTimeout("setControlsInvisible()",3000)
	checkItems()
}

function media_state_changed(sender, args)
{
	var media = sender.findName("videoElement")
	if (media.CurrentState == "Buffering")
	{
	}
	else
	{
		if (media.CurrentState == "Playing")
		{
			updateTimeCodesInt=setInterval("updateTimeCodes()", 500)
		}
		else
		{
			clearInterval(updateTimeCodesInt)
		}
	}
}


function updateDownloadProgress(s,e) 
{
	bgBar=s.findName("ToBeLoadedPath")
	progressBar=s.findName("LoadedPath")
	progressBar.width = bgBar.width * s.downloadProgress
}

function handleBufferProgressChanged (s,e) 
{
	s.findName("bufferMsgText").Text="Buffering Video: "+Math.floor(s.bufferingProgress*100)+"%"
	if(s.bufferingProgress >0 && s.bufferingProgress <1) 
	{
		s.findName("bufferMsg").opacity=0.8
	}
	else 
	{
		s.findName("bufferMsg").opacity=0
	}
}

function mediaLoaded(s)
{ 
	resize()
	updateTimeCodesInt=setInterval("updateTimeCodes()", 500)
}


function mediaEnd(s)
{ 
	if (LiveStream == true)
	{
		// Live streams stoppen niet.. die haperen, opnieuw starten dus!
   		mySource = s.source
	   	s.stop()
		s.Source=mySource
	}
	else
	{
		s.stop()
		togglePlayPauseBtn(s.findName("thePlayBtn"))
	}
}

function mainCanvasMouseLeave(s) 
{
	objsArr["Playhead"].dragging=false
	clearInterval(objsArr["Playhead"].playHeadInt)
	clearInterval(mouseCheckerVolumeInt)
	s.releaseMouseCapture()
}

function whenMouseMoves(s,e) 
{
	var silverlightPlugin = s.getHost()
	var pt = e.getPosition(null)
	_root_xmouse = pt.x
	_root_ymouse = pt.y	
	
	playControls = s.findName("PlayControls")
	clipContainer = s.findName("clipContainer")
	menuContainer = s.findName("menuContainer")
	
	if (playControls.Opacity == 0)
	{
		if (silverlightPlugin.content.fullScreen == false)
		{
			menuContainer.visibility = "Visible"
			clipContainer.visibility = "Visible"
			tSchuifClips = new Tween(clipContainer, 'Canvas.Left', Tween.strongEaseOut,500,400,1)
			tSchuifClips.start()
			tFadeClips = new OpacityTween(clipContainer,Tween.EaseOut,0,80,0.5)
			tFadeClips.start()
			tSchuifMenu = new Tween(menuContainer, 'Canvas.Left', Tween.strongEaseOut,-150,0,1)
			tSchuifMenu.start()
			tFadeMenu = new OpacityTween(menuContainer,Tween.EaseOut,0,100,0.5)
			tFadeMenu.start()
		}
		playControls.visibility = "Visible"
		tControls = new OpacityTween(playControls,Tween.EaseOut,0,100,0.5)
		tControls.start()
	}
	clearTimeout (controlsTimer)
	controlsTimer = setTimeout("setControlsInvisible()",3000)
}

function setControlsInvisible() 
{
	if (main != false)
	{
		clearTimeout (controlsTimer)
		playControls = main.findName("PlayControls")
		clipContainer = main.findName("clipContainer")
		menuContainer = main.findName("menuContainer")
		info = main.findName("infoContainer")
		tControls = new OpacityTween(playControls,Tween.EaseOut,100,0,1)
		tControls.start()
	
		tSchuifClips = new Tween(clipContainer, 'Canvas.Left', Tween.strongEaseOut,400,500,1)
		tSchuifClips.onMotionFinished = function()
		{
			clipContainer.visibility = "Collapsed"
		}
		tSchuifClips.start()
	
		tFadeClips = new OpacityTween(clipContainer,Tween.EaseOut,80,0,1)
		tFadeClips.start()
	
	
		tSchuifMenu = new Tween(menuContainer, 'Canvas.Left', Tween.strongEaseOut,0,-150,1)
		tSchuifMenu.onMotionFinished = function()
		{
			menuContainer.visibility = "Collapsed"
		}
		tSchuifMenu.start()
		
		tFadeMenu = new OpacityTween(menuContainer,Tween.EaseOut,100,0,1)
		tFadeMenu.start()
	}
	else
	{
		// we zijn nog aan het initten.. over 250ms nog eens proberen..
		controlsTimer = setTimeout("setControlsInvisible()",250)
	}
}

function getPerson(sender,args)
{
	var container = sender
	container.children.clear()
	var Plugin = sender.getHost()
	var downloader = Plugin.createObject("downloader")
	fileName = sender.tag
	downloader.addEventListener("completed", onPlayerCompleted)
	uniqid = MD5_hexhash("str" + new Date().getTime())
	downloader.open("GET", fileName + "?sender=" + sender.name + " &rnd=" + uniqid)
	downloader.send()
}

function onPlayerCompleted(sender, eventArgs)
{
    var myurl = sender.uri
    var param = myurl.split("?")
    var param = param[1].split("&")
    var param = param[0].split("=")
    var sendCanvas = trim(param[1])
    var xamlFragment = sender.ResponseText
    var plugin = sender.getHost()
    var items = plugin.content.createFromXaml(xamlFragment)
    var container = sender.findName(sendCanvas)
    container.children.add(items)
}

function checkItems()
{
}

function VideoKlik(sender,args)
{
	//Fullscreen gaan dan maar?
	var silverlightPlugin = sender.getHost()
	silverlightPlugin.content.fullScreen = !silverlightPlugin.content.fullScreen
}

function loadVideo(sender,args)
{
	LiveStream = false
	player = sender.findName('videoElement')
	player.stop()
	player.Source=sender.Tag
}

function loadLive(sender,args)
{
	LiveStream = true
	player = sender.findName('videoElement')
	player.stop()
	player.Source=sender.Tag
	var container = sender.findName("clipItems")
	container.children.clear()
	var Plugin = sender.getHost()
	var downloader = Plugin.createObject("downloader")
	fileName = "rechts.xaml"
 	downloader.addEventListener("completed", onRechtsCompleted)
  	uniqid = MD5_hexhash("str" + new Date().getTime())
  	downloader.open("GET", fileName + "?rnd=" + uniqid)
  	downloader.send()
}

function onRechtsCompleted(sender, eventArgs)
{
	var xamlFragment = sender.ResponseText
	var plugin = sender.getHost()
	var items = plugin.content.createFromXaml(xamlFragment)
	var container = sender.findName("clipItems")
	container.children.add(items)
	container.Visibility="Visible"
	tContainer = new OpacityTween(container,Tween.EaseOut,0,100,0.2)
	tContainer.start()
}

function getClips(sender, eventArgs)
{
    var Plugin = sender.getHost()
    var downloader = Plugin.createObject("downloader")
    var container = sender.findName("clipItems")
    if (sender.Tag != '')
    {
    	container.children.clear()
	fileName = sender.Tag
 	downloader.addEventListener("completed", onClipsCompleted)
    	uniqid = MD5_hexhash("str" + new Date().getTime())
    	downloader.open("GET", fileName + "?rnd=" + uniqid)
    	downloader.send()
    }
    else
    {
	var container = sender.findName("clipItems")
	if (container != null)
	{
		container.Visibility="Visible"
		tContainer = new OpacityTween(container,Tween.EaseOut,0,100,0.2)
		tContainer.start()
	}
    }
}

function onClipsCompleted(sender, eventArgs)
{
  var xamlFragment = sender.ResponseText
  var plugin = sender.getHost()
  var items = plugin.content.createFromXaml(xamlFragment)
  var container = sender.findName("clipItems")
  container.children.add(items)
  container.Visibility="Visible"
  tContainer = new OpacityTween(container,Tween.EaseOut,0,100,0.2)
  tContainer.start()
}

function getBanner(sender)
{
    var Plugin = sender.getHost()
    var downloader = Plugin.createObject("downloader")
    var container = sender.findName("bannerContainer")
    container.children.clear()
    downloader.addEventListener("completed", onBannerCompleted)
    uniqid = MD5_hexhash("str" + new Date().getTime())
    downloader.open("GET", "banner.xaml?rnd=" + uniqid)
    downloader.send()
}

function onBannerCompleted(sender, eventArgs)
{
    var xamlFragment = sender.ResponseText
    var plugin = sender.getHost()
    var items = plugin.content.createFromXaml(xamlFragment)
    var container = sender.findName("bannerContainer")
    container.children.add(items)
}

function getMenu(sender, eventArgs)
{
    var Plugin = sender.getHost()
    var downloader = Plugin.createObject("downloader")
    downloader.addEventListener("completed", onMenuCompleted)
    var container = sender.findName("menuItems")
    if (container != null)
    {
      container.children.clear();
      uniqid = MD5_hexhash("str" + new Date().getTime())
      downloader.open("GET", "menu.xaml?rnd=" + uniqid)
      downloader.send()
    }
}

function onMenuCompleted(sender, eventArgs)
{
	var xamlFragment = sender.ResponseText
	var plugin = sender.getHost()
	var items = plugin.content.createFromXaml(xamlFragment)
	var container = sender.findName("menuItems")
	container.children.add(items)
	container.Visibility="Visible"
	tContainer = new OpacityTween(container,Tween.EaseOut,0,100,0.2)
	tContainer.start()
}



function showInfo(sender, args)
{
	if (sender.name != "")
	{
		info = sender.findName(sender.name + "_info")
		info.visibility = "visible"
		tInfo = new OpacityTween(info,Tween.EaseOut,info.Opacity,95,0.1)
		tInfo.start()
	}
}

function hideInfo(sender, args)
{
	if (sender.name != "")
	{
		info = sender.findName(sender.name + "_info")
		tInfo = new OpacityTween(info,Tween.EaseOut,info.Opacity,0,0.1)
		tInfo.onMotionComplete = function()
		{
			info.visibility = "Collapsed"
		}
		tInfo.start()
	}
}

function onFullScreenChanged(sender, args)
{
	var silverlightPlugin = sender.getHost()
	var mediaelement = sender.findName("videoElement")
	
	if (mediaelement != null)
	{
		if (silverlightPlugin.content.fullScreen == true)
		{
			mediaelement.width = silverlightPlugin.content.actualWidth
			mediaelement.height = silverlightPlugin.content.actualHeight
			sender.findName("clipContainer").visibility = "Collapsed"
			sender.findName("menuContainer").visibility = "Collapsed"
			sender.findName("bgImage").visibility = "Collapsed"
			resize()
		}
		else
		{
			mediaelement.width = 500
			mediaelement.height = 480
			sender.findName("clipContainer").visibility = "Visible"
			sender.findName("menuContainer").visibility = "Visible"
			sender.findName("bgImage").visibility = "Visible"
			resize()
			setControlsInvisible() 
		}
	}
}

function logmsg(msg)
{
	var errorMsg = document.getElementById("errorLocation")
	errorMsg.innerHTML = msg
}

/**
*
* Javascript trim, ltrim, rtrim
* http://www.webtoolkit.info/
*
*
**/

function trim(str, chars) {
    return ltrim(rtrim(str, chars), chars);
}

function ltrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

function rtrim(str, chars) {
    chars = chars || "\\s";
    return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}
