// Global Video Params
var objVideoPopup;
var nativeWin = null;

var WNVIDEO_WMV_POPPLAYERURL = "/global/video/popup/pop_player.asp?";
var WNVIDEO_FLV_POPPLAYERURL = "/global/video/flash/popupplayer.asp?";

// Writes query string for on demand video clip. If hostDomain is passed then it uses it as the players base domain
function playVideoClip(objID)
{
	if (document.getElementById)
	{	
		var objElement = document.getElementById(objID);

		var strQuery = 'ClipID1=' + objElement.getAttribute('ClipID') + '&';
		strQuery += 'h1=' + escape(objElement.getAttribute('headline')) + '&';
		strQuery += 'vt1=' + objElement.getAttribute('videoType') + '&';
		strQuery += 'at1=' + escape(objElement.getAttribute('adTag')) + '&';
		strQuery += 'd1=' + (objElement.getAttribute('duration')!=''? objElement.getAttribute('duration'): '0') + '&';
		strQuery += (objElement.getAttribute('launchPageAdTag')!='' ? 'LaunchPageAdTag=' + objElement.getAttribute('launchPageAdTag') : '');	
		strQuery += '&activePane=info'; 

		var hostDomain = objElement.getAttribute('hostDomain')!='' ? objElement.getAttribute('hostDomain'): '';
		
		objVideoPopup = selectVideoPlayer(strQuery, null, hostDomain);  
				
	} else {
		setVideoHelpPage();
	}
}

//strClipID clip id
//strHeadline - clip headline
//strType - clip type
//strAdTarget - clip ad target
//strDuration = clip duration
//strLaunchPageAdTag - clip launch page ad tag
//strHostDomain domain to use when launching the player. For standalone clients we need to 
//				specify our front end url. E.g. ww2.7online.com for WABC
// Writes query string for on demand video clip. If hostDomain is passed then it uses it as the players base domain
function playVideo(strClipID, strHeadline, strType, strAdTarget, strDuration, strlaunchPageAdTag, strQueryStringParams, strHostDomain, strClipFormat){
	if (document.getElementById && strClipID!='') {
		var strQueryString = 'ClipID1=' + strClipID + '&';
		strQueryString += 'h1=' + (strHeadline!=''? escape(strHeadline): 'Video Clip') + '&';
		strQueryString += 'vt1=' + (strType!=''? strType: 'V') + '&';
		strQueryString += 'at1=' + (strAdTarget!=''? strAdTarget: 'Video Player') + '&';
		strQueryString += 'd1=' + (strDuration!=''? strDuration: '0') + '&';
		strQueryString += 'LaunchPageAdTag=' + (strlaunchPageAdTag!=''? strlaunchPageAdTag: '');
		if(strQueryStringParams != '')
			strQueryString += '&' + strQueryStringParams;
		strQueryString += '&activePane=info';		
		//launch the player
		selectVideoPlayer(strQueryString, null, strHostDomain, strClipFormat);  
	} else {
		setVideoHelpPage();
	}
}

// Writes query string for on demand video clip selected from featured video buckets
function playVideoClips(formName){
	if (document.getElementById){
		var objElement;
		var strQuery = '';
		var intCount = 1;
		var blnClipsSelected = false;
		var strDefaultPaneViewVar = "activePane=playlist";
		var objForm = document.getElementById(formName);
		
		if (objForm.elements.length > 1){
			try {
				strQuery += 'LaunchPageAdTag=' + objForm.LaunchPageAdTag.value + '&'; //for buffering ad
				strQuery += objForm.qsArgs.value + '&'; //for featured videos default drop down value and player frame image if specified
			} catch (e) {;}
			
			for (var i=0; i<objForm.elements.length; i++){
				objElement	= objForm.elements[i];	
				if (objElement.type == 'checkbox' && objElement.checked){
					strQuery += 'ClipID' + intCount + '=' + objElement.getAttribute('ClipID') + '&';  
					strQuery += 'h' + intCount + '=' + escape(objElement.getAttribute('headline')) + '&';
					strQuery += 'vt' + intCount + '=' + objElement.getAttribute('videoType') + '&';
					strQuery += 'at' + intCount + '=' + escape(objElement.getAttribute('adTag')) + '&';
					strQuery += 'd' + intCount + '=' + (objElement.getAttribute('duration')!=''? objElement.getAttribute('duration'): '0') + '&';
					intCount += 1;
					blnClipsSelected = true;
					
					//check to see if the entire url is more than 1024 bytes since WMP breaks state when a longer url is provided
					//additional query string variables added after the loop need to be taken in account ~ 100 chars
					if ((strQuery.length + 100) > 1024) {
						//remove last clip properties and exit loop
						var index = strQuery.indexOf('ClipID' + (intCount - 2));
						strQuery = strQuery.substr(0, index);
						break;
					}
				}
			}
			
			if (blnClipsSelected){	
				strQuery += strDefaultPaneViewVar;
				selectVideoPlayer(strQuery, null, null); 
			} else {
				// if no checkbox is checked
				alert ('You must select at least one video.');
			}
		}
	} else {
		setVideoHelpPage();
	}
}

// Writes query string for live streaming video
function playLiveVideo(strLiveURI, strHeadline, strAdTag, strHostDomain, strVideoFormat, strCategoryNo){
	var strQuery = "vt1=l&d1=0&ClipId1=" + escape(strLiveURI) + "&LiveURI=" + escape(strLiveURI) + "&h1=" + strHeadline + "&at1=" + escape(strAdTag) + "&LiveURITitle=" + escape(strHeadline) + '&LaunchPageAdTag=' + strAdTag + '&fvCatNo=' + strCategoryNo;
	selectVideoPlayer(strQuery, '', strHostDomain, strVideoFormat);
}

// Launches appropriate player for video
function selectVideoPlayer(query, whichPlayer, hostDomain, strClipFormat){	

    if(strClipFormat == "flv")
    {
        launchPopupPlayer(query, hostDomain, strClipFormat);
    }
    else
    {
	    var whichPlayer = detectWMP(); 

	    switch (whichPlayer){
		    case '6':	
			    // For WMP6.4 users
			    query += '&playerVersion=6';
			    if (hostDomain == '' || hostDomain == null){
				    var nativeURL = 'http://' + document.domain + '/global/video/WorldNowASX.asp?playerType=native&' + query;
			    } else {
				    var nativeURL = 'http://' + hostDomain + '/global/video/WorldNowASX.asp?playerType=native&' + query;
			    }
    			
			    if (!window.GeckoActiveXObject){
				    location.href = nativeURL; 
			    } else { 
				    // For Netscape 7.1 users. Avoid setting the media address to the location field
				    var playerFrame = document.createElement("iframe");
				    playerFrame.id = "nsPlayer";
				    playerFrame.width = "0";
				    playerFrame.height = "0";
				    playerFrame.style.visibility = "";
				    playerFrame.src = nativeURL;
				    document.body.appendChild(playerFrame);
			    }
    			
			    setVideoHelpPage();
			    break;
    			
		    case 'null':
			    // For users who do not install any plugins
			    setVideoHelpPage();
			    break;
    			
		    case 'mac':
			    //for mac users with plugin installed launch native player, no need to display help page
			    query += '&playerVersion=7';
			    if (hostDomain == '' || hostDomain == null){
				    var nativeURL = 'http://' + document.domain + '/global/video/WorldNowASX.asp?playerType=native&os=mac&' + query;
			    } else {	
				    var nativeURL = 'http://' + hostDomain + '/global/video/WorldNowASX.asp?playerType=native&os=mac&' + query;
			    }
    				
			    location.href = nativeURL;
			    break;
    			
		    case 'mac-noPlugin':
			    //for mac users without the wmp plugin installed display help page
			    setVideoHelpPage('mac-noPlugin');
		    break;
    		
		    case 'gecko':
			    query += '&playerVersion=7';
			    if (hostDomain == '' || hostDomain == null){
				    var nativeURL = 'http://' + document.domain + '/global/video/WorldNowASX.asp?playerType=native&' + query;
			    } else {
				    var nativeURL = 'http://' + hostDomain + '/global/video/WorldNowASX.asp?playerType=native&' + query;
			    }
    			
			    var playerFrame = document.createElement("iframe");
			    playerFrame.id = "nsPlayer";
			    playerFrame.width = "0";
			    playerFrame.height = "0";
			    playerFrame.style.visibility = "";
			    playerFrame.src = nativeURL;
			    document.body.appendChild(playerFrame);
			    setVideoHelpPage();
			    break;
    				
    				
		    case '.NetServer':
			    // for .netServer 2003 launch in native mode without any help page
			    query += '&playerVersion=7';
			    if (hostDomain == '' || hostDomain == null){
				    var nativeURL = 'http://' + document.domain + '/global/video/WorldNowASX.asp?playerType=native&' + query;
			    } else {	
				    var nativeURL = 'http://' + hostDomain + '/global/video/WorldNowASX.asp?playerType=native&' + query;
			    }
    				
			    location = nativeURL; 
		    break;
    		
		    default:
			    // For WMP7 and above users
			    query += '&playerVersion=' + whichPlayer + '&hostPageUrl=' + escape(document.location); 

			    //pop player
			    launchPopupPlayer(query, hostDomain); ;
			    break;	
	    }	
	}
}

function launchPopupPlayer(query, hostDomain, strClipFormat){
    var playerurl;
	var winWidth;
	var winHeight;
	if(strClipFormat == "flv")
	{
	    playerurl = WNVIDEO_FLV_POPPLAYERURL;
	    winWidth = 790;
		winHeight = 605;
	}
	else
	{
	    playerurl = WNVIDEO_WMV_POPPLAYERURL;
	    winWidth = 788;
		winHeight = 568;
	}
	
	var strHostDomain = "";
	
	if (hostDomain == '' || hostDomain == null)
		strHostDomain = "http://" + document.domain;
	else 
		strHostDomain = "http://" + hostDomain;
	
	//Reset the parent window name prior to launch popup player
	var windowName = self.name; 
	if (windowName == "" || windowName != "CONTENT") {
		windowName = "CONTENT";
		self.window.name = windowName;
	}
	
	var rnum		= new Number(Math.floor(99999999 * Math.random()) + 1);
	var winTop 		= (screen.availHeight - winHeight)/2;
	var winLeft 	= (screen.availWidth - winWidth)/2;
	
	var winProps	= 'width=' + winWidth + ',height=' + winHeight + 
					  'menubar=no,location=no,resizable=no,scrollbars=no,status=no,toolbar=no,top=' + winTop + ',left=' + winLeft;
 	var strUrl		= strHostDomain + playerurl + query + "&rnd=" + rnum; 
 	var objWinPopup = null;
	objWinPopup		= window.open(strUrl, 'WNVideoPlayer', winProps);
	
	try {
		if (objWinPopup!=null){
			objWinPopup.focus();
		}
	} catch (e) {
		self.blur();
	}
	
	return objWinPopup;
}

//Detect ActiveX Architecture on Both IE and on Gecko
//Defer to plugin architecture for other browsers
function detectWMP(){
	var player;
	var wmp64			= "MediaPlayer.MediaPlayer.1";
	var wmp7			= "WMPlayer.OCX.7";
	var detectionResult	= "null";
	
	try {	
		// browser test : check for IE(PC) 5.0 and above and NS7.1
		if ((window.ActiveXObject && navigator.userAgent.indexOf('Windows') != -1)){
			player = createActiveXObject(wmp7);
			if (player){
				var version = player.versionInfo;
				detectionResult = version.substr(0,1); 
			} else {	
				player = createActiveXObject(wmp64);
				if (player){	
					detectionResult = '6';
				} 
			}
		} else if (navigator.userAgent.indexOf('Mac') != -1){	
			//alert(navigator.plugins['Windows Media Plugin']);
			//if the WMP plugin is installed
			if (navigator.plugins['Windows Media Plugin']) {
				detectionResult = 'mac';	
			} else {
				detectionResult = 'mac-noPlugin';
			}
		} else if (navigator.mimeTypes['application/x-mplayer2']){
			//ns or firefox
			detectionResult = 'gecko';
		}
	} catch (error){
		detectionResult = '6';
	}	

	return detectionResult;
}	


function createActiveXObject(cid){
	var error;
	var control = null;
  
	if (window.ActiveXObject){
		control = new ActiveXObject(cid);
	}else if (window.GeckoActiveXObject){
		control = new GeckoActiveXObject(cid);
	}
   
  return control;
}

function setVideoHelpPage(p_OS){
	if (p_OS == 'mac-noPlugin') {
		displayVideoHelp('mac-noPlugin');
	} else if (wnvideo_getCookie('ShowWNVideoHelpPage') == null){
		displayVideoHelp();
	}
}

function wnvideo_getCookie (name){
	if (document.cookie.length>0){
		var arg = name + "=";
		var alen = arg.length;
		var clen = document.cookie.length;
		var i = 0;

		while (i < clen){
			var j = i + alen;
			if (document.cookie.substring(i, j) == arg) return wmvideo_getCookieVal (j);
			i = document.cookie.indexOf(" ", i) + 1;
			if (i == 0) break; 
		}
		return null;
	}
}

// wmvideo_getCookieVal: function to return the decoded value of a cookie
function wmvideo_getCookieVal (offset){
	var endstr = document.cookie.indexOf (";", offset);
	
	if (endstr == -1) endstr = document.cookie.length;
	return unescape(document.cookie.substring(offset, endstr));
}


