var url = parseLocation();
var cvpcontext = setPlayerContext();
var adjheight = parseInt(url['height']) + 30;
var currVideoId = '';
var currSwfContainer = 'http://i.cdn.turner.com/nba/nba/.element/swf/1.1/cvp/nba_container.swf';
var wnbaCheck=new RegExp("wnba");
	if (wnbaCheck.test(cvpcontext) ) {
		currSwfContainer = 'http://i.cdn.turner.com/nba/wnba/.element/swf/1.1/cvp/wnba_container.swf';
	}
var nba_article_player = new CVP({
	id : 'cvp_articleplayer',
	width : url['width'],
	height : adjheight,
	isPlayerReady: false,
	flashVars : {
		contentId : url['videoID'],
		context : cvpcontext
	},

	embed : {
		containerSwf : currSwfContainer,
		expressInstallSwf : 'http://i.cdn.turner.com/v5cache/turnerplayer/flash/expressInstall.swf',
		options : {
			quality : 'high',
			bgcolor : '#000000',
			wmode   : 'transparent',
			allowFullScreen : 'true',
			allowScriptAccess : 'always'
		}
	},
	
	
	
	onContentBegin : function(videoId) {
		currVideoId = videoId;
		var myJSONText = this.getContentEntry(videoId);
		var myObject = myJSONText.evalJSON();
		document.getElementById('headline').innerHTML = '<b>' + myObject.headline + '</b>';
		document.getElementById('description').innerHTML = myObject.description;
	},

	onContentDataLoaded : function(videoId) {
		if (videoId==currVideoId || currVideoId=='') {
			var myJSONText = this.getContentEntry(videoId);
			var myObject = myJSONText.evalJSON();
			document.getElementById('headline').innerHTML = '<b>' + myObject.headline + '</b>';
			document.getElementById('description').innerHTML = myObject.description;
		}
	},

	onPlayerReady : function() {
		this.isPlayerReady = true;
		var isValid = validateReferringPage();
		if(!isValid) {
			document.getElementById('playercontainer').innerHTML = '<div style="padding:70px;">Video Not Available</div>';
		} else {
			// set team section for freewheel
			var fwID = '';
			var urlpath = document.location.pathname;
			if (urlpath.match('wnbateamarticleplayer')) {
				fwID = getTeamSSID('wnba');
			} else if (urlpath.match('teamarticleplayer')) {
				fwID = getTeamSSID('nba');
			}
			if (fwID != '') {
				this.setAdSection(fwID);
			}
			this.setAdKeyValue("roadblock", "1");
		}
	},

	onAdPrerollUrl : function(videoId, adUrl) {},
	onAdPostrollUrl : function(videoId, adUrl) {},
	onAdStarted : function(token) {
		var width=300; var height=250;
		var compSize = '300x250';
		adTag= this.getCompanionAd(compSize);
		/*
		document.getElementById('myDoubleClickAd').innerHTML = '<iframe src="' + adTag + '" id="companion' + compSize + '" width="' + 
		width + '" height="' + height + '" ' + 'marginwidth=0 marginheight=0 hspace=0 vspace=0 frameborder=0 scrolling=no></iframe>';
		*/
	},
	onAdFinished : function(token) {},
	onAdSensitive : function (videoId) {
		//log('Ad Sensitive Event for ' + videoId);
	},
	onVideoPlayerBegin : function(videoId, json) {},
	onVideoPlayerPlay : function(videoId) {
		document.getElementById('adCountdown').innerHTML = '';
	},
	onVideoPlayerStop : function(videoId) {},
	onAdError : function(message) {},
	onVideoPlayerError : function(message) {},
	onContentError : function(errorMessage) {},
	onContentPlayHead : function() {},
	onContentPlay : function(videoId) {
		if (window.top != window.self && !window.w && !window.s) {
			window.w = window.top;
			window.s = window.w.s;
		}

		//Omniture Implementation
		var videoMetaData = this.getContentEntry(videoId).evalJSON(true);
		w.nbaOmCurrentVideo = videoMetaData.id;
		if (cvpcontext=="nba_league_article_player") {
			nbaOmEvent.videoSource = 'L';
		} else if (cvpcontext=="wnba_league_article_player") {
			nbaOmEvent.videoSource = 'W-L';
		} else if (cvpcontext=="wnba_300x170" ||cvpcontext=="wnba_416x234" ||cvpcontext=="wnba_576x324") {
			nbaOmEvent.videoSource = 'W-T';
		} else {
			nbaOmEvent.videoSource = 'T';
		}
		nbaOmEvent.videoContext = 'A';
		nbaOmEvent.videoId = videoMetaData.id;
		nbaOmEvent.videoTitle = videoMetaData.headline;
		nbaOmEvent.videoRunTime = videoMetaData.trt;
		nbaOmEvent.videoPlayerType = 'CVP';
		var tempFolders = videoMetaData.category.split('/');
		var sectionName = tempFolders[tempFolders.length-1];
		nbaOmEvent.videoCategory = (w.nbaOmSuiteInfo.currentTeam ? w.nbaOmSuiteInfo.currentTeam : w.nbaOmSuiteInfo.currentLeague)+':'+sectionName;
		nbaOmEvent.onStreamStart();
	},
	onContentStop : function(videoId) {},
	onContentPause : function(videoId, paused) {},
	onContentCompleted : function() {},

	/************************
	    Tracking callbacks
	 ************************/
	onVideoTrackingAdClick : function(videoId, url) {},
	onVideoTrackingProgress : function(videoId, percent) {},
	onVideoTrackingLifetime : function(seconds) {},
	onVideoTrackingFullscreen : function(videoId, fullscreen) {},
	onVideoTrackingMuted : function(videoId, muted) {},
	onVideoTrackingPaused : function(videoId, paused) {},
	onVideoTrackingCompleted : function(videoId) {},
	onVideoTrackingReplay : function(videoId) {},
	onVideoTrackingPlay : function(videoId) {},
	onContentTrackingAdCountdown : function(secs) {}
});


function parseLocation() {
	var turl = ''+document.location;
	turl = turl.replace(/\&amp;/g, '&');

	turl = turl.slice(turl.indexOf('?')+1);
	ar = turl.split('&');
	b = { };
	for (var i = 0; i < ar.length; i++) {
		c = ar[i].split('=');
		b[c[0]] = c[1];
	}
	return b;
}

function setPlayerContext() {
	var leaguectx = 'nba_league_article_player';
	var wnbaleaguectx = 'wnba_league_article_player';
	var urlpath = document.location.pathname;
	var width = url['width'];
	var height = url['height'];
	if (urlpath.match('dleaguearticleplayer')) {
		var ctxname = 'dleague' + '_' + width + 'x' + height;
		return ctxname;
	} else if (urlpath.match('wnbaleaguearticleplayer')){
		var ctxname = 'wnba_article_player_' + width + 'x' + height;
	 	return ctxname;
	} else if (urlpath.match('wnbateamarticleplayer')) {
		var ctxname = 'wnba_article_player' + '_' + width + 'x' + height;
		return ctxname;
	} else if (urlpath.match('leaguearticleplayer')){
	 	return leaguectx;
	} else if (urlpath.match('teamarticleplayer')) {
		var team = getTeamSection(url['videoID']);
		if (!team) {
			team = getTeamSection(top.location.pathname);
		}
		if (team) {
			var ctxname = team + '_' + width + 'x' + height;
			return ctxname;
		} else if (width && height) {
			return 'nba_team_article_player_'+width+'x'+height;
		} else {
			return leaguectx;
		}
	} 
}

function getTeamSection(videoID) {
	videoID = videoID.replace(/\/\d{4}.*$/, '');
	videoID = videoID.replace(/\/video\//, '');
	var arrSections = videoID.split('/');
	var ct = arrSections.length;
	for (var i=0; i < ct; i++) {
		if (isTeam(arrSections[i])) {
			return arrSections[i];
		}
	}
	return '';
}

function getTeamSSID(league) {
	var teamsConfig = (league == 'wnba') ? wnbaLeagueTeams : nbaLeagueTeams;
	var callingPath = top.location.pathname;
	callingPath = callingPath.replace(/^\//, '');
	var teamShortName = callingPath.replace(/\/.*$/, '');
	var ct = teamsConfig.length;
	for (var i=0; i < ct; i++) {
		if (teamsConfig[i]['shortName'] == teamShortName) {
			return teamsConfig[i]['fwArticleSSID'];
		}
	}
	return '';
}

function isTeam(strToCheck) {
	var ct = nbaLeagueTeams.length;
	for (var i=0; i < ct; i++) {
		if (nbaLeagueTeams[i]['shortName'] == strToCheck) {
			return true;
		}
	}
	return false;
}

// Play video and set queue
function playVideo(videoId, videoPlaylist) {
	var currVideoId = '';
	var currPlaylist = videoPlaylist || [];

	// Start with specific video id or first one by default
	if (videoId != null) {
		currVideoId = videoId;
	} else if(currPlaylist.length) {
		currVideoId = currPlaylist[0];
	} else {
		currVideoId = window.location.search.replace(/\??videoID=/,'').replace(/&.*/,'');
	}

	if( nba_article_player.isPlayerReady == true ) {
		nba_article_player.play(currVideoId);

		var videoInPlaylist = false;
		for (var i=0; i<currPlaylist.length; i++) {
			if (videoInPlaylist) {
				nba_article_player.queue(currPlaylist[i]);
			}
			if (currVideoId == currPlaylist[i]) {
				videoInPlaylist = true;
			}
		}
	} else {
		window.setTimeout("playVideo('"+currVideoId+"')",250);
	}
}

function pauseVideo() {
	nba_article_player.pause();
}

function resumeVideo() {
	nba_article_player.resume();
}

function validateReferringPage()
{
	var isValid = false;
	var ref = document.referrer || location.href;
	if( ref.indexOf('.nba.com/') > -1 || ref.indexOf('.turner.com/') > 1 || ref.indexOf('.wnba.com/') > -1) { isValid = true; }
	return isValid;
}

