var xmlRequest;
var wsUrl = "/LiveScoresService.asmx";
var timeoutID;
var interval = 30;		//in seconds
var currentSportID;
var defaultSportID;
var currentConfID = 0;
var sports = new Array();
var sportsDisplayed = [1, 4, 6, 5, 2, 7];   //contains the sports for which icons are displayed
var games;
var rows;
var columns;
var currentPage = 1;
var pageSize;
var totalPages;
var loaded = false;
var cookieHours = 24 * 7;
var tourStartDate = new Date("3/17/09");
var tourEndDate = new Date("4/6/09");

function Sport(sportNode)
{
	this.SportID = parseInt(sportNode.getAttribute("SportID"));
	this.Name = sportNode.getAttribute("Name");
	this.ScoresFunction = sportNode.getAttribute("ScoresFunction");
	if (sportNode.getAttribute("Default").toLowerCase() == "true") defaultSportID = this.SportID;
	this.Week = parseInt(sportNode.getAttribute("Week"));
	this.TotalWeeks = parseInt(sportNode.getAttribute("TotalWeeks"));
	this.TotalPreSeasonWeeks = parseInt(sportNode.getAttribute("TotalPreSeasonWeeks"));
	this.GameDate = sportNode.getAttribute("GameDate");
}

function Game(gameNode)
{
	var nodes;
	this.GameID = parseInt(gameNode.getElementsByTagName("GameId")[0].firstChild.nodeValue);
	this.AwayTeam = gameNode.getElementsByTagName("AwayTeamAbbrev")[0].firstChild.nodeValue;
	this.HomeTeam = gameNode.getElementsByTagName("HomeTeamAbbrev")[0].firstChild.nodeValue;
	this.AwayWins = parseInt(gameNode.getElementsByTagName("AwayWins")[0].firstChild.nodeValue);
	this.AwayLosses = parseInt(gameNode.getElementsByTagName("AwayLosses")[0].firstChild.nodeValue);
	this.HomeWins = parseInt(gameNode.getElementsByTagName("HomeWins")[0].firstChild.nodeValue);
	this.HomeLosses = parseInt(gameNode.getElementsByTagName("HomeLosses")[0].firstChild.nodeValue);
	if (currentSportID == 3 || currentSportID == 5)
	{
		this.AwayRank = parseInt(gameNode.getElementsByTagName("AwayRank")[0].firstChild.nodeValue);
		this.HomeRank = parseInt(gameNode.getElementsByTagName("HomeRank")[0].firstChild.nodeValue);
	}
	this.AwayScore = parseInt(gameNode.getElementsByTagName("AwayScore")[0].firstChild.nodeValue);
	this.HomeScore = parseInt(gameNode.getElementsByTagName("HomeScore")[0].firstChild.nodeValue);
	if (currentSportID == 1)
	{
		nodes = gameNode.getElementsByTagName("AwayPitcher");
		if (nodes.length == 1) this.AwayPitcher = nodes[0].firstChild.nodeValue;
		nodes = gameNode.getElementsByTagName("HomePitcher");
		if (nodes.length == 1) this.HomePitcher = nodes[0].firstChild.nodeValue;
		this.Inning = gameNode.getElementsByTagName("Inning")[0].firstChild.nodeValue;
		this.Outs = parseInt(gameNode.getElementsByTagName("Outs")[0].firstChild.nodeValue);
	}
	else
	{
		if (currentSportID == 6 || currentSportID == 7)
		{
			this.Quarter = gameNode.getElementsByTagName("Period")[0].firstChild.nodeValue;
		}
		else
		{
			nodes = gameNode.getElementsByTagName("Possession");
			if (nodes.length == 1) this.Possession = nodes[0].firstChild.nodeValue;
			this.Quarter = gameNode.getElementsByTagName("Quarter")[0].firstChild.nodeValue;
		}
		if (currentSportID == 7)
		  this.TimeElapsed = parseInt(gameNode.getElementsByTagName("TimeRemaining")[0].firstChild.nodeValue);
		else
		  this.TimeRemaining = parseInt(gameNode.getElementsByTagName("TimeRemaining")[0].firstChild.nodeValue);
	}
	this.StartTime = gameNode.getElementsByTagName("StartTime")[0].firstChild.nodeValue;
}

function pageLoad()
{
	updateLayout();
	setupXmlRequest();
	var cookie = readCookie("ScoresSportID");
	if (cookie != null)
	  currentSportID = parseInt(cookie);
	getParameters();
}

function updateLayout()
{
  var orient;
  if (window.orientation == 0 || window.orientation == 180)
  {
    orient = "portrait";
    rows = 3;
	  columns = 3;
  }
  else
  {
    orient = "landscape";
    rows = 3;
	  columns = 3;
  }
  pageSize = rows * columns;
  document.body.setAttribute("orient", orient);
  setTimeout(hideAddressBar, 100);
  if (loaded)
  {
	  removeGames();
	  displayGames();
	}
}

function showDetails(gameID)
{
	document.getElementById("spinner").style.visibility = "visible";
	document.getElementById("imgSpinner").src = imagePrefix + "SpinnerBlack.gif";
	document.getElementById("backgroundMask").style.display = "block";
	document.getElementById("gameDetails").style.display = "block";
	setupGameDetails(gameID);
}

function hideDetails()
{
	document.getElementById("spinner").style.visibility = "hidden";
	document.getElementById("imgSpinner").src = imagePrefix + "SpinnerWhite.gif";
	document.getElementById("backgroundMask").style.display = "none";
	document.getElementById("gameDetails").style.display = "none";
	clearGameDetails();
}

function toggleInfoDisplay()
{
	if (infoOn)
	{
		document.getElementById("center").style.display = "block";
		document.getElementById("bottom1").style.display = "block";
		document.getElementById("bottom2").style.display = "block";
		document.getElementById("info").style.display = "none";
		document.getElementById("tdConference").style.display = "table-cell";
		document.getElementById("tdDateWeek").style.display = "table-cell";
		document.getElementById("tdPage").style.display = "table-cell";
		event.srcElement.className = "right grayButton";
		infoOn = false;
	}
	else
	{
		document.getElementById("center").style.display = "none";
		document.getElementById("bottom1").style.display = "none";
		document.getElementById("bottom2").style.display = "none";
		document.getElementById("info").style.display = "block";
		document.getElementById("tdConference").style.display = "none";
		document.getElementById("tdDateWeek").style.display = "none";
		document.getElementById("tdPage").style.display = "none";
		event.srcElement.className = "right buttonBright";
		infoOn = true;
	}
}

function setupXmlRequest()
{
	xmlRequest = new XMLHttpRequest();
	xmlRequest.onreadystatechange = xmlStateChange;
}

function getParameters()
{
  xmlRequest.open("POST", wsUrl + "/GetSports", false);
	xmlRequest.send();
}

function getNCAAConferences() {
	xmlRequest.open("POST", wsUrl + "/NCAAConferences", false);
	xmlRequest.send();
}

function bgMaskClick()
{
	if (document.getElementById("tblConfSelect").style.display == "block" || document.getElementById("tblRegionSelect").style.display == "block")
		hideConfSelect();
	else if (document.getElementById("gameDetails").style.display == "block")
		hideDetails();
}

function showConfSelect() {
	document.getElementById("backgroundMask").style.display = "block";
	var gameDate = new Date(sports[currentSportID].GameDate);
	if (currentSportID == 5 && gameDate >= tourStartDate && gameDate <= tourEndDate)
		document.getElementById("tblRegionSelect").style.display = "block";
	else
		document.getElementById("tblConfSelect").style.display = "block";
}

function hideConfSelect()
{
	document.getElementById("tblConfSelect").style.display = "none";
	document.getElementById("tblRegionSelect").style.display = "none";
	document.getElementById("backgroundMask").style.display = "none";
}

function loadSports(doc)
{
  var active = false;
	var sportNodes = doc.getElementsByTagName("Sport");
	for (var i = 0; i < sportNodes.length; i++)
	{
		var node = sportNodes[i];
		var sportID = parseInt(node.getAttribute("SportID"));
		if (sportID == currentSportID && sportsDisplayed.contains(sportID)) active = true;
		sports[sportID] = new Sport(node);
	}
	if (!active)
	{
	  currentSportID = defaultSportID;
	  writeCookie("ScoresSportID", currentSportID, cookieHours);
  }
  
  var sportsPage;
	switch (currentSportID)
	{
		case 1:
			//document.getElementById("mlbButton").className = "on";
			sportsPage = 1;
			break;
		case 2:
			document.getElementById("nflButton").className = "on";
			sportsPage = 1;
			break;
		case 3:
			document.getElementById("ncaafbButton").className = "on";		
			document.getElementById("divConference").style.display = "block";
			sportsPage = 1;
			break;
		case 4:
			document.getElementById("nbaButton").className = "on";
			sportsPage = 1;
			break;
		case 5:
			document.getElementById("ncaabbButton").className = "on";
			document.getElementById("divConference").style.display = "block";
			gameDate = new Date(sports[5].GameDate);
			if (gameDate >= tourStartDate && gameDate <= tourEndDate)
			{
				document.getElementById("divConference").innerText = "All NCAA";
			}
			sportsPage = 2;
			break;
		case 6:
			document.getElementById("nhlButton").className = "on";
			sportsPage = 2;
			break;
		case 7:
		  document.getElementById("mlsButton").className = "on";
		  sportsPage = 2;
		  break;
	}
	
	if (sportsPage == 1)
  {
    document.getElementById('bottom1').style.height = "62px";
    document.getElementById('bottom2').style.height = "0px";
  }
  else if (sportsPage == 2)
  {
    document.getElementById('bottom1').style.height = "0px";
    document.getElementById('bottom2').style.height = "62px";
  }
}

function loadNCAAConferences(doc)
{
	var tbl = document.getElementById("tblConfSelect");
	var confNodes = doc.getElementsByTagName("Conference");
	var tr, td;
	for (var i = 0; i < confNodes.length; i++)
	{
		var confID = parseInt(confNodes[i].getElementsByTagName("ConfID")[0].firstChild.nodeValue);
		var confName = confNodes[i].getElementsByTagName("Abbreviation")[0].firstChild.nodeValue;
		if (i == 0 || tr.cells.length == 3)
			tr = tbl.insertRow(-1);
		td = tr.insertCell(-1);
		td.innerText = confName;
		td.setAttribute("ConfID", confID);
		td.onclick = function() { changeConference() };
	}
	while (tr.cells.length < 3)
	{
		td = tr.insertCell(-1);
	}
}

function displaySports(sportsPage)
{
  if (sportsPage == 1)
  {
    document.getElementById('bottom1').style.height = "62px";
    document.getElementById('bottom2').style.height = "0px";
  }
  else if (sportsPage == 2)
  {
    document.getElementById('bottom1').style.height = "0px";
    document.getElementById('bottom2').style.height = "62px";
  }
}

function changeSport(div, sportID)
{
  writeCookie("ScoresSportID", sportID, cookieHours);
	var divs = document.getElementById("sportButtons1").getElementsByTagName("div");
	for (var i = 0; i < divs.length; i++)
	{
		divs[i].className = "";
	}
	divs = document.getElementById("sportButtons2").getElementsByTagName("div");
	for (var i = 0; i < divs.length; i++)
	{
		divs[i].className = "";
	}
	div.className = "on";
	loaded = false;
	clearTimeout(timeoutID);
	document.getElementById("spinner").style.visibility = "visible";
	currentSportID = sportID;
	if (sportID == 3 || sportID == 5)
		document.getElementById("divConference").style.display = "block";
	else
		document.getElementById("divConference").style.display = "none";
	removeGames();
	getScores();
}

function changeConference()
{
	currentConfID = event.srcElement.getAttribute("ConfID");
	document.getElementById("tblConfSelect").style.display = "none";
	document.getElementById("backgroundMask").style.display = "none";
	document.getElementById("divConference").innerText = event.srcElement.innerText;
	loaded = false;
	clearTimeout(timeoutID);
	document.getElementById("spinner").style.visibility = "visible";
	removeGames();
	getScores();
}

function changeRegion()
{
	currentConfID = event.srcElement.getAttribute("RegID");
	document.getElementById("tblRegionSelect").style.display = "none";
	document.getElementById("backgroundMask").style.display = "none";
	if (currentConfID == 0)
		document.getElementById("divConference").innerText = "All NCAA";
	else if (currentConfID == 5)
	  document.getElementById("divConference").innerText = "All NIT";
	else
		document.getElementById("divConference").innerText = event.srcElement.innerText;
	loaded = false;
	clearTimeout(timeoutID);
	document.getElementById("spinner").style.visibility = "visible";
	removeGames();
	getScores();
}

function changeDateWeek(value)
{
	loaded = false;
	clearTimeout(timeoutID);
	document.getElementById("spinner").style.visibility = "visible";
	var sport = sports[currentSportID];
	if (sport.Week != 0)
	{
	  if (sport.TotalPreSeasonWeeks > 0)
	  {
	    if (sport.Week < 0)
	    {
	      sport.Week -= value;
	      if (Math.abs(sport.Week) > sport.TotalPreSeasonWeeks)
	        sport.Week = 1;
	      else if (sport.Week == 0)
	        sport.Week = -1;
	    }
	    else if (sport.Week == 1 && value == -1)
	    {
	      sport.Week = -sport.TotalPreSeasonWeeks;
	    }
	    else
	    {
	      sport.Week += value;
	    }
	  }
	  else
	  {
	    sport.Week += value;
	  }
		sport.Week = Math.min(sport.Week, sport.TotalWeeks);
	}
	else
	{
		var gameDate = new Date(sport.GameDate);
		var oldGameDate = new Date(gameDate);
		gameDate.setDate(gameDate.getDate() + value);
		if (currentSportID == 5)
		{
			if (value == 1)
			{
				if (oldGameDate < tourStartDate && gameDate >= tourStartDate)
				{
					document.getElementById("divConference").innerText = "All NCAA";
					currentConfID = 0;
				}
				else if (oldGameDate <= tourEndDate && gameDate > tourEndDate)
				{
					document.getElementById("divConference").innerText = "Top 25";
					currentConfID = 0;
				}
			}
			else if (value == -1)
			{
				if (oldGameDate > tourEndDate && gameDate <= tourEndDate)
				{
					document.getElementById("divConference").innerText = "All NCAA";
					currentConfID = 0;
				}
				else if (oldGameDate >= tourStartDate && gameDate < tourStartDate)
				{
					document.getElementById("divConference").innerText = "Top 25";
					currentConfID = 0;
				}
			}
		}
		sport.GameDate = (gameDate.getMonth() + 1) + "/" + gameDate.getDate() + "/" + gameDate.getFullYear().toString().substr(2);
	}
	removeGames();
	getScores();
}

function changePage(value)
{
	currentPage += value;
	if (currentPage < 1)
	  currentPage = 1;
	else if (currentPage > totalPages)
	  currentPage = totalPages;

	removeGames();
	displayGames();
}

function updatePageDisplay()
{
	var spanPage = document.getElementById("spanPage");
	var spanPageText = document.getElementById("spanPageText");
	var images = spanPage.getElementsByTagName("img");
	
	if (totalPages <= 1)
	{
	  spanPage.style.display = "none";
	}
	else
	{
	  spanPage.style.display = "inline";
	  spanPageText.innerText = "Pg " + currentPage;
	  if (currentPage == 1)
	  {
		  images[0].style.display = "none";
		  images[1].style.display = "inline";
	  }
	  else if (currentPage >= totalPages)
	  {
		  images[0].style.display = "inline";
		  images[1].style.display = "none";
	  }
	  else
	  {
	    images[0].style.display = "inline";
	    images[1].style.display = "inline";
	  }
  }
}

function getScores()
{
	var sport = sports[currentSportID];
	var gameDate = new Date(sport.GameDate);
	if (currentSportID == 5 && gameDate >= tourStartDate && gameDate <= tourEndDate)
		xmlRequest.open("POST", wsUrl + "/" + sport.ScoresFunction + "Tour");
	else
		xmlRequest.open("POST", wsUrl + "/" + sport.ScoresFunction);
	xmlRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

	if (sport.Week != 0)		//football
	{
	  if (currentSportID == 3)
	    xmlRequest.send("week=" + sport.Week + "&ConfID=" + currentConfID);
	  else
		  xmlRequest.send("week=" + sport.Week);	
	}
	else
	{
		if (currentSportID == 5)
		{
			if (currentSportID == 5 && gameDate >= tourStartDate && gameDate <= tourEndDate)
				xmlRequest.send("date=" + sport.GameDate + "&RegionID=" + currentConfID);
			else
				xmlRequest.send("date=" + sport.GameDate + "&ConfID=" + currentConfID);
		}
		else
			xmlRequest.send("date=" + sport.GameDate);
	}
}

function loadGames(doc)
{
	var sport = sports[currentSportID];
	var td = document.getElementById("tdDateWeek");
	var images = td.getElementsByTagName("img");
	if (sport.Week != 0)
	{
	  if (currentSportID == 2 && sport.Week > 17)
	  {
	  	var text;
	    switch (sport.Week)
	    {
	      case 18:
	        text = "Wild Card";
	        break;
	      case 19:
	        text = "Divisional";
	        break;
	      case 20:
	        text = "Conference";
	        break;
	      case 21:
	        text = "Super Bowl";
	        break;
	      case 22:
					text = "Pro Bowl";
					break;
	    }
	    document.getElementById("spanDateWeek").innerText = text;
	  }
	  else if (currentSportID == 3 && sport.Week > 14)
	  {
	    document.getElementById("spanDateWeek").innerText = "Bowl Games";
	  }
	  else if (sport.Week < 0)
	  {
	    document.getElementById("spanDateWeek").innerText = "Pre-Season " + Math.abs(sport.Week);
	  }
	  else
	  {
		  document.getElementById("spanDateWeek").innerText = "Week " + sport.Week;
		}
		if (sport.Week == -1 || (sport.TotalPreSeasonWeeks == 0 && sport.Week == 1))
		{
			images[0].className = "disabled";
			images[1].className = "enabled";
		}
		else if (sport.Week == sport.TotalWeeks)
		{
			images[0].className = "enabled";
			images[1].className = "disabled";
		}
		else
		{
			images[0].className = "enabled";
			images[1].className = "enabled";
		}
	}
	else
	{
		document.getElementById("spanDateWeek").innerText = sport.GameDate;
		images[0].className = "enabled";
		images[1].className = "enabled";
	}
	
	games = new Array();
	currentPage = 1;
	var gameNodes = doc.getElementsByTagName("Game");
	var spanPage = document.getElementById("spanPage");
	for (var i = 0; i < gameNodes.length; i++)
	{
		games[i] = new Game(gameNodes[i]);
	}
}

function updateScores(doc)
{
	var gameNodes = doc.getElementsByTagName("Game");
	if (gameNodes.length != games.length)
	{
		loadGames(doc);
		removeGames();
		displayGames();
		return;
	}
	var startIndex = (currentPage - 1) * pageSize;
	var endIndex = startIndex + pageSize - 1;
	for (var i = 0; i < gameNodes.length; i++)
	{
		var tmpGame = new Game(gameNodes[i]);
		if (tmpGame.GameID == games[i].GameID)
		{
			games[i] = tmpGame;
			if (i >= startIndex && i <= endIndex)
			{
				var tbl = document.getElementById("Game_" + tmpGame.GameID);
				if (tbl != null)
				{
					displayGameInfo(tmpGame, tbl);
				}
				else
				{
					loadGames(doc);
					removeGames();
					displayGames();
					return;
				}
			}
		}
		else
		{
			loadGames(doc);
			removeGames();
			displayGames();
			return;
		}
	}
}

function displayGames()
{
	var tblContainer = document.getElementById("tblGames");
	totalPages = Math.ceil(games.length / pageSize);
	if (currentPage > totalPages) currentPage = totalPages;
	updatePageDisplay();
	
	if (totalPages > 0) 
	{
		tblContainer.rows[0].cells[1].innerHTML = "";
	  var startIndex = (currentPage - 1) * pageSize;
	  for (var i = startIndex; i < games.length; i++)
	  {
		  var rowIndex = Math.floor((i - startIndex) / columns);
		  if (rowIndex >= rows) return;
		  var colIndex = (i - startIndex) - rowIndex * columns;
		  var tblGame = createGameTable(games[i].GameID);
		  tblContainer.rows[rowIndex].cells[colIndex].appendChild(tblGame);
		  displayGameInfo(games[i], tblGame);
	  }
	}
	else
	{
		tblContainer.rows[0].cells[1].innerHTML = "<div align=\"right\"><font color=\"white\"><b>No Games</b></font></div>";
	}
}

function removeGames()
{
  var tbl = document.getElementById("tblGames");
	for (var i = 0; i < 3; i++)
	{
		for (var j = 0; j < 4; j++)
		{
			if (tbl.rows[i].cells[j].childNodes.length > 0)
			{
				var tblGame = tbl.rows[i].cells[j].childNodes[0];
				tbl.rows[i].cells[j].removeChild(tblGame);
				tblGame = null;
			}
		}
	}
}

function createGameTable(gameID)
{
	var tblGame = document.createElement("table");
  tblGame.id = "Game_" + gameID;
	tblGame.className = "game";
	tblGame.cellPadding = "0";
	tblGame.cellSpacing = "0";
	tblGame.rules = "none";
	tblGame.onclick = function() { showDetails(gameID); };
	
	var tr = tblGame.insertRow(0);
	var td = tr.insertCell(0);
		
	td.className = "icon";
	td = tr.insertCell(1);
	td.className = "team";
	td = tr.insertCell(2);
	td.className = "score";
	
	tr = tblGame.insertRow(1);
	td = tr.insertCell(0);
	td.className = "icon";
	td = tr.insertCell(1);
	td.className = "team";
	td = tr.insertCell(2);
	td.className = "score";
	
	tr = tblGame.insertRow(2);
	td = tr.insertCell(0);
	td.colSpan = 3;
	td.noWrap = true;
	td.className = "status";
	
	return tblGame;
}

function displayGameInfo(game, tblGame)
{
	tblGame.rows[0].cells[0].innerHTML = "";
	tblGame.rows[1].cells[0].innerHTML = "";
	tblGame.rows[0].cells[1].innerText = game.AwayTeam;
	tblGame.rows[1].cells[1].innerText = game.HomeTeam;
	if (currentSportID == 3 || currentSportID == 5)
  {
    if (game.AwayRank > 0)
    {
      tblGame.rows[0].cells[0].innerText = "(" + game.AwayRank + ")";
    }
    if (game.HomeRank > 0)
    {
      tblGame.rows[1].cells[0].innerText = "(" + game.HomeRank + ")";
    }
  }
	if (game.Inning == "0" || game.Quarter == "NA")
	{
		tblGame.className = "game notStarted";
		tblGame.rows[2].cells[0].innerHTML = game.StartTime;
	}
	else
	{
		switch (currentSportID)
		{
			case 1:
				if (game.Inning == "Cancelled" || game.Inning == "Postponed")
				{
					tblGame.className = "game canceled";
					tblGame.rows[2].cells[0].innerHTML = game.Inning;
				}
				else
				{
					tblGame.rows[0].cells[2].innerText = game.AwayScore;
					tblGame.rows[1].cells[2].innerText = game.HomeScore;
					if (game.Inning.indexOf("Final") >= 0)
					{
						tblGame.className = "game completed";
						tblGame.rows[2].cells[0].innerHTML = game.Inning;
						if (game.AwayScore > game.HomeScore)
						{
							tblGame.rows[0].cells[1].className = "team win";
							tblGame.rows[0].cells[2].className = "score win";
						}
						else if (game.HomeScore > game.AwayScore)
						{
							tblGame.rows[1].cells[1].className = "team win";
							tblGame.rows[1].cells[2].className = "score win";
						}
					}
					else
					{
						tblGame.className = "game inProgress";
						if (game.Inning.indexOf("Delay") >= 0 || game.Inning.indexOf("Suspended") >= 0)
						{
						  tblGame.rows[2].cells[0].innerText = game.Inning;
						  if (game.Inning.indexOf("Suspended") >= 0) tblGame.className = "game completed";
						}
						else
						{
						  var inning = game.Inning.substring(4, game.Inning.length - 2);
						  if (!isNaN(inning))
						  {
							  var outs = game.Outs;
							  if (game.Inning.indexOf("Top") >= 0)
							  {
								  tblGame.rows[0].cells[0].innerHTML = "<img src=\"" + imagePrefix + "Baseball3.png\"/>";
								  tblGame.rows[2].cells[0].innerHTML = "Inn: <font color=\"blue\">" + inning + "</font> Out:&nbsp;";
								  tblGame.rows[2].cells[0].innerHTML += "<img src=\"" + imagePrefix + "Circle" + (outs > 0 ? "On" : "Off") + ".gif\" style=\"margin-right:2px\"/>";
								  tblGame.rows[2].cells[0].innerHTML += "<img src=\"" + imagePrefix + "Circle" + (outs > 1 ? "On" : "Off") + ".gif\"/>";
							  }
							  else if (game.Inning.indexOf("Bot") >= 0)
							  {
								  tblGame.rows[1].cells[0].innerHTML = "<img src=\"" + imagePrefix + "Baseball3.png\"/>";
								  tblGame.rows[2].cells[0].innerHTML = "Inn: <font color=\"blue\">" + inning + "</font> Out:&nbsp;";
								  tblGame.rows[2].cells[0].innerHTML += "<img src=\"" + imagePrefix + "Circle" + (outs > 0 ? "On" : "Off") + ".gif\" style=\"margin-right:2px\"/>";
								  tblGame.rows[2].cells[0].innerHTML += "<img src=\"" + imagePrefix + "Circle" + (outs > 1 ? "On" : "Off") + ".gif\"/>";
							  }
							  else if (game.Inning.indexOf("Mid") >= 0 || game.Inning.indexOf("End") >= 0)
							  {
								  tblGame.rows[2].cells[0].innerHTML = "Inn: <font color=\"blue\">" + game.Inning + "</font>";
							  }
						  }
						}
					}
				}
				break;
			default:
				if (game.Quarter == "Cancelled" || game.Quarter == "Postponed")
				{
					tblGame.className = "game canceled";
					tblGame.rows[2].cells[0].innerHTML = game.Quarter;
				}
				else
				{
					tblGame.rows[0].cells[2].innerText = game.AwayScore;
					tblGame.rows[1].cells[2].innerText = game.HomeScore;
					if (game.Quarter.indexOf("Final") >= 0)
					{
						tblGame.className = "game completed";
						tblGame.rows[2].cells[0].innerHTML = game.Quarter;
						if (game.AwayScore > game.HomeScore)
						{
							tblGame.rows[0].cells[1].className = "team win";
							tblGame.rows[0].cells[2].className = "score win";
						}
						else if (game.HomeScore > game.AwayScore)
						{
							tblGame.rows[1].cells[1].className = "team win";
							tblGame.rows[1].cells[2].className = "score win";
						}
					}
					else if (game.Quarter.indexOf("End") >= 0)
					{
						tblGame.className = "game inProgress";
						if (game.Possession == "A")
						{
							tblGame.rows[0].cells[0].innerHTML = "<img src=\"" + imagePrefix + "FootballIcon.png\"/>";
						}
						else if (game.Possession == "H")
						{
							tblGame.rows[1].cells[0].innerHTML = "<img src=\"" + imagePrefix + "FootballIcon.png\"/>";
						}
						if (currentSportID == 6)
						  tblGame.rows[2].cells[0].innerHTML = "Per: <font color=\"blue\">" + game.Quarter + "</font>";
					  else
						  tblGame.rows[2].cells[0].innerHTML = "Qtr: <font color=\"blue\">" + game.Quarter + "</font>";
					}
					else if (game.Quarter.indexOf("Half") == 0)
					{
						tblGame.className = "game inProgress";
						tblGame.rows[2].cells[0].innerHTML = "<font color=\"blue\">Halftime</font>";
					}
					else
					{
						tblGame.className = "game inProgress";
						if (game.Possession == "A")
						{
							tblGame.rows[0].cells[0].innerHTML = "<img src=\"" + imagePrefix + "FootballIcon.png\"/>";
						}
						else if (game.Possession == "H")
						{
							tblGame.rows[1].cells[0].innerHTML = "<img src=\"" + imagePrefix + "FootballIcon.png\"/>";
						}
						if (currentSportID == 7)
						{
						  var minutes = Math.floor(game.TimeElapsed / 60);
						  var seconds = game.TimeElapsed - minutes * 60;
  						if (seconds < 10) seconds = 0 + "" + seconds;
					    tblGame.rows[2].cells[0].innerHTML = "<img src=\"" + imagePrefix + "Clock.gif\" align=\"top\"/>&nbsp;<font color=\"blue\">" + minutes + ":" + seconds + "</font> ET";
						}
						else
						{
						  var minutes = Math.floor(game.TimeRemaining / 60);
						  var seconds = game.TimeRemaining - minutes * 60;
  						if (seconds < 10) seconds = 0 + "" + seconds;
						  var quarter = game.Quarter;
						  if (!isNaN(quarter.substring(0, 1)) && quarter.indexOf("OT") == -1) 
							  quarter = quarter.substring(0, 1);
						  if (currentSportID == 5 || currentSportID == 6)
						    tblGame.rows[2].cells[0].innerHTML = "Per: <font color=\"blue\">" + quarter + "&nbsp;&nbsp;<img src=\"" + imagePrefix + "Clock.gif\" align=\"top\"/> " + minutes + ":" + seconds + "</font>";
						  else
						    tblGame.rows[2].cells[0].innerHTML = "Qtr: <font color=\"blue\">" + quarter + "&nbsp;&nbsp;<img src=\"" + imagePrefix + "Clock.gif\" align=\"top\"/> " + minutes + ":" + seconds + "</font>";
						}
					}
				}
				break;
		}
	}
}

function xmlStateChange()
{
	if (xmlRequest.readyState == 4) {
	  var doc = xmlRequest.responseXML.documentElement;
		if (doc.tagName == "ArrayOfSport") {
			loadSports(doc);
			getNCAAConferences();
		}
		else if (doc.tagName == "ArrayOfConference") {
			loadNCAAConferences(doc);
			getScores();
		}
		else if (doc.tagName == "ArrayOfGame")
		{
			if (!loaded)
			{
				if (!games) setTimeout(hideAddressBar, 500);
				loadGames(doc);
				displayGames();
				timeoutID = setTimeout(getScores, interval * 1000);
				loaded = true;
			}
			else
			{
				updateScores(doc);
				timeoutID = setTimeout(getScores, interval * 1000);
			}
			document.getElementById("spinner").style.visibility = "hidden";
		}
		else if (doc.tagName == "GameDetails")
		{
			timeoutID = setTimeout(getGameDetails, interval * 1000);
			loadGameDetails(doc);
			removeDetailsNodes();
			displayGameDetails();
			document.getElementById("spinner").style.visibility = "hidden";
		}
	}
}
