/****************************************************** * Global Variables goes here ******************************************************/window.t1PodObj			= null;    window.nbaMainTabMgr	= null;   window.nbaLastVidPageId	= 0;window.nbaSubTabLastElm	= null;window.nbaCSIVidTimer	= null;window.nbaCSIHeadTimer	= null;window.nbaCSITMilliSec	= 10000;window.nbaCSIVidDirty	= false;window.nbaCSIHeadDirty	= false;window.nbaT2InitLoad	= true;window.nbaT2Config		= null;  window.cnnad_adUrls		= new Array();   window.nbaHomepage		= function(){};  /****************************************************** * Initialization function - will trigger after DOM  * load event. All code requiring initializatin shoud be  * included as part of this function ******************************************************/    	function nbaHomepageAdsInit(){	/*Ads hash initialization: various ads displayed on tab selection*/	cnnad_adUrls['newsVideo'] = '/nba_adspaces/2.0/homepage/marketing/nba_league/spon.300x150.ad';	cnnad_adUrls['BOS'] = '/nba_adspaces/2.0/homepage/marketing/celtics/spon.300x150.ad';	cnnad_adUrls['NJN'] = '/nba_adspaces/2.0/homepage/marketing/nets/spon.300x150.ad';	cnnad_adUrls['NYK'] = '/nba_adspaces/2.0/homepage/marketing/knicks/spon.300x150.ad';	cnnad_adUrls['PHI'] = '/nba_adspaces/2.0/homepage/marketing/76ers/spon.300x150.ad';	cnnad_adUrls['TOR'] = '/nba_adspaces/2.0/homepage/marketing/raptors/spon.300x150.ad';	cnnad_adUrls['CHI'] = '/nba_adspaces/2.0/homepage/marketing/bulls/spon.300x150.ad';	cnnad_adUrls['CLE'] = '/nba_adspaces/2.0/homepage/marketing/cavaliers/spon.300x150.ad';	cnnad_adUrls['DET'] = '/nba_adspaces/2.0/homepage/marketing/pistons/spon.300x150.ad';	cnnad_adUrls['IND'] = '/nba_adspaces/2.0/homepage/marketing/pacers/spon.300x150.ad';	cnnad_adUrls['MIL'] = '/nba_adspaces/2.0/homepage/marketing/bucks/spon.300x150.ad';	cnnad_adUrls['ATL'] = '/nba_adspaces/2.0/homepage/marketing/hawks/spon.300x150.ad';	cnnad_adUrls['CHA'] = '/nba_adspaces/2.0/homepage/marketing/bobcats/spon.300x150.ad';	cnnad_adUrls['MIA'] = '/nba_adspaces/2.0/homepage/marketing/heat/spon.300x150.ad';	cnnad_adUrls['ORL'] = '/nba_adspaces/2.0/homepage/marketing/magic/spon.300x150.ad';	cnnad_adUrls['WAS'] = '/nba_adspaces/2.0/homepage/marketing/wizards/spon.300x150.ad';	cnnad_adUrls['DAL'] = '/nba_adspaces/2.0/homepage/marketing/mavericks/spon.300x150.ad';	cnnad_adUrls['HOU'] = '/nba_adspaces/2.0/homepage/marketing/rockets/spon.300x150.ad';	cnnad_adUrls['MEM'] = '/nba_adspaces/2.0/homepage/marketing/grizzlies/spon.300x150.ad';	cnnad_adUrls['NOH'] = '/nba_adspaces/2.0/homepage/marketing/hornets/spon.300x150.ad';	cnnad_adUrls['SAS'] = '/nba_adspaces/2.0/homepage/marketing/spurs/spon.300x150.ad';	cnnad_adUrls['DEN'] = '/nba_adspaces/2.0/homepage/marketing/nuggets/spon.300x150.ad';	cnnad_adUrls['MIN'] = '/nba_adspaces/2.0/homepage/marketing/timberwolves/spon.300x150.ad';	cnnad_adUrls['OKC'] = '/nba_adspaces/2.0/homepage/marketing/thunder/spon.300x150.ad';	cnnad_adUrls['POR'] = '/nba_adspaces/2.0/homepage/marketing/trailblazers/spon.300x150.ad';	cnnad_adUrls['UTA'] = '/nba_adspaces/2.0/homepage/marketing/jazz/spon.300x150.ad';	cnnad_adUrls['GSW'] = '/nba_adspaces/2.0/homepage/marketing/warriors/spon.300x150.ad';	cnnad_adUrls['LAC'] = '/nba_adspaces/2.0/homepage/marketing/clippers/spon.300x150.ad';	cnnad_adUrls['LAL'] = '/nba_adspaces/2.0/homepage/marketing/lakers/spon.300x150.ad';	cnnad_adUrls['PHX'] = '/nba_adspaces/2.0/homepage/marketing/suns/spon.300x150.ad';	cnnad_adUrls['SAC'] = '/nba_adspaces/2.0/homepage/marketing/kings/spon.300x150.ad';}function nbaHomepageT1Init(){	/*T1 initialization: start rotation*/	t1PodObj = new nbaHomepage.t1PodNav("nbaT1PodNav", "nbaT1PC");	t1PodObj.setT1Timer(4000);	t1PodObj.startRotation();}function nbaHomepageT2Init(){	/*T2 initialization*/	nbaT2Config 	= new nbaHomepage.t2Config();	nbaMainTabMgr	= new nbaHomepage.TabManager();		nbaMainTabMgr.tabInit("nbaTabsMain", "nbaT2Content");		Event.observe( document, 'unload', Event.unloadCache );}function nbaHomepageCalInit(){	/*Above T1 - initialize month calendar*/	initializeCalendar();		nbaHomepageAdsInit();}/******************************************************************************* * T2 Add-A-Team overlay hide/show *******************************************************************************/nbaHomepage.toggleT2overlay = function(oDiv, onOff){	var t2Overlay = $(oDiv);	var isShow = true;	if (onOff){		if (t2Overlay.id == "nbaT2Overlay" && nbaMainTabMgr.getTabCount() >= 4){			$("nbaT2Msg1").show();		}else{					t2Overlay.show();		}	}else{		t2Overlay.hide();	}}/******************************************************************************* * T2 Pagination pass-through: determins left or right *******************************************************************************/nbaHomepage.vidPageScroll = function(oPage, oDirection){	/*	if (oDirection == "lt"){		nbaHomepage.switchPage(oPage)	};if (oDirection == "rt"){		nbaHomepage.switchPage(oPage)	}*/	nbaHomepage.switchPage(oPage)}/******************************************************************************* * T2 pagination: video page navigation back and forth *******************************************************************************/nbaHomepage.switchPage = function(oPage){	var lastElm = $(("nbaRnd" + nbaLastVidPageId));	var nextElm = $(("nbaRnd" + oPage));	if (nbaLastVidPageId != oPage){		lastElm.style.display = "none";		nextElm.style.display = "block";			}	nbaLastVidPageId = oPage;}/******************************************************************************* * Timer callback to provide fake CSI error reporting *******************************************************************************/nbaHomepage.nbaCSITimer = function(oElmId, oEntity){	if (oEntity == "video"){		if (nbaCSIVidDirty){			$(oElmId).innerHTML = nbaT2Config.nbaCSIErrorMsg.badFileJson;			nbaCSIVidDirty = false;		}	}else{		if (nbaCSIHeadDirty){			$(oElmId).innerHTML = nbaT2Config.nbaCSIErrorMsg.badFileJson;			nbaCSIHeadDirty = false;		}	}	}/******************************************************************************* * Get current domain to remain independent of the test environments *******************************************************************************/nbaHomepage.getNBABaseUrl = function(){    var server = window.location.hostname;    if (server.match(/webdev|payp1/i)) {        return 'http://nba-webdev-preview.turner.com';    }else if (server.match(/ref|ite/)) {		return 'http://nba-ref-preview.nba.com';    }else if (server.match(/beta/)) {		return 'http://beta.nba.com';    }else if (server.match(/qa/)){    	return 'http://nba-qa-preview.nba.com';    }else {		return 'http://www.nba.com';    }}/******************************************************************************* * Determine Video Age *******************************************************************************/ nbaHomepage.getVideoAge = function(dateUTS) { 	var today = new Date(); 	var vidDate = new Date((dateUTS*1000)); 	var diffDate = new Date(today - vidDate);   	var dayDiff = Math.round((diffDate.getTime() / 24 / 60 / 60 / 1000)); 	if (dayDiff == 0) {  		return 'today'; 	} else if (dayDiff < 28) {  		return dayDiff + ((dayDiff > 1) ? ' days' : ' day') + ' ago';    	} else if (dayDiff < 365) { 		var months = Math.round(dayDiff / 30);  		return months + ((months > 1) ? ' months' : ' month') + ' ago';    	} else {        var dateUnitsString = vidDate.toDateString();        var arrDate = dateUnitsString.split(' ');  		return arrDate[1] + (arrDate[1] != 'May' ? '. ' : ' ') + arrDate[2] + ', '+ arrDate[3]; 	}}/******************************************************************************* * Truncate Video Title *******************************************************************************/nbaHomepage.truncateString = function(longStr, maxLength){	var oTxt =  new String(longStr);		oTxt = (oTxt.length > maxLength) ? (oTxt.substring(0, maxLength) + " ...") : oTxt;	return oTxt;}	/****************************************************** * T1 - Nav/Rotate Object ******************************************************/nbaHomepage.t1PodNav = function(t1ThumbContainer, t1ContPrefix){        			var nbaT1PodNav 	= $(t1ThumbContainer);		var nbaT1ContPrefix	= t1ContPrefix;	var nbaT1Timeout	= 7000;	var navArry			= [];	var lastPosition	= 0;	var t1PodTimer		= null;	var isErr			= false; //this is to prevent timer loop in case anything goes wrong.			this.startRotation 	= _startRotation;	this.doRotate		= _doRotate;	this.stopRotate		= _stopRotate;	this.doThumbOver	= _doThumbOver;	this.showHideT1		= _showHideT1;	this.setT1Timer		= _setT1Timer;			function _startRotation()	{		try{			navArry = nbaT1PodNav.getElementsBySelector('li');				_getOverlayDiv(navArry[lastPosition]).addClassName("nbaSpanOverlay");				_setMouseOverEvents();			_doRotate();		}catch(eRR){			//Need to push this alert out to somewhere			//alert("Unexpected Error: Unable to initialize T1!");			}	} 	function _setT1Timer(timeVal){		nbaT1Timeout = timeVal	}	function _setMouseOverEvents()	{		for (var i = 0; i < navArry.length; i++)		{			try{				var iElement = nbaT1ContPrefix + i;				//I have to setup this way for thumb so I can pass in the index				navArry[i].observe('mouseover', _thumbHandler.bindAsEventListener(Event, true, i));				navArry[i].observe('mouseout', _thumbHandler.bindAsEventListener(Event, false, i));							$(iElement).observe('mouseover', function(e){_stopRotate();});				$(iElement).observe('mouseout', function(e){_doRotate(); });			}catch(_eRR){				isErr = true;				alert("setMouseOverEvents(): Content element with ID [ " + iElement + "] was not found in the DOM");					break;			}		}	}	function _thumbHandler(e) {		var argArry = $A(arguments);		argArry.shift();		if (argArry[0]){			_doThumbOver(argArry[1])		}else{			_doRotate();		}	}	function _doRotate(){		if(!isErr){			t1PodTimer = setTimeout(function(){_showHideT1()},nbaT1Timeout);		}	}	function _stopRotate(){		clearTimeout(t1PodTimer);		t1PodTimer = null;	}	function _doThumbOver(thumbId){		_stopRotate();				try{			//hide the last position			$(nbaT1ContPrefix + lastPosition).hide();				_getOverlayDiv(navArry[lastPosition]).removeClassName("nbaSpanOverlay");						//show current position			$(nbaT1ContPrefix + thumbId).show();			_getOverlayDiv(navArry[thumbId]).addClassName("nbaSpanOverlay");							//set the last position			lastPosition = thumbId;		}catch(_eRR){			alert("doThumbOver(): Content element with ID [ " + (nbaT1ContPrefix + lastPosition) + "] or [ " + (nbaT1ContPrefix + thumbId) + "] was not found in the DOM");			}	}	function _showHideT1()	{		var nextPosition 	= ((lastPosition + 1) > navArry.length-1) ? 0 : (lastPosition + 1);		var currContent 	= nbaT1ContPrefix + lastPosition;		var nextContent 	= nbaT1ContPrefix + nextPosition;					try{			//Switch overlay here			_getOverlayDiv(navArry[lastPosition]).removeClassName("nbaSpanOverlay");			_getOverlayDiv(navArry[nextPosition]).addClassName("nbaSpanOverlay");						//Switch the content here			$(currContent).hide();			$(nextContent).show();			_doRotate();		}catch(_eRR){			isErr = true;s			alert("t1PodNav._showHideT1(): Content element with ID [ " + currContent + "] or [ " + nextContent + "] was not found in the DOM");			}		lastPosition = nextPosition;	}		function _getOverlayDiv(liElement)	{		var liFirstChild 	 = liElement.firstDescendant();		var liFirstChildDivs = liFirstChild.getElementsBySelector('div')		return liFirstChildDivs[0];	}} 	/******************************************************************************* * T2 Tab manager object, which is created once the DOM is loaded  *******************************************************************************/nbaHomepage.TabManager = function(){	var mAgent 				= navigator.appName;	var lastTab				= null;	var maxTabs			= 4;	var tabHighlightIndx	= 0;	var tabsArray			= null;	var dataContainerDiv	= null;	var tabsContainerDiv 	= null;	var cacheLoadDirty		= true;	var storage				= null;		this.tabInit 		= _tabInit;	this.show	 		= _show;	this.showTabByIndex = _showTabByIndex;	this.showTabByName	= _showTabByName;	this.addTeamTab		= _addTeamTab;	this.removeTab		= _removeTab;	this.getTabCount	= _getTabCount;		function _getTabCount(){		return tabsArray.length;	}	function _tabInit(oTabsContainer, oVideoContainer) 	{		try	{						//store the containers for later			tabsContainerDiv = $(oTabsContainer);			dataContainerDiv = $(oVideoContainer);						tabsArray = tabsContainerDiv.getElementsBySelector('li');			_show(0); //show the first tab			_setEvents(); //set onclick events						try{				//load cached tabs				storage=StorageManager.getInstance().getStorage(true);				storage.setOnload( _loadCacheTabs );				storage.load();			}catch(_eRR){				cacheLoadDirty = false;					//Do nothing - pre-saved tabs will not be reinstated				}					}		catch(eRR){			_setPageError("Unexpected Error: While initialzing T2 tabs!");			}				}	function _loadCacheTabs()	{			var tabsTot = 0;		var tabIdent = "";		var tabName  = "";		//Errors will bubble up in which case do nothing		if (storage.get('tabsTot') != null)		{		 	tabsTot = parseInt(storage.get('tabsTot'));		 	for (var i = 1; i <= tabsTot; i++)		 	{		 		tabIdent = 'nbaTab' + i + 'ident'				tabName  = 'nbaTab' + i + 'name';		 		if (storage.get(tabIdent) != null) {		 			tabIdent = storage.get(tabIdent);		 		}else{		 			tabIdent = "";		 		}		 		if (storage.get(tabName) != null) {		 			tabName = storage.get(tabName);		 		}else{		 			tabName = "";		 		}		 		if (tabIdent && tabName){		 			_addTeamTab(tabIdent, tabName)		 		}		 	}		}			cacheLoadDirty = false;		}		function _saveCacheTabs()	{			var now =  new Date();		var expireDate = "7/1/";			expireDate += (now.getMonth() >= 6) ? (now.getFullYear() + 1) : now.getFullYear();			expireDate = new Date(expireDate);		var tabIdent = "";		var tabName  = "";				try{			if(storage && tabsArray.length > 1)			{				storage.put('tabsTot',tabsArray.length-1, expireDate); 				for (var i = 1; i < tabsArray.length; i++)				{					var tabIDArry = ((tabsArray[i].firstDescendant()).id).split("#");					tabIdent = tabIDArry[0];					tabName  = tabIDArry[1];					storage.put('nbaTab' + i + 'ident',tabIdent,expireDate);					storage.put('nbaTab' + i + 'name',tabName, expireDate); 				}				storage.save();			}else{				 storage.put('tabsTot','0'); 				 storage.save(); 			}		}catch(_eRR){			//Do Nothing		}	}	function _removeTab(oTabIndex)	{		var tempArry = new Array();		var counter = 0;		if ( (oTabIndex >= 0) && (oTabIndex < tabsArray.length) )		{			for (var i = 0; i < tabsArray.length; i++)			{ 				if (parseInt(oTabIndex) != parseInt(i)){					tempArry[counter++] = tabsArray[i];					}					}						var tabHghlght = _nextTabHighlight(oTabIndex) //before remove get the next tabHighlight			tabsArray[oTabIndex].remove();							tabsArray = tempArry;			_removeEvents();			_setEvents();			_show(tabHghlght);			_saveCacheTabs();		}else{			_setPageError("_show(): invalid tab index [ " + oTabIndex + " ]!");			}	}		function _addTeamTab(oTabIdentity, oTabName)	{		var okToAdd = (tabsArray.length < maxTabs);		if (okToAdd)		{			//check for duplicates			for (var i = 0; i < tabsArray.length; i++)			{ 				var elmIdArry = ((tabsArray[i].firstDescendant()).id).split("#");				if (String(elmIdArry[0]) == String(oTabIdentity)){					okToAdd = false;					break;				}					}			if (okToAdd)			{				var newLI = $(document.createElement('li'));				var newA  = $(document.createElement('a'));				var closeDiv  = $(document.createElement('div'));				var textA = $(document.createTextNode(oTabName));							newLI.addClassName('nbaT2TeamTab');				closeDiv.addClassName('nbaT2Close');				_setRemoveClick(closeDiv, tabsArray.length);				newA.href = 'javascript:void(0)';				newA.id = oTabIdentity + '#' + oTabName + '#main';				_setTabOnClick(newA, tabsArray.length)				newA.appendChild(textA)		    	newLI.appendChild(newA);		    	newLI.appendChild(closeDiv);		    	tabsContainerDiv.appendChild(newLI);		    	tabsArray.push(newLI)		    			    	if (!cacheLoadDirty){		    		_show(tabsArray.length-1);		    		//cache the tab		    		_saveCacheTabs();		    	}		    	nbaHomepage.toggleT2overlay("nbaT2Overlay", false);		    }else{		    	nbaHomepage.toggleT2overlay("nbaT2Msg2", true);			    }		}else{			nbaHomepage.toggleT2overlay("nbaT2Overlay", false);			nbaHomepage.toggleT2overlay("nbaT2Msg1", true);							}	}	function _nextTabHighlight(oTabIndex)	{		var newIndx = 0;				if (oTabIndex == tabHighlightIndx){			newIndx = (oTabIndex-1);		}else if (oTabIndex < tabHighlightIndx){			newIndx = tabHighlightIndx-1;		}else if (oTabIndex > tabHighlightIndx){			newIndx = tabHighlightIndx;		}return newIndx;	}	function _setEvents()	{		for (var i = 0; i < tabsArray.length; i++)		{			try{				var liDescendants = tabsArray[i].descendants();				if(i == 0){					_setTabOnClick(liDescendants[0], i);				}else{					_setTabOnClick(liDescendants[0], i);					_setRemoveClick(liDescendants[1], i);				}			}catch(_eRR){								_setPageError("setOnclickEvents(): Error assigning tab's onClick event!");					break;			}		}	}	function _removeEvents()	{		for (var i = 0; i < tabsArray.length; i++)		{			var liDescendants = tabsArray[i].descendants();			if (i == 0){				liDescendants[0].stopObserving('click')			}else{				liDescendants[0].stopObserving('click')				liDescendants[1].stopObserving('click')			}		}	}	function _setTabOnClick(oElm, oTabIndex)	{		oElm.observe('click', _tabOnClickHandler.bindAsEventListener(Event, oTabIndex));	}	function _setRemoveClick(oElm, oTabIndex)	{		oElm.observe('click', _tabRemoveHandler.bindAsEventListener(Event, oTabIndex));	}	function _tabOnClickHandler(e) {		var argArry = $A(arguments);		argArry.shift();		_show(argArry[0]);	}	function _tabRemoveHandler(e) {		var argArry = $A(arguments);		argArry.shift();		_removeTab(argArry[0]);	}	function _show(oTabIndex) 	{		if ( (oTabIndex >= 0) && (oTabIndex < tabsArray.length) )		{						var elm = tabsArray[oTabIndex];			var elmFirstChild = elm.firstDescendant();			var elmIdArry   = (String(elmFirstChild.id)).split("#");			var elmIdent 	= elmIdArry[0]; //strip out tab Identity			var elmName 	= elmIdArry[1]; //strip out tab Name						//deactivate the current tab			_hideLastClicked();						//activate the new tab			_setClassName(elm, 'active');						//set new to be the current tab			lastTab = elm;			tabHighlightIndx = oTabIndex;						//switch ads			//cnnad_showAdByKey(elmIdent, 759005);			cnnad_showAdByKey(elmIdent, 1313);						//hand off to subtab handler			nbaHomepage.subTabHandler(oTabIndex, elmIdent, elmName)					}else{			_setPageError("_show(): invalid tab index [ " + oTabIndex + " ]!");			}				}		function _showTabByName(oTabName)	{		var isFound = false;		for (var i = 0; i < tabsArray.length; i++)		{			var elmIDArry = (String(tabsArray[i].id)).split("#")			if( (String(elmIDArry[0])).toUpperCase() == (String(oTabName)).toUpperCase()){				isFound = true;				_show(i);				break;			}		}		if (!isFound){			_setPageError("_showTabByName(): Tab name [ " + oTabName + " ] not found!");			}	}	function _showTabByIndex(tabIndex){		_show(tabIndex)	}	function _hideLastClicked() {		if(lastTab != null){			lastTab.removeClassName('active');		}	}	function _setClassName(elm, oClassVal){		elm.addClassName(oClassVal)	}		function _setPageError(oMsg){		dataContainerDiv.innerHTML = '<div class="nbaT2Messages">' + oMsg + '</div>';	}}/******************************************************************************* * T2 sub-category click handler *******************************************************************************/nbaHomepage.subTabHandler = function(oTabIndex, oTabIdent, oTabName){	var navHTML				= "";	var nbaSubTabContainer	= $("nbaSubTabContainer");	var nbaVideoContainer	= $("nbaVideoContainer");	var nbaHeadContainer	= $("nbaHeadlineContainer");	var tabIdentity			= (String(oTabIdent)).toUpperCase();	var tabName				= (String(oTabName)).toLowerCase();	var tabDisplayName		= (tabName.substring(0,1)).toUpperCase() + tabName.substring(1,tabName.length);	var headlinePath		= "";		//show/write sub navigation	nbaSubTabContainer.innerHTML = nbaHomepage.buildSubNav(oTabIndex, tabIdentity, tabName, tabDisplayName);	nbaSubTabContainer.show();			if (oTabIndex == 0){				if (!nbaT2InitLoad){						nbaHomepage.subTabOnClick('nbaPrvRndnav0','highlights', 'Highlights', 'league', tabName)			headlinePath = nbaT2Config.leaugeHeadJSONPath + "league" + "_headlines.html";			nbaHeadContainer.innerHTML = nbaT2Config.nbaCSIErrorMsg.loading;			nbaHomepage.getHeadlineJSON(headlinePath, nbaHeadContainer.id, tabIdentity, tabName, tabDisplayName)		}else{			var leagueFirstNav = $('nbaPrvRndnav0')						leagueFirstNav.addClassName('nbaPrvRndNavSelected');			nbaSubTabLastElm = leagueFirstNav;			nbaT2InitLoad = false;		}	}else{		nbaHomepage.subTabOnClick('nbaPrvRndnav0','mostrecent', 'Most Recent', tabIdentity, tabName)		headlinePath = nbaT2Config.teamHeadJSONPath + tabIdentity + "_headlines.html";		nbaHeadContainer.innerHTML = nbaT2Config.nbaCSIErrorMsg.loading;		nbaHomepage.getHeadlineJSON(headlinePath, nbaHeadContainer.id, tabIdentity, tabName, tabDisplayName)	}			}/******************************************************************************* * T2 dynamically build sub-nav from configuration settings *******************************************************************************/nbaHomepage.buildSubNav = function(oIndex, oIdent, oName, oDisplayName){	var navHTML = "";	var subNavArry = null;	if (oIndex == 0)	{		subNavArry = nbaT2Config.tabSubCategory.league;		for (var i = 0; i < subNavArry.length; i++)	{			navHTML +='<div id="nbaPrvRnd1"><a id="nbaPrvRndnav' +i+'" class="nbaPrvRndNavItem" onclick=\'javascript:nbaHomepage.subTabOnClick(this,"'+subNavArry[i].section+'", "'+subNavArry[i].displayName+ '", "'+subNavArry[i].entity+'", "'+oName+'");\' alt="Round 1">' +subNavArry[i].displayName+ '</a></div>';		}				navHTML +='<div id="nbaT2VidAll"><a href="' + nbaHomepage.getNBABaseUrl() + '/video/">See All NBA Videos</a></div>';			}else{		subNavArry = nbaT2Config.tabSubCategory.team;		for (var i = 0; i < subNavArry.length; i++)	{			var iDispName = (subNavArry[i].section == "originals") ? (oDisplayName + " " + subNavArry[i].displayName) : subNavArry[i].displayName			navHTML +='<div id="nbaPrvRnd1"><a id="nbaPrvRndnav'+i+'" class="nbaPrvRndNavItem" onclick=\'javascript:nbaHomepage.subTabOnClick(this,"'+subNavArry[i].section+'","'+subNavArry[i].displayName+'","' + oIdent + '","' + oName+ '");\' alt="Round 1">'+iDispName+'</a></div>';		}		navHTML +='<div id="nbaT2VidAll"><a href="' +  nbaHomepage.getNBABaseUrl() + '/video/' + oName + '">Browse All ' + oDisplayName + ' Videos</a></div>';	}	nbaSubTabLastElm =  null;	return navHTML;}/******************************************************************************* * T2 Sub-nav click-through  *******************************************************************************/nbaHomepage.subTabOnClick = function(oElm, oSection, oSecName, oIdent, oName, oIDOL){	var contentHTML			= "";	var jsonfilePath		= "";	var vidfilename			= ""; 	var vidFullPath			= "";	var headFilename		= "";	var headfullPath		= "";	var IDOL_Category		= null;		var nbaSubTabContainer	= $("nbaSubTabContainer");	var nbaVideoContainer	= $("nbaVideoContainer");	var activeElm 			= $(oElm);		//set tab highlight	if (activeElm != nbaSubTabLastElm){		activeElm.addClassName('nbaPrvRndNavSelected');		if (nbaSubTabLastElm){nbaSubTabLastElm.removeClassName('nbaPrvRndNavSelected');}	}	nbaSubTabLastElm = activeElm;		if (oIdent == "league"){		jsonfilePath 	= nbaT2Config.leagueVidJSONPath;		vidfilename 	= oIdent + "." + oSection + ".4across.json.html"; 	}else{				//check to see if IDOL		for (var i = 0; i < nbaT2Config.tabSubCategory.team.length; i++)		{			if (nbaT2Config.tabSubCategory.team[i].section == oSection &&  nbaT2Config.tabSubCategory.team[i].IDOL){				IDOL_Category = nbaT2Config.tabSubCategory.team[i].IDOL;			}		}		if (IDOL_Category)		{			jsonfilePath = nbaT2Config.IDOLSearchPath;			vidfilename  = "";		}else{					jsonfilePath = nbaT2Config.teamVidJSONPath + oSection + "/";			vidfilename 	= oIdent + "_" + oSection + ".4across.json.html"; 		}	}		vidFullPath	 = jsonfilePath + vidfilename;		//show loading image	if (!nbaT2InitLoad){nbaVideoContainer.innerHTML = nbaT2Config.nbaCSIErrorMsg.loading;}		//Delay processing slightly to allow image animation to display	var loadImageTimer = setTimeout(function() 		{			if (!nbaT2InitLoad)	{				//get the json				nbaHomepage.getVideoJSON(vidFullPath, nbaVideoContainer.id, oSection, oSecName, oIdent, oName, IDOL_Category);			}			//now show the subtabs			clearTimeout(loadImageTimer);		}, 1);		}/******************************************************************************* * T2 get and process headline JSONs *******************************************************************************/nbaHomepage.getHeadlineJSON = function(oFilePath, oElmId, oIdent, oTabName, oTabDispNam){	var qStringParam = null;	var configData = new Object();		configData.parent 		= this;		configData.ident		= oIdent;		configData.activeElm	= oElmId;		configData.tabName		= oTabName;		configData.tabDispName	= oTabDispNam;			if (nbaCSIHeadTimer){		clearTimeout(nbaCSIHeadTimer);		nbaCSIHeadTimer = null;	}	nbaCSIHeadDirty = true;	nbaCSIHeadTimer = setTimeout(function(){nbaHomepage.nbaCSITimer(oElmId, "head")}, nbaCSITMilliSec);	CSIManager.getInstance().setConfigForId(oElmId,configData);	CSIManager.getInstance().call(oFilePath,qStringParam,oElmId,function(objJson, strDomId, objConfig) 	{		nbaCSIHeadDirty = false; //if I'm here means CSI came back so no longer dirty		//alert("nbaCSIHeadDirty = " + nbaCSIHeadDirty);		var headHTML 		= "";		var headlineObj 	= objJson.headlines;		var headlineCount 	= headlineObj.length;		var isLeague		= ((String(objConfig.ident)).toLowerCase() == 'newsvideo') ? true : false;						if(headlineCount > 0)		{			var headPrefix = (isLeague) ? "HEADLINES" : ((String(objConfig.tabDispName)).toUpperCase() + " HEADLINES");			var footPrefix = (isLeague) ? "NBA" : objConfig.tabDispName;			headHTML += '<div class="nbaT2Title">' + headPrefix + '</div>';			if (isLeague){				headHTML += '<div class="nbaT2RSS"><a href="/rss/nba/league_headlines.rss"><img src="http://i.cdn.turner.com/nba/nba/.element/img/2.0/sect/homepage/rss.gif"> RSS</a></div>';			}else{				headHTML += '<div class="nbaT2RSS"><a href="/rss/teams/' + (String(oIdent)).toUpperCase() + '.rss"><img src="http://i.cdn.turner.com/nba/nba/.element/img/2.0/sect/homepage/rss.gif"> RSS</a></div>';			}			headHTML += '<div class="nbaClear"></div>';			headHTML += '<ul>';			for (var i = 0; i < headlineCount; i++)			{				var oddOrEven = (i%2 == 0) ? "even" : "odd";				if (isLeague){										if(headlineObj[i].url.match(/\/video/)){					headHTML += '<li class="' + oddOrEven + '"><img src="http://i.cdn.turner.com/nba/nba/.element/img/1.0/video/nbaVideoCamThumb.gif" width="16" height="9" hspace="0" vapace="0" alt="Video" border="0">&nbsp;<a href="' + headlineObj[i].url + '">' + headlineObj[i].headline + '</a>';					}else{					headHTML += '<li class="' + oddOrEven + '"><a href="' + headlineObj[i].url + '">' + headlineObj[i].headline + '</a>';					}															if (headlineObj[i].bullet){											if(headlineObj[i].bulleturl.match(/\/video/)){						headHTML += ' | <img src="http://i.cdn.turner.com/nba/nba/.element/img/1.0/video/nbaVideoCamThumb.gif" width="16" height="9" hspace="0" vapace="0" alt="Video" border="0">&nbsp;<a href="' + headlineObj[i].bulleturl + '">' + headlineObj[i].bullet + '</a>';						}else{												headHTML += ' | <a href="' + headlineObj[i].bulleturl + '">' + headlineObj[i].bullet + '</a>';						}																																													}					headHTML += '</li>';				}else{					headHTML += '<li class="' +oddOrEven+ '"><a href="' + headlineObj[i].url + '">' + headlineObj[i].headline + '</a></li>';				}			}			headHTML += '</ul>';			if (isLeague){				headHTML += '<div class="nbaT2SeeAll"><a href="/news/">All ' + footPrefix + ' Headlines</a></div>';			}else{				headHTML += '<div class="nbaT2SeeAll"><a href="/' + (String(footPrefix)).toLowerCase() + '/">All ' + footPrefix + ' Headlines</a></div>';			}		}else{			headHTML = nbaT2Config.nbaCSIErrorMsgz.noHeadline;		}			return headHTML;	});}/******************************************************************************* * T2 get and process video JSONs *******************************************************************************/nbaHomepage.getVideoJSON = function(oFilePath, oElmId, oSection, oSecName, oIdent, oName, oIDOLCategory){	var qStringParam = null;	var configData = new Object();		configData.parent 		= this;		configData.activeElm	= oElmId;		configData.section		= oSection;		configData.sectionName	= oSecName;		configData.ident		= oIdent;		configData.fullName		= oName;		configData.isIDOL		= (oIDOLCategory);				//If IDOL append search criteria	if (configData.isIDOL){		qStringParam = "type="+oIDOLCategory.type+"&start="+oIDOLCategory.start+ "&npp="+oIDOLCategory.npp+"&site="+oIDOLCategory.site+"&section="+(oIDOLCategory.section + oName) + "&sort="+oIDOLCategory.sort;		//alert(qStringParam);	}		if (nbaCSIVidTimer){		clearTimeout(nbaCSIVidTimer);		nbaCSIVidTimer = null;	}	nbaCSIVidDirty = true;	nbaCSIVidTimer = setTimeout(function(){nbaHomepage.nbaCSITimer(oElmId, "video")}, nbaCSITMilliSec);	CSIManager.getInstance().setConfigForId(oElmId,configData);	CSIManager.getInstance().call(oFilePath,qStringParam,oElmId,function(objJson, strDomId, objConfig) 	{		nbaCSIVidDirty = false; //if I'm here means CSI came back				var vidOuter = "";		var vidInner = "";		var firstOne = true;		var scrollCounter = 0;		var vidObj = (objConfig.isIDOL) ? objJson.results[0] : objJson.videos;		var vidCount = vidObj.length;				if(vidCount > 0)		{			for (var i = 0; i < vidCount; i++)			{				if(i%4 == 0 & i != 0){					vidOuter += 	nbaHomepage.getVideoHTMLWrapper(vidInner, vidCount, objConfig.section, objConfig.sectionName, objConfig.ident, objConfig.fullName, objConfig.isIDOL, firstOne, scrollCounter)					scrollCounter++;					vidInner = "";					firstOne = false;				}					var thumbnail 	= (objConfig.isIDOL) ? vidObj[i].metadata.media.thumbnail.url : vidObj[i].thumbnail;				var vidTitle 	= vidObj[i].title;				var vidUTS		= (objConfig.isIDOL) ? vidObj[i].mediaDateUts : vidObj[i].dateCreated;				var vidURL		= ""				if (objConfig.isIDOL){					//check to see if this video was produced by a team; if so use alternate video url					if (vidObj[i].id.match(/\/video\/teams/) && vidObj[i].alt_url){						vidURL = vidObj[i].alt_url + "?ls=iref:nbahpt2";						}else{										 		vidURL = vidObj[i].url + "?ls=iref:nbahpt2";				 	}				}else{				 	vidURL = vidObj[i].vidUrl;				}												vidInner += '<li>';				vidInner += '<div class="nbaVidThumbItem">';				vidInner += '<div class="nbaVidThumbImg" onclick="javascript:document.location.href=\'' + vidURL + '\';"><img src="' + thumbnail.replace("70x53","136x96") + '"/><div class="nbaSpanOverlay"></div></div>';				vidInner += '<p class="nbaT2VidAdded">Added ' + nbaHomepage.getVideoAge(vidUTS) + '</p>';				vidInner += '<p><a href="' + vidURL + '">' + nbaHomepage.truncateString(vidTitle, 40) + '</a></p>';				vidInner += '</div>';				vidInner += '</li>';							}			if (vidInner){				vidOuter += nbaHomepage.getVideoHTMLWrapper(vidInner, vidCount, objConfig.section, objConfig.sectionName, objConfig.ident, objConfig.fullName, objConfig.isIDOL, firstOne, scrollCounter)			}		}else{			vidOuter = nbaT2Config.nbaCSIErrorMsg.noVideo;		}		nbaLastVidPageId = 0;		return vidOuter;	});	}/******************************************************************************* * T2 video HTML wrapper  *******************************************************************************/nbaHomepage.getVideoHTMLWrapper = function(vidHTML, oVidCount, oSection, oSecName, oIdent, oName, oIsIDOL, oFirstOne, oScrollCounter){		var wrapHTML 		= "";	var wrapURL	 		= "";	var wrapTmp  		= "";	var wrapSection		= "";	var isLeague 		= ((String(oIdent)).toLowerCase() == 'league') ? true : false;	var showHide 		= (oFirstOne) ? 'style="display:block;"' : 'style="display:none;"';	var dotMax 			= parseInt((oVidCount / 4), 10);		dotMax 			= (oVidCount % 4) ? (dotMax + 1) : dotMax;				//oSecName  = (oIdent != "league" && oSection == "originals") ? oSecName : oSecName;		wrapHTML += '<div id="nbaRnd' + oScrollCounter + '" class="nbaRnd' + oScrollCounter + '" ' + showHide + '">';		wrapHTML += '<div class="nbaT2Title">' + oVidCount + ' Most Recent ' + oSecName + '</div>';		if (isLeague){			wrapHTML += '<div class="nbaT2RSS"><a href="/rss/' + oSection + '.rss"><img src="http://i.cdn.turner.com/nba/nba/.element/img/2.0/sect/homepage/rss.gif"> RSS</a></div>';		}else{			wrapHTML += '<div class="nbaT2RSS' + ((oIsIDOL) ? " IDOLhide " : "") + '"><a href="/rss/' + (String(oName)).toLowerCase()+ '/' + oSection + '.rss"><img src="http://i.cdn.turner.com/nba/nba/.element/img/2.0/sect/homepage/rss.gif"> RSS</a></div>';		}		wrapHTML += '<div class="nbaClear"></div>';		wrapHTML += '<div id="horizontal_carousel' + oScrollCounter + '">';				if (oScrollCounter != 0){			wrapHTML += '<div onclick="nbaHomepage.vidPageScroll(' + (oScrollCounter-1) + ',\'lt\');" class="previous_button"></div>';		}else{			wrapHTML += '<div onclick="nbaHomepage.vidPageScroll(' + (0) + ',\'lt\');" class="previous_button_disabled"></div>';		}		wrapHTML += '<div id="nbaRndVids' + oScrollCounter + '" class="container">';		wrapHTML += '	<ul>';		wrapHTML += vidHTML;		wrapHTML += '	</ul>';		wrapHTML += '</div>';		if (oScrollCounter != dotMax-1){			wrapHTML += '<div onclick="nbaHomepage.vidPageScroll(' + (oScrollCounter+1) + ',\'rt\');" class="next_button"></div> ';				}else{			wrapHTML += '<div onclick="nbaHomepage.vidPageScroll(' + (dotMax-1) + ',\'rt\');" class="next_button_disabled"></div> ';				}		wrapHTML += '</div>';		wrapHTML += '<div class="nbaT2CarBot">';		wrapHTML += '<div onclick="nbaHomepage.vidPageScroll(' + ((oScrollCounter == 0) ? 0 : oScrollCounter-1) + ',\'lt\');" class="left"></div>';		wrapHTML += '<div class="nbaDotPod">';						if (dotMax == 0){			wrapHTML += '<div class="nbaDot selected"></div>';		}else{			for (var i = 0; i < dotMax; i++)			{				var dotSelected = (i == parseInt(oScrollCounter)) ? "selected" : "";				wrapHTML += '<div onclick="nbaHomepage.vidPageScroll(' + i + ');" class="nbaDot ' + dotSelected + '"></div>';			}		}		wrapHTML += '</div>';		wrapHTML += '<div onclick="nbaHomepage.vidPageScroll(' + ((oScrollCounter == dotMax-1) ? dotMax-1 : oScrollCounter+1) + ',\'rt\');" class="right"></div>';		wrapHTML += '</div>';		wrapHTML += '</div>';		if (oIdent != "league"){			var isOriginals = (oSection == "originals")			wrapURL = (isOriginals) ? (nbaHomepage.getNBABaseUrl() + "/" + oName + "/video/" + oSection) : (nbaHomepage.getNBABaseUrl() + "/video/" + oName);			wrapTmp = " " + (oName.substring(0,1)).toUpperCase() + oName.substring(1,oName.length);			wrapSection = (isOriginals) ? "Originals Videos" : "Videos";		}else{			var tmpSection = (oSection == 'editorspick') ? (oSection + "s") : oSection			wrapURL = nbaHomepage.getNBABaseUrl() + "/video/" + tmpSection;			wrapTmp = "";			wrapSection = oSecName + " Videos";		}		wrapHTML += '<div class="nbaHPPodsMore"><a href="' + wrapURL + '">All' + wrapTmp  + ' ' + wrapSection + '</a></div>';			return wrapHTML;}/******************************************************************************* * T2 URL and Sub-nav configuation *******************************************************************************/nbaHomepage.t2Config = function(){	this.IDOLSearchPath		= "http://searchapp.nba.com/nba-search/query.jsp";		this.leagueVidJSONPath 	= "/.element/ssi/auto/2.0/aps/video/mainpage/";	this.leaugeHeadJSONPath = "/.element/ssi/auto/2.0/cms/home/";	this.teamVidJSONPath 	= "/.element/ssi/auto/2.0/aps/video/mainpage/teams/";	this.teamHeadJSONPath	= "/.element/ssi/auto/2.0/aps/mainpage/teams/";		this.tabSubCategory		= {	league:[{section:"highlights", displayName:"Highlights", entity:"league"},										{section:"topplays", displayName:"Top Plays", entity:"league"},										{section:"editorspick", displayName:"Editor&#39;s Pick", entity:"league"},										{section:"barkleyzone", displayName:"Barkley Zone", entity:"league"},										//{section:"featured", displayName:"Featured", entity:"league"}										{section:"tntot", displayName:"TNT Overtime", entity:"league"}										],								team:[{section:"mostrecent", displayName:"Most Recent", entity:"team"},										{section:"mostcommented", displayName:"Most Commented", entity:"team", IDOL:{type:"advvideo",start:1, npp:12, site:"all", section:"teams/", sort:"comment"}},										//{section:"Viewed7days", displayName:"Viwed 7 Days", entity:"team", IDOL:{type:"advvideo",start:1, npp:12, site:"all", section:"teams/", sort:"view_7d"}},										{section:"highlights", displayName:"Highlights", entity:"team"},										{section:"originals", displayName:"Originals", entity:"team"}																	]							};								this.nbaCSIErrorMsg		= {								noVideo:'<div class="nbaT2Messages">Your search returned 0 results</div>',								noHeadline:'<div class="nbaT2Messages">No headlines(s) to display!</div>',						   	   	badFileJson:'<div class="nbaT2Messages">No information to display!</div>', //an error occurred						   	   	loading:'<div class="nbaT2Messages"><img src="http://i.cdn.turner.com/nba/nba/search_v2/images/loading.gif"></div>'							};							}                                                                                                            
