var myWidth
var myHeight
var objsArr = new Array()
var controlsTimer
var restartTimer
var main
var scale = 1
var controlscale = 1
var leftpos = 0
var toppos = 0
var _root_xmouse = 0
var _root_ymouse = 0
var stopClicked = false

function InitMain(sender,args)
{
	main=sender.findName("Page") //Allerbuitenste canvas moet 'Page' heten
	myWidth=sender.findName("Page").width //Allerbuitenste canvas moet 'Page' heten
	myHeight=sender.findName("Page").height //Allerbuitenste canvas moet 'Page' heten

	plugin = sender.getHost()
	plugin.content.onfullScreenChange = onFullScreenChanged //Event handler voor fullscreen

	objsArr["volumeSlider"]=new Object()
	objsArr["volumeSlider"].el=sender.findName("volumeSlider")
	objsArr["volumeSlider"].world_offset=552 //dat is de leftpos van de canvas waar de volume slider inzit

	clearTimeout (controlsTimer)
	controlsTimer = setTimeout("setControlsInvisible()",3000) //na 3 seconden de controls invisible maken
}

function mainCanvasMouseLeave(s) 
{
	s.releaseMouseCapture()
	objsArr["volumeSlider"].is_dragging=false
}

function setControlsInvisible() 
{
	if (main != false)
	{
		clearTimeout (controlsTimer)
		controls = main.findName("controls")
		tControls = new OpacityTween(controls,Tween.EaseOut,100,0,0.1)
		tControls.onMotionFinished = function()
		{
			controls.visibility="collapsed"
		}
		tControls.start()
	}
	else
	{
		// we zijn nog aan het initten.. over 250ms nog eens proberen..
		controlsTimer = setTimeout("setControlsInvisible()",250)
	}
}

function whenMouseMoves(sender, args) 
{
	var silverlightPlugin = sender.getHost()
	var pt = args.getPosition(null)
	_root_xmouse = Math.round((pt.x - leftpos) / scale)
	_root_ymouse = Math.round((pt.y	- toppos) / scale)
	
	mediaStateText = sender.findName("mediaStateText")

	controls = sender.findName("controls")
	if (controls.Opacity == 0)
	{
		controls.visibility="visible"
		tControls = new OpacityTween(controls,Tween.EaseOut,0,100,0.1)
		tControls.start()
	}
	clearTimeout (controlsTimer)
	controlsTimer = setTimeout("setControlsInvisible()",3000)
}


function handleBufferProgressChanged (s,e) 
{
	infotext = s.findName("bufferMsgText")
	if (infotext != null)
	{
		infotext.Text=Math.floor(s.bufferingProgress*100)+"%"
	}
}

function mediaStateChanged(sender, args)
{
    var mediaStateTextBlock = sender.findName("mediaStateTextBlock") // Textblock
    var bufferMsgTextBlock = sender.findName("bufferMsgTextBlock") // Textblock
    var mediaStateText = sender.findName("mediaStateText") // Run
    var bufferMsgText = sender.findName("bufferMsgText") // Run
    var media = sender.findName("videoElement")
    
    mediaStateText.Text = media.CurrentState
    if (media.CurrentState == "Buffering")
    {
    	clearTimeout (restartTimer)
    	bufferMsgTextBlock.Visibility="Visible"
		}
    else if (media.CurrentState == "Paused" || media.CurrentState == "Closed" || media.CurrentState == "Stopped" || media.CurrentState == "Error")
    {
    	if (stopClicked == false)
    	{
				bufferMsgTextBlock.Visibility="Collapsed"
    		clearTimeout (restartTimer)
    		restartTimer = setTimeout("restartStream()",3000)
    	}
		}
		else
		{
			clearTimeout (restartTimer)
			bufferMsgTextBlock.Visibility="Collapsed"
		}
}


function restartStream()
{
	clearTimeout (restartTimer)
	var media = main.findName("videoElement")
	src = media.source
	media.stop()
	media.source=src
}

function onMarkerReached(sender, markerEventArgs)
{
	if (markerEventArgs.marker.type == "type1")
  {
		if (LastInfo != markerEventArgs.marker.text)
		{
			//nieuwe info
			plugin = sender.getHost()
			LastInfo = markerEventArgs.marker.text
 		 	myItem = unescape(markerEventArgs.marker.text)
		}
	}
	else if (markerEventArgs.marker.type == "type2")
  {
		//Altijd zo doen
		plugin = sender.getHost()
	 	myItem = unescape(markerEventArgs.marker.text)
	}
	else
	{
		//alert("onbekend type: " + markerEventArgs.marker.type + "\n\n  ****** \n\nValue: \n" + markerEventArgs.marker.text)       
	}
}     

function FullScreenOver(sender,args)
{
		sender.findName("fullscreen1").stroke="#FF0080FE"
		sender.findName("fullscreen_pijl1").Fill="#FF0080FE"
		sender.findName("fullscreen_pijl2").stroke="#FF0080FE"
}

function FullScreenOut(sender,args)
{
		sender.findName("fullscreen1").stroke="#FF6A6A6A"
		sender.findName("fullscreen_pijl1").Fill="#FF6A6A6A"
		sender.findName("fullscreen_pijl2").stroke="#FF6A6A6A"
}

function FullScreenKlik(sender,args)
{
	var plugin = sender.getHost()
	plugin.content.fullScreen = !plugin.content.fullScreen
}

function SpeakerOver(sender,args)
{
		sender.findName("speaker").Fill="#FF0080FE"
		sender.findName("speaker_golf").stroke="#FF0080FE"
		sender.findName("speaker_golf2").stroke="#FF0080FE"
		sender.findName("mute").Fill="#FF0080FE"
}

function SpeakerOut(sender,args)
{
		sender.findName("speaker").Fill="#FF6A6A6A"
		sender.findName("speaker_golf").stroke="#FF6A6A6A"
		sender.findName("speaker_golf2").stroke="#FF6A6A6A"
		sender.findName("mute").Fill="#FF6A6A6A"
}

function PlayKlik(sender,args)
{
	stopClicked = false
	sender.findName("stop").visibility="visible"
	sender.findName("stop_hit").visibility="visible"
	sender.findName("play").visibility="collapsed"
	sender.findName("play_hit").visibility="collapsed"
	var media = sender.findName("videoElement")
  if (media.CurrentState == "Stopped")
  {
  	media.play()
	}
	else if (media.CurrentState != "Playing")
	{
		src = media.source
		media.stop()
		media.source=src
	}
}

function StopKlik(sender,args)
{
	stopClicked = true
	sender.findName("stop").visibility="collapsed"
	sender.findName("stop_hit").visibility="collapsed"
	sender.findName("play").visibility="visible"
	sender.findName("play_hit").visibility="visible"
	sender.findName("videoElement").stop()
}

function onFullScreenChanged(sender, args)
{
	var silverlightPlugin = sender.getHost()
	if (silverlightPlugin.content.fullScreen == true)
	{
		//sender.findName("zoom_plus").visibility="collapsed"
		if ( (silverlightPlugin.content.actualHeight / myWidth) < (silverlightPlugin.content.actualWidth / myHeight) )
		{ 			
			scale = (silverlightPlugin.content.actualHeight / myHeight)
		}
		else
		{
			scale = (silverlightPlugin.content.actualWidth / myWidth)
		}
		OuterContainer = sender.findName("OuterContainer")
		ControlsContainer = sender.findName("controls")
		var OuterWidth = myWidth * scale
		leftpos = (silverlightPlugin.content.actualWidth - OuterWidth) / 2
		
		OuterContainer["Canvas.Left"] = leftpos
		var OuterHeight = myHeight * scale
		toppos = (silverlightPlugin.content.actualHeight - OuterHeight) / 2
		OuterContainer["Canvas.Top"] = toppos

		OuterContainerScale = sender.findName("OuterContainerScale")
		OuterContainerScale.scaleX = scale
		OuterContainerScale.scaleY = scale

		controlscale = 1/scale
		ControlsContainerScale = sender.findName("ControlsContainerScale")
		ControlsContainerScale.scaleX = controlscale
		ControlsContainerScale.scaleY = controlscale

		var tmpWidth = 640 * controlscale
		ControlsContainer["Canvas.Left"] = ((640/2)  - (tmpWidth/2))
		ControlsContainer["Canvas.Top"] = 455

		OuterContainer.Width = silverlightPlugin.content.actualWidth
		OuterContainer.Height = silverlightPlugin.content.actualHeight
	}
	else
	{
		scale = 1
		controlscale = 1 / scale
		//sender.findName("zoom_plus").visibility="visible"
		OuterContainer = sender.findName("OuterContainer")
		ControlsContainer = sender.findName("controls")
		leftpos = 0
		toppos = 0
		OuterContainer["Canvas.Left"] = leftpos
		OuterContainer["Canvas.Top"] = toppos

		OuterContainerScale = sender.findName("OuterContainerScale")
		ControlsContainerScale = sender.findName("ControlsContainerScale")
		OuterContainerScale.scaleX = scale
		OuterContainerScale.scaleY = scale
		ControlsContainerScale.scaleX = controlscale
		ControlsContainerScale.scaleY = controlscale
		
		var tmpWidth = 640 * controlscale
		ControlsContainer["Canvas.Left"] = ((640/2)  - (tmpWidth/2))
		ControlsContainer["Canvas.Top"] = 455

	}
}

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"), "")
}