// JavaScript Document

try{
var xmlLoc = "/nugget/13";

	/* IN-GAME DATA */
	var dsGames = new Spry.Data.XMLDataSet(xmlLoc, "scores/league/game[@gamestate != 'Pre-Game']", {useCache:false}); // Get the XML Data
	var dsHome = new Spry.Data.NestedXMLDataSet(dsGames, "home"); // Get the XML Data
	var dsGameLinks = new Spry.Data.NestedXMLDataSet(dsGames, "links"); // Get the XML Data
	var dsHomeScores = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/home/linescores"); // Get the XML Data
	var dsHomeQ1 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/home/linescores/linescore[@quarter='1']"); // Get the XML Data
	var dsHomeQ2 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/home/linescores/linescore[@quarter='2']"); // Get the XML Data
	var dsHomeQ3 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/home/linescores/linescore[@quarter='3']"); // Get the XML Data
	var dsHomeQ4 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/home/linescores/linescore[@quarter='4']"); // Get the XML Data
	var dsHomeOT = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/home/linescores/linescore[@quarter='OT']"); // Get the XML Data
	var dsHome2OT = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/home/linescores/linescore[@quarter='2OT']"); // Get the XML Data
	var dsHomeLeaders = new Spry.Data.NestedXMLDataSet(dsGames, "home/leaders", {filterDataFunc:leadersFilter}); // Get the XML Data
	var dsAway = new Spry.Data.NestedXMLDataSet(dsGames, "away"); // Get the XML Data
	var dsAwayScores = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores"); // Get the XML Data
	var dsAwayQ1 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores/linescore[@quarter='1']"); // Get the XML Data
	var dsAwayQ2 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores/linescore[@quarter='2']"); // Get the XML Data
	var dsAwayQ3 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores/linescore[@quarter='3']"); // Get the XML Data
	var dsAwayQ4 = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores/linescore[@quarter='4']"); // Get the XML Data
	var dsAwayOT = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores/linescore[@quarter='OT']"); // Get the XML Data
	var dsAway2OT = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores/linescore[@quarter='2OT']"); // Get the XML Data
	var dsAwayQuarters = new Spry.Data.NestedXMLDataSet(dsGames, "gamestats/away/linescores/linescore"); // Get the XML Data
	var dsAwayLeaders = new Spry.Data.NestedXMLDataSet(dsGames, "away/leaders", {filterDataFunc:leadersFilter}); // Get the XML Data

	/* PRE-GAME DATA */
	var dsPreGames = new Spry.Data.XMLDataSet(xmlLoc, "scores/league/game[@gamestate = 'Pre-Game']", {useCache:false}); // Get the XML Data
	var dsPreGameLinks = new Spry.Data.NestedXMLDataSet(dsPreGames, "links"); // Get the XML Data
	var dsPreGameAway = new Spry.Data.NestedXMLDataSet(dsPreGames, "away"); // Get the XML Data
	var dsPreGameHome = new Spry.Data.NestedXMLDataSet(dsPreGames, "home"); // Get the XML Data
	var dsPreGameHomeLeaders = new Spry.Data.NestedXMLDataSet(dsPreGames, "home/leaders"); // Get the XML Data
	var dsPreGameAwayLeaders = new Spry.Data.NestedXMLDataSet(dsPreGames, "away/leaders"); // Get the XML Data
	
}catch(e){/*ignore*/} 

/* BEGIN: [Function called by the clock] */
function removeClock(divId){
	document.getElementById(divId).style.display='none'; // remove clocks
}
/* END: [Function called by the clock] */


// ---------------------------------------------------------//
// BEHAVIOR HANDLER
// ---------------------------------------------------------//
var gBehaviorsArray = []; // set the behavior handler for all effects

/* checks and sets the behavior ON/OFF (Run/Cancel) */
function CancelBehavior(id){
  if (gBehaviorsArray[id]){
    gBehaviorsArray[id].cancel();
    gBehaviorsArray[id] = null;
  }
}


/* Filter to round out all of the points/rebounds/assists data */
function leadersFilter(ds, row, rowIndex)
{
  row['points/@points'] = Math.round(row['points/@points']);
  row['rebounds/@rebounds'] = Math.round(row['rebounds/@rebounds']);
  row['assists/@assists'] = Math.round(row['assists/@assists']);
  return row;
}
 
try{
	var iniGameData = dsGames.getData();
	dsGames.addObserver({ onPreLoad: function(ds, type)
		{
			dsGames.removeObserver(this); // remove this observer	
			for(i=0; i<iniGameData.length; i++){// loop through the number of games
				var key = "sb_"+iniGameData[i]['@gameId']; // create a key for the games
				boxData[key]= new Array(); // make each key an array
				
				for(a=0; a<dsAwayScores.getData().length; a++){ // loop through the score board for each game
					var scoreData = key+"_a"+[a+1] // create a key for each quarter
					boxData[key][scoreData] = new Array(); // make each key an array
					boxData[key][scoreData][a] = document.getElementById(scoreData).innerHTML; // get the current scores
				}
			}
			
		}	
	});
	
	
	/*  UPDATE FUCTIONS FOR THE PAGE */
	var checkFoIt = null; // interval holder
	var boxData = new Array(); // Create an array for data
	theScoreWatcher = new Object;
	var getNew;
	theScoreWatcher.onPostUpdate = function(notifier, data)
		{	
		Spry.Data.Region.removeObserver('holder', theScoreWatcher);
		dsGames.addObserver({ onPreLoad: function(ds, type)
			{
				dsGames.removeObserver(this); // remove this observer	
				var theGameData =dsGames.getData();
				for(i=0; i<theGameData.length; i++){// loop through the number of games
					var key = "sb_"+theGameData[i]['@gameId']; // create a key for the games
					boxData[key]= new Array(); // make each key an array
					
					for(a=0; a<6; a++){ // loop through the score board for each game
						var scoreData = key+"_a"+[a+1] // create a key for each quarter
						if(document.getElementById(scoreData)){
							boxData[key][scoreData] = new Array(); // make each key an array
							boxData[key][scoreData][a] = document.getElementById(scoreData).innerHTML; // get the current scores
						}
					} 
					
					
				}
				
			}	
		});
		checkFoIt = setInterval(check4Update, 10000); // Start the auto update	
	};
	Spry.Data.Region.addObserver('holder', theScoreWatcher); // Call addObserver() to register the object as an observer.
}catch(e){/*ignore*/}
var preSet = false; // holder for match between ingame and pregames
/* CHECK FOR UPDATE PAGES */
function check4Update(){	
	try{
		var setGameIntv = false;
		var boxData = new Array(); // Create an array for data
		var bTabData=''; // Create an array for data
		var boxDataInfo = dsGames.getData();
				
		for(i=0; i<boxDataInfo.length; i++){// loop through the number of games
			var key = "sb_"+boxDataInfo[i]['@gameId']; // create a key for the games
			boxData[key]= new Array(); // make each key an array
			
			for(a=0; a<6; a++){ // loop through the score board for each game
				var scoreData = key+"_a"+[a+1] // create a key for each quarter
				if(document.getElementById(scoreData)){
					boxData[key][scoreData] = new Array(); // make each key an array
					boxData[key][scoreData][a] = document.getElementById(scoreData).innerHTML; // get the current scores
				}
				
			}
			for(a=0; a<6; a++){ // loop through the score board for each game
				var HscoreData = key+"_h"+[a+1] // create a key for each quarter
				if(document.getElementById(HscoreData)){
					boxData[key][HscoreData] = new Array(); // make each key an array
					boxData[key][HscoreData][a] = document.getElementById(HscoreData).innerHTML; // get the current scores
				}
			}
			for(a=0; a<3; a++){ // loop through the score board for each game
	
				var tabData = key+"_tab"+[a+1] // create a key for each quarter			
				if(document.getElementById(tabData).className == "gameLeaders_on"){				
					bTabData +=document.getElementById(tabData).id+"::";
				}
			}
			
			if(boxDataInfo[i]['@gamestate'] == "In-Progress" || boxDataInfo[i]['@gamestate'] == "Pre-Game"){ // check to see if any games are in progress.
				setGameIntv = true;					
			}
			
		}
		
		
		myScoreWatcher = new Object;
		myScoreWatcher.onPostUpdate = function(notifier, data)
		{	
			Spry.Data.Region.removeObserver('holder', myScoreWatcher); // Call addObserver() to register the object as an observer.
			var nset='';
			var inGameData = dsGames.getData(); // capture the ingame data
			var preGameData = dsPreGames.getData(); // capture the pregame data
			for(i=0; i<inGameData.length; i++){// loop through the number of games
				var nkey = "sb_"+inGameData[i]['@gameId']; // create a key for the games
				
				for(a=0; a<6; a++){ // loop through the score board for each game
					var nscoreData = nkey+"_a"+[a+1];// create a key for each quarter
					if(document.getElementById(nscoreData)){ // check to see if the element exists on the page
						if(boxData[nkey]){ // make sure there's data in this array
							if(boxData[nkey][nscoreData][a] != document.getElementById(nscoreData).innerHTML){ // check to see if the information doesn't match
								gBehaviorsArray["update"] = Spry.Effect.DoHighlight(nscoreData,{duration:6000,from:'#FB9A00', to:'#fff', restoreColor:'#fff'}); // highlight the ones that don't match
							}
						}
					}
					
				}
				for(a=0; a<6; a++){ // loop through the score board for each game
					var HnscoreData = nkey+"_h"+[a+1];// create a key for each quarter
					if(document.getElementById(HnscoreData)){ // check to see if the element exists on the page
						if(boxData[nkey][HnscoreData][a] != document.getElementById(HnscoreData).innerHTML){ // make sure there's data in this array match
							gBehaviorsArray["update"] = Spry.Effect.DoHighlight(HnscoreData,{duration:6000,from:'#FB9A00', to:'#fff', restoreColor:'#fff'});// highlight the ones that don't match
						}
					}				
				}				
				for(p=0; p<preGameData.length; p++){ // loop through the pregames
					if(preGameData[p]['@gameId'] == inGameData[i]['@gameId']){ // check to see if an old pregame is now "in game"
						dsPreGames.loadData(); // if so, reload the pregames						
					}
				}				
			}	
			/* BEGIN: get and set the tabs */
			var gTabData = bTabData.split("::");	
			for(g=0; g<gTabData.length; g++){
				if(gTabData[g]){				
					tabSwitch(document.getElementById(gTabData[g]));	
				}
			}
			/* END: get and set the tabs */
			
		};
		Spry.Data.Region.addObserver('holder', myScoreWatcher); // Call addObserver() to register the object as an observer.
		
		if(setGameIntv == true){ // check to see if there are any games in progress.
			dsGames.loadData(); // go get updated information	
			
		}else{ // if so, update the data
			clearInterval(checkFoIt); // if not, don't update anymore
		}
		
	}catch(e){/* IGNORE */}
}

/* BEGIN: [Hitbox Intevals] */
setInterval(serveAdRefreshViaMSFT, 90000); // Start the auto update

function serveAdRefreshViaMSFT() {
  if (document.all) {
    dapMgr.trackEvent(eventType.click);
  }
  sendHBXKeepAlive("NBA SCORES");
}

function sendHBXKeepAlive(desc) {
  _hbDownload('keep alive - ' + desc);
}
/* END: [Hitbox Intevals] */