/**
 *
 */

(function() {
	var NpsInit = function() {
		const npData = document.getElementById( 'np_data' );
		if(npData == null || npData.textContent == '' ){
			return;
		}
	
		const npDataDec = atob(npData.textContent);
		const npDataObj = JSON.parse(npDataDec);

		const npPlugin = new NpawPlugin(npDataObj.accountCode);
		const myPlayer = videojs(npDataObj.playerId);

		const analyticsOptions = {
			'content.title': npDataObj.dimensions.title,
			'content.isLive': npDataObj.dimensions.isLive,
			'content.resource': myPlayer.src(),
			'content.package': npDataObj.dimensions.package,
			'content.saga': npDataObj.dimensions.saga,
			'content.season': npDataObj.dimensions.season,
			'content.episodeTitle': npDataObj.dimensions.episodeTitle,
			'content.channel': npDataObj.dimensions.channel,
			'content.rendition': npDataObj.dimensions.rendition,
			'user.type': npDataObj.dimensions.userType,
			'app.name': npDataObj.dimensions.appName,
			'app.releaseVersion': npDataObj.dimensions.appVersion
		};

		npPlugin.setAnalyticsOptions(analyticsOptions);
		npPlugin.registerAdapterFromClass(myPlayer, NpawPluginAdapters.video.Videojs);

		if(npDataObj.contentInfo.contentType == 'Videog Player'){
			if(npDataObj.dimensions.isLive == true){
				myPlayer.on('videog_source_changed', function(){
					analyticsOptions["content.resource"] = myPlayer.src();
		
					npPlugin.setAnalyticsOptions(analyticsOptions);
				});
				myPlayer.on('pre_error', function(){
					if(myPlayer.playFailedCount >= 3){
						myPlayer.error('playback stops for reasons such as loss of video connection.');
						myPlayer.pause();
						myPlayer.currentTime(0);
						myPlayer.trigger('dispose');
						myPlayer.reset();
					}
				});
			}
		}else if(npDataObj.contentInfo.contentType == 'Rain'){
			const video = document.getElementById(npDataObj.playerId);
			if(('hls' in video.dataset) && video.dataset.hls == 'true'){
				let retrycount = 0;
				myPlayer.tech().on('retryplaylist', function(){
					if(retrycount >= 3){
						myPlayer.error('playback stops for reasons such as loss of video connection.');
						myPlayer.pause();
					}
					retrycount++;
				});
			}
		}
	};
	
	window.addEventListener('load', function(){
		NpsInit();
	});
}());
