var playerElement;

var jsReady = false;

var videoSkinPresent = false;

function isJSReady() {
	return jsReady; 	
}

function isReady() {
	return jsReady;
}

function setJSReady() { 
	jsReady = true;
}

	function initHi5Controls (uvpRef) {
		
		if (uvpRef == null) {
			return;
		}
		
		if (typeof(uvpRef) == "string") {
			cbsiPlayer = document.getElementById(uvpRef);
		} else if (typeof(uvpRef) == "object") {
			cbsiPlayer = uvpRef;
			cbsiPlayer.initialize("mycbsiplayer");
		}
		
		setInterval(updateCBSIPlayerInfo, 250);
		updateCBSIPlayerInfo();
		
		cbsiPlayer.addEventJSCallback("onPlaylistStart_cbsi", "onCBSI_PlaylistStart");
		cbsiPlayer.addEventJSCallback("onPlayListEnd_cbsi", "onCBSI_PlayListEnd"); 
		cbsiPlayer.addEventJSCallback("onContentStart_cbsi", "onCBSI_ContentStart");
		cbsiPlayer.addEventJSCallback("onContentEnd_cbsi",   "onCBSI_ContentEnd");
		cbsiPlayer.addEventJSCallback("onAdStart_cbsi", "onCBSI_AdStart");
		cbsiPlayer.addEventJSCallback("onAdEnd_cbsi", "onCBSI_AdEnd");
		cbsiPlayer.addEventJSCallback("onAdResourcesInfo", "onAdResourcesInfoHi5");
		
		var container = document.getElementsByClassName('video-player')[0]; 
		controls = new UVP_Controls(uvpRef, container, "mycbsiplayer");
		var preview_cntrls = new UVP_Preview(container, controls);
		
	}

function onCBSIPlayerReady(playerId) {
	var playerElementLocal = document.getElementById(playerId);
	
	if (playerElementLocal) {

   	    playerElementLocal.addEventJSCallback('onContentStart_cbsi', 'onContentStarted');
		playerElementLocal.addEventJSCallback('onContentEnd_cbsi', 'onContentEnded');
		playerElementLocal.addEventJSCallback('onPlayerPanelOpen', 'onPlayerPanelOpened');
		playerElementLocal.addEventJSCallback('onPlayerPanelClose', 'onPlayerPanelClosed');
		playerElementLocal.addEventJSCallback('onPlayerDarkenPage', 'onPlayerDarkenPage');
		playerElementLocal.addEventJSCallback("onAdResourcesInfo", "onAdResourcesInfo");
		playerElementLocal.addEventJSCallback("onStateChange_cbsi", "onPlayerStateChange");
		playerElementLocal.addEventJSCallback("userPlay", "userPlay");
		playerElementLocal.addEventJSCallback("userPause", "userPause");
		if(typeof onCBSIPlayerReadyLocal == 'function') {
			onCBSIPlayerReadyLocal(playerElementLocal); //define site(local)-level onPlayerReady-type function
		}
	}
	
	if(typeof initHi5Controls == 'function') {
		initHi5Controls(playerId);
	}
	
}

function getAdScript(playerId){
	playerElementLocal = document.getElementById(playerId);
	if (playerElementLocal) {
		return playerElementLocal.getAdScript();
	} 
}
		
function setAdScriptURLPage (scriptSource) {
	dhtmlLoadScript(scriptSource);
}

function dhtmlLoadScript(url) {
	var e = document.createElement("script");
	e.src = url;
	e.type="text/javascript";
	document.getElementsByTagName("head")[0].appendChild(e);
}

var videoScored = false;

function onContentStarted(playerId){
	if($("joinSocialRoom")){
		if (!videoSkinPresent) {
			$("joinSocialRoom").show();
		}
	}
	
	if (jQuery.cookie('cbscomm_name')&&(pid!='')&&(!videoScored)) {
		
		jQuery.ajax({
			url: 'http://www.cbs.com/community/manage/frontScoreVideo.html?pid=' + pid,
			success: function(data) {videoScored = true;}
		});
	
	}
}

function onContentEnded(){
	if($("joinSocialRoom")){
		$("joinSocialRoom").hide();
	}
}

function onAdStarted(playerId){

}

function onAdEnded(playerId){

}


function getVideoAdSessionValues(videoId) {
	var videoAdSessionValues = "";
	if (adId !='') videoAdSessionValues = videoAdSessionValues + ";test=1;adId=" + adId;
	return videoAdSessionValues;
}

var userPaused = false;
var userPlayed = false;
var isPanelOn = false;
var isLightOff = false;

function lights(sw) {
	if (sw == true)	{
		jQuery("div#flashcontent").expose({color: '#000', opacity: 0.85, closeOnEsc: false, closeOnClick: false });	
	}
	else if (sw == false) {
		jQuery.mask.close();
	}
}


function onPlayerDarkenPage(sw) {
	if (sw) {
		isLightOff = true;
		jQuery('#flashcontent').css('border-color','#000');
	} else {
		isLightOff = false;
		jQuery('#flashcontent').css('border-color','#fff');
	}
	lights(sw);
}


function onPlayerPanelOpened(panel){
	isPanelOn = true;
}

function restoreVideoCompanionAds () {
		if (jQuery('#ad300x60_pause').length) jQuery('#ad300x60_pause').hide();
		if (jQuery('#ad300x60').length) jQuery('#ad300x60').show();
		if (jQuery('#ad2_pause').length) jQuery('#ad2_pause').hide();
		if (jQuery('#ad2').length) jQuery('#ad2').show();
		if (jQuery('#ad985x90_pause').length) $('ad985x90_pause').hide();
		if (jQuery('#ad985x90').length) $('ad985x90').show();
		if (jQuery('#ad985x130_pause').length) $('ad985x130_pause').hide();
		if (jQuery('#ad985x130').length) $('ad985x130').show();
		pauseAdActive = false;
}

function onPlayerPanelClosed(playerId){
	isPanelOn = false;
	if (pauseAdActive == true) {
		restoreVideoCompanionAds ();
	}
}

function userPlay(playerId) {
	userPlayed = true;
	userPaused = false;
	playerElementLocal = document.getElementById(playerId);
	if ((pauseAdActive == true)&&(!isPanelOn)) {
		restoreVideoCompanionAds ();
	}
}

function userPause(playerId) {
	userPaused = true;
	userPlayed = false;
}

function getCompanionAdInfoBySize(w, h, playerId){
	playerElementLocal = document.getElementById(playerId);
	if (playerElementLocal) {
		return playerElementLocal.getCompanionAdInfoBySize(w, h);
	}
}

function getCompanionAdInfo(playerId){
	playerElementLocal = document.getElementById(playerId);
	if (playerElementLocal) {
		return playerElementLocal.getCompanionAdInfo();
	}
}


//set preferred ad type for the page - this will normally be swf.
var preferredAdType = 'swf';

function selectPreferredAd(adArray) {
	var ad = new Array();
	
	for (i=0; i<adArray.length; i++) {
		ad[i] = adArray[i];
	}
	
	if (ad.length > 1) {
		
		adFiltered = jQuery.protify(ad).compact(); //compacting the ad array to clean up undefined ad slots
		
		//looping through the compacted ad array to find an ad slot with a preferred ad type, swf or img.
		for (i=0; i<adFiltered.length; i++) {
			if (adFiltered[i][2] == preferredAdType) {
				var adPref = adFiltered[i];
			} else {
				var adPref = adFiltered[0]; //if preferred type is not found, use first ad slot (normally img)
			}
		}
		
	} else {
		
		var adPref = ad[0]; //use first ad slot if only one ad slot is available.
		
	}
	
	return adPref;
	
}

var pauseAdActive = false;

function onAdResourcesInfo(params, playerId){
	
	var adScript = getAdScript(playerId);
	if (adScript != null && adScript != "" ){
		playerElement = document.getElementById(playerId);
		setAdScriptURLPage(adScript);
	}
	
	var ads = getCompanionAdInfoBySize(300,60,playerId);
	var ads2 = getCompanionAdInfoBySize(300,250,playerId);
	var ads3 = getCompanionAdInfoBySize(985,90,playerId);
	var ads4 = getCompanionAdInfoBySize(985,130,playerId);
	
	if (ads.length > 0 ) {
		var ad = selectPreferredAd(ads);
		if (ad[3].length > 0) {
			insertTrackingPixel(ad[3]);
		}
		showCompanionAd({"strSource":ad[0],"strLink":ad[1],"strType":ad[2],"strWidth":'300',"strHeight":'60',"strKind":ad[4],"playerId":playerId});
	} else {
		clearCompanionAd('300','60');
	}

	if (ads2.length > 0 ) {
		var ad2 = selectPreferredAd(ads2);
		if (ad2[3].length > 0) {
			insertTrackingPixel(ad2[3]);
		}
		showCompanionAd({"strSource":ad2[0],"strLink":ad2[1],"strType":ad2[2],"strWidth":'300',"strHeight":'250',"strKind":ad2[4],"playerId":playerId});
	} else {
		clearCompanionAd('300','250');
	}
	
	if (ads3.length > 0 ) {
		var ad3 = selectPreferredAd(ads3);
		if (ad3[3].length > 0) {
			insertTrackingPixel(ad3[3]);
		}
		videoSkinPresent = true;
		jQuery('#centeredPlayerWrapper').css({'background-color' : '#000'});
		showCompanionAd({"strSource":ad3[0],"strLink":ad3[1],"strType":ad3[2],"strWidth":'985',"strHeight":'90',"strKind":ad3[4],"playerId":playerId});
	} else {
		videoSkinPresent = false;
		clearCompanionAd('985','90');
		
	}
	
	if (ads4.length > 0 ) {
		var ad4 = selectPreferredAd(ads4);
		if (ad4[3].length > 0) {
			insertTrackingPixel(ad4[3]);
		}
		jQuery('#centeredPlayerWrapper').css({'background-color' : '#000'});
		showCompanionAd({"strSource":ad4[0],"strLink":ad4[1],"strType":ad4[2],"strWidth":'985',"strHeight":'130',"strKind":ad4[4],"playerId":playerId});
	} else {
		clearCompanionAd('985','130');
	}
	 
}



function insertTrackingPixel(trackingPixelsArray) {
	for (i=0;i<trackingPixelsArray.length;i++) {
		if (trackingPixelsArray[i]!='') {
			if ($("#page").length > 0) {
				jQuery('#page').append('<img src="' + trackingPixelsArray[i] + '" width="1" height="1" border="0" style="position:absolute; bottom:0; right:0" id="trpx'+ i +'"/>');
			}
			else if ($("#cbs-page").length > 0) {
				jQuery('#cbs-page').append('<img src="' + trackingPixelsArray[i] + '" width="1" height="1" border="0" style="position:absolute; bottom:0; right:0" id="trpx'+ i +'"/>');
			}
		}
	}
}

//setCompanionAd() supports legacy companion ad calls for 3rd party ad servers
function setCompanionAd (strSource, strLink, strType, strWidth, strHeight)  {
	
	showCompanionAd({"strSource":strSource,"strLink":strLink,"strType":strType,"strWidth":strWidth,"strHeight":strHeight});
	
}


function showCompanionAd (companionAdParams)  {
	
	if ((companionAdParams.strSource == '')||(typeof(companionAdParams.strSource) == 'undefined')) companionAdParams.strSource = '';
	//if ((companionAdParams.strLink == '')||(typeof(companionAdParams.strLink) == 'undefined')) companionAdParams.strLink = 'http://www.cbs.com/';
	if ((companionAdParams.strType == '')||(typeof(companionAdParams.strType) == 'undefined')) companionAdParams.strType = 'swf'; //img or swf
	if ((companionAdParams.strWidth == '')||(typeof(companionAdParams.strWidth) == 'undefined')) companionAdParams.strWidth = '300';
	if ((companionAdParams.strHeight == '')||(typeof(companionAdParams.strHeight) == 'undefined')) companionAdParams.strHeight = '250';
	if ((companionAdParams.strKind == '')||(typeof(companionAdParams.strKind) == 'undefined')) companionAdParams.strKind = ''; //pre-, mid-, post-roll, or pause ad.
	if ((companionAdParams.playerId == '')||(typeof(companionAdParams.playerId) == 'undefined')) companionAdParams.playerId = 'rcpHolder';

	var containerId = 'ad' + companionAdParams.strWidth + 'x' + companionAdParams.strHeight;
	
	var adLabelHTML = '';
	
	if ((companionAdParams.strWidth == '300')&&(companionAdParams.strHeight == '250')) {
		containerId = 'ad2';
//		adLabelHTML = '<p>Advertisement</p>';
	}
	
	if ((companionAdParams.strWidth == '300')&&(companionAdParams.strHeight == '60')) {
//		adLabelHTML = '<p>Advertisement</p>';
		
		switchUserComments (companionAdParams.strKind, companionAdParams.strSource);
		
	}
	
	if (((companionAdParams.strKind.indexOf("pause") != -1)||(companionAdParams.strKind.indexOf("panel") != -1))&&((userPaused)||(isPanelOn))) {
		
		pauseAdActive = true;
		
		jQuery('#'+containerId).hide();
		
		jQuery('#ad985x90').hide(); //pause ad not available in this size - hiding it.
		jQuery('#ad985x130').hide(); //pause ad not available in this size - hiding it.
		
		containerIdTemp = containerId;
		
		containerId = containerId + "_pause";
		
		if (!jQuery('#'+containerId).length) {
			jQuery('#'+containerIdTemp).after("<div id="+ containerId +" style='display:none' class='pauseAdWrapper'></div>");
		}
	}
	
	if ((((companionAdParams.strKind.indexOf("pause") != -1)||(companionAdParams.strKind.indexOf("panel") != -1))&&((userPaused)||(isPanelOn)))||((companionAdParams.strKind.indexOf("pause") == -1)&&(companionAdParams.strKind.indexOf("panel") == -1))) {

		if (companionAdParams.strType == 'img') {
			if (jQuery('#'+containerId).length) {
				if (companionAdParams.strLink != '') {
					jQuery('#'+containerId).html(adLabelHTML + '<a href="'+ companionAdParams.strLink +'" target="_blank"><img src="'+ companionAdParams.strSource +'" border="0" width="' + companionAdParams.strWidth + '" height="'+ companionAdParams.strHeight +'" /></a>');
				} else {
					jQuery('#'+containerId).html('<img src="'+ companionAdParams.strSource +'" border="0" width="' + companionAdParams.strWidth + '" height="'+ companionAdParams.strHeight +'" />');
				}
				jQuery('#'+containerId).show();
			}
		}
		else if (companionAdParams.strType == 'swf') {
			
			swfContainerId = 'swfAdContainer'+ companionAdParams.strWidth +'x' + companionAdParams.strHeight;
			
			if (jQuery('#'+containerId).length) {
				jQuery('#'+containerId).html(adLabelHTML + '<div id="'+ swfContainerId +'"></div>');
				var so = new SWFObject(companionAdParams.strSource, swfContainerId, companionAdParams.strWidth, companionAdParams.strHeight, "6", "#000000");
				so.addParam("quality", "high");
				so.addParam("scale", "noscale");
				so.addParam("menu", "false");
				so.addParam("salign", "tl");
				so.addParam("allowScriptAccess", "always");
				so.addParam("wmode", "transparent");
				so.addVariable("clickTag", companionAdParams.strLink);
				so.write(swfContainerId);
				jQuery('#'+containerId).show();
			}
		}
	
	}

}

function switchUserComments (adKind,adSrc) {
	
	if ((adKind.toLowerCase().indexOf('pause') == -1)&&(adKind.toLowerCase().indexOf('panel') == -1)) {
	
		if (adSrc.toLowerCase().indexOf('pharma') != -1) {
			
			if (jQuery('#commentsWrapper').length) {

				jQuery('#commentsWrapper').css({display:'none'});
				jQuery('#centeredPlayerWrapper').css({'background-color' : '#000'});
				
			}
			
		} else {
			
			if (jQuery('#commentsWrapper').length) {

				jQuery('#commentsWrapper').css({display:'block'});
				jQuery('#centeredPlayerWrapper').css({'background-color' : 'transparent'});
				
			}
			
		}
		
	}
	
}


function clearCompanionAd (strWidth, strHeight)  {

	var containerId = 'ad' + strWidth + 'x' + strHeight;
	
	if ((strWidth == '300')&&(strHeight == '250')) {
		containerId = 'ad2';
	}
	
	if ((!userPaused)/*&&(!userPlayed)*/) { //do not fire this for pause ads

		if (jQuery('#'+containerId).length) {
			jQuery('#'+containerId).html('');
			jQuery('#'+containerId).hide();
		}
		
		//jQuery('#centeredPlayerWrapper').css({'background-color' : 'transparent'});
	
	}

}


/*bc support functions*/
var pauseInterval;

function pauseHelper() {
	if (playerState == '1') {
		playerElement.htmlForcePause();
		if (playerState == '2') {
			clearInterval(pauseInterval);
		}
	}
}

function publisherPlayerPause() {
	if (playerElement) {
		try
		{
			playerElement.exitFullScreen();
		}
		catch(err)
		{
		}
		playerElement.htmlForcePause();
		if (playerState != '2') {
			pauseInterval = setInterval("pauseHelper()", 1000);
		}
	}
}


function publisherPlayerResume(){
	clearInterval(pauseInterval);
    if (playerElement) {
        playerElement.htmlReleasePause();
    }
}

function publisherPlayerGetContentDuration () {
	if (playerElement) {
		return playerElement.getContentDuration();
	}
}

function onPlayerStateChange(newState) {
	setCanPlayerState(newState);
}

var playerState = "";

function setCanPlayerState(newState) {
	playerState = newState;
}

/*END bc support functions*/



/* player embed support functions */

function getPreviewImageURL(pid) {
	var strResponse = '';
	new Ajax.Request('/sitecommon/includes/video/qvf_metadata.php',
   {
	asynchronous: false,   
    method:'get',
	parameters: {pid:pid, getPreviewImageURL:'yes'},
    onSuccess: function(transport){
     strResponse = transport.responseText || "no response text";

    }
	
  });
	
	return strResponse;
}

function getVideoPageURL(pid) {
	var strResponse = '';
	new Ajax.Request('/sitecommon/includes/video/qvf_metadata.php',
   {
	asynchronous: false,   
    method:'get',
	parameters: {pid:pid, getVideoPageURL:'yes'},
    onSuccess: function(transport){
     strResponse = transport.responseText || "no response text";
    }
  });
	return strResponse;
}

var strInitTime = '';

function cbsEmbedVideo (videoEmbedParams) {
	
	//var previewImageURL = getPreviewImageURL(pid);
	var videoPageURL = getVideoPageURL(videoEmbedParams.pid);
	
	var strTime = new Date().getTime();
	
	if ((videoEmbedParams.pid == '')||(typeof(videoEmbedParams.pid) == 'undefined')) alert('You must specify a pid!');
	if ((videoEmbedParams.autoPlay == '')||(typeof(videoEmbedParams.autoPlay) == 'undefined')) videoEmbedParams.autoPlay = 'false';
	if ((videoEmbedParams.playerWidth == '')||(typeof(videoEmbedParams.playerWidth) == 'undefined')) videoEmbedParams.playerWidth = '640';
	if ((videoEmbedParams.playerHeight == '')||(typeof(videoEmbedParams.playerHeight) == 'undefined')) videoEmbedParams.playerHeight = '360';
	if (typeof(videoEmbedParams.previewImage) == 'undefined') previewImage = '';
	if ((videoEmbedParams.playerURL == '')||(typeof(videoEmbedParams.playerURL) == 'undefined')) videoEmbedParams.playerURL = 'http://www.cbs.com/thunder/canplayer/canplayer.swf';
	if ((videoEmbedParams.partner == '')||(typeof(videoEmbedParams.partner) == 'undefined')) videoEmbedParams.partner = 'cbs';
	if (typeof(videoEmbedParams.parentDivId) == 'undefined') videoEmbedParams.parentDivId = '';
	if ((videoEmbedParams.replacePlayer == '')||(typeof(videoEmbedParams.replacePlayer) == 'undefined')) videoEmbedParams.replacePlayer = 'no';
	if ((videoEmbedParams.parentDivId!='')&&(strInitTime == '')) strInitTime = strTime;
	
	var soVideo = new SWFObject(videoEmbedParams.playerURL, "rcpHolder" + strTime, videoEmbedParams.playerWidth, videoEmbedParams.playerHeight, "9", "#000000");
	
	//soVideo.addVariable("prevImg", escape(previewImageURL));
	if (videoEmbedParams.previewImage!='') soVideo.addVariable("prevImg", escape(videoEmbedParams.previewImage));	
	soVideo.addParam("quality", "high");
	soVideo.addParam("scale", "noscale");
	soVideo.addParam("menu", "true");
	soVideo.addParam("salign", "tl");
	soVideo.addParam("allowScriptAccess", "always");
	soVideo.addParam("wmode", "opaque");
	soVideo.addParam("allowFullScreen", "true");
	soVideo.addVariable("autoPlayVid", videoEmbedParams.autoPlay);
	soVideo.addVariable("link", escape("http://"+ document.location.host + videoPageURL));
	soVideo.addVariable("pid", videoEmbedParams.pid);
	soVideo.addVariable("partner", videoEmbedParams.partner);
	if ((videoEmbedParams.configXML != '')&&(typeof(videoEmbedParams.configXML) != 'undefined')) soVideo.addVariable("config", videoEmbedParams.configXML);
	
	if (videoEmbedParams.replacePlayer == 'yes') {
		embedPlayer(soVideo, videoEmbedParams.parentDivId, strInitTime);
	} else {
		embedPlayer(soVideo, videoEmbedParams.parentDivId, strTime);
	}
}

function embedPlayer(playerObj, parentDivId, strTime) {
	
	if (jsReady == false) setJSReady();
	
	if ((parentDivId != '')&&(typeof(parentDivId) != 'undefined')) {
		
			/*if (!$(parentDivId + 'PlayerDiv' + strTime)) {
				$(parentDivId).insert('<div id="' + parentDivId + 'PlayerDiv' + strTime + '"><a href="http://www.macromedia.com/go/getflashplayer" target="_blank"><img src="http://www.cbs.com/sitecommon/images/upgradePlayer.jpg" style="border: 0px;"/></a></div>');
			}*/
			
			if (!jQuery('#' + parentDivId + 'PlayerDiv' + strTime).length) {
				jQuery('#' + parentDivId).append('<div id="' + parentDivId + 'PlayerDiv' + strTime + '"><a href="http://www.macromedia.com/go/getflashplayer" target="_blank"><img src="http://www.cbs.com/sitecommon/images/upgradePlayer.jpg" style="border: 0px;"/></a></div>');
			}

	} else {
		
		document.write('<div id="' + parentDivId + 'PlayerDiv' + strTime + '"><a href="http://www.macromedia.com/go/getflashplayer" target="_blank"><img src="http://www.cbs.com/sitecommon/images/upgradePlayer.jpg" style="border: 0px;"/></a></div>');
		
	}
	
	playerObj.write(parentDivId + "PlayerDiv" + strTime);

	
}

/* END player embed support functions */
