var WNConstFlashLayerDivNameKey = "FlashLayer";
var WNConstSilverlightLayerDivNameKey = "SilverlightLayer";

var DEEBUG = false;
var plugin = null;
var WNSilverlightWidgetClass = null;
var WNSilverlightControlID = 'WNSilverlightControl';
var WNFlashMediaObj = null;
var WNSilverlightDisableTransport = false;
var WNSilverlightCanvasHeight = 308;
var WNSilverlightCanvasWidth = 360;
var WNSilverlightMediaTimout = null;
var WNSilverlightMediaStreamingTimout = null;
var WNFlashMediaTimout = null;
var WNFlashMediaTimoutCounter = 1;
var WNSilverlightMedia = null;
var WNSilverlightMediaThumbPos = 8;
var WNSilverlightMainCanvas = null;
var WNSilverlightMainRectangle = null;
var WNSilverlightMainMediaElem = null;
var WNSilverlightMainMediaElemBG = null;
var WNSilverlightMainMediaElemBG_Padding = 6;
var WNSilverlightMainMediaElemAltImage = null;
var WNSilverlightMainMediaElemAltNA = null;
var WNSilverlightMainMediaElemTransBtn = null;
var WNSilverlightMainRectangleFS = null;
var WNSilverlightControlsPaneHeight = 40;
var WNSilverlightTimeLines = null;
var WNSilverlightTimeLine_01 = null;
var WNSilverlightTimeLine_011 = null;
var WNSilverlightTimeLine_012 = null;
var WNSilverlightTimeLine_02 = null;
var WNSilverlightTimeLine_021 = null;
var WNSilverlightTimeLine_022 = null;
var WNSilverlightTimeLine_03 = null;
var WNSilverlightTimeLine_031 = null;
var WNSilverlightTimeLine_032 = null;
var WNSilverlightTimeThumb = null;
var WNSilverlightLiveStreamIsSet = false;
var WNSilverlightLiveStreamVideoUrl = "";
var WNSilverlightLiveStreamSummaryImageUrl = "";
var WNSilverlightLiveStreamIsTriggeredOnce = true;
var WNSilverlightVideoType = "";
var WNSilverlightButtonHeldDownVolume = false;
var WNSilverlightVolumeSetting = 0.8;

//Buttons & Relative Strokes..
var WNSilverlightBtnPlay = null;
var WNSilverlightBtnPause = null;
var WNSilverlightBtnStop = null;
var WNSilverlightStrokePlayPause = null;
var WNSilverlightBtnSpeaker = null;
var WNSilverlightBtnVolume = null;
var WNSilverlightRectVolumeForeground = null;
var WNSilverlightBtnSummary = null;
var WNSilverlightBtnCC = null;
var WNSilverlightBtnEmail = null;
var WNSilverlightBtnHelp = null;
var WNSilverlightBtnFullScreen = null;

//Text
var WNSilverlightTxtMediaStateBlock = null;
var WNSilverlightTxtTimeCurrent = null;

var WNSilverlightStreamStopped = false;

/*
	modifiedClipObj - is a clip object with the following fields added...
		(1) WNConstFlashLayerDivNameKey
		(2) WNConstSilverlightLayerDivNameKey
*/
function WNRenderSilverlight(modifiedClipObj)
{
	var scene = new WNSLVideoWidget.Page();
	if( !isNaN(WNSilverlightWidgetClass.flashVars["playerWidth"]) ) WNSilverlightCanvasWidth = WNSilverlightWidgetClass.flashVars["playerWidth"].toString();
	if( !isNaN(WNSilverlightWidgetClass.flashVars["playerHeight"]) ) WNSilverlightCanvasHeight = WNSilverlightWidgetClass.flashVars["playerHeight"].toString();
	if( !isNaN(WNSilverlightWidgetClass.flashVars["controlsHeight"]) ) WNSilverlightControlsPaneHeight = WNSilverlightWidgetClass.flashVars["controlsHeight"].toString();
	if( !isNaN(WNSilverlightWidgetClass.flashVars["sidePadding"]) && !isNaN(WNSilverlightWidgetClass.flashVars["topPadding"]) ) WNSilverlightMainMediaElemBG_Padding = ( parseInt(WNSilverlightWidgetClass.flashVars["sidePadding"]) + parseInt(WNSilverlightWidgetClass.flashVars["topPadding"]) );
	tmpFlashVarsDisableTransport = WNSilverlightWidgetClass.flashVars["disableTransport"].toString().trim().toLowerCase();
	if( tmpFlashVarsDisableTransport == "true" )
	{
		WNSilverlightDisableTransport = true;
	}
	else if(tmpFlashVarsDisableTransport == "false")
	{
		WNSilverlightDisableTransport = false;
	}
	
	WNSilverlightVideoType = WNSilverlightWidgetClass.flashVars["videoType"];
	
	switch(WNSilverlightWidgetClass.flashVars["defaultStyle"])
	{
		case "flatlight":
		  var canvasXAML = "WNSilverlight.flatlight.xaml";
		  break;    
		case "light":
		  var canvasXAML = "WNSilverlight.light.xaml";
		  break;    
		default:
		  var canvasXAML = "WNSilverlight.dark.xaml";
		  break;
	}        
	var canvasXAML = WNSilverlightWidgetClass.silverlightUri.toString() + canvasXAML.toString();
	
	// Initializing Silverlight...
	Silverlight.createObjectEx({
		source: canvasXAML.toString(),
		parentElement: document.getElementById(modifiedClipObj[WNConstSilverlightLayerDivNameKey.toString()]),
		id: WNSilverlightControlID,
		properties: {
			width: WNSilverlightCanvasWidth,
			height: WNSilverlightCanvasHeight,
			version: "1.0"
		},
		events: {
			onLoad: Silverlight.createDelegate(scene, scene.handleLoad),
			onError: function(sender, args) {
				if (DEEBUG) {
					var errorText = args.errorType + "- " + args.errorMessage;
							
					if (args.ErrorType == "ParserError") {
						errorText += "<br>File: " + args.xamlFile;
						errorText += ", line " + args.lineNumber;
						errorText += " character " + args.charPosition;
					}
					else if (args.ErrorType == "RuntimeError") {
						errorText += "<br>line " + args.lineNumber;
						errorText += " character " +  args.charPosition;
					}
					alert(errorText);
				}	
			}
		},
		initParams: JSON.stringify(modifiedClipObj),
		context: null
	});
}


if (!window.Silverlight) 
	window.Silverlight = {};

Silverlight.createDelegate = function(instance, method) {
	return function() {
		return method.apply(instance, arguments);
	}
}

//Classes and etc..
mediaElemAltImagUrl = "";

if (!window.WNSLVideoWidget)
	window.WNSLVideoWidget = {};

WNSLVideoWidget.Page = function() 
{
	// this is used by the streaming counter to avoid prematurely counting during buffering
	var isMediaAtStartPoint = false;
}

WNSLVideoWidget.Page.prototype =
{
	handleLoad: function(control, userContext, rootElement) 
	{
		this.control						= control;
		WNSilverlightMainCanvas				= control.content.findName("MainCanvas");
		WNSilverlightMainRectangle			= control.content.findName("MainRectangle");
		WNSilverlightMainMediaElemBG		= control.content.findName("MainMediaElemBG");
		WNSilverlightMainMediaElem			= control.content.findName("MainMediaElem");
		WNSilverlightMainMediaElemAltImage	= control.content.findName("MainMediaElemAltImage");
		WNSilverlightMainMediaElemAltNA		= control.content.findName("MainMediaElemAltNA");
		WNSilverlightMainMediaElemTransBtn	= control.content.findName("MainMediaElemTransBtn");
		WNSilverlightMainRectangleFS		= control.content.findName("MainRectangleFS");	
		
		WNSilverlightTimeLines				= control.content.findName("TimeLines");
		WNSilverlightTimeLine_01			= control.content.findName("TimeLine_01");
		WNSilverlightTimeLine_011			= control.content.findName("TimeLine_011");
		WNSilverlightTimeLine_012			= control.content.findName("TimeLine_012");		
		WNSilverlightTimeLine_02			= control.content.findName("TimeLine_02");
		WNSilverlightTimeLine_021			= control.content.findName("TimeLine_021");
		WNSilverlightTimeLine_022			= control.content.findName("TimeLine_022");	
		WNSilverlightTimeLine_03			= control.content.findName("TimeLine_03");
		WNSilverlightTimeLine_031			= control.content.findName("TimeLine_031");
		WNSilverlightTimeLine_032			= control.content.findName("TimeLine_032");	
		WNSilverlightTimeThumb				= control.content.findName("TimeThumb");
		//Buttons & Relative Strokes..
		WNSilverlightBtnPlay				= control.content.findName("BtnPlay");
		WNSilverlightBtnPause				= control.content.findName("BtnPause");
		WNSilverlightBtnStop				= control.content.findName("BtnStop");		
		WNSilverlightStrokePlayPause		= control.content.findName("StrokePlayPause");
		WNSilverlightBtnSpeaker				= control.content.findName("BtnSpeaker");
		WNSilverlightBtnVolume				= control.content.findName("BtnVolume");
		WNSilverlightRectVolumeForeground	= control.content.findName("VolumeForeground");
		WNSilverlightBtnSummary				= control.content.findName("BtnSummary");
		WNSilverlightBtnCC					= control.content.findName("BtnCC");
		WNSilverlightBtnEmail				= control.content.findName("BtnEmail");
		WNSilverlightBtnHelp				= control.content.findName("BtnHelp");
		WNSilverlightBtnFullScreen			= control.content.findName("BtnFullScreen");
		//Text
		WNSilverlightTxtMediaStateBlock		= control.content.findName("TxtMediaStateBlock");
		WNSilverlightTxtTimeCurrent			= control.content.findName("TxtTimeCurrent");

		//Setting up..XAML elements - Width
		WNSilverlightMainCanvas['Width'] = WNSilverlightMainRectangle['Width'] = WNSilverlightCanvasWidth;
		WNSilverlightMainMediaElemBG['Width'] = WNSilverlightMainMediaElem['Width'] = WNSilverlightMainMediaElemAltImage['Width'] = WNSilverlightMainMediaElemAltNA['Width'] = WNSilverlightMainMediaElemTransBtn['Width'] = (WNSilverlightCanvasWidth - WNSilverlightMainMediaElemBG_Padding);
		WNSilverlightTimeLine_01['Width'] = WNSilverlightTimeLine_011['Width'] = WNSilverlightTimeLine_012['Width'] = WNSilverlightTimeLine_02['Width'] = WNSilverlightTimeLine_021['Width'] = WNSilverlightTimeLine_022['Width'] = WNSilverlightTimeLine_03['Width'] = WNSilverlightTimeLine_031['Width'] = WNSilverlightTimeLine_032['Width'] = (WNSilverlightCanvasWidth - 51);
		
		//Setting up..XAML elements - Height
		WNSilverlightMainCanvas['Height'] = WNSilverlightMainRectangle['Height'] = WNSilverlightCanvasHeight;
		WNSilverlightMainMediaElemBG['Height'] = WNSilverlightMainMediaElem['Height'] = WNSilverlightMainMediaElemAltImage['Height'] = WNSilverlightMainMediaElemAltNA['Height'] = WNSilverlightMainMediaElemTransBtn['Height'] = (WNSilverlightCanvasHeight - WNSilverlightMainMediaElemBG_Padding - WNSilverlightControlsPaneHeight);
		WNSilverlightMainRectangleFS['Height'] = WNSilverlightControlsPaneHeight + 4;
		
		//Setting up..XAML elements - PositionTop
		controlsPosY = WNSilverlightCanvasHeight - WNSilverlightControlsPaneHeight
		WNSilverlightTxtMediaStateBlock['Canvas.Top'] = (WNSilverlightCanvasHeight - 62);
		WNSilverlightTxtTimeCurrent['Canvas.Top'] = (controlsPosY - 2);
		WNSilverlightTimeLines['Canvas.Top'] = (controlsPosY + 3);
		WNSilverlightTimeThumb['Canvas.Top'] = (controlsPosY);
		//Buttons & Relative Strokes - PositionTop
		WNSilverlightBtnPlay['Canvas.Top'] = WNSilverlightBtnPause['Canvas.Top']  = WNSilverlightBtnStop['Canvas.Top'] = WNSilverlightStrokePlayPause['Canvas.Top'] = WNSilverlightBtnSpeaker['Canvas.Top'] = WNSilverlightBtnVolume['Canvas.Top'] = WNSilverlightBtnSummary['Canvas.Top'] = WNSilverlightBtnCC['Canvas.Top'] = WNSilverlightBtnEmail['Canvas.Top'] = WNSilverlightBtnHelp['Canvas.Top'] = WNSilverlightBtnFullScreen['Canvas.Top'] = (WNSilverlightCanvasHeight - 19);
		//Buttons & Relative Strokes - PositionLeft
		///// WNSilverlightBtnFullScreen.visibility == "Collapsed" || "Visible";
		WNSilverlightBtnSummary['Canvas.Left'] = WNSilverlightCanvasWidth - 195;
		WNSilverlightBtnCC['Canvas.Left'] = WNSilverlightCanvasWidth - 132;
		WNSilverlightBtnEmail['Canvas.Left'] = WNSilverlightCanvasWidth - 109;
		WNSilverlightBtnHelp['Canvas.Left'] = WNSilverlightCanvasWidth - 67;
		WNSilverlightBtnFullScreen['Canvas.Left'] = WNSilverlightCanvasWidth - 20;
			
		//Setting up..XAML elements - PositionLeft
		WNSilverlightTxtTimeCurrent['Canvas.Left'] = (WNSilverlightCanvasWidth - 32);
		
		//Setting up..Temp Sources for Media/Image Files
		WNSilverlightMainMediaElemAltImage['Source'] = wnSilverlightBaseUrl + "/VideoOpener.jpg";
		WNSilverlightMainMediaElemAltNA['Source'] = wnSilverlightBaseUrl + "/VideoNA.jpg";
		WNSilverlightMainRectangleFS['Visibility'] = "Collapsed";
				
		//mediaElem = control.content.findName("MainMediaElem");
		WNSilverlightMainMediaElem.addEventListener("MediaFailed", Silverlight.createDelegate(this, this.handleMediaFailed));
		WNSilverlightMainMediaElem.addEventListener("MediaOpened", Silverlight.createDelegate(this, this.handleMediaOpened));
		WNSilverlightMainMediaElem.addEventListener("MediaEnded", Silverlight.createDelegate(this, this.handleMediaEnded));
		WNSilverlightMainMediaElem.addEventListener("CurrentStateChanged", Silverlight.createDelegate(this, this.handleMediaStateChanged));
		/*		
		if(WNSilverlightLiveStreamIsSet)
		{
			WNSilverlightTrigger(WNFlashMediaObj);
		}
		*/
		var clipObj = JSON.parse(control.initParams);
		var flashLayerDivName = clipObj[WNConstFlashLayerDivNameKey.toString()];
		var silverlightLayerDivName = clipObj[WNConstSilverlightLayerDivNameKey.toString()];		
		WNSilverlightTrigger(clipObj,flashLayerDivName.toString(),silverlightLayerDivName.toString());
	},
	
	handleMediaFailed: function(sender, eventArgs)
	{
		sender.findName("MainMediaElem").setValue("Visibility","Collapsed");
		sender.findName("MainMediaElemAltNA").setValue("Visibility","Visible");
	},
	
	handleMediaOpened: function(sender, eventArgs)
	{
		if (WNSilverlightMedia == null) {
			WNSilverlightMedia = sender;
		}
		sender.findName("MainMediaElem").setValue("Visibility","Visible");
		sender.findName("MainMediaElemAltNA").setValue("Visibility","Collapsed");
		sender.findName("MainMediaElemAltImage").setValue("Visibility","Collapsed");
		wnVideoWidgets.FireReportingBeacon();
		this.isMediaAtStartPoint = true;
		handleMediaUpdatePosition();
		if(WNSilverlightLiveStreamIsSet)
		{
			//WNFlashMediaObj.objClip.duration = parseInt(WNSilverlightMainMediaElem.naturalDuration.seconds * 1000).toString();
			WNFlashMediaObj.objClip.duration = parseInt(WNSilverlightMainMediaElem.naturalDuration.seconds).toString();
		}
	},
	
	handleMediaEnded: function(sender, eventArgs)
	{
		sender.findName("MainMediaElem").stop();
		sender.findName("MainMediaElem").setValue("Visibility","Collapsed");
		sender.findName("MainMediaElemAltImage").setValue("Visibility","Visible");
		sender.findName("MainMediaElemAltImage").setValue("Source",mediaElemAltImagUrl);
		if (WNSilverlightMediaTimout != null) {
			clearTimeout(WNSilverlightMediaTimout);
		}
		if (WNSilverlightMediaStreamingTimout != null) {
			clearTimeout(WNSilverlightMediaStreamingTimout);
		}
		progressPointer = sender.findName('TimeThumb');
		progressPointer['Canvas.Left'] = WNSilverlightMediaThumbPos;
		WNSilverlightTxtTimeCurrent["Text"] = "00:00";
		WNSilverlightTogglePlayPause();
		
		var arrDivsInfo = sender.Tag.split("&");
		for (var info in arrDivsInfo)
		{
			var arrDiv = arrDivsInfo[info].split("=");
			var layer = document.getElementById(arrDiv[1]);
			if(arrDiv[0] == WNConstFlashLayerDivNameKey)
			{
				// show the flash canvas
				layer.width = WNSilverlightCanvasWidth;
				layer.height = WNSilverlightCanvasHeight;
			}
			// hide the silverlight canvas
			if(arrDiv[0] == WNConstSilverlightLayerDivNameKey) layer.style.display="none";
		}
	},
	
	handleMediaStateChanged: function(sender, eventArgs)
	{
		if(DEEBUG)
		{
			WNSilverlightTxtMediaStateBlock.Text = WNSilverlightMainMediaElem.CurrentState;
		}
		else
		{
			WNSilverlightTxtMediaStateBlock.Text = "";
			var state = WNSilverlightMainMediaElem.CurrentState;
			if(state == "Buffering")
			{
				WNSilverlightTxtMediaStateBlock.Text = WNSilverlightMainMediaElem.CurrentState;
			}
			// this is used by the streaming counter to avoid prematurely counting during buffering
			// you may be at the start but this is streaming so allow for buffering
			// start counter when play begins
			if(this.isMediaAtStartPoint && WNSilverlightVideoType == "livestream" && state == "Playing")
			{
				this.isMediaAtStartPoint = false;
				StreamingMediaPlayCounter();
			}
		}	
	}
}
	function handleMediaUpdatePosition() {
		/*
		var currentPosition		= WNSilverlightMainMediaElem.position.seconds;
		var length				= WNSilverlightMainMediaElem.naturalDuration.seconds;
			WNSilverlightTxtTimeCurrent["Text"] = GetTimeString(currentPosition,false);

		var progressPointer		= WNSilverlightTimeThumb;
		var progressBar			= WNSilverlightTimeLine_03;
		
		var relativePosition = progressBar['Canvas.Left'] + (currentPosition/length) * progressBar.width - (progressPointer.width / 2);
			progressPointer['Canvas.Left'] = (relativePosition >= WNSilverlightMediaThumbPos) ? relativePosition : WNSilverlightMediaThumbPos;
		
		WNSilverlightMediaTimout = setTimeout(handleMediaUpdatePosition, 500);
		*/
	}
	
	function StreamingMediaPlayCounter()
	{
		var todayDate = new Date();
		var startSeedSec = todayDate.getSeconds();
		var startSeedMin = todayDate.getMinutes();
		var startSeedHrs = todayDate.getHours();
		var startSeed = (startSeedSec) + 60 * (startSeedMin) + 3600 * (startSeedHrs);
		StreamingMediaTicker(startSeed);
	}
	
	function StreamingMediaTicker(startSeed)
	{
		var currentDate = new Date();
		var endSeedSec = currentDate.getSeconds();
		var endSeedMin = currentDate.getMinutes();
		var endSeedHrs = currentDate.getHours();
		var endSeed = (endSeedSec) + 60 * (endSeedMin) + 3600 * (endSeedHrs);

		var diff = endSeed - startSeed;
		WNSilverlightTxtTimeCurrent["Text"] = GetTimeString(diff, false);
		
		var call = "StreamingMediaTicker(" +  startSeed + ")";
		WNSilverlightMediaStreamingTimout = setTimeout(call.toString(), 1000);
	}

	function checkWNFlashMediaObj()
	{
		if(WNFlashMediaObj==null)
		{
			WNFlashMediaObj = {};
			WNFlashMediaObj.objClip = {};
			WNFlashMediaObj.objClip.duration			= 0;
			
			WNFlashMediaObj.objClip.headline			= null;
			WNFlashMediaObj.objClip.isUserInitiated		= false;
			WNFlashMediaObj.objClip.mainHeadline		= null;
			WNFlashMediaObj.objClip.summary				= null;
			WNFlashMediaObj.objClip.graphic				= WNFlashMediaObj.objClip.thumb				= "";
			WNFlashMediaObj.objClip.wmvUri				= null;
			if(WNSilverlightLiveStreamIsSet && WNSilverlightLiveStreamIsTriggeredOnce)
			{
				WNFlashMediaObj.objClip.headline = WNFlashMediaObj.objClip.mainHeadline = "LIVE Stream";
				WNFlashMediaObj.objClip.summary = '';
				WNFlashMediaObj.objClip.duration = 0;
				WNFlashMediaObj.objClip.wmvUri = WNSilverlightLiveStreamVideoUrl;
				WNFlashMediaObj.objClip.graphic = WNFlashMediaObj.objClip.thumb = WNSilverlightLiveStreamSummaryImageUrl;
				//WNSilverlightLiveStreamIsTriggeredOnce = false;
			}
		}
	}

function WNSilverlightTrigger(clipObj,flashLayerDivName,silverlightLayerDivName)
{
	// hide the existing flash canvas
	var layerOne = document.getElementById(flashLayerDivName);
	layerOne.width = 1;
	layerOne.height = 1;
	var layerTwo = document.getElementById(silverlightLayerDivName);
	if(layerTwo.style.display == "none") layerTwo.style.display="block";
	layerTwo.style.top = 0;
	
	var divsInfo = WNConstFlashLayerDivNameKey.toString() + "=" + flashLayerDivName + "&" + WNConstSilverlightLayerDivNameKey.toString()+ "=" + silverlightLayerDivName;
	
	WNFlashMediaObj.objClip = clipObj;
	WNFlashMediaObj.divsInfo = divsInfo.toString();
	
	/*
	if(WNSilverlightLiveStreamIsSet && WNSilverlightLiveStreamIsTriggeredOnce || !WNFlashMediaObj.objClip.isUserInitiated)
	{
		WNFlashMediaObj.objClip.headline = WNFlashMediaObj.objClip.mainHeadline = "LIVE Stream";
		WNFlashMediaObj.objClip.summary = '';
		WNFlashMediaObj.objClip.duration = 0;
		WNFlashMediaObj.objClip.wmvUri = WNSilverlightLiveStreamVideoUrl;
		WNFlashMediaObj.objClip.graphic = WNFlashMediaObj.objClip.thumb = WNSilverlightLiveStreamSummaryImageUrl;
	}	
	*/
	
	WNSilverlightSetSummaryGraphic(WNFlashMediaObj.objClip);
	WNSilverlightPlayClip();
	WNFlashMediaTimoutExecute = false;
	
	if(WNFlashMediaTimoutExecute) {	WNFlashMediaTimout = setInterval(WNFlashMediaTimouts, 1000); }
	WNSilverlightLiveStreamIsTriggeredOnce = false;
}

function WNFlashMediaTimouts()
{
	if(WNFlashMediaTimoutCounter == 2)
	{
		clearInterval(WNFlashMediaTimout);
	}
	else
	{
		WNFlashMediaTimoutCounter++;
	}
}

function WNSilverlightSetLiveStream(strVideoUrl, strSummaryImageUrl)
{
	WNSilverlightLiveStreamIsSet = true;
	WNSilverlightLiveStreamVideoUrl = strVideoUrl;
	WNSilverlightLiveStreamSummaryImageUrl = strSummaryImageUrl;
}
function WNSilverlightPlayClip()
{
	WNSilverlightTogglePlayPause();
	if(WNSilverlightMainMediaElem.currentState != 'Paused' || (WNSilverlightLiveStreamIsSet && WNSilverlightMainMediaElem.currentState != 'Paused' && WNSilverlightMainMediaElem.currentState!="Stopped"))
	{
		// Need to refresh asp page in order to get around the token duration when already watching a stream and stopping it		
		if (WNFlashMediaObj.objClip.liveStreamSecure == "1" && WNSilverlightStreamStopped)
		{
			document.location.href = document.location + "&cbust=" + (Math.random() * 100000000);	
		}
		//debugger;
		WNSilverlightMainMediaElem.autoPlay = true;
		WNSilverlightMainMediaElem["Source"] = WNFlashMediaObj.objClip.wmvUri.toString();
		WNSilverlightMainMediaElem["Tag"] = WNFlashMediaObj.divsInfo.toString();
		WNSilverlightMainMediaElem.volume = WNSilverlightVolumeSetting;
		WNSilverlightMainMediaElemAltImage["Visibility"] = "Collapsed";
	}
	WNSilverlightResetMedias();
	WNSilverlightMainMediaElem.play();
	handleMediaUpdatePosition();
}

function WNSilverlightPauseClip()
{
	if(WNSilverlightMainMediaElem["Source"] != "" && WNSilverlightMainMediaElem.currentState != 'Paused')
	{
		if (WNSilverlightMediaTimout != null) {
			clearTimeout(WNSilverlightMediaTimout);
		}
		if (WNSilverlightMediaStreamingTimout != null) {
			clearTimeout(WNSilverlightMediaStreamingTimout);
		}
		WNSilverlightMainMediaElem.pause();
	}
}

function WNSilverlightStopClip()
{
	if(WNSilverlightMainMediaElem["Source"] != "" && WNSilverlightMainMediaElem.currentState != 'Stop')
	{
		if (WNSilverlightMediaTimout != null) {
			clearTimeout(WNSilverlightMediaTimout);
		}
		if (WNSilverlightMediaStreamingTimout != null) {
			clearTimeout(WNSilverlightMediaStreamingTimout);
		}
		
		WNSilverlightStreamStopped = true;
		WNSilverlightMainMediaElem.stop();
	}
}
function WNSilverlightResetMedias()
{
	if (WNSilverlightMediaTimout != null) {
		clearTimeout(WNSilverlightMediaTimout);
	}
	if (WNSilverlightMediaStreamingTimout != null) {
		clearTimeout(WNSilverlightMediaStreamingTimout);
	}
	WNSilverlightTimeThumb['Canvas.Left'] = WNSilverlightMediaThumbPos;
	WNSilverlightTxtTimeCurrent["Text"] = "00:00";
}
function WNSilverlightSetSummaryGraphic(objClip)
{
	///alert('WNSilverlightSetSummaryGraphic');
	if(WNSilverlightLiveStreamIsSet && WNSilverlightLiveStreamIsTriggeredOnce && WNSilverlightLiveStreamSummaryImageUrl == "")
	//if(WNSilverlightLiveStreamIsSet && WNSilverlightLiveStreamIsTriggeredOnce)
	{
		WNSilverlightMainMediaElem.autoPlay = false;
		WNSilverlightMainMediaElem["Source"] = WNFlashMediaObj.objClip.wmvUri.toString();
		//WNSilverlightMainMediaElem.pause();
		WNSilverlightMainMediaElemAltImage["Visibility"] = "Collapsed";
		return;
	}
	if(objClip.graphic != null && objClip.graphic.toString() != "")
	{
		mediaElemAltImagUrl = objClip.graphic.toString();
	}
	else
	{
		mediaElemAltImagUrl = ""+objClip.thumb.toString();
	}
	WNSilverlightMainMediaElemAltImage["Source"] = mediaElemAltImagUrl;
	WNSilverlightMainMediaElemAltImage["Visibility"] = "Visible";
}

function BtnPlayMouseLeftButtonUp(sender, eventArgs){
		WNFlashMediaObj.objClip.isUserInitiated = true;
		WNSilverlightPlayClip();
}

function BtnPauseMouseLeftButtonUp(sender, eventArgs){
		WNSilverlightTogglePlayPause();
		WNSilverlightPauseClip();
}

function BtnStopMouseLeftButtonUp(sender, eventArgs){
		WNSilverlightTogglePlayPause();
		WNSilverlightStopClip();
}

function BtnSpeakerMouseLeftButtonUp(sender, eventArgs){
	var SLStrokeSpeakerMute = sender.findName('StrokeSpeakerMute');
	if(SLStrokeSpeakerMute['Visibility'] == "Visible")
	{
		SLStrokeSpeakerMute['Visibility'] = "Collapsed";
		WNSilverlightRectVolumeForeground['Visibility'] = "Visible";
		WNSilverlightMainMediaElem.IsMuted = false;
	}
	else
	{
		SLStrokeSpeakerMute['Visibility'] = "Visible";
		WNSilverlightRectVolumeForeground['Visibility'] = "Collapsed";
		WNSilverlightMainMediaElem.IsMuted = true;
	}
}

function BtnVolumeMouseLeftButtonDown(sender, eventArgs)
{
	if(WNSilverlightRectVolumeForeground['Visibility'] == "Collapsed") return;
	
	WNSilverlightButtonHeldDownVolume = true;
}

function BtnVolumeMouseMove(sender, eventArgs)
{
	if(WNSilverlightButtonHeldDownVolume)
	{
		WNSilverlightUpdateVolumeUI(sender, eventArgs);
	}
}

function BtnVolumeMouseLeave(sender, eventArgs)
{
	if(WNSilverlightButtonHeldDownVolume)
	{
		WNSilverlightButtonHeldDownVolume = false;
		WNSilverlightChangeVolumeSetting();
	}
}

function BtnVolumeMouseLeftButtonUp(sender, eventArgs)
{
	if(WNSilverlightButtonHeldDownVolume)
	{
		WNSilverlightButtonHeldDownVolume = false;
		WNSilverlightUpdateVolumeUI(sender, eventArgs);
		WNSilverlightChangeVolumeSetting();
	}
}

function WNSilverlightUpdateVolumeUI(sender, eventArgs)
{
	var volumeX = eventArgs.GetPosition(sender).x;
	WNSilverlightCalcVolumeSetting(volumeX, sender.Width); 
	WNSilverlightRectVolumeForeground.width = volumeX;
}

function WNSilverlightCalcVolumeSetting(canvasX, canvasWidth)
{
	var ratio = canvasX / canvasWidth;
	WNSilverlightVolumeSetting = ratio;
}

function WNSilverlightChangeVolumeSetting()
{
	WNSilverlightMainMediaElem.volume = WNSilverlightVolumeSetting;
}

function WNSilverlightTogglePlayPause()
{
	if(WNSilverlightBtnPlay['Visibility'] == "Visible")
	{
		WNSilverlightBtnPlay['Visibility'] = "Collapsed";
		
		if(WNSilverlightVideoType == "livestream")
		{
			WNSilverlightBtnStop['Visibility'] = "Visible";
		}
		else
		{
			WNSilverlightBtnPause['Visibility'] = "Visible";
		}
	}
	else
	{
		WNSilverlightBtnPlay['Visibility'] = "Visible";
		WNSilverlightBtnPause['Visibility'] = "Collapsed";
		WNSilverlightBtnStop['Visibility'] = "Collapsed";
	}
}

function setMouseEnterColor(sender) {
	setColor(sender, sender.tag.split(" ")[0]);
}
function setMouseLeaveColor(sender) {
	setColor(sender, sender.tag.split(" ")[1]);
}
function setColor(sender, color) {
	for(i=0; i<sender.children.count; i++) {
		element = sender.children.getItem(i);
		element = sender.children.getItem(i);
		if (element.toString() == "TextBlock") {
			element['Foreground'] = "#"+color;
		} else if (element.toString() == "Path" || element.toString() == "Rectangle") {
			element['Fill'] = "#"+color;
			element['Stroke'] = "#"+color;
		}
	}	
}

function WNSilverlightInit(sender, eventArgs) {
	checkWNFlashMediaObj();
	progressPointer = sender.findName('TimeThumb');
	WNSilverlightMediaThumbPos = progressPointer['Canvas.Left'];
	plugin = sender.getHost();
	plugin.content.onFullScreenChange = WNSilverlightOnFullScreenChanged;
	var d = plugin.createObject('downloader');
		d.addEventListener('Completed', WNSilverlightSetFont1);
		d.open('GET', wnSilverlightBaseUrl +'/lte50535.ttf');
		d.send();
}

function WNSilverlightSetFont1(sender, eventArgs) {
	var textFontName = 'TradeGothic LT Bold';
	var textBlock = sender.findName('TxtTimeCurrent');
		textBlock.setFontSource(sender);
		textBlock.fontFamily = textFontName;
		
		textBlock = sender.findName('TxtPlay');
		textBlock.setFontSource(sender);
		textBlock.fontFamily = textFontName;
		textBlock['Canvas.Top']= "-2";
	
		textBlock = sender.findName('TxtPause');
		textBlock.setFontSource(sender);
		textBlock.fontFamily = textFontName;
		textBlock['Canvas.Top']= "-2";
		
		textBlock = sender.findName('TxtSummary');
		textBlock.setFontSource(sender);
		textBlock.fontFamily = textFontName;
		textBlock['Canvas.Top']= "-2";
		
		textBlock = sender.findName('TxtCC');
		textBlock.setFontSource(sender);
		textBlock.fontFamily = textFontName;
		textBlock['Canvas.Top']= "-2";
		
		textBlock = sender.findName('TxtEmail');
		textBlock.setFontSource(sender);
		textBlock.fontFamily = textFontName;
		textBlock['Canvas.Top']= "-2";
		
		textBlock = sender.findName('TxtHelp');
		textBlock.setFontSource(sender);
		textBlock.fontFamily = textFontName;
		textBlock['Canvas.Top']= "-2";
}

function GetTimeString(sec, isMilliseconds) {
	sec = parseFloat(sec);
	if(isMilliseconds) {
		sec = Math.floor(sec/1000);
	}
	var hours		= Math.floor(sec/3600);
	var minutes		= Math.floor((sec%3600)/60);
	var seconds		= Math.floor(sec%60);
	var hoursStr	= hours.toString();
	var minutesStr	= minutes.toString();
	var secondsStr	= seconds.toString();
	if (hours<10) {
		hoursStr = "0"+hoursStr;
	}
	if (minutes<10) {
		minutesStr = "0"+minutesStr;
	}
	if (seconds<10) {
		secondsStr = "0"+secondsStr;
	}
	if (hoursStr == "00") {
		return minutesStr+":"+secondsStr;
	} else {
		return hoursStr+":"+minutesStr+":"+secondsStr;
	}
}

function BtnFullScreenMouseLeftButtonUp(sender, eventArgs)
{
    plugin.content.fullScreen = !plugin.content.fullScreen;
}

function WNSilverlightOnFullScreenChanged(sender, eventArgs)
{
    WNSilverlightUpdateLayout(plugin.content.actualWidth, plugin.content.actualHeight);
}

function WNSilverlightUpdateLayout(width, height)
{
	var xWidth	= (WNSilverlightCanvasWidth - WNSilverlightMainMediaElemBG_Padding);
	var xHeight	= (WNSilverlightCanvasHeight - WNSilverlightMainMediaElemBG_Padding - WNSilverlightControlsPaneHeight);
	var xLeft	= WNSilverlightMainMediaElemBG_Padding / 2;
	var xTop	= xLeft;
	var xBtnTop = (WNSilverlightCanvasHeight - 19);
	var xControlsBg = 28;
	
	if(width > WNSilverlightCanvasWidth)
	{
		xWidth	= width;
		xHeight	= height;
		xLeft	= xTop = 0;
		WNSilverlightMainRectangleFS['Width'] = width;
		WNSilverlightMainRectangleFS['Height'] = xControlsBg;
		WNSilverlightMainRectangleFS['Canvas.Top'] = height - xControlsBg;
		WNSilverlightMainRectangleFS['Visibility'] = "Visible";
		xBtnTop = (xHeight - 19);
		WNSilverlightBtnFullScreen['Canvas.Left'] = xWidth - 20;
		WNSilverlightTimeLines['Visibility'] = WNSilverlightTxtTimeCurrent['Visibility'] = "Collapsed";
		WNSilverlightTxtMediaStateBlock['Canvas.Top'] = (height - 50);
	}
	else
	{
		WNSilverlightTimeLines['Visibility'] = WNSilverlightTxtTimeCurrent['Visibility'] = "Visible";
		WNSilverlightMainRectangleFS['Visibility'] = "Collapsed";
		WNSilverlightBtnFullScreen['Canvas.Left'] = WNSilverlightCanvasWidth - 20;
		WNSilverlightTxtMediaStateBlock['Canvas.Top'] = (WNSilverlightCanvasHeight - 62);
	}
	
	WNSilverlightMainMediaElemBG['Width'] = WNSilverlightMainMediaElem['Width'] = WNSilverlightMainMediaElemAltImage['Width'] = WNSilverlightMainMediaElemAltNA['Width'] = WNSilverlightMainMediaElemTransBtn['Width'] = xWidth;
	WNSilverlightMainMediaElemBG['Height'] = WNSilverlightMainMediaElem['Height'] = WNSilverlightMainMediaElemAltImage['Height'] = WNSilverlightMainMediaElemAltNA['Height'] = WNSilverlightMainMediaElemTransBtn['Height'] = xHeight;
	
	WNSilverlightMainMediaElemBG['Canvas.Left'] = WNSilverlightMainMediaElem['Canvas.Left'] = WNSilverlightMainMediaElemAltImage['Canvas.Left'] = WNSilverlightMainMediaElemAltNA['Canvas.Left'] = WNSilverlightMainMediaElemTransBtn['Canvas.Left'] = xLeft;
	WNSilverlightMainMediaElemBG['Canvas.Top'] = WNSilverlightMainMediaElem['Canvas.Top'] = WNSilverlightMainMediaElemAltImage['Canvas.Top'] = WNSilverlightMainMediaElemAltNA['Canvas.Top'] = WNSilverlightMainMediaElemTransBtn['Canvas.Top'] = xTop;
	
	WNSilverlightBtnPlay['Canvas.Top'] = WNSilverlightBtnPause['Canvas.Top'] = WNSilverlightBtnStop['Canvas.Top'] = WNSilverlightStrokePlayPause['Canvas.Top'] = WNSilverlightBtnSpeaker['Canvas.Top'] = WNSilverlightBtnVolume['Canvas.Top'] = WNSilverlightBtnSummary['Canvas.Top'] = WNSilverlightBtnCC['Canvas.Top'] = WNSilverlightBtnEmail['Canvas.Top'] = WNSilverlightBtnHelp['Canvas.Top'] = WNSilverlightBtnFullScreen['Canvas.Top'] = xBtnTop;
}
