var nbaLeagueTeams = [
	{teamCode: "ATL", shortName: "hawks", fullName: "Atlanta Hawks"},
	{teamCode: "BOS", shortName: "celtics", fullName: "Boston Celtics" },
	{teamCode: "CHA", shortName: "bobcats", fullName: "Charlotte Bobcats" },
	{teamCode: "CHI", shortName: "bulls", fullName: "Chicago Bulls" },
	{teamCode: "CLE", shortName: "cavaliers", fullName: "Cleveland Cavaliers" },
	{teamCode: "DAL", shortName: "mavericks", fullName: "Dallas Mavericks" },
	{teamCode: "DEN", shortName: "nuggets", fullName: "Denver Nuggets" },
	{teamCode: "DET", shortName: "pistons", fullName: "Detroit Pistons" },
	{teamCode: "GSW", shortName: "warriors", fullName: "Golden State Warriors" },
	{teamCode: "HOU", shortName: "rockets", fullName: "Houston Rockets" },
	{teamCode: "IND", shortName: "pacers", fullName: "Indiana Pacers" },
	{teamCode: "LAC", shortName: "clippers", fullName: "Los Angeles Clippers" },
	{teamCode: "LAL", shortName: "lakers", fullName: "Los Angeles Lakers" },
	{teamCode: "MEM", shortName: "grizzlies", fullName: "Memphis Grizzlies" },
	{teamCode: "MIA", shortName: "heat", fullName: "Miami Heat" },
	{teamCode: "MIL", shortName: "bucks", fullName: "Milwaukee Bucks" },
	{teamCode: "MIN", shortName: "timberwolves", fullName: "Minnesota Timberwolves" },
	{teamCode: "NJN", shortName: "nets", fullName: "New Jersey Nets" },
	{teamCode: "NOH", shortName: "hornets", fullName: "New Orleans Hornets" },
	{teamCode: "NYK", shortName: "knicks", fullName: "New York Knicks" },
	{teamCode: "OKC", shortName: "thunder", fullName: "Oklahoma City Thunder" },
	{teamCode: "ORL", shortName: "magic", fullName: "Orlando Magic" },
	{teamCode: "PHI", shortName: "sixers", fullName: "Philadelphia 76ers" },
	{teamCode: "PHX", shortName: "suns", fullName: "Phoenix Suns" },
	{teamCode: "POR", shortName: "blazers", fullName: "Portland Trail Blazers" },
	{teamCode: "SAC", shortName: "kings", fullName: "Sacramento Kings" },
	{teamCode: "SAS", shortName: "spurs", fullName: "San Antonio Spurs" },
	{teamCode: "TOR", shortName: "raptors", fullName: "Toronto Raptors" },
	{teamCode: "UTA", shortName: "jazz", fullName: "Utah Jazz" },
	{teamCode: "WAS", shortName: "wizards", fullName: "Washington Wizards" }
];

function getQueryParam(param) {
	var queryHash = $H(window.location.href.toQueryParams());
	return queryHash.get(param);
}

function getURLParam(param) {
	var queryHash = $H(window.location.href.toQueryParams());
	return queryHash.get(param);
}

function getTeamName() {
    var match = window.location.pathname.match(/\/video\/teams\/([a-z]+?)\/originals/);
    if (match&&match[1]) return match[1];
    return '';
}

function getTeamSiteName() {
    var match = window.location.pathname.match(/\/([a-z]+?)\/video\/([0-9]{4})\/([0-9]{2})\/([0-9]{2})/);
    if (match&&match[1]) {
    	var urlTeamName = match[1];
    	var teamObj = nbaLeagueTeams.detect(function(team) {
		return team.shortName == urlTeamName;
    	});
	if (teamObj && teamObj.shortName) {
		return teamObj.shortName;
	}
	return '';
    }
    return '';
}

function getVideoChannelName() {
    var matchShort = window.location.pathname.match(/\/video\/channels\/([a-z_]+)(\/index.html){0,1}/);
    var matchFull = window.location.pathname.match(/\/video\/channels\/([a-z_]+)\/([0-9]{4})/);
    if (matchFull && matchFull[1]) return matchFull[1].replace(/_/g,'');
    else if (matchShort && matchShort[1]) return matchShort[1];
    return '';
}

function wordToUpper(param) {
    return param.toLowerCase().replace(/\b[a-z]/g, convertToUpper);

    function convertToUpper()
    {
        return arguments[0].toUpperCase();
    }
}

function getNBATeamName(teamCode) {
	
	var teamObj = nbaLeagueTeams.detect(function(team) {
		return team.teamCode == teamCode;
	});
	if (teamObj && teamObj.fullName) {
		return teamObj.fullName;
	}
	return null;
}

function getNBATeamShortName(teamCode) {
	var teamObj = nbaLeagueTeams.detect(function(team) {
		return team.teamCode == teamCode;
	});
	if (teamObj && teamObj.shortName) {
		return teamObj.shortName;
	}
	return null;
}

function getNBATeamCode(shortName) {
	var teamObj = nbaLeagueTeams.detect(function(team) {
		return team.shortName == shortName;
	});
	if (teamObj && teamObj.shortName) { return teamObj.teamCode; }
	return null;
}

function verifyTeamSite() {
	var param_fromteamsite = getQueryParam("fromteamsite");
	var teamIdTeamVideo = getTeamName();
	var teamSiteId = getTeamSiteName();
	if (param_fromteamsite) { return param_fromteamsite.toUpperCase(); }
	else if (teamIdTeamVideo!='') { return getNBATeamCode(teamIdTeamVideo).toUpperCase(); }
	else if (teamSiteId!='') { return  getNBATeamCode(teamSiteId).toUpperCase(); }
	return null;
}

// arrays for XMP player
var jsonListArray = null;
var teamListArray = null;
var nbaListArray = null;

// ad override vars
var overridePrerollAdTag = null;
var overrideSynchAdTag = null;
var overrideTopSynchAdTag = null;

function initializeVideo() {
	var playArray = initialJsonArray;
	var tempArray = null;

	if (jsonListArray != null) {
		tempArray = jsonListArray;
	} else {
		tempArray = nbaListArray;
		for (var i = 0; i < teamListArray.length; i++) {
			if ((teamListArray[i] == playArray[0]) || ((playArray[i] + '.json') == teamListArray[0])) {
				tempArray = teamListArray;
				break;
			}
		}
	}

	var maxLength = (tempArray.length > 7) ? 7 : tempArray.length;
	for (var i = 0; i < tempArray.length; i++) {
		if (playArray.length >= maxLength)
			break;
		if ((tempArray[i] != playArray[0]) && (tempArray[i] != (playArray[0] + '.json'))) {
			playArray.push(tempArray[i]);
		}
	}

	var param_fromteamsite = getQueryParam("fromteamsite");
	var teamIdTSPlayer = verifyTeamSite();
	if (teamIdTSPlayer) {
		var teamShortName = '';
		teamShortName = getNBATeamShortName(teamIdTSPlayer);
		if (teamShortName == 'sixers') {
			teamShortName = '76ers';
		}
		if (teamShortName == 'blazers') {
			teamShortName = 'trailblazers';
		}
		overridePrerollAdTag = '/nba_adspaces/1.0/teams/video/' + teamShortName + '/preroll_std.ad';
		overrideSynchAdTag = '/nba_adspaces/1.0/teams/video/' + teamShortName + '/synch.300x250.ad';
		overrideTopSynchAdTag = '/nba_adspaces/1.0/teams/video/' + teamShortName + '/spon.594x31.ad';
	}
	else {
		if (getURLParam("player")) {
			var playerType = getURLParam("player");	
			if (playerType == 'player') {
				var playerId = getURLParam("q");
				if (playerId == 'hedo_turkoglu') {
					playerId = 'hidayet_turkoglu';
				}
				overridePrerollAdTag = '/nba_adspaces/1.0/players/' + playerId + '/preroll_std.ad';
				overrideSynchAdTag = '/nba_adspaces/1.0/players/' + playerId + "/synch.300x250.ad";
				overrideTopSynchAdTag = '/nba_adspaces/1.0/players/' + playerId + "/spon.594x31.ad";
			}
			else 
				if (playerType == 'team') {
					var teamShortName = getNBATeamShortName(getURLParam("q"));
					if (teamShortName == 'blazers') {
						teamShortname = 'trailblazers';
					}
					overridePrerollAdTag = '/nba_adspaces/1.0/video/' + teamShortName + '/preroll_std.ad';
					overrideSynchAdTag = '/nba_adspaces/1.0/video/' + teamShortName + '/synch.300x250.ad';
					overrideTopSynchAdTag = '/nba_adspaces/1.0/video/' + teamShortName + '/spon.594x31.ad';
				}
		}
		
		if (pageType == 'teams') {
			teamShortName = teamName;
			if (teamShortName == 'sixers') {
				teamShortName = '76ers';
			}
			if (teamShortName == 'blazers') {
				teamShortName = 'trailblazers';
			}
			overridePrerollAdTag = '/nba_adspaces/1.0/video/' + teamShortName + '/preroll_std.ad';
			overrideSynchAdTag = '/nba_adspaces/1.0/video/' + teamShortName + '/synch.300x250.ad';
			overrideTopSynchAdTag = '/nba_adspaces/1.0/video/' + teamShortName + '/spon.594x31.ad';
		}
		else if (pageType == 'teamsite') {
			teamShortName = teamName;
			if (teamShortName == 'sixers') {
				teamShortName = '76ers';
			}
			if (teamShortName == 'blazers') {
				teamShortName = 'trailblazers';
			}
			overridePrerollAdTag = '/nba_adspaces/1.0/teams/video/' + teamShortName + '/preroll_std.ad';
			overrideSynchAdTag = '/nba_adspaces/1.0/teams/video/' + teamShortName + '/synch.300x250.ad';
			overrideTopSynchAdTag = '/nba_adspaces/1.0/teams/video/' + teamShortName + '/spon.594x31.ad';
		}
	}

	//$('nbaVideoFrame').innerHTML = '';
	NBAVideoPlayerWrapper = new NBAVideoPlayer();
	NBAVideoPlayerWrapper.initialize('game_auto','nbaVideoFrame','nbaVPAdvertisment',playlistUpdateHandler,playArray,overridePrerollAdTag,overrideSynchAdTag, overrideTopSynchAdTag);
}

function playlistUpdateHandler(jsonId) {
}		

function initPageContent(){
	loadRelatedVideoContent();
}

function loadRelatedVideoContent() {
	var serverHost = window.location.hostname;
	var includeFilePrefix = "/.element/ssi/auto/1.0/aps/video/videoplayer/";

	var videosInclude = null;
	var playlistInclude = null;
	var videosIncludeNBA = null;
	var playlistIncludeNBA = null;
	var videosIncludeOriginals = null;
	var playlistIncludeOriginals = null;
	var getAjaxVideosInclude = true;

	if (pageType) {
		switch (pageType) {
			case "channel":
				var sectionMatch = videoSection.match(/channels\/([a-zA-Z_]+)/);
				if (sectionMatch && sectionMatch[1]) {
					var channelName = sectionMatch[1].replace(/_/g, '');
					videosInclude = includeFilePrefix + 'channels/video_channel_' + channelName + '.txt';
					playlistInclude = includeFilePrefix + 'channels/playlist_channel_' + channelName + '.txt';
					if (videoSubcategory != '' && videoSubcategory != 'none') {
						var subcatName = videoSubcategory.replace(/_/g, '');
						videosInclude = includeFilePrefix + 'channels/video_channel_' + channelName + '_' + subcatName + '.txt';
						playlistInclude = includeFilePrefix + 'channels/playlist_channel_' + channelName + '_' + subcatName + '.txt';
					}
					if (channelName == 'allstar') {
						getAjaxVideosInclude = false;
					}
				}
				break;
			case "game":
				videosInclude = includeFilePrefix + 'games/video_' + gameId + '.txt';
				playlistInclude = includeFilePrefix + 'games/playlist_' + gameId + '.txt';
				break;
			case "teams":
				var teamCode = getNBATeamCode(teamName);
				videosIncludeNBA = includeFilePrefix + 'teams/video_nba_' + teamCode + '_tab1_page1.txt';
				videosIncludeOriginals = includeFilePrefix + 'teams/video_nba_' + teamCode + '_tab2_page1.txt';
				playlistIncludeNBA = includeFilePrefix + 'teams/playlist_team_highlights_' + teamCode + '.txt';
				playlistIncludeOriginals = includeFilePrefix + 'teams/playlist_team_originals_' + teamCode + '.txt';
				break;
			case "teamsite":
				var teamCode = getNBATeamCode(teamName);
				videosIncludeNBA = includeFilePrefix + 'teams/video_team_' + teamCode + '_tab1_page1.txt';
				videosIncludeOriginals = includeFilePrefix + 'teams/video_team_' + teamCode + '_tab2_page1.txt';
				playlistIncludeNBA = includeFilePrefix + 'teams/playlist_team_highlights_' + teamCode + '.txt';
				playlistIncludeOriginals = includeFilePrefix + 'teams/playlist_team_originals_' + teamCode + '.txt';
				break;
			case "whatsnew":
				videosInclude = includeFilePrefix + 'video_whatsnew.txt';
				playlistInclude = includeFilePrefix + 'playlist_whatsnew.txt';
				break;
		}
	}

	if (videosInclude != null) {
		if (getAjaxVideosInclude) {		
			new Ajax.Request(videosInclude, {
			  method: 'get',
			  onSuccess: function(transport) {
				$('nbaRelatedVideoContent').innerHTML = transport.responseText;
			  }
			});
		}
		new Ajax.Request(playlistInclude, {
		  method: 'get',
		  onSuccess: function(transport) {
			eval(transport.responseText);
			jsonListArray = videoArray;
			initializeVideo();
		  }
		});
	} else {		
		new Ajax.Request(videosIncludeNBA, {
		  method: 'get',
		  onSuccess: function(transport) {
			$('p1').innerHTML = transport.responseText;
		  }
		});
		new Ajax.Request(videosIncludeOriginals, {
		  method: 'get',
		  onSuccess: function(transport) {
			$('p2').innerHTML = transport.responseText;
		  }
		});

		new Ajax.Request(playlistIncludeNBA, {
		  method: 'get',
		  onSuccess: function(transport) {
			eval(transport.responseText);
			nbaListArray = videoArray;

			new Ajax.Request(playlistIncludeOriginals, {
			  method: 'get',
			  onSuccess: function(transport) {
				bob = eval(transport.responseText);
				teamListArray = videoArray;
				initializeVideo();
			  }
			});	
		  }
		});
	}	
}

function changePlaylist(jsonId) {

	// track through the json array

	var newArray = new Array(jsonId);
	var counter = null;
	var tempArray = null;

	// pick an array
	if (jsonListArray != null) {
		tempArray = jsonListArray;
		for (var i = 0; i < tempArray.length; i++) {
			if (tempArray[i] == jsonId) {
				counter = i;
				break;
			}
		}
	} else {
		for (var i = 0; i < teamListArray.length; i++) {
			if (teamListArray[i] == jsonId) {
				counter = i;
				tempArray = teamListArray;
				break;
			}
		}
		if (tempArray == null) {
			for (var i = 0; i < nbaListArray.length; i++) {
				if (nbaListArray[i] == jsonId) {
					counter = i;
					tempArray = nbaListArray;
					break;
				}
			}
		}
	}

	
	var maxLength = (tempArray.length > 7) ? 7 : tempArray.length;

	if (counter != null) {
		counter++;
		while (newArray.length < maxLength) {
			if (counter == tempArray.length) { counter = 0; }
			newArray.push(tempArray[counter++]);
		}
	}

	NBAVideoPlayerWrapper.newPlaylist(newArray);
}

function updateInclude(id, fileName) {
	var ajaxUpdate = new Ajax.Updater(id, fileName, {method:"get",evalScripts:'true'});
}

//function loadCellHover() {
//	$$('td.nbaVideoGridCell').each(function(box) {
//	    box.observe('mouseover', function(event) {
//	        this.setStyle("background:#b8cedd;");
//	    	if (this.down('a',1)) {
//	    		this.down('a',1).setStyle("background:url('/.element/img/1.0/video/nbaVideoGridContentHeader.over.gif')");
//	    	}
//	    }.bindAsEventListener(box));
//	    box.observe('mouseout', function(event) {
//	        this.setStyle("background:#ffffff;");
//	    	if (this.down('a',1)) {
//	    		this.down('a',1).setStyle("background:url('/.element/img/1.0/video/nbaVideoGridContentHeader.gif')");
//	    	}
//	    }.bindAsEventListener(box))
//	});
//}
//
//document.observe('dom:loaded',loadCellHover);

//this function determines whether the event is the equivalent of the microsoft
// mouseleave or mouseenter events. 
function isMouseLeaveOrEnter(e, handler) { 
	if (e.type != 'mouseout' && e.type != 'mouseover') return false;
	var reltg = e.relatedTarget ? e.relatedTarget : e.type == 'mouseout' ? e.toElement : e.fromElement;
	while (reltg && reltg != handler) reltg = reltg.parentNode;
	return (reltg != handler);
}

function nbaVideoGridCellOver(e,objThis) {
	if (isMouseLeaveOrEnter(e,objThis)) {
		objThis.style.backgroundColor='#b8cedd';
		if (objThis.getElementsByTagName('a')[1]) {
			objThis.getElementsByTagName('a')[1].style.background="url('http://i.cdn.turner.com/nba/nba/.element/img/1.0/video/nbaVideoGridContentHeader.over.gif')";
		}
	}
}

function nbaVideoGridCellOut(e,objThis) {
	if (isMouseLeaveOrEnter(e,objThis)) {
		objThis.style.backgroundColor='#ffffff';
		if (objThis.getElementsByTagName('a')[1]) {
			objThis.getElementsByTagName('a')[1].style.background="url('http://i.cdn.turner.com/nba/nba/.element/img/1.0/video/nbaVideoGridContentHeader.gif')";
		}
	}
}

/* global event handlers
=========================================================================== */
function nbaMouseDown(e) {
    if (nbaDropdownOpen) nbaDD.mouseDownBody(e);
      //if (nbaOverlayMenuOpen) nbaOverlayMouseDownBody(e); return true;
  	if (nbaDropdownTeamsIdxOpen) nbaDDTeamsIdx.mouseDownBody(e);
	if (nbaDropdownPlayersTeamsIdxOpen) nbaDDPlayersTeamsIdx.mouseDownBody(e);
	if (nbaDropdownPlayersPlayersIdxOpen) nbaDDPlayersPlayersIdx.mouseDownBody(e);
	if (nbaDropdownVidPlayerIdxOpen) nbaDDVidPlayerIdx.mouseDownBody(e);
}
/* end global event handlers
=========================================================================== */

