/*
	*** UniPlayer.createPlayer ***
	* configUri: file di configurazione del player (aspetto, parti, etc... vedi sotto). Coem default punta a Config.standard.xml
	* mediaUri: url del flusso da riprodurre. Parametro obbligatorio.
	* advertisingUri: url da cui caricare la pubblicita'
	* overrideConfig: permette di definire da initParams molte caratteristiche del player, come l'url degli highlights e altro (vedi esempi). I parametri configurabili sono quelle dei nodi Part (selezionati in base all'id), Startup e CommandBar.

	*** File di configurazione gia' predisposti ***

	* Config.standard.xml: per un video (vod o diretta) standard.
	* Config.smooth.xml: per un video (vod o diretta) smooth con o senza highlights (di default, pulsante e hl nascosti: usare overrideConfig per mostrarli)

	*** Esempi di chiamate ***

	* carica (o reinizializza) il player mostrando un xml di highlights
	UniPlayer.play({
		configUri:'/dl/objects/silverlight/uniplayer/Config.smooth.xml',
		mediaUri:'http://212.162.68.239/testtagli/Champions League Finale - 22-05-2010 20.45.00/Champions League Finale - 22-05-2010 20.45.00.csm',
		overrideConfig: {
			Part: {
				10: {uri: 'http://212.162.68.239/markers/finaleChampions.xml', initiallyVisible: 'true', refreshInterval: '5'}
			},
			CommandBar: {isHighlightsButtonVisible: 'true'}
		}
	});

	* carica (o reinizializza) il player senza highlights e nascondendo il pulsante relativo dalla barra dei comandi
	UniPlayer.play({
		configUri:'/dl/objects/silverlight/uniplayer/Config.smooth.xml',
		mediaUri:'http://212.162.68.239/testtagli/Champions League Finale - 22-05-2010 20.45.00/Champions League Finale - 22-05-2010 20.45.00.csm',
		overrideConfig: {
			Part: {
				10: {uri: '', initiallyVisible: 'false', refreshInterval: '0'}
			},
			CommandBar: {isHighlightsButtonVisible: 'false'}
		}
	});



	UniPlayer.createPlayer({
		configUri:'/dl/objects/silverlight/uniplayer/Config.smooth.highlights.xml',
		mediaUri:'http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=138594',
		overrideConfig: {
			Part: {
				10: {uri: 'http://212.162.68.239/ReplayTV/markers/infonew.xml', initiallyVisible: 'true', refreshInterval: '0'},
				1: {sourceUri: 'http://www.rai.it/dl/objects/silverlight/raisport/logo1maggio.png', initiallyVisible: 'true'}
			},
			Startup: {
				startPosition: '15:19:21'
			}
		}
	});

	UniPlayer.createPlayer({
		configUri: '/dl/test/claudio/uniplayer/Config.minimal.smooth.xml',
		mediaUri: 'http://212.162.68.94/RCE.Web/manifests/testad1.csm',
		advertisingUri: 'http://ad2.neodatagroup.com/ad/load_ndgruler.jsp?sid=49&loc=rtv_streaming_spettacolo^rtv_streaming_spettacolo^wmv^&bt=n&wt=n&jsvar=&rnd='
	});

	UniPlayer.createPlayer({
		configUri: '/dl/test/claudio/uniplayer/Config.minimal.standard.xml',
		mediaUri: 'http://mediapolis.rai.it/relinker/relinkerServlet.htm?cont=983'
	});
*/
function playCompleted() {
	// chiamata al termine della riproduzione del video
}
function previewEnded() {
	// utilizzata nella modalita' preview
}
var UniPlayer = {};
UniPlayer.slPlugin = false;
UniPlayer.slPluginId = "SilverlightControl";
UniPlayer.slDefaultContainerId = "SilverlightControlHost";
UniPlayer.currentConfigUri = null;
UniPlayer.xapPath = "/dl/objects/silverlight/uniplayer/Rai.UniPlayer.xap";
UniPlayer.defaultParams =  {
	configUri: '/dl/objects/silverlight/uniplayer/Config.smooth.xml',
	mediaUri: '',
	cmsUri: '',
	overrideConfig: '',
	advertisingUri: '',
	subTitlesUri: '',
	overlayImageUri: ''
};
UniPlayer.lastParams =  {};
UniPlayer.additionalConfig =  {
	Core: {maxBandwidth: '900000'}
};
UniPlayer.log = (function() {
	var ENABLE_DEBUG = false;
	if (window.ENABLE_UNIPLAYER_DEBUG) {
		ENABLE_DEBUG = !!window.ENABLE_UNIPLAYER_DEBUG;
	}
	if (ENABLE_DEBUG && typeof(window.console) == 'object' && typeof(window.console.log) == 'function') {
		return window.console.log;
	} else {
		return function(){};
	}
})();
UniPlayer.jumpTo = function(h,m,s,ms,dh,dm,ds,dms) {
	if (UniPlayer.slPlugin) {
		UniPlayer.slPlugin.Content.UniPlayerController.PlayFragment(h,m,s,ms,dh,dm,ds,dms);
	}
	return false;
};
UniPlayer.getStatus = function(container) {
	var obj = UniPlayer.slPlugin;
	if (!!container) {
		obj = $(container).find('object');
		if (obj.length>0) {
			obj = obj[0];
		} else {
			obj = false;
		}
	}
	var res = -1;
	if (obj) {
		try {
			res = obj.Content.UniPlayerController.GetPlayerState();
		} catch (e) {
			res = -1;
		}
	}
	return res;
};
UniPlayer.play = function(params, container) {
	try {
		UniPlayer.log('UniPlayer.currentConfigUri', UniPlayer.currentConfigUri);
		UniPlayer.log('params.configUri', params.configUri);
	}catch(e){}
	var res = 1;
	if (
		UniPlayer.slPlugin &&
		(
			typeof(params.configUri) == 'undefined' ||
			UniPlayer.currentConfigUri == params.configUri ||
			params.configUri == '' ||
			params.configUri == null
		)
	) {
		res = UniPlayer.reconfigure(params, container);
	} else {
		res = UniPlayer.createPlayer(params, container);
	}
	return res;
};
UniPlayer.reconfigure = function(params, container) {
	var myParams = $.extend({}, UniPlayer.defaultParams, params);
	UniPlayer.lastParams = myParams;

	var mediaUri = myParams.mediaUri;
	var advertisingUri = myParams.advertisingUri;
	var cmsUri = myParams.cmsUri;
	var overlayImageUri = myParams.overlayImageUri;

	delete myParams.configUri;
	delete myParams.mediaUri;
	delete myParams.advertisingUri;
	delete myParams.cmsUri;
	delete myParams.overlayImageUri;

	var overrideConfig = UniPlayer.getInitParams(myParams, false);

	overrideConfig = overrideConfig.substring("overrideConfig=".length);

	var res = 1;
	try {
		res = UniPlayer.slPlugin.Content.UniPlayerController.Configure(
			mediaUri,
			advertisingUri,
			overrideConfig,
			cmsUri,
			overlayImageUri
		);
	} catch (e) {
		res = UniPlayer.createPlayer(params, container);
	}
	return res;
};
UniPlayer.getInitParams = function(params) {
	if (typeof (params.overrideConfig) == 'object') {
		var p = [];
		// extend UniPlayer.additionalConfig
		for (var type in params.overrideConfig) {
			if (type == 'Part') {
				for (var id in params.overrideConfig[type]) {
					var typeId = 'Part;id$'+id;
					var t = [];
					for (var par in params.overrideConfig[type][id]) {
						t.push(par+'$'+params.overrideConfig[type][id][par]);
					}
					p.push('type$'+typeId+';'+t.join(';'));
				}
			} else /* if (type == 'Startup' || type == 'CommandBar') */ {
				var t = [];
				for (var id in params.overrideConfig[type]) {
					t.push(id+'$'+params.overrideConfig[type][id]);
				}
				p.push('type$'+type+';'+t.join(';'));
			}
		}
		params.overrideConfig = p.join('|');
	}

	var initParams = [];
	for (var i in params) {
		if (params[i] != '') {
			initParams.push(i+'='+params[i]);
		}
	}
	initParams = initParams.join(',');

	return initParams;
};
UniPlayer.slLoaded = function(plugIn, userContext, sender) {
	UniPlayer.slPlugin = plugIn;
	try {
		UniPlayer.log(plugIn, userContext, sender);
		var v = plugIn.Content.UniPlayerController.GetPlayerVersion();
		$(plugIn).attr('playerVersion', v);
	} catch (e) {}
};
UniPlayer.createPlayer = function (params, container) {
	params = $.extend({}, UniPlayer.defaultParams, params);
	UniPlayer.lastParams = params;
	var initParams = UniPlayer.getInitParams(params, false);

	if (!container) {
		container = document.getElementById(UniPlayer.slDefaultContainerId);
	}
	UniPlayer.currentConfigUri = params.configUri;

	container = $(container);

	/*** Modifica per Barra Player Firefox 3.6.6 ***/
	var windowless = 'true';
	// if(navigator.userAgent.indexOf("Firefox/3.6") > 0) {
	if(jQuery.browser.mozilla) {
		// windowless = 'false';
		try {
			var v = navigator.userAgent.match(/Firefox\/([0-9a-zA-Z.]*)/i);
			v = v[1];
			var Vmin = '3.6'; // problema con il windowless, nelle versioni successive alla 3.6
			// var Vmax = '3.6.10'; // il problema non si verifica piu' con la 3.6.10
			// sigh, alcuni utenti ancora hanno problemi con i pulsanti... altri (come me) no :'(
			//
			// if (v>Vmin && v<Vmax) {
			if (v>Vmin) {
				windowless = 'false';
			}
		} catch(e) {
			windowless = 'true';
		}
	}

	var res = 1;
	res = Silverlight.createObjectEx(
		{
			source: UniPlayer.xapPath,
			parentElement: container[0],
			id: UniPlayer.slPluginId,
			properties: {
				width: '100%',
				height: '100%',
				inplaceInstallPrompt: false,
				background: 'transparent',
				windowless: windowless,
				framerate: '25',
				enableHtmlAccess: 'true',
				version: '4.0'
			},
			events: {
				onLoad: UniPlayer.slLoaded
			},
			initParams: initParams,
			context: {
			}
		}
	);

	// return res;
	return 1; // come in configure: 1 = processed
};

