function Video(type, id, path, formats)
{
	this.type = type;
	this.id = id;
	this.path = path;
	this.formats = formats;
	this.objVideo = null;
}

function Console()
{
	this.m_lastVideo = new Video(Console.VIDEO_VOD_FLV);

	this.playVideo=function(videoType, videoId, videoPath, videoName, videoFormats, isLive, trackDate, isShared, channelId, channelIndex, adTag, objVideo, bFromThumbnail)
		{
			if (videoPath=="blocked")
			{
				alert(getLocalizedString("video_blocked"));
				return;
			}
			var bShowRelatedTab=true;
			var bShowPrevNext=false;
			var bPopulateComingUp=true;  // We don't change the Coming Up section when playing highlights for goals/hits/saves
			var bIsUpcoming=false;
			var videoSubType="video";
			
			if ((videoType==Console.VIDEO_VOD_FLV_LIVE || videoType==Console.VIDEO_VOD_FLV_LIVE_PAY) && !isLive)
				bIsUpcoming=true;
			
			hideSearchMode();
			toggleMenu("hide");

			// If function is called via DeepLinking, for example
			if (objVideo==null)
				objVideo=_console.findVideoTbl(videoId);

			var videoName=_console.getVideoInfo(videoType, objVideo, "prog_name");
			var videoDesc=_console.getVideoInfo(videoType, objVideo, "prog_desc");

			/*
			if (typeof(document.getElementById("console").playVideo)!="function")
			{   // Firefox, search hides the console, workaround until search is moved to a tab.
				var strCmd="_console.playVideo('"+videoType+"','"+videoId+"','"+videoPath+"','"+videoName+"','"+videoFormats+"',"+isLive+",'"+trackDate+"',"+isShared+",'"+channelId+"','"+channelIndex+"','"+adTag+"',null,'"+bFromThumbnail+"')";
				setTimeout(strCmd, 1000);
				return;
			}
			*/

			var ipad_div=document.getElementById("ipadPlayer");
			
			var menuName="";
			if (channelId=="hotvideos")
			{
				channelIndex="-2";
				channelId="-7";
				menuName="MOST WATCHED";
			}
			else if (channelId=="newvideos")
			{
				channelIndex="-2";
				channelId="-7";
				menuName="JUST ADDED"; 
			}
			else
			{
				var td=getMenuItem(channelId);
				if (td)
					menuName=getMenuName(td);
			}

			if(Console.VIDEO_HIGHLIGHT_F==videoType || Console.VIDEO_HIGHLIGHT_W==videoType)
			{
				menuName="GAME HIGHLIGHTS";
				if (videoId.getAttribute("tblType")=="highlight_game")
				{
					g_lastHighlightGameObjItem=m_objItems[videoId.getAttribute("lastGameKey")];
					g_lastHighlightGameTbl=videoId;
					videoSubType="highlight_game";
				}
				else
				{
					if (videoId.getAttribute("tblType")=="highlight_clip")
						videoSubType="highlight_clip";
				}
				//else
				//	bPopulateComingUp=false;

				var obj = __playCustomVideo(videoType, videoId, videoPath, videoName, videoDesc, videoFormats);
				
				if (g_isipad)
				{
					var strURL=videoPath;
					if (strURL!=null && strURL.indexOf(".mp4")>0)
						ipad_div.innerHTML="<video autoplay='autoplay' width='100%' height='100%' controls='controls' src='"+strURL+"'>Video Player Not Supported</video>";
					else
						ipad_div.innerHTML="<br/><br/><br/><br/><br/><br/>We're sorry, we cannot play this format of content.";
				}
				else
				{
				  if (obj.path!=null)
				  	document.getElementById("console").playHighlight(channelIndex, menuName, obj.path, obj.videoId, obj.trackId, obj.trackString, obj.isPlayer, obj.eventId);
				  else
				  {
				  	/*   // In searches, we need to run the first video since video-clip XML isn't returned.
					// if (videoType==CONSOLE.highlight)
					var tbl=_console.getNextHighlightItem(null);
					if (tbl && tbl.onclick!=null)
					{	tbl.onclick();
						return;
					}
					*/
				  }
				}
				objVideo=videoId;
				videoId=objVideo.getAttribute("progId");

				bShowRelatedTab=false;
				bShowPrevNext=true;
				
			}
			else if(Console.PODCAST_F==videoType)
			{
				var obj = __playCustomVideo(videoType, videoId, videoPath, videoName, videoDesc);
				document.getElementById("console").playPodcast(channelIndex, menuName, obj.link, obj.title);
				bShowRelatedTab=false;
			}
			else
			{
				if (g_isipad)
				{
					var strURL=videoPath;
					// strURL="http://10.10.90.22/s/nhl/vod/mp4/MR_1_800.mp4";
					if (strURL.indexOf(".mp4")>0)
					{
						if (strURL.indexOf("_sd.mp4") < 0)
							strURL=strURL.replace(".mp4", "_sd.mp4");
						strURL = strURL.replace("/s/", "/u/");
						ipad_div.innerHTML="<video autoplay='autoplay' width='100%' height='100%' controls='controls' src='"+strURL+"'>Video Player Not Supported</video>";
					}
					else
						ipad_div.innerHTML="<br/><br/><br/><br/><br/><br/>We're sorry, we cannot play this format of content.";
				}
				else
					document.getElementById("console").playVideo(channelIndex, channelId, menuName, videoType, videoId, videoName, videoDesc, videoPath, videoFormats, adTag, isShared, isLive, trackDate, bIsUpcoming);
				bShowPrevNext=true;
			}

			if (bShowPrevNext)
				document.getElementById("divPlayPrevNext").style.display="";
			else
				document.getElementById("divPlayPrevNext").style.display="none";
			
			if (bFromThumbnail)
				document.documentElement.scrollTop=0;
				
			if(Console.VIDEO_HIGHLIGHT_F==videoType || Console.VIDEO_HIGHLIGHT_W==videoType || Console.PODCAST_F==videoType)
			{
				if (g_currentTabType=="related")
					_details.showSimilarCallback("");
			}
			else
			{
			    _details.showDetails(videoType, videoId);
				if (g_currentTabType=="related")
					_details.showSimilar(videoType, videoId);
			}

			_console.selectVideoObj(objVideo);
			showRelatedTab(bShowRelatedTab);
			
			this.m_lastVideo.type = videoType;
			this.m_lastVideo.id = videoId;
			this.m_lastVideo.path = videoPath;
			this.m_lastVideo.formats = videoFormats;
			this.m_lastVideo.objVideo = objVideo;
			this.m_lastVideo.isUpcoming = bIsUpcoming;
			this.m_lastVideo.videoSubType = videoSubType;

			if (bPopulateComingUp)
				_console.populateComingUp();
		}

	var g_videoContainers=new Array("div_Browse", "div_LiveEvents", "div_WhatsHot", "div_WhatsNew", "div_Channel", "div_Search", "div_GameDay");
	this.findVideoTbl=function(videoId, defaultDiv)
		{
			var div="div_Browse";
			if (defaultDiv)
				div=defaultDiv;
			var tbls = _console.getVideoTables(div);
			for (var i=0; i<tbls.length; i++)
			{
				if (tbls[i].getAttribute("progId")==videoId)
					return tbls[i];
			}
			return null;
		}

	this.getVideoInfo=function(videoType, objVideo, infoType)
		{
			if(Console.VIDEO_HIGHLIGHT_F==videoType || Console.VIDEO_HIGHLIGHT_W==videoType || Console.PODCAST_F==videoType)
				return "";
							
			if (objVideo!=null)
			{
				var divs=objVideo.getElementsByTagName("div");
				for (var i=0; i<divs.length; i++)
				{
					if (divs[i].getAttribute("divType")==infoType)     // Can be:  prog_name | prog_desc
						return divs[i].innerHTML;
				}
			}
			
			var div=document.getElementById("details_"+infoType);
			if (div)
				return div.innerHTML;
				
			return "";
		}

	this.getParentContainer=function(objVideo)
		{
			var ret=objVideo.parentNode;
			
			try
			{
				while (ret.getAttribute("divType")!="container")
				{
					if (ret.tagName.toLowerCase()=="body")
						return null;
					
					ret=ret.parentNode;
				}
			}
			catch (e)
			{
				return null;  // Some objects may have been deleted from the DOM
			}
			
			return ret;
		}
		
	this.selectVideoObj = function(objVideo)
		{
			if (typeof(objVideo)!="object")
				return;

			if (_console.m_lastVideo.objVideo)
			{
				_console.m_lastVideo.objVideo.setAttribute("isSelected", "false");

				var tblType=_console.m_lastVideo.objVideo.getAttribute("tblType");
				if (tblType=="highlight_game")
				{
					// _console.m_lastVideo.objVideo.className="highlightgame";
				}
				else if (tblType=="highlight_clip")
				{
					_console.m_lastVideo.objVideo.src=g_locImage+"images/branding/"+g_teamName+"/play_sm.gif";
				}
				else
				{
					_console.m_lastVideo.objVideo.className="videothumb";
				}
			}
			if (objVideo)
			{
				objVideo.setAttribute("isSelected", "true");

				var tblType=objVideo.getAttribute("tblType");
				if (tblType=="highlight_game")
				{
					// objVideo.className="highlightgame_s";
				}
				else if (tblType=="highlight_clip")
				{
					objVideo.src=g_locImage+"images/branding/"+g_teamName+"/play_sm_s.gif";
				}
				else
				{
					objVideo.className="videothumb_s";
				}
			}
			_console.m_lastVideo.objVideo=objVideo;
		}
		
	this.getVideoTables = function(strContainerName)
		{
			var ret=new Array();
			var div=document.getElementById(strContainerName);
			var tbls=div.getElementsByTagName("table");
			for (var i=0; i<tbls.length; i++)
			{
				var tblType=tbls[i].getAttribute("tblType");
				if (tblType=="videothumb" || tblType=="highlight_game")
					ret[ret.length]=tbls[i];
			}
			return ret;		
		}
	this.getHighlightClipItems = function()
		{
			var ret=new Array();
			var objVideo=_console.m_lastVideo.objVideo;
			if (objVideo)
			{
				var div=_console.getParentContainer(objVideo);
				if (div) 	// User could have navigated to a different page in player highlights
				{
					var tbls=div.getElementsByTagName("img");
					for (var i=0; i<tbls.length; i++)
					{
						if (tbls[i].getAttribute("tblType")=="highlight_clip")
							ret[ret.length]=tbls[i];
					}
				}
			}
			return ret;		
		}
		
	this.findVideoObj = function()
		{	
			var obj=new Object();

			obj.currentVideo=null;
			obj.prevVideo=null;
			obj.nextVideo=null;
			obj.nextVideo2=null;
			obj.nextVideo3=null;
			obj.container=null;

			if (_console.m_lastVideo.objVideo!=null)
			{
				var videoSubType=_console.m_lastVideo.videoSubType;   // Highlight clips need to be playlisted
				if (videoSubType=="highlight_clip")
				{
					var bFound=false;
					var tbls = _console.getHighlightClipItems();
					for (var i=0; i<tbls.length; i++)
					{
						if (tbls[i]==_console.m_lastVideo.objVideo)
						{
							var objItem = m_objItems[_console.m_lastVideo.objVideo.getAttribute("objItem")];
							if (objItem==null)   // This happens if user clicks on a player, plays the video, goes back to the game, clicks "NEXT"
							{
								// this won't happen now, now we won't set m_objectItems to null
								var strComp=getVisibleComponent();
								var tbls = _console.getVideoTables(strComp);
								if (tbls && tbls[0])
								{
									if (tbls[0].onclick!=null)
									{
										obj.prevVideo=tbls[0];
										obj.nextVideo=tbls[0];
										break;
									}
									else
										return;
								}
							}
							else
							{
								if (tbls[i-1]!=null)
									obj.prevVideo=tbls[i-1];
								if (tbls[i+1]!=null)
								{
									obj.nextVideo=tbls[i+1];
									bFound=true;
								}
							}
							break;
						}
					}
					if (!bFound)
					{
						if (tbls.length>0 && tbls[0].onclick!=null)
							obj.nextVideo=tbls[0];
					}
					
					return obj;
				}
			




			
				var strSearchProgId=_console.m_lastVideo.id;
				
				var bFound=false;
				var tbl=_console.getParentContainer(_console.m_lastVideo.objVideo);
				
				if (tbl==null)
				{
					var videoType=_console.m_lastVideo.type;
					if (Console.VIDEO_HIGHLIGHT_F==videoType && g_lastHighlightGameTbl)
					{
						tbl=_console.getParentContainer(g_lastHighlightGameTbl);
						strSearchProgId=g_lastHighlightGameTbl.getAttribute("progId");
					}
				}
				
				if (tbl)
				{
					var tbls=_console.getVideoTables(tbl.id);
					for (var i=0; i<tbls.length; i++)
					{
						var progId=tbls[i].getAttribute("progId");
						if (strSearchProgId==progId)
						{
							// obj.container=tbl;
							obj.currentVideo = tbls[i];
							
							if (tbl.id!="div_Similar")
							{
								if (tbls[i-1]!=null)
									obj.prevVideo=tbls[i-1];
								if (tbls[i+1]!=null)
									obj.nextVideo=tbls[i+1];
								if (tbls[i+2]!=null)
									obj.nextVideo2=tbls[i+2];
								if (tbls[i+3]!=null)
									obj.nextVideo3=tbls[i+3];
							}
							bFound=true;
							break;
						}
					}
				}
			}   // if objVideo==null

			if (obj.nextVideo3==null)   // Last ditch effort to fill in upcoming
			{ 
				var strComp=getVisibleComponent();
				if (strComp!="div_Highlights")
				{
					var tbls = _console.getVideoTables(strComp);
					if (tbls.length > 0)
					{
						if (obj.nextVideo==null)
						{
							if (tbls[0]!=null)
								obj.nextVideo=tbls[0];
							if (tbls[1]!=null)
								obj.nextVideo2=tbls[1];
							if (tbls[2]!=null)
								obj.nextVideo3=tbls[2];
						}
						else if (obj.nextVideo2==null)
						{
							if (tbls[0]!=null)
								obj.nextVideo2=tbls[0];
							if (tbls[1]!=null)
								obj.nextVideo3=tbls[1];
						}
						else if (obj.nextVideo3==null)
						{
							if (tbls[0]!=null)
								obj.nextVideo3=tbls[0];
						}
					}
				}
			}								

			return obj;
		}
	this.playNextVideo=function()
		{	
			var obj=_console.findVideoObj();
			if (obj.nextVideo!=null)
			{
				obj.nextVideo.onclick();
			}
			else	// Some objects may have been deleted from the DOM - use upcoming instead
			{
				var videoType=_console.m_lastVideo.type;
				if (Console.VIDEO_HIGHLIGHT_F==videoType && g_lastHighlightGameTbl)
				{
					// Do nothing for now...
				}
				else if (document.getElementById("trComingUp_1").style.display=="")
				{
					document.getElementById("tblComingUp_1").onclick();
				}
				else
				{
					// Select the first item in the current tab
					var strComp=getVisibleComponent();
					var tbls = _console.getVideoTables(strComp);
					if (tbls && tbls[0])
					{
						if (tbls[0].onclick!=null)
							tbls[0].onclick();
					}
				}
				
			}
		}
	this.playPrevVideo=function()
		{
			var obj=_console.findVideoObj();
			if (obj.prevVideo!=null)
				obj.prevVideo.onclick();
		}
	this.showComingUpHighlightsPane=function()
		{
			document.getElementById("divComingUpHighlights").style.display="";
			document.getElementById("tblComingUp").style.display="none";
		}
	this.populateComingUp=function()
		{
			var videoType=_console.m_lastVideo.type;
			var obj=_console.findVideoObj();
			if (Console.VIDEO_HIGHLIGHT_F==videoType || Console.VIDEO_HIGHLIGHT_W==videoType)
			{
				_console.showComingUpHighlightsPane();
			}
			else
			{
				document.getElementById("content_Details").style.display="";
				document.getElementById("divComingUpHighlights").style.display="none";
		
				var bShowComingUp=false;
	
				if (obj.nextVideo!=null)
				{
					document.getElementById("trComingUp_1").style.display="";
					document.getElementById("trComingUp_1").objVideo=obj.nextVideo;
					document.getElementById("comingUp_img_1").src = obj.nextVideo.getElementsByTagName("img")[0].src;
					document.getElementById("comingUp_label_1").innerHTML = _console.getVideoInfo(null, obj.nextVideo, "prog_name");
					document.getElementById("comingUp_desc_1").innerHTML = _console.getVideoInfo(null, obj.nextVideo, "prog_desc");
					bShowComingUp=true;
				}
				else
				{
					document.getElementById("trComingUp_1").style.display="none";
				}	
	
				if (obj.nextVideo2!=null)
				{
					document.getElementById("trComingUp_2").style.display="";
					document.getElementById("trComingUp_2").objVideo=obj.nextVideo2;
					document.getElementById("comingUp_img_2").src = obj.nextVideo2.getElementsByTagName("img")[0].src;
					document.getElementById("comingUp_label_2").innerHTML = _console.getVideoInfo(null, obj.nextVideo2, "prog_name");
					document.getElementById("comingUp_desc_2").innerHTML = _console.getVideoInfo(null, obj.nextVideo2, "prog_desc");
					bShowComingUp=true;
				}
				else
				{
					document.getElementById("trComingUp_2").style.display="none";
				}	
	
				if (obj.nextVideo3!=null)
				{
					document.getElementById("trComingUp_3").style.display="";
					document.getElementById("trComingUp_3").objVideo=obj.nextVideo3;
					document.getElementById("comingUp_img_3").src = obj.nextVideo3.getElementsByTagName("img")[0].src;
					document.getElementById("comingUp_label_3").innerHTML = _console.getVideoInfo(null, obj.nextVideo3, "prog_name");
					document.getElementById("comingUp_desc_3").innerHTML = _console.getVideoInfo(null, obj.nextVideo3, "prog_desc");
					bShowComingUp=true;
				}
				else
				{
					document.getElementById("trComingUp_3").style.display="none";
				}	

				var tbl=document.getElementById("tblComingUp");
				if (tbl)
				{
					if (bShowComingUp)
						document.getElementById("tblComingUp").style.display="";
					else
						document.getElementById("tblComingUp").style.display="none";
				}
			}
				
			if (obj.prevVideo!=null)
				document.getElementById("btnPlayPrev").style.visibility="visible";
			else
				document.getElementById("btnPlayPrev").style.visibility="hidden";

			if (obj.nextVideo!=null)
				document.getElementById("btnPlayNext").style.visibility="visible";
			else
				document.getElementById("btnPlayNext").style.visibility="hidden";

		}

	// Converts an object of arguments to string
	// Args can be of type Objects (with arrays inside a key), or strings
	// Returns an encoded/escaped url string for the args
	this.getArgsString = function(params)
		{
			var args = "";
			if(typeof(params)=="object")
			{
				var argArray = new Array();
				for(n in params)
				{
					if(params[n] != null)
					{
						if((typeof(params[n])=="object"))
						{ 
							for(var i=0; i<params[n].length; i++)
								argArray[argArray.length] = n + "=" + encodeURIComponent(params[n][i]);
						}
						else					
							argArray[argArray.length] = n + "=" + encodeURIComponent(params[n]);
					}
				}
				args = argArray.join("&");
			}
			else
				args = params;
			
			return args;
		}
				
	this.getComponentContent = function(url, params, callback, bNoPrefixURL)
		{
			if(bNoPrefixURL!=true)
			   url="servlets/"+url;
			   
			var args=this.getArgsString(params);

			var requester=null;
			if(_util.isie)
				requester = new ActiveXObject("Microsoft.XMLHTTP");
			else
				requester = new XMLHttpRequest();
				
			requester.open("POST", url, true);
			requester.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

			requester.onreadystatechange=function() 
				{
					if (requester.readyState==4) 
					{
						var iStatus=requester.status;
						if (iStatus>=200 && iStatus<300)
						{
							// Success
							if(requester.getResponseHeader("Content-Type").indexOf("text/xml")==0 || requester.getResponseHeader("Content-Type").indexOf("application/xml")==0)
								callback(requester.responseXML.documentElement)
							else
								callback(requester.responseText);
						}
						else if(iStatus==401)
						{
							window.location.href = "secure/loginform";
						}
						else
							callback("ERROR - Code="+requester.status);
					}
				}
			
			requester.send(args);
		}
		
	this.getComponentContentSynch = function(url, params, bNoPrefixURL)
		{
			if(bNoPrefixURL!=true)
			   url="servlets/"+url;
			   
			var args=this.getArgsString(params);

			var requester=null;
			if(_util.isie)
				requester = new ActiveXObject("Microsoft.XMLHTTP");
			else
				requester = new XMLHttpRequest();
				
			requester.open("POST", url, false);
			requester.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

			requester.send(args);
			
			var iStatus=requester.status;
			if (iStatus>=200 && iStatus<300)
			{
				// Success
				if(requester.getResponseHeader("Content-Type").indexOf("text/xml")==0 || requester.getResponseHeader("Content-Type").indexOf("application/xml")==0)
					return requester.responseXML.documentElement;
				else
					return requester.responseText;
			}
			else if(iStatus==401)
			{
				window.location.href = "secure/loginform";
			}
			else
				return "ERROR - Code="+requester.status;
		}
		
		
}

// Gets a localized string for JavaScript usage
function getLocalizedString(key)
{
	var obj = document.getElementById("msg_"+key);
	if(obj!=null)
	{	return obj.innerHTML.replace(/\\n/g,"\n");
	}
	alert("Error - Localization key '"+key+"' not found.");
}

function showRelatedTab(bShow)
{
	var strDisplay="";
	if (bShow==false)
		strDisplay="none";

	var tr=document.getElementById("trBottomTabs");
	for (var i=0; i<tr.cells.length; i++)
	{
		var tdTab=tr.cells[i];
		var tabtype=tdTab.getAttribute("tabtype");
		if (tabtype=="related")
			tdTab.style.display=strDisplay;
	}
}

function setTab(index)
{
	if (g_isNHL!="true" && g_lastChannelType=="2" && index==0)
	{
		setTab(3);
		return;
	}
	else
	{
		var tr=document.getElementById("trBottomTabs");
		for (var i=0; i<tr.cells.length; i++)
		{
			var tdTab = tr.cells[i];
		
			var tabDiv=document.getElementById("tabDiv_"+i);
			if (i==index)
			{
				tdTab.className="tab_sel";
				if (tabDiv)
					tabDiv.style.display="";

				var tabtype = tdTab.getAttribute("tabtype");
				if (tabtype=="whatshot")
					getWhatsHot(1);
				else if (tabtype=="whatsnew")
					_whatsnew.getCategory('newvideos');
				else if (tabtype=="related")
					_details.showSimilar(_console.m_lastVideo.type, _console.m_lastVideo.id);
				
				g_currentTabType=tabtype;
			}
			else
			{
				tdTab.className="tab";
				if (tabDiv)
					tabDiv.style.display="none";
			}
		}
		if (g_isNHL!="true")
		{
			if (index==3)
			{
				tr.cells[0].className="tab_sel";
			}
		}
	}
	
}
function onMouseOverButton(btn)
{
	if (btn.className.indexOf("buttonlg") >= 0)
		btn.className="buttonlg buttonlg_mo";
	else if (btn.className.indexOf("buttonsm") >= 0)
	{
		return;  // Causes slowdown in highlights
		btn.className="buttonsm buttonsm_mo";
	}
	else
		btn.className="button button_mo";
}
function onMouseOutButton(btn)
{
	if (btn.className.indexOf("buttonlg") >= 0)
		btn.className="buttonlg";
	else if (btn.className.indexOf("buttonsm") >= 0)
	{
		return;  // Causes slowdown in highlights
		btn.className="buttonsm";
	}
	else
		btn.className="button";
}
function showTable(id)
{
	document.getElementById(id).style.display="";
}
function resizeEvent()
{
	if (g_isipad)
		return;

	toggleMenu("hide");
	if (g_consoleMode=="ads")
		setAdMode(true);  // Move overlays
}
window.onresize=resizeEvent;

function toggleMenu(type)
{
	var menu=document.getElementById("divMenu");
	if (menu==null)
		return;

	var menubg=document.getElementById("divMenuBG");
	var menuarrow=document.getElementById("menuarrow");
	
	var bShow;
	if (type=="show")
		bShow=true;
	else if (type=="hide")
		bShow=false;
	else
	{
		if (menu.style.display=="none")
			bShow=true;
		else
			bShow=false;
	}

	if (bShow)
	{
		menu.style.display="";
		menubg.style.display="";
		menuarrow.src=g_locImage+"images/ddarrowup.gif";

		var xy=_util.getMouseXY(null, document.getElementById("tblMenuBar"));
		if (_util.isie)
		{
			xy[0]-=7;
			xy[1]+=24;
		}
		else
		{
			xy[0]-=5;
			xy[1]+=24;
		}
		menu.style.left=xy[0]+"px";
		menubg.style.left=xy[0]+"px";
		menu.style.top=xy[1]+"px";
		menubg.style.top=xy[1]+"px";
		menubg.style.height=menu.offsetHeight+"px";

		if (g_isipad)
		{
			var div=document.getElementById("ipadPlayer");
			div.style.left="355px";
			div.style.width="280px";
		}
	}
	else
	{
		if (g_isipad)
		{
			var div=document.getElementById("ipadPlayer");
			div.style.left="5px";
			div.style.width="640px";
		}

		menu.style.display="none";
		menubg.style.display="none";
		menuarrow.src=g_locImage+"images/ddarrowdown.gif";
	}
}
function getMenuItem(defaultCatId, defaultId)
{
	var tbl=document.getElementById("tblMenu");
	if (defaultCatId=="" && tbl.rows[0]!=null)
	{
		var td=tbl.rows[0].cells[0];
		if (defaultId=="" || defaultId==null)
			return td;
		if (td.getAttribute("menutype")!=100)
			return td;
		else if (tbl.rows[1]!=null)
			return tbl.rows[1].cells[0];
	}
	
	for (var i=0; i<tbl.rows.length; i++)
	{	
		var td=tbl.rows[i].cells[0];
		if (td.getAttribute("menuid")==defaultCatId)
			return td;
	}
	return null;
}
function resetMenuSelection()
{
	var tbl=document.getElementById("tblMenu");
	for (var i=0; i<tbl.rows.length; i++)
	{	
		var td=tbl.rows[i].cells[0];
		td.setAttribute("isSelected", "false");
		if (td.className!="menuitem")   // Performance reasons
			td.className="menuitem";
	}
}
function getMenuName(td)
{
	var strName="";
	var tbl=td.getElementsByTagName("table")[0];
	if (tbl!=null && tbl.rows.length>=0)
		strName=tbl.rows[0].cells[0].innerHTML;
	return strName;
}
function onClickMenu(event, td)
{
	var index=td.getAttribute("menuindex");
	var id=td.getAttribute("menuid");
	var type=td.getAttribute("menutype");

	clearTimeout(g_liveEventTimer);
	g_liveEventTimer = null;

	g_lastChannelIndex=index;
	g_lastChannelId=id;
	g_lastChannelType=type;

	resetMenuSelection();
	td.setAttribute("isSelected", "true");
	td.className="menuitem menuitem_s";

	document.getElementById("tab0").innerHTML=getMenuName(td);
	var channelLabel = getMenuName(td);
	/*
	if (!_util.isie)
	{
		if (channelLabel.length > 25)
		{
			channelLabel = channelLabel.substring(0,25) + "...";
		}
	}*/
	var strMenuHTML="<div class='menuBarText' style='width:390px;height:19px'><span class='menuBarLabel'>"+getLocalizedString("channel_label")+"</span> "+channelLabel+"</div>";
	document.getElementById("menuBarLabel").innerHTML=strMenuHTML;
	setTab(0);
	toggleMenu("hide");
	
	if (g_firstVideoPlayed)
		jumpToTabs();

	hideAllComponents();
	switch (type)
	{
		case "0":
			_browse.getCategory(id);
			document.getElementById("div_Browse").style.display="";
			break;			
		case "1":
			_channel.getChannel(id);
			document.getElementById("div_Channel").style.display="";
			break;			
		case "4":
			_liveevent.getLiveEvents(id);
			document.getElementById("div_LiveEvents").style.display="";
			break;
		case "5":
			_podcast.getPodcasts();
			document.getElementById("div_Podcasts").style.display="";
			break;
		case "100":
			_highlight.getLatestHighlights();
			document.getElementById("div_Highlights").style.display="";
			break;

		case "3": //game day
			_gameday.getGameDay();
			document.getElementById("div_GameDay").style.display="";
			break;
		case "2": //what's new
			setTab(3);
			break;
	}
	
	_util.cancelEvt(event);
}
function onMouseOverMenu(td)
{
	td.className="menuitem menuitem_s";
}
function onMouseOutMenu(td)
{
	if (td.getAttribute("isSelected")!="true")
		td.className="menuitem";
}
function hideAllComponents()
{
	document.getElementById("div_Browse").style.display="none";
	document.getElementById("div_Highlights").style.display="none";
	document.getElementById("div_LiveEvents").style.display="none";
	document.getElementById("div_Podcasts").style.display="none";
	document.getElementById("div_Channel").style.display="none";
	document.getElementById("div_Search").style.display="none";
	document.getElementById("div_GameDay").style.display="none";
}
function getVisibleComponent()
{
	if (document.getElementById("div_Browse").style.display=="")
		return "div_Browse";
	else if (document.getElementById("div_Highlights").style.display=="")
		return "div_Highlights";
	else if (document.getElementById("div_LiveEvents").style.display=="")
		return "div_LiveEvents";
	else if (document.getElementById("div_Podcasts").style.display=="")
		return "div_Podcasts";
	else if (document.getElementById("div_Channel").style.display=="")
		return "div_Channel";
	else if (document.getElementById("div_Search").style.display=="")
		return "div_Search";
	else if (document.getElementById("div_GameDay").style.display=="")
		return "div_GameDay";
	else
		return "div_Browse";
}
function onMouseClickSearchField()
{
	var searchField=document.getElementById("txtSearch");
	if (searchField && searchField.value=="Search")
	{
		searchField.select();
		searchField.focus()
	}
}
function onClickSearch()
{
	var strSearch=document.getElementById('txtSearch').value;
	if (document.getElementById("rbSearchNHL").checked==true)
	{
		var strURL = "http://www.nhl.com/ice/search.htm?q="+encodeURIComponent(strSearch);
		window.location.href=strURL;
		return;
	}
	
	showSearchMode();

	if (document.getElementById("rbSearchFilterVideos").checked==true)
	{
		document.getElementById("content_Search").style.display="";
		document.getElementById("content_SearchHighlights").style.display="none";
		_search.simpleSearch(strSearch);
	}
	else if (document.getElementById("rbSearchFilterHighlights").checked==true)
	{
		document.getElementById("content_Search").style.display="none";
		document.getElementById("content_SearchHighlights").style.display="";
		
		var search=document.getElementById('txtSearch').value;
		_highlight.searchHighlights(search);
	}
}
function onClickSearchAdvanced()
{
	var strSearch=document.getElementById('txtSearchAdvanced').value;
	_search.simpleSearch(strSearch);
}
function jumpToTabs()
{
	var xy=_util.getMouseXY(null, document.getElementById("trNHLMenu"));
	document.documentElement.scrollTop=xy[1];

	// var xy=_util.getMouseXY(null, document.getElementById("tabsSection"));
	// if (xy[1]+200-document.documentElement.scrollTop > document.documentElement.clientHeight)
	// document.documentElement.scrollTop=xy[1];  // Bring tab into view if it's not already there	
}
function showSearchMode(bSkipJumpToTabs)
{
	g_lastChannelIndex="";
	g_lastChannelId="";

	if (bSkipJumpToTabs)
	{
		// Switching search modes of video don't require page jump
	}
	else
	{
		jumpToTabs();
	}
	
	var td=document.getElementById("tdResultsText");
	if (td!=null)
		td.innerHTML="&#xa0;";

	resetMenuSelection();

	document.getElementById("tab0").innerHTML=getLocalizedString("search_results");
	// document.getElementById("menuBarLabel").innerHTML=getLocalizedString("channel_selector");
	setTab(0);
	toggleMenu("hide");
	
	hideAllComponents();
	document.getElementById("div_Search").style.display="";
}
function hideSearchMode()
{
	// document.getElementById("mainSection").style.display="";
	document.documentElement.scrollTop=0;
}
function padNum(num)
{
	if (Number(num)<10)
		return "0"+num;
	else
		return num;
}

function formatGameTimeText(time,period,gametype)
{
	if (time=="FINAL")
		return "FINAL";

	if (Number(period)>3 && gametype=="3")
		period=4;

	if (Number(period)>5)   // Workaround for certain cases that don't have gametype, 3 OT, 4 OT, etc should show as OT.
		period=4;
		
	if (Number(period)==5)
		return formatPeriodText(period);
		
	var arr=time.split(":");
	var min=Number(arr[0]);
	var sec=Number(arr[1]);
	if (isNaN(min) || isNaN(sec))
	   return formatPeriodText(period);  // Bad Time Data - Just return period
	   
	var totalsecs=(min*60)+sec;
	
	var totalsecs_in_period=(60*20);
	if (Number(period)>3 && gametype!="3")
		totalsecs_in_period=(60*5);
	
	var diff=totalsecs_in_period-totalsecs;
	if (diff<0)
		return formatPeriodText(period);  // Bad Time Data - Just return period
	
	var newtime=padNum(Math.floor(diff/60))+":"+padNum(diff%60);

	var newtext=null;
	if (newtime=="00:00")
		newtext=getLocalizedString("end_of")+" "+formatPeriodText(period);
	else
		newtext=newtime+" "+getLocalizedString("in")+" "+formatPeriodText(period);

	return newtext;
}
				
function formatPeriodText(period)
{
	var strFormatted="";

	switch (String(period))
	{
		case "1":
			strFormatted="1st";
			break;
		case "2":
			strFormatted="2nd";
			break;
		case "3":
			strFormatted="3rd";
			break;
		case "4":
			strFormatted="OT";
			break;
		case "5":
			strFormatted="SO";
			break;
		default:
			strFormatted=period;
			break;
	}
	
	return strFormatted;
}

Console.VIDEO_VOD_FLV="fvod";
Console.VIDEO_VOD_FLV_LIVE="fvodl";
Console.VIDEO_VOD_FLV_LIVE_PAY="fvodlp";
Console.VIDEO_HIGHLIGHT_W = "whighlight";
Console.VIDEO_HIGHLIGHT_F = "fhighlight";
Console.PODCAST_F = "fpodcast";

Console.MENU_HIGHLIGHTS = "-3";

function updateDetailsForHighlights(objItem)
{
	var tblDest=null;
	var arrTypes=new Array("goal", "hit", "save", "playergoal", "playersave", "game"); 
	if (_util.inArray(arrTypes, objItem.highlightType))
		tblDest=_highlight.createDetailsGameTable(objItem.highlightType, objItem);
		
	if (tblDest!=null)
	{
		document.getElementById("content_Details").innerHTML="";
		document.getElementById("content_Details").appendChild(tblDest);
	}
}
function updateDetailsForPodcast(objItem)
{
	var strTitle = objItem.title + " ("+objItem.itemTitle+")";
	var tblDest=createDetailsTable(strTitle, objItem.itemDescription);
	if (tblDest!=null)
	{
		document.getElementById("content_Details").innerHTML="";
		document.getElementById("content_Details").appendChild(tblDest);
	}
}

function createDetailsTable(strTitle, strDescription, strDate, strMins)
{
	var tbl,tr,tr1,td,img,div,div1;

	var tblDest=document.createElement("table");
	tblDest.cellPadding="0";
	tblDest.cellSpacing="0";
	tblDest.border="0";

	var tbl,tr,tr1,td,img,div;
	tr=tblDest.insertRow(-1);
	tr.height="7";
	td=tr.appendChild(document.createElement("td"));
	img=td.appendChild(document.createElement("img"));
	img.src=g_locImage+"images/detailstop.gif";


	tr=tblDest.insertRow(-1);
	tr.height="74";
	tr.style.backgroundColor="#000000";
	td=tr.appendChild(document.createElement("td"));
	td.vAlign="top";
	td.style.paddingLeft="10px";
	td.style.paddingRight="10px";

	div=td.appendChild(document.createElement("div"));
	div.className="scrollbars";
	div.style.height="74px";
	div.style.overflow="auto";

	div1=div.appendChild(document.createElement("div"));
	div1.className="name";
	div1.style.fontWeight="bold";
	div1.style.paddingBottom="3px";
	div1.style.fontSize="10pt";
	div1.innerHTML=strTitle;

	div1=div.appendChild(document.createElement("div"));
	div1.style.fontSize="8pt";
	div1.innerHTML=strDescription;

	tr=tblDest.insertRow(-1);
	tr.height="15";
	tr.style.backgroundColor="#000000";
	td=tr.appendChild(document.createElement("td"));
	td.style.paddingLeft="10px";
	td.style.paddingRight="10px";
	var strText = "";
	if (strDate!=null)
		strText+=strDate + "#&xa0;";
	if (strMins!=null && strMins!="")
		strText+=strMins + "&#xa0;" + getLocalizedString("mins");
	td.innerHTML=strText;

	tr=tblDest.insertRow(-1);
	tr.height="7";
	td=tr.appendChild(document.createElement("td"));
	img=td.appendChild(document.createElement("img"));
	img.src=g_locImage+"images/detailsbottom.gif";

	return tblDest;
}		
function __playCustomVideo(videoType, videoId, videoPath, videoName, videoDesc, videoFormats)
{
	var ret = null;
	if(Console.VIDEO_HIGHLIGHT_F==videoType || Console.VIDEO_HIGHLIGHT_W==videoType)
	{
		var objItem=null;
		
		if (videoId!=null)
		{
			objItem=m_objItems[videoId.getAttribute("objItem")];
			if (objItem.gameObjItem==null)
				objItem.gameObjItem=g_lastHighlightGameObjItem;
			
			updateDetailsForHighlights(objItem);
			ret = new Object();
			ret.path = videoPath;
			ret.isLive = false;
			ret.autoDetect = true;
			ret.disableEncryptVideoPath = true;
			ret.trackString = "Highlight " + _highlight.formatCategoryText(objItem.highlightType);
			ret.eventId = objItem.eventId;
			switch(objItem.highlightType)
			{
			case "game":
				ret.trackString += " " + objItem.eventId + ": Game " + objItem.gameId + " - " + objItem.awayTeamName + " @ " + objItem.homeTeamName + " on " + objItem.gameDate;
				ret.trackId = ret.trackString;
				ret.isPlayer = false;
				ret.videoId = objItem.gameSeason + "," + objItem.gameType + "," + objItem.gameId;
				ret.eventId = null;
				break;
			case "goal":
				ret.trackString += " " + objItem.trackId + ": " + objItem.scoringPlayerName + " (";
				if (objItem.strength!="")
					ret.trackString += objItem.strength+", ";
				if(window._centerice!=null)
					ret.trackString += objItem.time + " " + getLocalizedString("in") + " " + _centerice.formatPeriodText(objItem.period);
				ret.trackString += ") - " + "Game " + objItem.gameObjItem.gameId + " - " + objItem.gameObjItem.awayTeamName + " @ " + objItem.gameObjItem.homeTeamName + " on " + objItem.gameObjItem.gameDate;
				ret.trackId = ret.trackString;
				ret.isPlayer = false;
				ret.videoId = objItem.gameObjItem.gameSeason + "," + objItem.gameObjItem.gameType + "," + objItem.gameObjItem.gameId;
				break;
			case "hit":
				ret.trackString += " " + objItem.trackId + ": " + objItem.hittingPlayerName + " " + getLocalizedString("on") + " " + objItem.playerHitName + " (";
				if(window._centerice!=null)
					ret.trackString += objItem.time + " " + getLocalizedString("in") + " " + _centerice.formatPeriodText(objItem.period);
				ret.trackString += ") - " + "Game " + objItem.gameObjItem.gameId + " - " + objItem.gameObjItem.awayTeamName + " @ " + objItem.gameObjItem.homeTeamName + " on " + objItem.gameObjItem.gameDate;
				ret.trackId = ret.trackString;
				ret.isPlayer = false;
				ret.videoId = objItem.gameObjItem.gameSeason + "," + objItem.gameObjItem.gameType + "," + objItem.gameObjItem.gameId;
				break;
			case "save":
				ret.trackString += " " + objItem.trackId + ": " + objItem.goalieName + " " + getLocalizedString("on") + " " + objItem.shooterName + " (";
				if(window._centerice!=null)
					ret.trackString += objItem.time + " " + getLocalizedString("in") + " " + _centerice.formatPeriodText(objItem.period);
				ret.trackString += ") - " + "Game " + objItem.gameObjItem.gameId + " - " + objItem.gameObjItem.awayTeamName + " @ " + objItem.gameObjItem.homeTeamName + " on " + objItem.gameObjItem.gameDate;
				ret.trackId = ret.trackString;
				ret.isPlayer = false;
				ret.videoId = objItem.gameObjItem.gameSeason + "," + objItem.gameObjItem.gameType + "," + objItem.gameObjItem.gameId;
				break;
			case "playergoal":
				ret.trackString += " By Player " + objItem.trackId + ": " + objItem.playerObjItem.firstName + " " + objItem.playerObjItem.lastName + " (" + objItem.playerObjItem.teamCity + " " + objItem.playerObjItem.teamName + ") ";
				ret.trackString += objItem.gameDate + " (" + objItem.awayTeam + " @ " + objItem.homeTeam + ") ";
				if(objItem.strength!="")
					ret.trackString += objItem.strength+", ";
				if(window._centerice!=null)
					ret.trackString += objItem.time + " " + getLocalizedString("in") + " " + _centerice.formatPeriodText(objItem.period);
				ret.trackId = ret.trackString;
				ret.isPlayer = true;
				ret.videoId = objItem.playerId;
				break;
			case "playersave":
				ret.trackString += " By Goalie " + objItem.trackId + ": " + objItem.playerObjItem.firstName + " " + objItem.playerObjItem.lastName + " (" + objItem.playerObjItem.teamCity + " " + objItem.playerObjItem.teamName + ") " + getLocalizedString("on") + " " + objItem.shooterName + " ";
				ret.trackString += objItem.gameDate + " (" + objItem.awayTeamName + " @ " + objItem.homeTeamName + ") ";
				if(window._centerice!=null)
					ret.trackString += objItem.time + " " + getLocalizedString("in") + " " + _centerice.formatPeriodText(objItem.period);
				ret.trackId = ret.trackString;
				ret.isPlayer = true;
				ret.videoId = objItem.playerId;
				break;
			default:
				ret.trackString += objItem.eventId;
				ret.trackId = ret.trackString;
				ret.isPlayer = false;
				ret.videoId = objItem.gameSeason + "," + objItem.gameType + "," + objItem.gameId;
			}
		}
	}
	else if(Console.PODCAST_F==videoType)
	{
		var objItem = videoId;
		updateDetailsForPodcast(objItem);

		ret = new Object();
		ret.link = objItem.link;
		ret.title = objItem.title + " ("+objItem.itemTitle+")";;
	}
	return ret;
}
function setAdMode(bShowingAds)
{
	if (bShowingAds)
	{
		g_consoleMode="ads";
		document.documentElement.scrollTop=0;
		var sels=document.getElementsByTagName("SELECT");
		for (var i=0; i<sels.length; i++)
			sels[i].style.visibility = "hidden";
	}
	else
	{
		g_consoleMode="";
		var sels=document.getElementsByTagName("SELECT");
		for (var i=0; i<sels.length; i++)
			sels[i].style.visibility = "visible";
	}
	coverItem("tdLogin", bShowingAds);
	coverItem("trTopBanner", bShowingAds);
	coverItem("trNHLMenu", bShowingAds);
	coverItem("trLogosSection", bShowingAds);
	coverItem("trMenuBar", bShowingAds);
	coverItem("tdDetailsComingSoon", bShowingAds);
	coverItem("tabsSection", bShowingAds);
	coverItem("tdFooter", bShowingAds);
}
function coverItem(compId, bShow)
{
	var id="divCover_"+compId;
	var div=document.getElementById(id);
	if (!div)
	{
		div=document.createElement("div");
		div.id=id;
		document.body.appendChild(div);
		div.style.position="absolute";
		div.className="divCover";
		
		if (compId=="tdDetailsComingSoon")
		{
			div.style.paddingLeft="23px";
			div.style.paddingTop="55px";
			div.className="divCoverNoAlpha";
			var adDiv=document.createElement("div");
			adDiv.id="iptvAdDiv";
			adDiv.style.width="300px";
			adDiv.style.height="250px";
			adDiv.style.overflow="hidden";
			div.appendChild(adDiv);
		}
	}
	
	if (bShow)
	{
		var comp=document.getElementById(compId);
		if (!comp)
			return;

		div.style.display="";
		var xy=_util.getMouseXY(null, comp);
		if (_util.isie)
		{
			xy[0]-=2;
			xy[1]-=2;
		}
		
		var w=comp.offsetWidth+5;
		var h=comp.offsetHeight;
		if (compId=="tdDetailsComingSoon")  // Adjust for padding for now
		{	w-=5;
			h=398;   // Height may be wrong if there's no content...
		}
		
		div.style.width=w+"px";
		div.style.height=h+"px";
		div.style.top=xy[1]+"px";
		div.style.left=xy[0]+"px";
	}
	else
		div.style.display="none";
}
function onClickPlayPrev()
{
	_console.playPrevVideo();
}
function onClickPlayNext()
{
	_console.playNextVideo();
}
function onClickComingUp(index)
{
	var tr=document.getElementById("trComingUp_"+index);
	if (tr.objVideo && tr.objVideo.onclick!=null)
		tr.objVideo.onclick();
}
function onClickNextHighlightDate(bNext)
{
	var offset=1;
	if (!bNext)
		offset=-1;
	var date=new Date(document.getElementById("highlightMonth").value+"/"+document.getElementById("highlightDay").value+"/"+document.getElementById("highlightYear").value);

	var filterDay=document.getElementById("highlightDay");
	if (filterDay!=null && filterDay.style.display!="none")
		date.setDate(date.getDate()+offset);
	else
		date.setMonth(date.getMonth()+offset);
	
	_util.setListBoxValue(document.getElementById("highlightMonth"),date.getMonth()+1);
	_util.setListBoxValue(document.getElementById("highlightDay"),date.getDate());  // Add/Subtract one day
	_util.setListBoxValue(document.getElementById("highlightYear"),date.getFullYear());
	_highlight.getHighlights();
}
function onClickNextGamedayMonth(bNext)
{
	var offset=1;
	if (!bNext)
		offset=-1;
	var date=new Date(document.getElementById("gamedayMonth").value+"/01/"+document.getElementById("gamedayYear").value);

	date.setMonth(date.getMonth()+offset);
	
	_util.setListBoxValue(document.getElementById("gamedayMonth"),date.getMonth()+1);
	_util.setListBoxValue(document.getElementById("gamedayYear"),date.getFullYear());
	_gameday.getGameDay(document.getElementById("gamedayMonth").value,document.getElementById("gamedayYear").value);
}
function onChangeHighlightsFilter()
{
	g_highlightFilterTeam=document.getElementById("selHighlightsFilterTeam").value;
	
	var filterDay=document.getElementById("highlightDay");
	if (g_highlightFilterTeam=="")
	{
		if (filterDay!=null)
			filterDay.style.display="";
	}
	else
	{
		if (filterDay!=null)
			filterDay.style.display="none";
	}
	_highlight.getHighlights();	
}
function onMouseOverComingUpItem(table)
{
	var divs=table.getElementsByTagName("div");
	divs[1].className="comingUpLabel comingUpSel";
	//divs[2].className="comingUpDesc comingUpSel";
	table.className="comingUp_s";
}
function onMouseOutComingUpItem(table)
{
	var divs=table.getElementsByTagName("div");
	divs[1].className="comingUpLabel";
	//divs[2].className="comingUpDesc";	
	table.className="comingUp";
}
function getWhatsHot(type)
{
	document.getElementById("whatshot_link1").className="whatshot";
	document.getElementById("whatshot_link2").className="whatshot";
	document.getElementById("whatshot_link3").className="whatshot";
	document.getElementById("whatshot_link4").className="whatshot";
	document.getElementById("whatshot_link"+type).className="whatshot_s";

	_whatshot.getCategory("hotvideos_"+type)
}
