    var bInit, bLoop, qtTimer;
    var szgMsg = "";
    var szRez = "";
    var isFullScreen = "";
    var extPlayer = null;
    var wName = getExtWinName();					// generate window name
   
    /*These values are to be stored even if fullscreen page is loaded*/
    var currentSelection = "";
    var curScrollTop = 0;
      
    /*These values are only within the page*/
    var isMenuSelected = "";
    var curMenuSelection = "";
    var curInitPageSelection = "";
    var posFromTopofScreen = 0;    
    var curTopStream = "";
    var defaultChannelDefined = "";
    var isPaused = false;
    var isFF = false;
    var isRew = false;
    var isPlay = false;
      
    /*These values would have been #defines in C or C++*/
    var liveStreamHeight = 55;
    var liveStreamEdge = 6;
    var streamsPerPage = 5;
    var vodFileHeight = 55;
    var vodFolderHeight = 55;
    var vodEdge = 6;
    var vodFileEdge = 6;
    var vodFilesPerPage = 5;
    var vodFoldersPerPage = 5;
    
    //const
    var bLaunchStandAloneForMACWM=false;
    
    var nLic = 2;   // Store license type. Init to no restrictions.
  
    function MM_swapImgRestore()
    {
        var i, x, a = document.MM_sr;
        for(i = 0; a && i < a.length && (x = a[i]) && x.oSrc; i++)
        {
            x.src = x.oSrc;
        }
    }

    function MM_findObj(n, d)
    {
        var p,i,x;
        if(!d)
            d=document;
        if((p=n.indexOf("?"))>0&&parent.frames.length)
        {
            d=parent.frames[n.substring(p+1)].document;
            n=n.substring(0,p);
        }
        if(!(x=d[n])&&d.all)
            x=d.all[n];
        for (i=0;!x&&i<d.forms.length;i++)
            x=d.forms[i][n];
        for(i=0;!x&&d.layers&&i<d.layers.length;i++)
            x=MM_findObj(n,d.layers[i].document);
        if(!x && d.getElementById)
            x=d.getElementById(n);
        return x;
    }
    
    function MM_swapImage()
    {
        var i,j=0,x,a=MM_swapImage.arguments; 
        if(a[0] == "Menu")
        {
            isMenuSelected = true;
        }
        document.MM_sr=new Array;
        for(i=0;i<(a.length-2);i+=3)
        {
            if ((x=MM_findObj(a[i]))!=null)
            {
                document.MM_sr[j++]=x;
                if(!x.oSrc)
                    x.oSrc=x.src;
                x.src=a[i+2];
            }
        }
    }

    function MM_showHideLayers()
    {
        var v, obj, args = MM_showHideLayers.arguments;

        if ("NavMenu" == args[0] && "hidden" == args[1])
            isMenuSelected = false;

        if ((obj = MM_findObj(args[0])) != null)
        {
            if (obj.style)
            {
                obj = obj.style;

                if (args[1] != null){
                    obj.visibility = args[1];
                    if(viewer!="STB" && args[0]!='OptionsCaptions'){
                    if(args[1]=='visible'){
											obj.display='block';
                    }else{
											obj.display='none';
                    }
                    }
								}
                else
                {
                    v = (obj.visibility == 'visible') ? 'hidden' : 'visible';
                    obj.visibility = v;
                    if(viewer!="STB" && args[0]!='OptionsCaptions'){
										if(obj.visibility == 'visible'){
											obj.display='none';
                    }else{
											obj.display='block';
                    }
                    }
                }
            }
        }
    }

	

	function initPage(setVideo, fullScr)
	{
		isFullScreen = fullScr;
		
		if (fullScr)
		{
			stbInit(setVideo, true);
		}
		else
		{
			
			qtTimer = 0;
			
			// extra init for STB
			if ("STB" == viewer)
			{	
				stbInit(setVideo, false);		// ture: full screen, false: preview
				HideInactiveMousePointer();
				
				if("None" == streamType)
				{
					curInitPageSelection = "StartupTable0";
					fnSelectInitPageOption(0);
					/*There were problems when trying to adjust the scrolling,
					 * Setting the numItems to 2 always solves many problems*/
					if(numItems == 3)
						numItems = 2;
				}
				if("Content" == streamType)
				{					
					var length = 0;
					var selId = 0;
					currentSelection = document.getElementById("CurSelection").value;					
					curScrollTop = document.getElementById("CurScrollTop").value;
					
					if(curScrollTop == "")
						curScrollTop = 0;
					curScrollTop = parseInt(curScrollTop, 10);
					
					if(currentSelection != "")
					{
						length = currentSelection.length;
						selId = currentSelection.substr(6, length - 6);
						fnSelectStream(selId);
					}
					else
					{
						currentSelection = "Stream0";
						fnSelectStream(0);
					}
					//On init, the selected stream is made the first stream in the page
					curTopStream = currentSelection;
					posFromTopofScreen = 0;
					var d = document.getElementById('divList');
					
					var files = GetNumberOfFilesAbove(curTopStream);
					var folders = GetNumberOfFoldersAbove(curTopStream);
					
					d.scrollTop =	(files * (vodFolderHeight + vodFileEdge)) + 
									(folders * (vodFileHeight + vodEdge));
					curScrollTop = d.scrollTop;
				}
				if("Live" == streamType || "Scheduled" == streamType)
				{
					currentSelection = document.getElementById("CurSelection").value;
					curScrollTop = document.getElementById("CurScrollTop").value;
					
					if(curScrollTop == "")
						curScrollTop = 0;
					
					if(isDefaultDefined == "True")
					{
						if(currentSelection == "")
						{
							currentSelection = "Stream"+defStream;
							fnSelectStream(defStream);
							posFromTopofScreen = defStream * liveStreamHeight;
						}
						else
						{
							var length = currentSelection.length;
							var selId = currentSelection.substr(6, length - 6);
							fnSelectStream(selId);
							
							var d = document.getElementById('divList');
							d.scrollTop = curScrollTop;
							
							var curPageFirstStream = Math.ceil(d.scrollTop / (liveStreamHeight + liveStreamEdge));
							if(selId > 0)
								posFromTopofScreen = ((selId - curPageFirstStream) % streamsPerPage) * liveStreamHeight;
							else
								posFromTopofScreen = 0;
						}
					}
					else
					{
						if(currentSelection == "")
						{
							currentSelection = "Stream0";
							fnSelectStream(0);
							/*First stream is selected*/
							posFromTopofScreen = 0;
						}
						else
						{
							var length = currentSelection.length;
							var selId = currentSelection.substr(6, length - 6);
							fnSelectStream(selId);
							
							var d = document.getElementById('divList');
							d.scrollTop = curScrollTop;
							
							var curPageFirstStream = Math.ceil(d.scrollTop / (liveStreamHeight + liveStreamEdge));
							if(selId > 0)
								posFromTopofScreen = ((selId - curPageFirstStream) % streamsPerPage) * liveStreamHeight;
							else
								posFromTopofScreen = 0;
						}
					}
				} //end of if (streamType == Live)
			}
			// reload external player to get window object if it is post back with external player open
			else if (null != extPlayer && "" != extPlayer && "1" != document.getElementById("extPlayer").value)
			{
				extPlayer = window.open("ExternalPlayer.aspx", wName, "status=yes,resizable");
				extPlayer.opener = window;
			}
		}
	}
	
	function unInitPage(streamType)
	{
		try
		{
			if ("MSIE" == viewer) 			
			{
				qtplayer.document.getElementById("oVBPlayer").Close();
			}
			else if ("MAC" == viewer)
			{
			  //qtplayer.document.getElementById("QTPlayer").innerHTML = "";
			}
			else if ("STB" == viewer  && !stbFullScreen)
			{
				stbUninit();	// Live: live stream, Content: vod content
			}
		}
		catch (error)
		{
		}
	}
	
	function playerControl(type, stream)
	{
		try
		{
			if ("STB" == viewer)
			{		
				switch (type)
				{
					case 0:		// play
						PlayKey();
						break;
					case 1:		// pause
						PauseKey();
						break;
					case 2:		// fast forward	
						FastForwardKey();
						break;
					case 3:		// rewind
						RewindKey();
						break;
					case 4:		// stop
					default:
						StopKey();
						break;
				}
			}
		}
		catch (error)
		{
			alert(error);
		}
	}		
	
	function Resetvol(iVol,bMute){
		///		alert('vol'+iVol);
		//		alert('m'+bMute);
				if ("STB" == viewer){
					if(iVol!=''){
						sound_SetMainVolume(iVol);
		//				alert('setvol');
					}
					if(bMute=='true'){
						sound_Mute();
		//				alert('mute');
					}
				}
			}
		
	function playFullScreen(folder)
	{
		// for STB
		if ("STB" == viewer && "" != curVidName && "" != curVidType)
		{
			stbFullScreen = true;
			document.video.VideoName.value = curVidName;
			document.video.VideoType.value = curVidType;
			document.video.Folder.value = folder;
			document.video.StreamType.value = streamType;
			document.video.Scroll.value = Scroll;
			document.video.CurSelection.value = currentSelection;
			document.video.CurScrollTop.value = curScrollTop;
			
			document.video.volumeLevel.value=sound_GetMainVolume();
					
			var obj = document.getElementById("postBack").contentWindow;
			document.video.Program.value = obj.document.getElementById("selProg").value;
			document.video.ProgURL.value = obj.document.getElementById("selURL").value;
			document.video.ProgMsg.value = obj.document.getElementById("progMsg").value;
			document.video.ProgType.value = obj.document.getElementById("progType").value;
	
			document.video.Search.value = document.getElementById("searchState").value;
			if ("Live" == streamType || "Content" == streamType)
			{			
				document.video.SearchText.value = document.getElementById("searchText").value;
				document.video.SearchType.value = document.getElementById("searchType").value;
				
				if ("Live" == streamType)
					document.video.RecState.value = obj.document.getElementById("recState").value;
			}
			else
			{
				document.video.SearchText.value = document.getElementById("txtSrch").value;
				document.video.SearchType.value = document.getElementById("ddlistSrch").value;
				document.video.RecState.value = obj.document.getElementById("recState").value;
			}
			document.video.submit();
		}
	}

	function setPrevScreen(folder, streamType)
	{
		var url = "Initial.aspx";
		
		if ("Content" == streamType)
		{
			url = "ListContent.aspx?Folder=" + folder;
		}
		else
		{
			document.video.RecState.value = 
			  document.getElementById("recState").value;
			  
		  if ("Live" == streamType)
		  {
			  url = "Multicasts.aspx";
		  }
			else if ("Scheduled" == streamType)
		  {
				url = "Scheduled.aspx";
			}
		}
		
		if ("STB" == viewer){
			
			document.video.volumeLevel.value=sound_GetMainVolume();
				
		}
		
		document.video.action = url;
		document.video.submit();
	}
	
	function fullScreenWrap( curVidName )
	{
		if ("Content" == streamType)
		{
			curFolder = getFolderFromURL( curVidName );
			playFullScreen(curFolder);
		}
		else
		{
			playFullScreen(" ");
		}
	}
	
	function getFolderFromURL( curVidName )
	{
		var curFolder = "";
		var firstSlashPos = curVidName.indexOf('/');
		var lastSlashPos = 0;
		
		var i = curVidName.length - 1;
		do
		{			
			if(curVidName[i] == "/")
			{
				lastSlashPos = i;
				break;
			}
			i--;
		}
		while(i > 0);
		
		if(lastSlashPos > firstSlashPos)
		{
			curFolder = curVidName.substring(firstSlashPos, lastSlashPos+1);
		}
		else
		{
			curFolder = "/";
		}
		return curFolder;
	}
	
	/***************************************************************************/
	/* Menu button manipulation 
	*/
	 
	function displayMenu()
	{
		isMenuSelected = true;
		if("None" == streamType)
		{
			MM_swapImgRestore();
			MM_swapImage('WatchTV','','images/STB/WatchTV-OFF.jpg',1);
			MM_swapImage('WatchVOD','','images/STB/VOD-OFF.jpg',1);
			MM_swapImage('Scheduled','','images/STB/Scheduled-Programs-OFF.jpg',1);
		}
		MM_showHideLayers('NavMenu', 'visible');
		fnSelectMenuOption(0);
	}
	
	function hideMenu()
	{		
		curMenuSelection = "";
		isMenuSelected = false;
		
		var val = 0;
		var index = 0;
		var sel = "";
		
		do
		{			
			val = "Option"+index;
			sel = document.getElementById(val);
			if(sel != null)
		sel.style.backgroundColor='#112369';
			index++;
		}
		while(index < 7);   //<- DP, Emergency Broadcast: Upped index.
		
		MM_showHideLayers('NavMenu', 'hidden');
	}	
	
	function fnSelectMenuOption(curNum)
	{		
		if(curMenuSelection != "")
			document.getElementById(curMenuSelection).style.backgroundColor='#112369';
		var id = "Option"+curNum;
		document.getElementById(id).style.backgroundColor='#99ccFF';
		curMenuSelection = id;
		isMenuSelected = true;
	}
      
	function fnDeSelectMenuOption(curNum)
	{
		var id = "Option"+curNum;
		document.getElementById(id).style.backgroundColor='#112369';
		//isMenuSelected = false; //JVP commented this line -SCR:3310
	}
	
	function fnScrollMenu(isDown)
	{
		var curId = "";
			
		if(curMenuSelection != "")
			curId = curMenuSelection.charAt(6);
		else
			return;
		
		var curOption = "";
		
		if(isDown == true)
		{
			var lastNonNullId = curId;
			do
			{
				curId = parseInt(curId, 10) + 1;				
				curOption = "Option"+curId;
				sel = document.getElementById(curOption);
				if (sel != null) lastNonNullId = curId;
			}
			while(curId < 7 && sel == null);
		
			curId = lastNonNullId;
				
			if("None" == streamType)
			{
				var temp = document.getElementById('dummy');
				temp.focus();
			}
			else if("Scheduled" == streamType)
			{
				var temp = document.getElementById('txtSrch');
				temp.focus();
			}
			else if("Live" == streamType || "Content" == streamType)
			{
				var temp = document.getElementById('searchText');
				temp.focus();		
			}	
		
			fnSelectMenuOption(curId);
		}
		else
		{
			do
			{			
				curId = parseInt(curId, 10) - 1;
				curOption = "Option"+curId;
				sel = document.getElementById(curOption);
			}
			while(curId >= 0 && sel == null);
			
			if(curId < 0)
				curId = 0;
				
			if("None" == streamType)
			{
				var temp = document.getElementById('dummy');
				temp.focus();
			}
			else if("Scheduled" == streamType)
			{
				var temp = document.getElementById('txtSrch');
				temp.focus();
			}
			else if("Live" == streamType || "Content" == streamType)
			{
				var temp = document.getElementById('searchText');
				temp.focus();		
			}	
				
			fnSelectMenuOption(curId);
		}
	}

	/***************************************************************************/
	/* Initial page scrolling
	*/
	
	function fnSelectInitPageOption(curNum)
	{
		var id = "StartupTable"+curNum;
		var sel = document.getElementById(id).summary;
		
		MM_swapImgRestore(); 
		switch(sel)
		{
			case "multicast":
				MM_swapImage('WatchTV','','images/STB/WatchTV-ON.jpg',1);
				break;
			case "content":
				MM_swapImage('WatchVOD','','images/STB/VOD-ON.jpg',1);
				break;
			case "scheduled":
				MM_swapImage('Scheduled','','images/STB/Scheduled-Programs-ON.jpg',1);
				break;
		}
		MM_showHideLayers('NavMenu', 'hidden');
		
		curInitPageSelection = id;		
	}
	
	function fnDeSelectInitPageOption(curNum)
	{
		MM_swapImgRestore();
	}
	
	function fnScrollOnInitialPage(isDown)
	{
		var val = "";
		var sel = "";
		var curSelNum = curInitPageSelection.charAt(12);
		
		if(isDown == true)
		{
			do
			{
				curSelNum = parseInt(curSelNum, 10) + 1;				
				val = "StartupTable"+curSelNum;
				sel = document.getElementById(val);
			}
			while(curSelNum <= numItems && sel == null);
			if(curSelNum > numItems)
				curSelNum = numItems;
			
			fnSelectInitPageOption(curSelNum);
		}
		else
		{
			do
			{			
				curSelNum = parseInt(curSelNum, 10) - 1;
				val = "StartupTable"+curSelNum;
				sel = document.getElementById(val);
			}
			while(curSelNum >= 0 && sel == null);
			
			if(curSelNum < 0)
				curSelNum = 0;
				
			fnSelectInitPageOption(curSelNum);
		}
	}
	
	/***************************************************************************/
	/* Multicast scrolling
	*/
	
	function fnSelectStream(curNum)
	{
		if(currentSelection != "")
		{
			var length = currentSelection.length;
			var selId = currentSelection.substr(6, length - 6);		
			fnDeSelectStream(selId);
		}
		
		var id = "Stream"+curNum;
		document.getElementById(id).style.backgroundColor='#253676';
		currentSelection = id;
		
		var d = document.getElementById('divList');
		if(d.scrollTop != curScrollTop)
		{
			if(curNum > 0)
				curScrollTop = curNum * (liveStreamHeight + liveStreamEdge);
			else
				curScrollTop = 0;
		}
		
		var curPageFirstStream = Math.ceil(d.scrollTop / (liveStreamHeight + liveStreamEdge));
		if(curNum > 0)
			posFromTopofScreen = ((curNum - curPageFirstStream) % streamsPerPage) * liveStreamHeight;
		else
			posFromTopofScreen = 0;
	}

    function fnScrollChannels(isDown)
	{	
		var length = currentSelection.length;
		var curId = currentSelection.substr(6, length - 6);
		var d = document.getElementById('divList');
		
		if(numStreams == 0)
			return;
			
		if(isDown == true)
		{
			if(curId == "0")
				return;
					
			curId = parseInt(curId, 10) - 1;
			if(curId < 0)
				curId = 0;
			
			if(curScrollTop != d.scrollTop)
			{
				d.scrollTop = curScrollTop;
				posFromTopofScreen = 0;
			}
			
			posFromTopofScreen = posFromTopofScreen - liveStreamHeight;

			if(posFromTopofScreen < 0)
			{
				posFromTopofScreen = 0;
				d.scrollTop = curId * (liveStreamHeight + liveStreamEdge);
			}
		}
		else
		{
			curId = parseInt(curId, 10) + 1;
			if(curId >= numStreams)
				curId = numStreams - 1;

			if(curScrollTop != d.scrollTop)
				d.scrollTop = curScrollTop;
				
			posFromTopofScreen = posFromTopofScreen + liveStreamHeight;
			if(posFromTopofScreen > ((liveStreamHeight - 5) * streamsPerPage))	//7 streams per page
			{
				posFromTopofScreen = 0;
				d.scrollTop = curId * (liveStreamHeight + liveStreamEdge);
			}
		}
		curScrollTop = d.scrollTop;
		fnSelectStream(curId);
	}
	
	function fnDeSelectStream(curNum)
	{
		var id = "Stream"+curNum;
		document.getElementById(id).style.backgroundColor='#535d63';
	}
        
    function ScrollLiveStreamPages(isDown)
    {		
		var length = currentSelection.length;
		var curId = currentSelection.substr(6, length - 6);
		var d = document.getElementById('divList');
		
		if(numStreams == 0)
			return;
			
		if(isDown)
		{
			curId = parseInt(curId, 10) + streamsPerPage;
			if(curId >= numStreams)
				curId = numStreams - 1;
			
			if(curScrollTop != d.scrollTop)
				d.scrollTop = curScrollTop;
			
			posFromTopofScreen = posFromTopofScreen + (liveStreamHeight * streamsPerPage);
			if(posFromTopofScreen > ((liveStreamHeight - 5) * streamsPerPage))	//7 streams per page
			{			
				posFromTopofScreen = 0;
				d.scrollTop = curId * (liveStreamHeight + liveStreamEdge);
			}
		}
		else
		{
			if(curId == "0")
				return;
						
			curId = parseInt(curId, 10) - streamsPerPage;
			if(curId < 0)
				curId = 0;
			
			if(curScrollTop != d.scrollTop)
			{
				d.scrollTop = curScrollTop;
				posFromTopofScreen = 0;
			}
			
			posFromTopofScreen = posFromTopofScreen - (liveStreamHeight * streamsPerPage);
			if(posFromTopofScreen < 0)
			{
				posFromTopofScreen = 0;
				d.scrollTop = curId * (liveStreamHeight + liveStreamEdge);
			}
		}
		
		curScrollTop = d.scrollTop;
		fnSelectStream(curId);
    }
    /***************************************************************************/
	/* VOD scrolling
	*/
	function GetNumberOfFilesAbove(curTopStream)
	{
		var val = 0;
		var length = curTopStream.length;
		var curId = curTopStream.substr(6, length - 6);
		
		curId = parseInt(curId, 10);
		numFolders = parseInt(numFolders, 10);
		
		if(curId < numFolders)
			val = 0;
		else
		{
			val = curId - numFolders;
			if(val < 0)
				val = 0;
		}
		return val;
	}
	
	function GetNumberOfFoldersAbove(curTopStream)
	{
		var val = 0;
		var length = curTopStream.length;
		var curId = curTopStream.substr(6, length - 6);
		
		curId = parseInt(curId, 10);
		numFolders = parseInt(numFolders, 10);
		
		if(curId >= numFolders)		
			val = numFolders;
		else
		{
			val = curId - numFolders;
			if(val < 0)
				val = 0;
		}		
		return val;
	}
	
	function isFile(curId)
	{
		if(parseInt(curId, 10) < parseInt(numFolders, 10))
			return false;
		else
			return true;
	}
	
	function GetScrollPoint(curId)
	{
		var length = curTopStream.length;
		var topId  = curTopStream.substr(6, length - 6);
		
		if(!isFile(topId))
		{
			//first one is a folder
			var foldersOnPage = numFolders - topId;
			if(foldersOnPage > vodFoldersPerPage)
				foldersOnPage = vodFoldersPerPage;
			if(foldersOnPage < 0)
				foldersOnPage = 0;
				
			switch(foldersOnPage)
			{
				case 0:
					//5 files on page
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
					//return ((vodFilesPerPage) * (vodFileHeight + vodFileEdge));
				case 1:
					//4 files on page
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
					//return (((vodFilesPerPage - 1) * (vodFileHeight + vodFileEdge)) + 
					//		(foldersOnPage * (vodFolderHeight + vodEdge)));
				case 2:
					//3 files on page
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
					//return (((vodFilesPerPage - 2) * (vodFileHeight + vodFileEdge)) + 
					//		(foldersOnPage * (vodFolderHeight + vodEdge)));
				case 3:
					//2 file on page
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
					//return (((vodFilesPerPage - 3) * (vodFileHeight + vodFileEdge)) + 
					//		(foldersOnPage * (vodFolderHeight + vodEdge)));
				case 4:
					//1 file on page
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
					//return (((vodFilesPerPage - 4) * (vodFileHeight + vodFileEdge))+ 
					//		(foldersOnPage * (vodFolderHeight + vodEdge)));
				case 5:
					//0 files on page
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
					//return (((vodFilesPerPage - 4) * (vodFileHeight + vodFileEdge))+ 
					//		(foldersOnPage * (vodFolderHeight + vodEdge)));
				/*			
				case 6:
					//0 files on page
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
				*/	
				default:
					//Error
					//return ((vodFilesPerPage) * (vodFileHeight + vodFileEdge));
					return ((vodFoldersPerPage) * (vodFolderHeight + vodEdge));
			}
		}
		else
		{
			//first one is a file
			return ((vodFilesPerPage) * (vodFileHeight + vodFileEdge))
		}
	}
	
	function GetScrollByValue(curId)
	{
		var scrollBy = 0;
		if(curId >= numFolders)
		{
			scrollBy =	(numFolders * (vodFolderHeight + vodEdge)) + 
						((curId - numFolders) * (vodFileHeight + vodFileEdge));
		}				
		else
			scrollBy = (curId * (vodFolderHeight + vodEdge));
		return scrollBy;
	}
	
	function GetTopStreamId(curId)
	{
		var foldersAbove = 0;
		var filesAbove = 0;
		var foldersAbove2 = 0;
		var filesAbove2 = 0;
		var topId = 0;
		var posFromTop = 0;
		
		if(isFile(curId) == true)
		{			
			foldersAbove = numFolders;
			filesAbove = curId - numFolders;
		}
		else
		{
			foldersAbove = curId;
			filesAbove = 0;
		}
		foldersAbove2 = foldersAbove;
		filesAbove2 = filesAbove;
		
		var d = document.getElementById('divList');
		posFromTop = (filesAbove * (vodFileHeight + vodFileEdge)) + (foldersAbove * (vodFolderHeight + vodEdge));
		
		var tempScroll = d.scrollTop;		
		if(tempScroll == 0)
		{
			var length = curTopStream.length;
			topId  = curTopStream.substr(6, length - 6);
			return topId;
		}	
		
		while(posFromTop > tempScroll)
		{			
			if(filesAbove == 0)
			{
				//We are on a folder
				foldersAbove = foldersAbove - 1;
				posFromTop = (foldersAbove * (vodFolderHeight + vodEdge));
			}
			else if(foldersAbove == numFolders)
			{				
				//we are on a file
				filesAbove = filesAbove - 1;
				if(filesAbove == 0)
					posFromTop = (foldersAbove * (vodFolderHeight + vodEdge));
				else
					posFromTop =	(foldersAbove * (vodFolderHeight + vodEdge)) + 
									(filesAbove * (vodFileHeight + vodFileEdge));
			}
		} //end of while
			
		if(posFromTop != tempScroll)
		{
			if(filesAbove2 == 0)
				foldersAbove++;
			else if(foldersAbove2 == numFolders)
				filesAbove++;
			
			if(foldersAbove > numFolders)
				foldersAbove = numFolders;
			if(filesAbove > numFiles)
				filesAbove = numFiles;
		}
		topId = parseInt(foldersAbove, 10) + parseInt(filesAbove, 10);
		return topId;	
	}
	
    function fnScrollVODChannels(isDown)
	{
		var length = currentSelection.length;
		var curId = currentSelection.substr(6, length - 6);
		var d = document.getElementById('divList');
		
		if(numStreams == 0)
			return;
			
		if(isDown == true)
		{
			if(curId == "0")
				return;
					
			curId = parseInt(curId, 10) - 1;
			if(curId < 0)
				curId = 0;
			
			if(curScrollTop != d.scrollTop)
				d.scrollTop = curScrollTop;
					
			if(isFile(curId))
				posFromTopofScreen = posFromTopofScreen - (vodFileHeight + vodFileEdge);
			else
				posFromTopofScreen = posFromTopofScreen - (vodFolderHeight + vodEdge);
				
			if(posFromTopofScreen < 0)
			{
				posFromTopofScreen = 0;
				d.scrollTop = GetScrollByValue(curId);
				curTopStream = "Stream"+curId;
			}	
		}
		else
		{
			curId = parseInt(curId, 10) + 1;
			if(curId >= numStreams)
				curId = numStreams - 1;
			
			if(curScrollTop != d.scrollTop)
				d.scrollTop = curScrollTop;
				
			var scrollPoint = GetScrollPoint(curId - 1);			
			var bFile = isFile(curId - 1);
			if(bFile)
				posFromTopofScreen = posFromTopofScreen + (vodFileHeight + vodFileEdge);
			else
				posFromTopofScreen = posFromTopofScreen + (vodFolderHeight + vodEdge);
			
			if(posFromTopofScreen >= scrollPoint)
			{
				posFromTopofScreen = 0;
				d.scrollTop = GetScrollByValue(curId);
				curTopStream = "Stream"+curId;
			}
		}		
		curScrollTop = d.scrollTop;
		fnSelectVODStream(curId, false);
	}
	
	function fnSelectVODStream(curNum, isMouseOver)
	{
		var filesAbove = 0;
		var foldersAbove = 0;
		
		if(currentSelection != "")
		{
			var length = currentSelection.length;
			var selId = currentSelection.substr(6, length - 6);		
			fnDeSelectVODStream(selId);
		}
		
		var id = "Stream"+curNum;
		document.getElementById(id).style.backgroundColor='#253676';
		currentSelection = id;
		
		if(isMouseOver)
		{
			var topStreamId = GetTopStreamId(curNum);
			if(isFile(topStreamId))
			{			
				foldersAbove = numFolders;
				filesAbove = topStreamId - numFolders;
			}
			else
			{
				foldersAbove = topStreamId;
				filesAbove = 0;
			}
			curTopStream = "Stream"+topStreamId;
			curScrollTop = (foldersAbove * (vodFolderHeight + vodEdge)) + (filesAbove * (vodFileHeight + vodFileEdge));
	
			if(isFile(curNum))
			{			
				foldersAbove = numFolders;
				filesAbove = curNum - numFolders;
			}
			else
			{
				foldersAbove = curNum;
				filesAbove = 0;
			}
			posFromTopofScreen = (foldersAbove * (vodFolderHeight + vodEdge)) + 
								 (filesAbove * (vodFileHeight + vodFileEdge)) - 
								 curScrollTop;
		}
	}
	
	function fnDeSelectVODStream(curNum)
	{
		var id = "Stream"+curNum;
		document.getElementById(id).style.backgroundColor='#535d63';
	}
	
	function ScrollDownVODPages()
	{
		var length = currentSelection.length;
		var curId = currentSelection.substr(6, length - 6);
		var d = document.getElementById('divList');
		
		var filesToScroll = 0;
		var foldersToScroll = 0;
		
		var topStreamId = GetTopStreamId(curId);
		
		if(numStreams == 0)
			return;
			
		if(isFile(topStreamId))
		{			
			foldersToScroll = 0;
			filesToScroll = vodFilesPerPage; //5 files per page
		}
		else
		{
			foldersToScroll = numFolders - topStreamId;
			if(foldersToScroll >= vodFoldersPerPage)
			{
				foldersToScroll = vodFoldersPerPage; //6 folders per page
				filesToScroll = 0;
			}
			else
			{
				switch(foldersToScroll)
				{
					case 0:
						filesToScroll = vodFilesPerPage;
						break;
					case 1:
						filesToScroll = vodFilesPerPage - 1;
						break;
					case 2:
						filesToScroll = vodFilesPerPage - 2;
						break;
					case 3:
						filesToScroll = vodFilesPerPage - 3;
						break;
					case 4:
						filesToScroll = vodFilesPerPage - 4;
						break;
					case 5:
						filesToScroll = vodFilesPerPage - 4;
						break;
					default:
						filesToScroll = 0;
						break;	
				}
			}			
		}
		
		curTopStream = "Stream"+topStreamId;
		curId = parseInt(curId, 10) + parseInt(foldersToScroll, 10) + parseInt(filesToScroll, 10);
		if(curId >= numStreams)
			curId = numStreams - 1;
			
		if(isFile(curId))
		{			
			foldersAbove = numFolders;
			filesAbove = curId - numFolders;
		}
		else
		{
			foldersAbove = curId;
			filesAbove = 0;
		}
		
		var newScrollTop =	(foldersAbove * (vodFolderHeight + vodEdge)) + 
							(filesAbove * (vodFileHeight + vodFileEdge));
		
		if(newScrollTop != d.scrollTop)
			d.scrollTop = newScrollTop;
			
		curScrollTop = d.scrollTop;	
		curTopStream = "Stream"+curId;
		fnSelectVODStream(curId, true); //set true so that the posFromTop and other variables are recalculated
	}
	
	function ScrollUpVODPages()
	{
		var length = currentSelection.length;
		var curId = currentSelection.substr(6, length - 6);
		var d = document.getElementById('divList');
		
		var filesToScroll = 0;
		var foldersToScroll = 0;
		
		var topStreamId = GetTopStreamId(curId);
		
		if(numStreams == 0)
			return;
			
		if(isFile(topStreamId))
		{			
			foldersAbove = numFolders;
			filesAbove = curId - numFolders;
        }
		else
		{
			foldersAbove = curId;
			filesAbove = 0;
		}
		
		if(filesAbove >= vodFilesPerPage)
		{
			filesToScroll = vodFilesPerPage;
			foldersToScroll = 0;
		}
		else
		{
			filesToScroll = filesAbove;
			switch(filesAbove)
			{
				case 0:
					if(foldersAbove > vodFoldersPerPage)
						foldersToScroll = vodFoldersPerPage;
					else
						foldersToScroll = foldersAbove;
					break;
				case 1:
					if(foldersAbove > vodFoldersPerPage)
						foldersToScroll = (vodFoldersPerPage - 2);//foldersToScroll = 4;
					else
						foldersToScroll = foldersAbove;
					break;
				case 2:
					if(foldersAbove > vodFoldersPerPage)
						foldersToScroll = (vodFoldersPerPage - 3);//foldersToScroll = 3;
					else
						foldersToScroll = foldersAbove; 
					break;
				case 3:
					if(foldersAbove > vodFoldersPerPage)
						foldersToScroll = (vodFoldersPerPage - 4);//foldersToScroll = 2;
					else
						foldersToScroll = foldersAbove;
					break;
				case 4:
					if(foldersAbove > vodFoldersPerPage)
						foldersToScroll = (vodFoldersPerPage - 5);//foldersToScroll = 1;
					else
						foldersToScroll = foldersAbove;						
					break;
				case 5:
				case 6:
					foldersToScroll = 0;
					break;
				default:
					foldersToScroll = 0;
					break;
			}
		}
	
		curTopStream = "Stream"+topStreamId;
		curId = parseInt(curId, 10) - parseInt(foldersToScroll, 10) - parseInt(filesToScroll, 10);
		if(curId < 0)
			curId = 0;
			
		if(isFile(curId))
		{			
			foldersAbove = numFolders;
			filesAbove = curId - numFolders;
		}
		else
		{
			foldersAbove = curId;
			filesAbove = 0;
		}
		var newScrollTop =	(foldersAbove * (vodFolderHeight + vodEdge)) + 
							(filesAbove * (vodFileHeight + vodFileEdge));
		
		if(newScrollTop != d.scrollTop)
			d.scrollTop = newScrollTop;
			
		curScrollTop = d.scrollTop;	
		curTopStream = "Stream"+curId;
		fnSelectVODStream(curId, true); //set true so that the posFromTop and other variables are recalculated
	}
	
/********************************************************************
 client-side functions for Live Stream
 ********************************************************************/
function fnMCast(szName, szMsg, szURL, szType,sUniqueID)
{	
	//alert('fnMCast');
  if (szName == null)
	return;	
	
  if (("STB" == viewer) && (szName.length > 18))
    szName = szName.substring(0, 18) + String.fromCharCode(13)
           + String.fromCharCode(10) + szName.substring(18);
      
  // Set channel specific
  document.getElementById("lblProg").style.fontWeight  = "bold";
  document.getElementById("lblProg").innerHTML = szName;
  
  if (szURL == "")  // If no URL ...
  {
	document.getElementById("lblMsg").style.fontWeight  = "bold";
	document.getElementById("lblMsg").innerHTML = "Cannot be viewed.";
	
	if ("MSIE" == viewer)
		alert(szName + "\r\rCannot be viewed.");
    return;
  }
  
  // set message
  var obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;
  var szRec = getRecordState("Action", obj.document.getElementById("recState").value);
  updateMessage(szRec, szMsg);



  // reset cc
  szURL = resetCC(szURL);

	// set current url, and record status:
  obj.document.getElementById("selURL").value = szURL;
  obj.document.getElementById("selProg").value = szName;
  obj.document.getElementById("progMsg").value = szMsg;
  obj.document.getElementById("progType").value = szType;
  if(sUniqueID!=null){
		  obj.document.getElementById("SAPUniqueID").value=unescape(sUniqueID);
  }
  
	 

	// for vbrick player
	if ("MSIE" == viewer || "linux"==viewer)
	{
		if(szType=="WM"){
			if(qtplayer.location.href.indexOf("wmplayer.aspx")==-1){
				qtplayer.location.href="wmplayer.aspx";
			//	window.setTimeout('qtplayer.Play("'+szURL+'","'+streamType+'")',500); //delay function call so you don't get js error - needed only when iframe url changes
			//}else{
			//	qtplayer.Play(szURL,streamType);
			window.setTimeout('openPlayerWM("'+szURL+'","'+streamType+'")',500);
			}else{
				//qtplayer.Play(url,streamType);
				openPlayerWM(szURL,streamType);
			}
		
			if(szRec=="Stop"){ //szRec=="Stop" means recording is inprogress
				if(extPlayer){
					window.setTimeout('extPlayer.SetButtonPressed(3,true)',1000);
				}else{
					window.setTimeout('qtplayer.SetButtonPressed(3,true)',500); //turn record button red, ie been pressed
				}
			}
		}else{
			if(qtplayer.location.href.indexOf("qtplayer.aspx")==-1){
				qtplayer.location.href="qtplayer.aspx";
				window.setTimeout('MCastMPEGSetup("'+szURL+'","'+szRec+'","'+szType+'")',500);
			}else{
				MCastMPEGSetup(szURL,szRec,szType);
			}
		}
		document.getElementById("ExternalPlayer").style.visibility = "visible";
	}
  // MAC
  else if ("MAC" == viewer)
  {
	var playCmd = obj.document.getElementById("oFile");
	if (playCmd.value != "Play")
	{
		obj.document.getElementById("postAction").value = "PlayLive";
		obj.document.getElementById("streamType").value = "Live";
		obj.document.getElementById("oForm").submit();
	}
	else
	{
		playCmd.value = "";

		// enable external player button
		document.getElementById("ExternalPlayer").style.visibility = "visible";
	      
		// enable record button if has record permission
		if (szRec != "")
		   document.getElementById("MacRecord").style.visibility = "visible";
		  
		// reset record button
		var srcOff =  "images/Record-MAC-OFF.jpg";
		var srcOn = "images/Record-MAC-ON.jpg";
		setRecordButton(szRec, srcOff, srcOn, document.getElementById("macRecImage"));

    // retrieve sdp file
    var sdp = obj.document.getElementById("oSDP").value;
    //alert(sdp);
		if (sdp != null)
			openPlayer(sdp, 0);
	}
  }
  // for STB
  else if ("STB" == viewer)
  {  
    var srcOff =  "images/STB/FinalPlayer-OFF-06.gif";
    var srcOn = "images/STB/FinalPlayer-ON-06.gif";
    setRecordButton(szRec, srcOff, srcOn, document.getElementById("recImage"));
    stbSetVideoTypeName(szURL, szType, streamType);
    stbOpen();
		stbPlay();
  }
}

function MCastMPEGSetup(szURL,szRec,szType){ //called from fnMCast() for MSIE and MPEG streams

	if ("" != szRec)
	{
		var usable = (szRec == "Stop") ? 2 : 1;
		try{
		
		qtplayer.document.getElementById("oVBPlayer").RecButtonVisible = 1;
		qtplayer.document.getElementById("oVBPlayer").RecButtonUsable = usable;
		}catch(e){}
	}
				
	if (szType == "MPEG4")
	{
		szURL = fnUnEscSDP(szURL);
  }
		openPlayer(szURL, 0,szRec);
}
	
function fnPage(nMove)
{
	if (bInit)
	{ 
		if (nMove > 0)
		{
			if (objScroller.y - nMove > -objScroller.scrollHeight + objContainer.clipHeight)
				objScroller.Move(0, objScroller.y - nMove);
			else
				objScroller.Move(0, -objScroller.scrollHeight + objContainer.clipHeight);
		} 
		else
		{
			if (objScroller.y - nMove < 0) objScroller.Move(0, objScroller.y - nMove)
			else objScroller.Move(0, 0);
		} 
	}
}

function fnPlay()
{
	var obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;

	var szURL = obj.document.getElementById("selURL").value;
	var szName = obj.document.getElementById("selProg").value; 
	var szType = obj.document.getElementById("progType").value;	
	var szMsg = obj.document.getElementById("progMsg").value;

	//ARR Use server vars to auto-play selection from calendar
	if (szCSURL	!= "")
		szURL = szCSURL;
	if (szCSName	!= "")
		szName = szCSName;
	if (szCSType	!= "")
		szType = szCSType;
	if (szCSMsg	!= "")
		szMsg = szCSMsg;

	try
	{
		// play
		if ("" != szURL)
		{
			// replay after reload page
			fnMCast(szName, szMsg, szURL, szType);
		}
		// reload from full screen
		else if ("STB" == viewer && "" != document.video.Program.value)
		{
			// reset selected program and url
			obj.document.getElementById("selProg").value = document.video.Program.value; 
			obj.document.getElementById("selURL").value	 = document.video.ProgURL.value;
			obj.document.getElementById("progMsg").value = document.video.ProgMsg.value;
		    obj.document.getElementById("progType").value= document.video.ProgType.value;
		    obj.document.getElementById("recState").value= document.video.RecState.value;

			// restore program name and message
			szName = obj.document.getElementById("selProg").value;
			if (szName.length > 18)
				szName = szName.substring(0, 18) + String.fromCharCode(13)
					+ String.fromCharCode(10) + szName.substring(18);
			document.getElementById("lblProg").style.fontWeight  = "bold";
			document.getElementById("lblProg").innerHTML = szName;
  			
			// set message
			var szRec = getRecordState("Action", obj.document.getElementById("recState").value);
			updateMessage(szRec, document.getElementById("progMsg").value);
			
			// set record image
			if ("Stop" == szRec)
			{
				document.getElementById("recImage").src = "images/STB/FinalPlayer-ON-06.gif";
				document.getElementById("recImage").alt = "Stop Recording";
			}
			// record error
			else if ("" != szErr)
		{
				alert(szErr);
		}
	}
	}
	catch (error)
	{
	}
}
    	
/********************************************************************
 client-side functions for Browse Video Library 
 ********************************************************************/

// propogate current video name and type for STB full screen page
function setUrl(url)
{
	// reset external player flag
	url = url.replace("&ExtPlayer=1", "");
	document.getElementById("extPlayer").value = "0";

	if (("object" == typeof(extPlayer) && !extPlayer.closed) ||
		"1" == extPlayer)
	{
		url += "&ExtPlayer=1";
		document.getElementById("extPlayer").value = "1";
	}

	// store search state
	document.video.Search.value = document.getElementById("searchState").value;
	
	document.video.action = url;
	document.video.VideoName.value = curVidName;
	document.video.VideoType.value = curVidType;
	document.video.submit();
}		

// play selected stream
function play(asset, url, duration, type) 
{

	var obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;
  
  // set program name on messageg area
  setMessage(obj, asset);    
      
  // play on STB
  if ("STB" == viewer)
  {
    stbSetVideoTypeName(url, type, streamType);
    stbOpen();
		stbPlay();
  }
  // play on PCs
  else
  {
 
    var seekTime = 0;
		if (!asset)
		{
			// reset parameters if play on load
			url = obj.document.getElementById("selURL").value;
			if ("" == url)
				return;
			
			if(url.indexOf('asxGet.aspx')>-1)
				type='WM';
					
			asset = obj.document.getElementById("selProg").value;
			duration = obj.document.getElementById("progLen").value;
			seekTime = obj.document.getElementById("seekTime").value;
		}
		else
		{	
			// set current asset, and url:
			obj.document.getElementById("selProg").value = asset;
			obj.document.getElementById("selURL").value = url;
			obj.document.getElementById("progLen").value = duration;
		}
		seekTime = Math.min(duration/1000000, seekTime)
		
    // enable external player button
    if ("Thumbnail" != streamType)
    document.getElementById("ExternalPlayer").style.visibility = "visible";

    // for vbrick player
    if (("MSIE" == viewer) && (duration > 0)) 
    {
		url += "&duration=" + duration;		
    }
    
    if ("MAC" == viewer){ //if its mac don't do any window swaping between qtplayer.aspx and wmplayer.aspx
				openPlayer(url, seekTime); 
				return;
		}
    
    if(type=="WM"){
			if(qtplayer.location.href.indexOf("wmplayer.aspx")==-1){
			
				qtplayer.location.href="wmplayer.aspx";
				//window.setTimeout('qtplayer.Play("'+url+'","'+streamType+'")',500); //delay function call so you don't get js error - needed only when iframe url changes
				window.setTimeout('openPlayerWM("'+url+'","'+streamType+'")',500);
			}else{
				//qtplayer.Play(url,streamType);
				openPlayerWM(url,streamType);
			}
		}else{
			if(qtplayer.location.href.indexOf("qtplayer.aspx")==-1){
				qtplayer.location.href="qtplayer.aspx";
				window.setTimeout('openPlayer("'+url+'", "'+seekTime+'")',500);
			}else{
				openPlayer(url, seekTime);
			}
		}
    
    
  }
}

function openPlayerWM(url, streamType)
{
    try
    {
		// using preview window
		//alert('openplayerWM');
		if (!extPlayer || extPlayer.closed || "Thumbnail" == streamType)
		{
			qtplayer.Play(url,streamType);
	  }
		// reopen external player
		else
		{
			externalPlayWM();	// reset seek time due to restart a new stream
			extPlayer.focus();
		}
    }
	catch (error)
    {    
		alert("The Program  is Currently Not Available or Not Accessible.");
  }
}
   
// open player
function openPlayer(stream, seekTime,szRec)
{
    try
    {
    //alert('openplayer');
		// using preview window
		if (!extPlayer || extPlayer.closed || "Thumbnail" == streamType)
		{
			// quick time player on MAC
			if ("MAC" == viewer){
			
					reloadQTPlayer(stream, seekTime, false);
							
			// vbrick player on windows
			}else{
				//prompt('',stream);
				qtplayer.document.getElementById("oVBPlayer").Open(stream, 0);
				if (szRec != null && szRec != ""){
					qtplayer.document.getElementById("oVBPlayer").RecButtonUsable = (szRec == "Stop") ? 2 : 1;;				
				}
			
				if(viewer=="linux" && stream.indexOf('cc=on_ovl')>-1){
					
					qtplayer.document.getElementById("oVBPlayer").ClosedCaption=true;
					
				}
			}
	  }
		// reopen external player
		else
		{
			externalPlay(1);	// reset seek time due to restart a new stream
			extPlayer.focus();
		}
    }
	catch (error)
    {    
		alert("The Program is Currently Not Available or Not Accessible.");
  }
}

//launch external player for PC and a WM stream
function externalPlayWM(){
  var selURL = postBack.document.getElementById("selURL").value;
  var selProg = postBack.document.getElementById("selProg").value;
  var pl=qtplayer.document.getElementById('WMPlayer');
   
 	extPlayer=window.open('wmplayer.aspx?prog='+selProg,wName,'scrollbars=no,resizable=yes,status=no,width=320,height=345');
	var pos=pl.controls.currentPosition;
	window.setTimeout('extPlayer.Play2("'+selURL+'","'+streamType+'","'+pos+'")',750);
	
	//alert(pos);
 	//ext.document.getElementById('WMPlayer').controls.currentPosition=pos;
  //qtplayer.BtnClick(2); //stop
  pl.close();
  
  for(var j=0;j<8;j++){
		qtplayer.SetButtonStatus(j,true)
  }
  
  recState=postBack.document.getElementById("recState").value;
  var szRec = getRecordState("Action", recState);
  if ("Stop" == szRec){
			if(extPlayer){
				window.setTimeout('setrecWM()',1000);
			}
	}
}

function setrecWM(){
	extPlayer.SetButtonPressed(3,true);
}

// launch external player
function externalPlay(seek)
{
	
  var obj = ("MAC" == viewer)?postBack:document.getElementById("postBack").contentWindow;
  var selURL = obj.document.getElementById("selURL").value;
  if (selURL)
  {
  
	if(selURL.indexOf('asxGet.aspx')>-1 && viewer=="MSIE"){ //windows media player on pc
		externalPlayWM();
		return;
	}
	
	if(seek==null && "MAC" == viewer){
		if(qtplayer.document.getElementById("oVBPlayer")){
			seek=qtplayer.document.getElementById("oVBPlayer").GetStreamTime();
		}
	}
  
  var selProg = obj.document.getElementById("selProg").value;
	var url = "ExternalPlayer.aspx?URL=" + selURL + "&StreamType=" + streamType;

	document.getElementById("ExternalPlayer").style.visibility = "hidden";
	
	// for vbrick player
	if ("MSIE" == viewer || viewer=="linux") 
	{
	  // construct url for new window
	  var seekTime 
	  if("MSIE" == viewer){
			seekTime= qtplayer.document.getElementById("oVBPlayer").GetStreamTime();			
		}else{ //linux
			
			//seekTime="0";
			seekTime= qtplayer.document.getElementById("oVBPlayer").GetStreamTime();
			//qtplayer.document.getElementById("oVBPlayer").Stop();
		
			qtplayer.document.getElementById("oVBPlayer").Close();
			qtplayer.document.getElementById("oVBPlayer").RecButtonUsable=0;
			
			
			//alert(seekTime);
		}
	  if (streamType == "Content")
	  {
	    var duration = obj.document.getElementById("progLen").value;
	    if(duration>0){//JVP - if statement added see scr:4392
				seekTime = Math.min(duration/1000000, seekTime);
			}
			url += "&Len=" + duration;
	  }
	  else
	  {
	    url += "&RecState=" + obj.document.getElementById("recState").value;
	  }
	  url += "&Seek=" + seekTime;
	  url += "&ProgName=" + selProg;

	  // create a new window using video native size
	  var wd = qtplayer.document.getElementById("oVBPlayer").NativeWidth;
	  var ht = qtplayer.document.getElementById("oVBPlayer").NativeHeight;
	  
	  /*if(wd==null)
			wd=500;
		if(ht==null)
			ht=400;*/

	// 		alert(wd+' '+ht);
		if(wd==null || ht==null || viewer=='linux'){
			wd=500;
			ht=400;
		}
		
	  
	  qtplayer.document.getElementById("oVBPlayer").Close();
	  if(viewer=="linux")
			qtplayer.document.getElementById("oVBPlayer").RecButtonUsable=0;
			

	  // launch external player
	  try
	  {
			//prompt('',url);
	    extPlayer = window.open(url, wName, "status=yes,resizable,width=" + wd + ",height=" + ht);
	    extPlayer.opener = window;
	  }
	  catch (error)
	  {
	    alert("Failed to launch external player");
	  }
	}
	// MAC
	else if ("MAC" == viewer)
	{
	  var seekTime = seek ? 0:getSeekTime(0);
	  if (streamType == "Content")
	  {
	    var duration = obj.document.getElementById("progLen").value;
			//seekTime = Math.min(duration/1000000, seekTime);
			if(qtplayer.document.getElementById("oVBPlayer")){
				seekTime=seek;
			}else{
				seekTime=0; //scr:3246
			}
	  }
	  else
	  {
		url += "&RecState=" + obj.document.getElementById("recState").value;
		url += "&SDPFile=" + escape(obj.document.getElementById("oSDP").value);
	    if(document.getElementById("MacRecord")){
	    document.getElementById("MacRecord").style.visibility = "hidden";
	  }
	  }
	  url += "&Seek=" + seekTime;
	  url += "&ProgName=" + selProg;
	  qtplayer.location.href= qtplayer.location.href;
	  qtplayer.document.getElementById("QTPlayer").innerHTML = "";			
	  extPlayer = window.open(url, wName, "status=yes,resizable,width=400,height=300");
	  extPlayer.opener = window;
	}
  }
  else
  {
    alert("Please select content to play");
  }
}

function fullscreen()
{
  var obj = ("MAC" == viewer)?postBack:document.getElementById("postBack").contentWindow;
  var selURL = obj.document.getElementById("selURL").value;
  if (selURL)
  {
    var selProg = obj.document.getElementById("selProg").value;
		var url = "ExternalPlayer.aspx?URL=" + selURL + "&StreamType=" + streamType;

		//document.getElementById("ExternalPlayer").style.visibility = "hidden";
	
	
	
		// for vbrick player
		if ("MSIE" == viewer || viewer=="linux") 
		{
			// construct url for new window
			var seekTime 
			if("MSIE" == viewer){
				seekTime= qtplayer.document.getElementById("oVBPlayer").GetStreamTime();
			}else{ //linux
				seekTime=qtplayer.document.getElementById("oVBPlayer").GetStreamTime();
				qtplayer.document.getElementById("oVBPlayer").Stop();
				//qtplayer.document.getElementById("oVBPlayer").HideButtons(32)

			}
			if (streamType == "Content")
			{
				var duration = obj.document.getElementById("progLen").value;
			seekTime = Math.min(duration/1000000, seekTime);
			url += "&Len=" + duration;
			}
			else
			{
				url += "&RecState=" + obj.document.getElementById("recState").value;
			}
	  
			url += "&Seek=" + seekTime;
			url += "&ProgName=" + selProg;
	  
	 

			// create a new window using video native size
			var wd = window.innerWidth;
			var ht = window.innerHeight+100;
			
			if(viewer=="linux"){
				wd=window.screen.availWidth;
				ht=window.screen.availHeight;
				url+='&f=1';
			}
		  
			if(wd==null)
				wd=400;
				
			if(ht==null)
				ht=300;
		  
			qtplayer.document.getElementById("oVBPlayer").Close();
			

			// launch external player
			try
			{
				extPlayer = window.open(url, wName, "status=0,resizable,width=" + wd + ",height=" + ht);
				extPlayer.moveTo(0,0);
				
				//extPlayer.opener = window;
			}
			catch (error)
			{
			//alert(error.message);
				alert("Failed to launch external player");
			}
	}	else  {
    alert("Please select content to play");
  }
  }
}

// external player window name
function getExtWinName()
{
  // we will have one external player per session
  // so use cookie name as external player's window name
  var cookie = document.cookie;
  var aspCookie = "ASP.NET_SessionId";
  var pos = cookie.indexOf(aspCookie);
  if (-1 != pos)
    cookie = cookie.substring(pos+aspCookie.length+1);

  return cookie;
}

function getIp(url)
{
	var sPos = url.indexOf("ip=") + 3;
	var ePos = url.indexOf("&port=");
	var ip = url.substring(sPos, ePos);
	return ip;
}

function getPort(url)
{
  var szTmp;	
	var sPos = url.indexOf("&port=") + 6;
	szTmp = url.substring(sPos)
	var ePos = szTmp.indexOf("&");
	var port = szTmp.substring(0, ePos);
	return port;
}

function retreiveKeyFromBuff(url)
{
	var escUrl = fnUnEscSDP(url);
	
	var key, ip, vPort, aPort;
	
	ip = retrieveMsg("c=IN IP4", "/", " ", escUrl);		// get ip address
	vPort = retrieveMsg("m=video", "/", " ", escUrl);	// get video port
	aPort = retrieveMsg("m=audio", "/", " ", escUrl);	// get audio port
	key = ip + "_" + vPort + "_" + aPort;
	
	return key;
}

function retrieveMsg(sTag, eTag1, eTag2, buff)
{
	var sPos = buff.indexOf(sTag) + sTag.length;
	var sbuff = (buff.substring(sPos, buff.length)).replace(" ", "");
	var ePos = Math.min(sbuff.indexOf(eTag1), sbuff.indexOf(eTag2));
	return sbuff.substring(0, ePos);
}


/********************************************************************
 client-side script for Thumbnail Create & Upload
 ********************************************************************/	

// selete a stream for thumbnail upload
function selThumbnail(assetName, assetType, imgIdx)
{
	var obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;

	// persist current selected asset and its thumbnail
	document.getElementById("lblErrThumb").innerHTML = "";
	obj.document.getElementById("selProg").value = assetName;
	obj.document.getElementById("assetType").value = assetType;
	obj.document.getElementById("imageId").value = "img" + imgIdx;
		
	// display current selection
	var msg = "You have selected: <br /> " + assetName;
	msg += ".<br /><br />Please browse to an existing thumbnail and select \"Upload Image\".";
	obj.document.getElementById("dispAsset").innerHTML = msg;
}

// thumbnail operation
function thumbAction(action)
{
	var obj = self;
	
	if (action.indexOf("Create") >= 0)
	{
		obj = ("MAC" == viewer)?postBack:document.getElementById("postBack").contentWindow;
		
		if ("MSIE" == viewer || viewer=="linux")
		{
			var url=obj.document.getElementById('selURL').value;
			if(url.indexOf('asxGet.aspx')==-1){
				// retrieve seekTime from player control
				
				obj.document.getElementById("seekTime").value =qtplayer.document.getElementById("oVBPlayer").GetStreamTime();
			}else{
				obj.document.getElementById("seekTime").value =qtplayer.document.getElementById("WMPlayer").controls.currentPosition;
			}
		}
		else if ("MAC" == viewer)
		{
			// retrieve seekTime from player control
			// Note: can not retrieve seektime for now, just set to first iframe
			obj.document.getElementById("seekTime").value = 0;
		}
	}	
	else if (action.indexOf("Upload") >= 0)
	{
		if ("" == document.getElementById("selProg").value)
		{
			parent.document.getElementById("lblErrThumb").innerHTML = "Please select a content";
			return;
		}
		else if ("UploadThumb" == action &&
					"" == document.getElementById("thumbFile").value)
		{
			parent.document.getElementById("lblErrThumb").innerHTML = "Please select a image file";
			return;
		}	
	}
	obj.document.getElementById("postAction").value = action;
	obj.document.getElementById("oForm").submit();
}

// Converts escaped character value in SDP information string back to regular
// character value.
function fnUnEscSDP(szURL)
{
  var szEscdSDP = szURL;
  var szEsc = ">>><<>";
  var szAsc, szSrch;
  var szUnEscdSDP = "";
  
  var nAsc, nPos1, nPos2, nPos3;
  
  var cAsc;

  while (true)
  {
	  nPos1 = szEscdSDP.indexOf(szEsc);
  	
	  if (nPos1 != -1)
	  {
		  szSrch = szEscdSDP.substr(0, nPos1);
		  nPos2 = nPos1 + szEsc.length;
		  nPos3 = nPos2 + 2;
  		
		  szAsc = szEscdSDP.substring(nPos2, nPos3);
		  nAsc = parseInt(szAsc, 16);
		  cAsc = String.fromCharCode(nAsc);
    	
		  szUnEscdSDP = szUnEscdSDP + szSrch + cAsc;
		  szEscdSDP = szEscdSDP.substr(nPos3, szEscdSDP.length - nPos3);
	  }
	  else
	  {
		  szUnEscdSDP = szUnEscdSDP + szEscdSDP;
		  break;
		}
  }

  return szUnEscdSDP;
}

// switch closed captioning
function setCC()
{
	MM_showHideLayers('OptionsCaptions');
	var obj = self;
	
	// set post action to Closed Captioning for all pages except inital page
	if ("None" != streamType)
	{
		obj = ("MAC" == viewer)?postBack:document.getElementById("postBack").contentWindow;
		
			if ("Content" == streamType && obj.document.getElementById('selURL').value.indexOf('asxGet.aspx')==-1)
			{
					obj.document.getElementById("seekTime").value =qtplayer.document.getElementById("oVBPlayer").GetStreamTime();		
			}

			obj.document.getElementById("postAction").value = "CC";	
			obj.document.getElementById("streamType").value = streamType;
			obj.document.getElementById("postValue").value = ((document.getElementById('oChkCCOn').checked) ? "1" : "0");
			if(viewer=="linux"){
				qtplayer.document.getElementById("oVBPlayer").ClosedCaption=document.getElementById('oChkCCOn').checked;
			}
		
	}
	else
	{
		document.getElementById('oCCOp').value =
			((document.getElementById('oChkCCOn').checked) ? "1" : "0");	
	}
	obj.document.getElementById("oForm").submit()
}

function record_swapImgRestore(state)
{
	if ("Stop" != getRecState(state))
	{
		MM_swapImgRestore();
	}
}

function record_swapImage(state, imgSrc)
{
	if ("Stop" != getRecState(state))
	{
		MM_swapImage('Record','',imgSrc,1);
	}
}

function getRecState(state)
{
	if ("" == state)
	{
	try{
		var obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;
		state = getRecordState("Action", obj.document.getElementById("recState").value);
	}catch(ex){}
	}
	return state;
}

function fnLoad(szLoc, szCC)
{
  var obj = self;
  if (szLoc.indexOf("AdminThumbCreate") >= 0)
     obj = parent;
     
  // set external player flag
  if (extPlayer && !extPlayer.closed)
    szLoc += "?ExtPlayer=1";

 if(document.all){
  obj.oLoad.CCOp.value = szCC;
  obj.oLoad.Loc.value = szLoc;
  obj.oLoad.Rez.value = obj.szRez;
  obj.oLoad.submit();
  }else{ //firefox
		obj.document.getElementById('oLoad').CCOp.value = szCC;
		obj.document.getElementById('oLoad').Loc.value = szLoc;
		obj.document.getElementById('oLoad').Rez.value = obj.szRez;
		obj.document.getElementById('oLoad').submit();
  }
}


function loadVbrickMACPlayer(u,t){
		qtplayer.document.getElementById("QTPlayer").innerHTML = '<embed id="oVBPlayer" style="width:320px;height:283px" type="video/x-vbrick"></embed>';
		qtplayer.document.getElementById("oVBPlayer").Open(u, t);
		qtplayer.document.getElementById("oVBPlayer").HideButtons(96); //hide full and rec
		qtplayer.document.getElementById('oVBPlayer').Mute=bIsMute;		
}
function loadVbrickMACPlayerExt(u,t){
		document.getElementById("QTPlayer").innerHTML = '<embed id="oVBPlayer" style="width:100%;height:90%" type="video/x-vbrick"></embed>';
		document.getElementById("oVBPlayer").Open(u, t);
		document.getElementById("oVBPlayer").HideButtons(96); //hide full and rec
		document.getElementById('oVBPlayer').Mute=bIsMute;		
}
// reload quick time player
// Note: this is work around for support scripting for Embedded QuickTime playter
var bIsMute=false;
function reloadQTPlayer(url, seekTime, external)
{
	if (null != url && "" != url)
	{
		
			if (external){
				if(document.getElementById("oVBPlayer")){
					bIsMute=document.getElementById('oVBPlayer').Mute;
					document.getElementById("oVBPlayer").Close();
				}
			}else{
				if(qtplayer.document.getElementById("oVBPlayer")){
					bIsMute=qtplayer.document.getElementById('oVBPlayer').Mute;
					qtplayer.document.getElementById("oVBPlayer").Close();
				}
			}
		
			
		if(url.indexOf('vbricksys://')>-1 || url.indexOf('vbrtsp2://')>-1){
			//alert('mpg1 or 2');
				//		alert(url);
		if (external)
			{
				//document.getElementById("QTPlayer").innerHTML = '<embed id="oVBPlayer" style="width:100%;height:90%" type="video/x-vbrick"></embed>';
				//document.getElementById("oVBPlayer").Open(url, seekTime);
				//document.getElementById("oVBPlayer").HideButtons(96); //hide full and rec
				window.setTimeout("loadVbrickMACPlayerExt('"+url+"',"+seekTime+")",500);
			}		
			else
			{
				qtplayer.location.href=qtplayer.location.href;
				//qtplayer.document.getElementById("QTPlayer").innerHTML = '<embed id="oVBPlayer" style="width:320px;height:283px" type="video/x-vbrick"></embed>';
				//qtplayer.document.getElementById("oVBPlayer").Open(url, seekTime);
				//qtplayer.document.getElementById("oVBPlayer").HideButtons(96); //hide full and rec
				window.setTimeout("loadVbrickMACPlayer('"+url+"',"+seekTime+")",500);
			}
		}else{
			if(!external){qtplayer.location.href=qtplayer.location.href;}
			
			var style = "width: 100%; height: 100%";
			if(external){style = "width: 100%; height: 90%";}
			var message = "<embed name='oQPlayer' ";
			message += " style='" + style + "'";
			
			if(url.indexOf('asxGet.aspx')>0){ //for windows media files
				if(bLaunchStandAloneForMACWM){
					window.location.href=url;
					return;
				}
				message+=" type='application/x-mplayer2' ";
				message+=" filename='"+url+"'";
				//message+=" filename='http://172.22.169.4/vbs1multi.asx'";
				message+=" autostart='true'";
			}else{
				message+= " src='' ";
				message += " type='video/quicktime' target='QuickTimePlayer'";
				message += " qtsrc='" + url + "'";
				message += " scale='tofit' autoplay='true' bgcolor='#000033'";
				message += " enablejavascript='true'";
				message += " starttime='00:00:" + seekTime + ":00'";
				message += " controller='true'";
			}
			message+="></embed>";
			
			// load from external player
			if (external)
			{
				window.setTimeout('document.getElementById("QTPlayer").innerHTML = "'+message+'"',500);
			}		
			else
			{
				window.setTimeout('qtplayer.document.getElementById("QTPlayer").innerHTML ="'+ message+'"',500);
			}

			// set current time
			qtTimer = getSeekTime(0);
		}
	}
}

function getSeekTime(init)
{
	var time = new Date();
	var initVal = (init == "")? 0:parseInt(init);
	var seek = initVal + time.getTime()/1000 - qtTimer;
	return Math.round(seek);
}

// set external player flag when reload video-on-demand content
function prevPage()
{
	var url = document.getElementById("moveUp").value;
	setUrl(url);
}

/*******************************************************************************/

// Pause Key
function PauseKey()
{
	if(streamType == "Status")
		return;
		
	if ("Content" == streamType)
	{
		stbPause();
		isPaused = true;
		isRew = false;
		isFF = false;
	}
}
		     
// Play Key
function PlayKey()
{
	if(streamType == "Status")
		return;
		
	if("None" == streamType)
		return;
		
	if(isFullScreen)
	{
    if (isPaused)
      isPaused = false;

    else if (isRew)
      isRew = false;

    else if (isFF)
      isFF = false;

    else
    {
      if (curVidType == "MPEG4")              // If MPEG-4 stream ...
        curVidName = fnUnEscSDP(curVidName);  // Strip Esc chars from name.
        
      SetVideoTypeName(getVidType(curVidType, streamType), curVidName);
      stbOpen();
    }
    
    stbPlay();
		return;
	}
		
	if(numStreams == 0)
		return;
		
	if("Live" == streamType || "Scheduled" == streamType)
	{
		if(currentSelection == "")
			return;
			
		summary = document.getElementById(currentSelection).summary;
		var length = summary.length;
		var args = summary.substring(8,length-1);
	
		var pos1 = args.indexOf('\'');
		var pos2 = args.indexOf('\'', pos1+1);
		var name = args.substring(pos1+1, pos2);
	
		pos1 = args.indexOf('\'', pos2+1);
		pos2 = args.indexOf('\'', pos1+1);
		var msg = args.substring(pos1+1, pos2);
	
		pos1 = args.indexOf('\'', pos2+1);
		pos2 = args.indexOf('\'', pos1+1);
		var url = args.substring(pos1+1, pos2);
	
		pos1 = args.indexOf('\'', pos2+1);
		pos2 = args.indexOf('\'', pos1+1);
		var type = args.substring(pos1+1, pos2);
	
		pos1 = args.indexOf('\'', pos2+1);
		pos2 = args.indexOf('\'', pos1+1);	
		var recstate = args.substring(pos1+1, pos2);
	
		fnMCast(name, msg, url, type, recstate);	// need change!!!! check with 
	}
	
	if("Content" == streamType)
	{
		if(currentSelection == "")
			return;
			
		if (isPaused)
		{
			isPaused = false;
            stbPlay();
			return;
		}
		
		if (isRew)
		{
			isRew = false;
            stbPlay();
			return;
		}
		
		if (isFF)
		{
			isFF = false;
            stbPlay();
			return;
		}
		
		summary = document.getElementById(currentSelection).summary;
    var url = summary.substring(0, 6);
		var args = summary.substring(8, summary.length-2).split("', '");
    var target = args[0];
    var message = (args.length > 1 ? args[1] : "");
		
		var szPrev = curVidName.substring(curVidName.indexOf('/'));
		
    if ((target == szPrev) && isPlay)
			return;
	    
		if(url == "fnPlay")
			fnPlay(target, currentSelection, curScrollTop, message);
		else if (url == "setUrl")
			setUrl(target);
		else
			prevPage();
	}	
}

// Stop Key
function StopKey()
{
	if(streamType == "Status")
		return;
		
    isPlay = false;		
	stbStop(streamType);
}
			
// Rewind Key
function RewindKey()
{
    if (streamType == "Status")
        return;

    if ("Content" == streamType)
    {
        isRew = true;
        isFF = false;
        isPaused = false;

        stbRewind();
    }
}

// Fast Forward Key
function FastForwardKey()
{
    if (streamType == "Status")
        return;

    if ("Content" == streamType)
    {
        isFF = true;
        isRew = false;
        isPaused = false;

        stbFForward();
    }
}

// Chapter Back Key
function ChapterBackKey()
{
}

// Chapter Forward Key
function ChapterForwardKey()
{
}
			
// Help Key
function HelpKey()
{
}
			
// Mute Key
function MuteKey()
{
    if (streamType == "Status")
        return;

    sound_Mute();
    
    var isM=document.getElementById('isMute');
    var isM2=document.getElementById('isMute2');
    if(isM){
			var bMute=isM.value;
			if(bMute==''){bMute='false';}
			
			if(bMute=='true'){
				isM.value='false';
				if(isM2)
					isM2.value='false';
			}else{
				isM.value='true';
				if(isM2)
					isM2.value='true';
			}
    }
}

// Scroll Up Key
function ScrollUpKey()
{
    if(isFullScreen)
        return;

    if(isMenuSelected == true)
    {
        fnScrollMenu(false);
    }
    else if("None" == streamType)
    {
        fnScrollOnInitialPage(false);
    }
    else if("Live" == streamType)
    {
        ScrollLiveStreamPages(false);
    }
    else if("Content" == streamType && currentSelection != "")
    {
        ScrollUpVODPages();
    }
    else if("Scheduled" == streamType)
    {
        ScrollLiveStreamPages(false);//dimensions are the same for the Multicasts and Scheduled pages
    }
    else if("Status" == streamType)
        if(!isMenuSelected)
        {
            var divTree=document.getElementById('Stat1_Tree1_divTree');
            divTree.scrollTop=divTree.scrollTop-divTree.offsetHeight;
        }
        
    return;
}

// Scroll Down Key
function ScrollDownKey()
{
    if(isFullScreen)
        return;

    if(isMenuSelected == true)
    {
        fnScrollMenu(true);
    }
    else if("None" == streamType)
    {
        fnScrollOnInitialPage(true);
        var temp = document.getElementById('dummy');
        temp.focus();
        return;
    }
    else if("Live" == streamType)
    {
        ScrollLiveStreamPages(true);
        var temp = document.getElementById('searchText');
        temp.focus();
    }
    else if("Content" == streamType && currentSelection != "")
    {
        ScrollDownVODPages();
        var temp = document.getElementById('searchText');
        temp.focus();		
    }
    else if("Scheduled" == streamType)
    {
        ScrollLiveStreamPages(true);//dimensions are the same for the Multicasts and Scheduled pages
        var temp = document.getElementById('txtSrch');
        temp.focus();
    }

    if(("Status" == streamType))
    {
        if(!isMenuSelected){
            var divTree=document.getElementById('Stat1_Tree1_divTree');
            divTree.scrollTop=divTree.scrollTop+divTree.offsetHeight;
        }

        var temp = document.getElementById('dummy');
        temp.focus();
    } 

    if(("Info" == streamType))
    {
        var temp = document.getElementById('dummy');
        temp.focus();
    }
}
			
// Info Key
function InfoKey()
{
    //Navigate to the View Info page for the selected item.  Ignore if we can't find the info URL.
    //	try
    //	{
    var element = document.getElementById("Info_" + currentSelection);
    if (element != undefined)
    {
        var infoURL = element.summary;
        if (infoURL != "") navURL(infoURL);
    }
    //	}
    //	catch {}
}

// Select Key
function SelectKey()
{
    var summary = "";
    
    if (isFullScreen)
        return;
        
    if (isMenuSelected == true)
    {
        if (curMenuSelection == "")
            return;
            
        summary = document.getElementById(curMenuSelection).summary;
        switch(summary)
        {
            case "home":
                document.location.href="Initial.aspx";
                break;
            case "multicast":
                document.location.href="Load.aspx?Loc=Multicasts.aspx";
                break;
            case "content":
                document.location.href="Load.aspx?Loc=ListContent.aspx";
                break;
            case "scheduled":
                document.location.href="Load.aspx?Loc=Scheduled.aspx";
                break;
            case "emergencybroadcast":  //DP, Emergency Broadcast.
                document.location.href="Load.aspx?Loc=EmergencyBroadcast.aspx";
                break;
            case "viewstatus":
                document.location.href="Load.aspx?Loc=ViewStatus2.aspx";
                break;
            case "login":
                document.location.href="Login.aspx";
                break;
        }
        return;
    }
    
    if (streamType == "Status")
        return;
        
    if ("None" == streamType)
    {
        summary = document.getElementById(curInitPageSelection).summary;
        switch(summary)
        {
            case "multicast":
                document.location.href="Load.aspx?Loc=Multicasts.aspx"
                break;
            case "content":
                document.location.href="Load.aspx?Loc=ListContent.aspx"
                break;
            case "scheduled":
                document.location.href="Load.aspx?Loc=Scheduled.aspx"
                break;
        }
    }
    else 
    {
        if (numStreams == 0)
            return;
            
        if ("Live" == streamType || "Scheduled" == streamType)
        {
            if(currentSelection == "")
                return;

            summary = document.getElementById(currentSelection).summary;
            var length = summary.length;
            var args = summary.substring(8,length-1);

            var pos1 = args.indexOf('\'');
            var pos2 = args.indexOf('\'', pos1+1);
            var name = args.substring(pos1+1, pos2);

            pos1 = args.indexOf('\'', pos2+1);
            pos2 = args.indexOf('\'', pos1+1);
            var msg = args.substring(pos1+1, pos2);

            pos1 = args.indexOf('\'', pos2+1);
            pos2 = args.indexOf('\'', pos1+1);
            var url = args.substring(pos1+1, pos2);

            pos1 = args.indexOf('\'', pos2+1);
            pos2 = args.indexOf('\'', pos1+1);
            var type = args.substring(pos1+1, pos2);

            pos1 = args.indexOf('\'', pos2+1);
            pos2 = args.indexOf('\'', pos1+1);	
            var recstate = args.substring(pos1+1, pos2);

            fnMCast(name, msg, url, type, recstate);	// need change!!!! check with 
        }
        
        if ("Content" == streamType)
        {
            if (currentSelection == "")
                return;

            summary = document.getElementById(currentSelection).summary;
				var url = summary.substring(0, 6);		
            var args = summary.substring(8,summary.length-2).split("', '");
            var target = args[0];
            var message = (args.length > 1 ? args[1] : "");

            if(url == "fnPlay"){
								fnPlay(target, currentSelection, curScrollTop, message);
            }else if (url == "setUrl")
                setUrl(target);
            else
                prevPage();
        }
    }
}
			
// Volume Up Key
function VolumeUpKey()
{
    if(streamType == "Status")
        return;

    sound_MainVolumePlus();
    var isM=document.getElementById('isMute');
    
    if(isM){
			isM.value='false';
			
    }
}			
// Volume Down Key
function VolumeDownKey()
{
    if(streamType == "Status")
        return;

    sound_MainVolumeMinus();
    var isM=document.getElementById('isMute');
    
    if(isM){
			isM.value='false';
		
    }
}
	
// FullScreen Key
function FullScreenKey()
{
    if("None" == streamType)
        return;

    if(streamType == "Status")
        return;				

    if(isFullScreen)
    {
        if("Live" == streamType || "Scheduled" == streamType)
            setPrevScreen("", streamType);
            
        else if("Content" == streamType)
        {
            var folder = getFolderFromURL( curVidName )
            setPrevScreen(folder, streamType);
        }
    }
    else
    {
        if("Content" == streamType || "Live" == streamType || "Scheduled" == streamType)
        {
            fullScreenWrap( curVidName );
        }
    }
}
			
// Channel Up Key
function ChannelUpKey()
{
    if(streamType == "Status")
        return;

    if("None" == streamType)
        return;
        
    if(isFullScreen)
        return;

    hideMenu();
    
    if("Live" == streamType)
        fnScrollChannels(true);
    else if("Content" == streamType && currentSelection != "")
        fnScrollVODChannels(true);
    else if("Scheduled" == streamType)
        fnScrollChannels(true);
}
			
// Channel Down Key
function ChannelDownKey()
{
    if(streamType == "Status")
        return;

    if("None" == streamType)
        return;
        
    if(isFullScreen)
        return;
			
    hideMenu();
    
    if("Live" == streamType)
        fnScrollChannels(false);
    else if("Content" == streamType && currentSelection != "")
        fnScrollVODChannels(false);
    else if("Scheduled" == streamType)
        fnScrollChannels(false);//dimensions are the same for Multicasts and Scheduled pages
}
			
// WWW key		
function WWWKey()
{
}
			
function ChannelKeys(key)
{		
	switch(key)
	{
		// '1' Key
		case 49:
			break;
			
		// '2' Key
		case 50:
			break;
			
		// '3' Key
		case 51:
			break;
			
		// '4' Key
		case 52:
			break;
			
		// '5' Key
		case 53:
			break;
			
		// '6' Key
		case 54:
			break;
			
		// '7' Key
		case 55:
			break;
			
		// '8' Key
		case 56:
			break;
			
		// '9' Key
		case 57:
			break;
			
		// '0' Key
		case 48:
			break;
	}
}

// TV Key
function TVKey()
{
	if(isFullScreen)
	{
		var obj //= document.getElementById("postBack").contentWindow;
		if (window.location.href.indexOf("FullScreen.aspx") == -1)
			obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;
		else
			obj = self;
		document.video.RecState.value = obj.document.getElementById("recState").value;
		url = "Multicasts.aspx";		
		document.video.action = url;
		document.video.submit();
	}
	else
	{
		document.location.href="Load.aspx?Loc=Multicasts.aspx";
		isFullScreen = false;
	}
}
			
// VOD Key - not on KB, only on Remote
function VODKey()
{
  if (nLic < 2)   // If license has restrictions ...
    return;       // Quit.
    
	if(isFullScreen)
	{
		var obj //=document.getElementById("postBack").contentWindow;
		if (window.location.href.indexOf("FullScreen.aspx") == -1)
			obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;
		else
			obj = self;
		
		document.video.RecState.value = obj.document.getElementById("recState").value;
		url = "ListContent.aspx";		
		
		
		
		//Stop playback if push VOD from fullscreen
		if(document.getElementById('streamType').value=='Live'){
			isPlay = false;		
			stbStop(streamType);
		}
		
		document.video.action = url;
		document.video.submit();
	}
	else
	{
		document.location.href="Load.aspx?Loc=ListContent.aspx";
		isFullScreen = false;
	}
}

// Record Key
function RecordKey()
{
	if(streamType == "Status")
		return;
		
	if("Live" == streamType || "Scheduled" == streamType)				
		record();
}
			
// Menu Key
function MenuKey()
{		
	if(isFullScreen)
		return;
	if (!isMenuSelected)
		displayMenu();
	else
		hideMenu();  //DP, SCR 2524.
}

// recording
function record()
{	

	if(!isFullScreen && numStreams == 0)
		return;
		
	if ("STB" != viewer ||						// record on PC or MAC	
		("" != curVidName && "" != curVidType)) // record on STB
	{
		var obj;
		var url = window.location.href;
		if (url.indexOf("FullScreen.aspx") == -1)
			obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;
		else
			obj = self;
		
		var szRec = getRecordState("Action", obj.document.getElementById("recState").value);
		var bRecord = true;
		// confirm to stop record
		if ("Stop" == szRec)
		{
			if(viewer=="linux"){
				qtplayer.document.getElementById('oVBPlayer').RecButtonUsable=2;
			}
			var msg = getRecordState("Message", obj.document.getElementById("recState").value);
			msg += "\nDo you want to stop this recording?";
			bRecord = confirm(msg);
			if(viewer=="linux" && bRecord){
				qtplayer.document.getElementById('oVBPlayer').RecButtonUsable=1;	//set to recording state
			}
		}
		else if (!isFullScreen && ("Start" == szRec))
		{
			var recMsg = "<b><font color='yellow'>Initializing Record...</font></b>";
			document.getElementById("lblMsg").innerHTML = recMsg;
		}
		
		// start/stop record
		if (bRecord)
		{
			
			obj.document.getElementById("postAction").value = "Record";
			if(obj.document.getElementById("volumeLevel2")){
				obj.document.getElementById("volumeLevel2").value=sound_GetMainVolume();
				obj.document.getElementById("isMute2").value=obj.document.getElementById("isMute").value;
			}
			obj.document.getElementById("oForm").submit();
	    }
	}
	else
	{
		alert("Please select a valid stream for recording");
	}
}

// set record button
function setRecordButton(szRec, srcOff, srcOn, obj)
{
  if ("Start" == szRec)
  {
    obj.src = srcOff;
	obj.alt = "Start Recording";
  }
  else if ("Stop" == szRec)
  {
    obj.src = srcOn;
	obj.alt = "Stop Recording";
  }
  else if ("" != szRec)
  {
    alert(szRec);
  }
}	  

function getRecordState(tag, states)
{
	var ret = "";

	try
	{
		var item = states.split(",");
		for (idx = 0; idx < item.length; idx++)
		{
			var pos = item[idx].indexOf(tag);
			if (pos >= 0)
			{
				ret = item[idx].substring(item[idx].indexOf("=")+1);
				break;
			}
		}
	}
	catch (err)
	{
	}	
	return ret;
}

function updateMessage(szRec, szMsg)
{
  var obj = ("MAC"==viewer)?postBack:document.getElementById("postBack").contentWindow;
  var recMsg = getRecordState("Message", obj.document.getElementById("recState").value);
  if ("" == recMsg)
  {
    // only display general or globa message if there is no recording message
    document.getElementById("lblMsg").innerHTML = szMsg;
  }
  else
  {
    // display recording message if there is a recording in progress
    recMsg = "<b><font color='yellow'>" + recMsg + "</font></b>";
    document.getElementById("lblMsg").innerHTML = recMsg;	// record message will overrite general message
    
    // update recState if record completed or failed
    if ("Start" == szRec)
    {
		var tag = "Message=";
		var obj = ("MAC"==viewer)?parent.postBack:parent.document.getElementById("postBack").contentWindow;
		var recObj = obj.document.getElementById("recState");					
		recObj.value = recObj.value.substring(0, recObj.value.indexOf(tag)+ tag.length);
    }
  } 
}


function fnSearch(e, nSrch)
{
	var key;

	if ("STB" == viewer || !document.all)
		key = e.which;
	else
		key = window.event.keyCode;
	
	if ((nSrch == 1) || (key == 13))  //Search.
	{
		document.getElementById('oForm').submit();
	}
	
	if (nSrch == 2)  //Clear.
	{
		document.getElementById('searchText').value = "";
		document.getElementById('searchType').selectedIndex = 0;
		document.getElementById('oForm').submit();
	}
}

function setMessage(obj, asset)
{
  // reset program name
  if (asset == null)
  {
	if ("STB" == viewer && "" != curVidName && "" != curVidType)
	{
	  // reset selected program and url after load from full screen
	  obj.document.getElementById("selProg").value = document.video.Program.value; 	
	}		
	asset = obj.document.getElementById("selProg").value;
  }
  else
    obj.document.getElementById("selProg").value = asset;
  
  if (asset == null || asset == "")
    szgMsg = document.getElementById("lblProg").innerHTML;
  else
  {
    // display program on message area  
    var nPos = asset.lastIndexOf("/") + 1;
    var szProg = asset.substring(nPos);
 
    var maxMsg = ("STB" == viewer) ? 18:24;

    if (szProg.length > maxMsg)
      szProg = szProg.substring(0, maxMsg) + "<br />" + szProg.substring(maxMsg);
    
    document.getElementById("lblProg").style.fontWeight  = "bold"; 
    document.getElementById("lblProg").innerHTML = szProg;
  }
}
  
function resetCC(url)
{
  var szURL = url;
  
  if ("MSIE" == viewer)
  {
    if (document.getElementById('oChkCCOn').checked)
      url = url.replace("&cc=off", "&cc=on_ovl");
    else
      url = url.replace("&cc=on_ovl", "&cc=off");
  }
  return szURL;
}
  
// open document
function openDoc(url)
{
	try
	{
		window.open(url);
	}
	catch (error)
	{
		alert("Failed to open " + url + ".");
	}
}

// Open URL within current window.
function navURL(url)
{
	try
	{	
		document.location.href = url;
	}
	catch (error)
	{
		alert("Failed to navigate to '" + url + "'.");
	}
}

// Open URL pop-up window.
function popUpURL(url)
{
	var width = 780;
	var height = 530;
	var left = (screen.width-width) / 2;
	var top = (screen.height >= 768 ? (screen.height-height) / 2 : 0);
	var features = "width=" + width + ",height=" + height + ",left=" + left + ",top=" + top + ",status=no,toolbar=no,scrollbars=no,location=no,resizable=yes,menubar=no,directories=no,copyhistory=no";
	
	try
	{	
		window.open(url + "&Popup=Yes", "_blank", features);
	}
	catch (error)
	{
		alert("Failed to open popup '" + url + "'.");
	}
}


//called from Multicasts.aspx,Listcontent.aspx,Scheduled.aspx to hidemenu for linux see scr:4143
function hidemenu(){
	try{
		MM_showHideLayers('NavMenu','hidden');
	}catch(e){}
}
