/** SILVERLIGHT **/

var PLAYER_CONFIG_CLIP_FILENAME = "/player/silverlight/player_config_CLIP.xml";
var PLAYER_CONFIG_FEP_FILENAME = "/player/silverlight/player_config_FEP.xml";

var PLAYER_CONFIG_CLIP_POPOUT_FILENAME = "/player/silverlight/player_config_CLIP_POPOUT.xml";
var PLAYER_CONFIG_FEP_POPOUT_FILENAME = "/player/silverlight/player_config_FEP_POPOUT.xml";

var PLAYER_CONFIG_CLIP_AUTOPLAY_FILENAME = "/player/silverlight/player_config_CLIP_AUTOPLAY.xml";
var PLAYER_CONFIG_FEP_AUTOPLAY_FILENAME = "/player/silverlight/player_config_FEP_AUTOPLAY.xml";

var PLAYER_CONFIG_CLIP_POPOUT_AUTOPLAY_FILENAME = "/player/silverlight/player_config_CLIP_POPOUT_AUTOPLAY.xml";
var PLAYER_CONFIG_FEP_POPOUT_AUTOPLAY_FILENAME = "/player/silverlight/player_config_FEP_POPOUT_AUTOPLAY.xml";

var PLAYER_CONFIG_CLIP_PLAYLIST_FILENAME = "/player/silverlight/player_config_CLIP_PLAYLIST.xml";
var PLAYER_CONFIG_FEP_PLAYLIST_FILENAME = "/player/silverlight/player_config_FEP_PLAYLIST.xml";

var PLAYER_CONFIG_CLIP_POPOUT_PLAYLIST_FILENAME = "/player/silverlight/player_config_CLIP_POPOUT_PLAYLIST.xml";
var PLAYER_CONFIG_FEP_POPOUT_PLAYLIST_FILENAME = "/player/silverlight/player_config_FEP_POPOUT_PLAYLIST.xml";

var PLAYER_CONFIG_LIVE_FILENAME = "/player/silverlight/player_config_LIVE.xml";


//xml di configurazione silverlight
var slConfig  = null;

function GetSLConfig() {
	//alert("getConfig: " + slConfig);
	return slConfig;
}

function CreateSLPlayerObject() {
	//alert(videotime);
	var initParamsValue = 'configUri=local://page/GetSLConfig,playlist=local://page/GetPlaylist';
	
	if(document.location.href.indexOf("/dirette-web/")==-1)	{
		if (videotime!='00:00:00.000'){
				initParamsValue += ' ,startPosition=' + videotime;
			}
		if($j.cookie("PlayerAutoSwitch")==null || $j.cookie("PlayerAutoSwitch")== 'true'){
				initParamsValue += ' ,autoSwitch=true';
		}
		else{
				initParamsValue += ',autoSwitch=false';	
		}
			
		if($j.cookie("PlayerMute")==null || $j.cookie("PlayerMute")== 'false'){
				initParamsValue += ' ,isMuted=false';
		}
		else{
				initParamsValue += ',isMuted=true';	
		}
	}
	
	if (typeof(playerSessionUUID)!="undefined") {
		initParamsValue += ',usession=' + playerSessionUUID;
	}
	var Params = {
		source: '/player/silverlight/PolymediaShow/TXTPolymedia.Show.xap',
		parentElement: document.getElementById('box-player'),
		id: 'IPlayer',
		properties: {
			width: '693',
			height: '324',
			background: 'transparent',
			windowless: 'true',
			minRuntimeVersion: '4.0',
			autoUpgrade: 'true',
			enableHtmlAccess: 'true',
			enableGPUAcceleration: 'true',
			allowHtmlPopupWindow: 'true'
		},
		initParams: initParamsValue,
		events: {
			onError: onSilverlightError
		}
	};
	Silverlight.createObjectEx(Params);
	

    
}

function CreateSLPlayer(isLive){
	if (isLive){
		player_config_url = PLAYER_CONFIG_LIVE_FILENAME;
	}
	else
	{
		// check if is clip or fep <type>clip/fep</type>
		var player_config_url;
		var pl = GetPlaylist();
		var typeStart = pl.indexOf("<type>", 0) + 6;
		var typeEnd = pl.indexOf("</type>", typeStart);
		var type = pl.substr(typeStart, typeEnd - typeStart);
		var urlPage = document.location.href;
		var isPopout = (urlPage.indexOf("/video/popout/")>0) ? true : false;
		var isAutoplay = ($j.cookie("PlayerAutoSwitch") == 'false') ? false : true;
		var playlist= urlPage.indexOf("$p=") > 0 ? (new RegExp("\\$p=([A-Za-z0-9\_\-]+)($|&|\\$)").exec(urlPage)[1]): '';
		var isPlaylist= (playlist.indexOf("playlist")==0 || playlist.indexOf("myplaylist")==0);	
		if (type.toLowerCase() == "clip") 
		{
			if(isPopout&& isPlaylist){
				player_config_url = PLAYER_CONFIG_CLIP_POPOUT_PLAYLIST_FILENAME;
			}	
			else if(isPlaylist){
				player_config_url = PLAYER_CONFIG_CLIP_PLAYLIST_FILENAME;
			}
			else if(isPopout && isAutoplay ){
				player_config_url = PLAYER_CONFIG_CLIP_POPOUT_AUTOPLAY_FILENAME;
			}
			else if(isPopout){
				player_config_url = PLAYER_CONFIG_CLIP_POPOUT_FILENAME;
			}
			else if(isAutoplay){
				player_config_url = PLAYER_CONFIG_CLIP_AUTOPLAY_FILENAME;
			}						
			else{
				player_config_url = PLAYER_CONFIG_CLIP_FILENAME;
			}
		}
		else if (type.toLowerCase() == "fep") {
			if(isPopout&& isPlaylist){
				player_config_url = PLAYER_CONFIG_FEP_POPOUT_PLAYLIST_FILENAME;
			}	
			else if(isPlaylist){
				player_config_url = PLAYER_CONFIG_FEP_PLAYLIST_FILENAME;
			}
			else if(isPopout && isAutoplay ){
				player_config_url = PLAYER_CONFIG_FEP_POPOUT_AUTOPLAY_FILENAME;
			}
			else if(isPopout){
				player_config_url = PLAYER_CONFIG_FEP_POPOUT_FILENAME;
			}
			else if(isAutoplay){
				player_config_url = PLAYER_CONFIG_FEP_AUTOPLAY_FILENAME;
			}						
			else{
				player_config_url = PLAYER_CONFIG_FEP_FILENAME;
			}
		}
		else 
		{
			alert("type " + type + " is not valid!");
		}
	}
	$j.ajax({
			type: "GET",
			url: player_config_url,
			dataType: "text",
			success: function(data) {
				slConfig = data;
				CreateSLPlayerObject();
			}
		});
}

function onSilverlightError(sender, args) {
		var appSource = "";
		if (sender != null && sender != 0) {
		  appSource = sender.getHost().Source;
		}
		
		var errorType = args.ErrorType;
		var iErrorCode = args.ErrorCode;

		if (errorType == "ImageError" || errorType == "MediaError") {
		  return;
		}

		var errMsg = "Unhandled Error in Silverlight Application " +  appSource + "\n" ;

		errMsg += "Code: "+ iErrorCode + "    \n";
		errMsg += "Category: " + errorType + "       \n";
		errMsg += "Message: " + args.ErrorMessage + "     \n";

		if (errorType == "ParserError") {
			errMsg += "File: " + args.xamlFile + "     \n";
			errMsg += "Line: " + args.lineNumber + "     \n";
			errMsg += "Position: " + args.charPosition + "     \n";
		}
		else if (errorType == "RuntimeError") {           
			if (args.lineNumber != 0) {
				errMsg += "Line: " + args.lineNumber + "     \n";
				errMsg += "Position: " +  args.charPosition + "     \n";
			}
			errMsg += "MethodName: " + args.methodName + "     \n";
		}
		throw new Error(errMsg);
}
