/*
	Scoreboard Parser - HM
*/
var scoreboard = {
	
	sb_xmlProcessData : function() {
		
		
		var xmlType = this._xmlType;
		
                var xmlData;

                try {
                    xmlData = this.req.responseXML.documentElement;
                }
                catch (err) {
                    xmlData = (new DOMParser()).parseFromString(this.req.responseText, "text/xml");
                }
		
		if (xmlData.nodeName == "error") {
		//	window.status += " | There is no ScrBrd XML Data";
		}
		else {
			
			sb_loadCounter++; //increment per xml loading

			/* LEVEL TWO CHECKING  - check for current message ID. This is after the xml has been parsed, though. */
			var idChange = false;
			var curMessageIDScr = helper.getAttrib(xmlData, "id");
	
			if (messageIDScr != curMessageIDScr) { //parse xml NOW!!!!!
		
				messageIDScr = curMessageIDScr;
				sb_gameDate = helper.getAttrib(xmlData, "gdt");
		
				//window.status += " NEW DATA!!!";
				var cNode = xmlData.childNodes;
				
				sb_teamCounter = -1;
				sb_gameCounter = -1;
				sb_numOfGames = helper.nodeCounter(cNode);
		
				if (sb_loadCounter ==1) {  
					
					sb_arrOfGameData = new Array();
					sb_arrOfGameIndex = new Array();
					sb_arrOfTeamData = new Array();
					sb_arrOfTeamIndex = new Array();
					oldScrObj = new Array();

				}
				
				for (var xNode = 0; xNode < cNode.length; xNode++) {
					if (helper.chkNType(cNode[xNode]) == 1) 
						scoreboard.sb_nodeFunctions(cNode[xNode]);
				}
				
				display.buildGameOutputData(xmlType);
	
			}
			else {
				//window.status += " NO NEW SCRBRD DATA...";	
			}
	
		}
		
	},
	
	sb_nodeFunctions : function(node) {
		
		if ((node.nodeName).toLowerCase() == "game") {
			sb_gameCounter++;
			this.sb_gameNode_Populate(main.gameNode_Data(node), sb_gameCounter, "game");
			sb_gameID = helper.getAttrib(node,"id");
			var gameChild = node.childNodes;
			var sb_gameNodeId = sb_gameID + "-game"; 
			
			for (var ch = 0; ch < gameChild.length; ch++) {
				
				if (helper.chkNType(gameChild[ch])==1) {
					
					if ((gameChild[ch].nodeName).toLowerCase() == "vtm" || (gameChild[ch].nodeName).toLowerCase() == "htm") {
						sb_teamCounter++;
						var sb_teamArrayName = sb_gameID+"-"+gameChild[ch].nodeName;
						scoreboard.sb_gameChild_TeamPopulate(main.gameNode_Data(gameChild[ch]), gameChild[ch].nodeName, sb_teamCounter, sb_teamArrayName);
						
						if (sb_loadCounter == 1) {
							if((gameChild[ch].nodeName).toLowerCase() == "vtm"){
								sb_arrOfGameData[sb_gameNodeId].vtmData =sb_arrOfTeamData[sb_teamArrayName]
								//console.log(sb_arrOfGameData[sb_gameNodeId].vtmData);
							}
							else{
								sb_arrOfGameData[sb_gameNodeId].htmData =sb_arrOfTeamData[sb_teamArrayName];
							}
						}
					}

				}

			}
		
		}
		
	},
	
	//POPULATE GAME NODE FOR SCOREBOARD
	sb_gameNode_Populate : function(gmNdata, dCounter, dNodeName) {
		
		var nodeSplit = null;
		var nodes = gmNdata.split("@!");
		var attribName = "";
	
		var id = "";
		for (var i = 0; i < nodes.length; i++) {
			id = nodes[i].split("~");
			if (id[0] == "id")
				sb_gameID = id[1];
		}
		
		var arrayName = sb_gameID + "-" +  dNodeName  ;
				
		if (sb_loadCounter == 1)
			sb_arrOfGameData[arrayName] ={};
	
		for (var xSplit = 0; xSplit < nodes.length; xSplit++) {
		
			nodeSplit = nodes[xSplit].split("~");
		
			if (sb_loadCounter == 1) {
			
				if (nodeSplit[0] == "timet" || nodeSplit[0] == "timloc" || nodeSplit[0] == "timh" || nodeSplit[0] == "timv"){
					nodeSplit[1] = helper.setStrTime(nodeSplit[1]);
				}
			
				sb_arrOfGameData[arrayName][nodeSplit[0]] =  nodeSplit[1];
			}
			else {
				if (nodeSplit[0] == "clk" || nodeSplit[0] == "gstat" || nodeSplit[0] == "gstattxt" || nodeSplit[0] == "ldchg" || nodeSplit[0] == "poss" || nodeSplit[0] == "seq" || nodeSplit[0] == "rcp" || nodeSplit[0] == "prd" || nodeSplit[0] == "tie"  || nodeSplit[0] == "vid") {
					if (sb_arrOfGameData[arrayName][nodeSplit[0]] != nodeSplit[1]) 
						sb_arrOfGameData[arrayName][nodeSplit[0]] = nodeSplit[1]; 
				}
			}
		
		}
	
		if (sb_loadCounter == 1) {
			sb_arrOfGameData[arrayName].id = sb_gameID;
			sb_arrOfGameData[arrayName].date = sb_gameDate;
			sb_arrOfGameIndex[dCounter] = sb_arrOfGameData[arrayName];
		}
		
	},
	
	sb_gameChild_TeamPopulate : function(gmCdata, dTeam, dCounter, dNodeName) {
		
		var nodeSplit = null;
		var nodes = gmCdata.split("@!");
		var arrayName =  dNodeName;
		
		if (sb_loadCounter == 1) 
			sb_arrOfTeamData[arrayName] = {};
		
		if(sb_loadCounter == 1)	
			oldScrObj[arrayName] = {};

		for (var xSplit = 0; xSplit < nodes.length; xSplit++) {
			nodeSplit = nodes[xSplit].split("~");
		
			if (sb_loadCounter == 1) {
			
				if (nodeSplit[0] == "ald" || nodeSplit[0] == "bld" || nodeSplit[0] == "brd" || nodeSplit[0] == "pld" || nodeSplit[0] == "rld" || nodeSplit[0] == "scr" || nodeSplit[0] == "std" || nodeSplit[0] == "tm"){
					scoreboard.sb_attribSplitFunctions(nodeSplit, arrayName, dNodeName);
				}
				sb_arrOfTeamData[arrayName][nodeSplit[0]] = nodeSplit[1];
			}
			else {
			
				if (nodeSplit[0] == "ald" || nodeSplit[0] == "bld" || nodeSplit[0] == "pld" || nodeSplit[0] == "rld" || nodeSplit[0] == "scr" || nodeSplit[0] == "teamstat" || nodeSplit[0] == "timeouts" || nodeSplit[0] == "ptlead" || nodeSplit[0] == "reblead" || nodeSplit[0] == "astlead" || nodeSplit[0] == "blklead" || nodeSplit[0] == "techfouls")
					if (sb_arrOfTeamData[arrayName][nodeSplit[0]] != nodeSplit[1]) {
						
						if (nodeSplit[0] == "ald" || nodeSplit[0] == "bld" || nodeSplit[0] == "brd" || nodeSplit[0] == "pld" || nodeSplit[0] == "rld" || nodeSplit[0] == "scr" || nodeSplit[0] == "std" || nodeSplit[0] == "tm"){
							scoreboard.sb_attribSplitFunctions(nodeSplit, arrayName, dNodeName);
						}
						sb_arrOfTeamData[arrayName][nodeSplit[0]] = nodeSplit[1];
					}
			}
		
		}
	
		if (sb_loadCounter == 1) {
			sb_arrOfTeamData[arrayName].teamident = dTeam;
			sb_arrOfTeamIndex[dCounter] = sb_arrOfTeamData[arrayName];
		}
		
	},
	
	//SPLITTING ATTRIBUTES WITH pipe or ^ delimited  data
	sb_attribSplitFunctions : function(attrib, arrayName, nodeName) {
		
		var attribName = attrib[0];
		var attribData = attrib[1];
		
		
		if (attribName =="ald" || attribName =="pld" || attribName =="rld" || attribName =="bld" ){
	
			var splitData  = null; 
			var data = null;
			splitData = attribData.split("^");
			
			data = splitData[0];
			splitData = data.split("|");
	
			for (var x = 0; x < splitData.length; x++) {
				var tmpData = splitData[x];
				//split for assists
				if (attribName == "ald") 
				switch (x) {
					case 0: sb_arrOfTeamData[arrayName].ald_playerid = tmpData; break;
					case 1: sb_arrOfTeamData[arrayName].ald_playercode = tmpData; break;
					case 2: sb_arrOfTeamData[arrayName].ald_playername = tmpData; break;
					case 3: sb_arrOfTeamData[arrayName].ald_stat = tmpData; break;
				}	
		
				//split for points	
				if (attribName == "pld") 
				switch (x) {
					case 0: sb_arrOfTeamData[arrayName].pld_playerid = tmpData; break;
					case 1: sb_arrOfTeamData[arrayName].pld_playercode = tmpData; break;
					case 2: sb_arrOfTeamData[arrayName].pld_playername = tmpData; break;
					case 3: sb_arrOfTeamData[arrayName].pld_stat = tmpData; break;
				}
				
				//split for rebounds	
				if (attribName == "rld") 
				switch (x) {
					case 0: sb_arrOfTeamData[arrayName].rld_playerid = tmpData; break;
					case 1: sb_arrOfTeamData[arrayName].rld_playercode = tmpData; break;
					case 2: sb_arrOfTeamData[arrayName].rld_playername = tmpData; break;
					case 3: sb_arrOfTeamData[arrayName].rld_stat = tmpData; break;
				}	
				
				//blocks
				if (attribName == "bld") 
				switch (x) {
					case 0: sb_arrOfTeamData[arrayName].bld_playerid = tmpData; break;
					case 1: sb_arrOfTeamData[arrayName].bld_playercode = tmpData; break;
					case 2: sb_arrOfTeamData[arrayName].bld_playername = tmpData; break;
					case 3: sb_arrOfTeamData[arrayName].bld_stat = tmpData; break;
				}	
		
	
			}
	
		}
	
		if (attribName =="brd"||attribName =="scr"||attribName =="std"||attribName =="tm"){
	
			var splitData2 = attribData.split("|");
			for (var x = 0; x < splitData2.length; x++) {
				var tmpData2 = splitData2[x];
				if (attribName == "scr")
					switch (x) {
						case 0: sb_arrOfTeamData[arrayName].score_q1 = tmpData2; break;
						case 1: sb_arrOfTeamData[arrayName].score_q2 = tmpData2; break;
						case 2: sb_arrOfTeamData[arrayName].score_q3 = tmpData2; break;
						case 3: sb_arrOfTeamData[arrayName].score_q4 = tmpData2; break;
						case 4: sb_arrOfTeamData[arrayName].score_ot1 = tmpData2; break;
						case 5: sb_arrOfTeamData[arrayName].score_ot2 = tmpData2; break;
						case 6: sb_arrOfTeamData[arrayName].score_ot3 = tmpData2; break;
						case 7: sb_arrOfTeamData[arrayName].score_ot4 = tmpData2; break;
						case 8: sb_arrOfTeamData[arrayName].score_final = tmpData2; break;
					}
		
				if (attribName == "brd")
					switch (x) {
						case 0: sb_arrOfTeamData[arrayName].brdcst_tv = tmpData2; break;
						case 1: sb_arrOfTeamData[arrayName].brdcst_rd = tmpData2; break;
					}
					
				//split for standings
				if (attribName == "std")
					switch (x) {
						case 0: sb_arrOfTeamData[arrayName].std_conf = tmpData2; break;
						case 1: sb_arrOfTeamData[arrayName].std_div = tmpData2; break;
					}
					
				if (attribName == "tm")
					switch (x) {
						case 0: sb_arrOfTeamData[arrayName].team_id = tmpData2; break;
						case 1: sb_arrOfTeamData[arrayName].team_name = tmpData2; break;
						case 2: sb_arrOfTeamData[arrayName].team_city = tmpData2; break;
						case 3: sb_arrOfTeamData[arrayName].team_abr = tmpData2; break;
					}
			
			}
	
		}
		
		
	}
	
	
}
