
//Script to generate result tables from an XML file.
//Last edited 02/17/10 - PB

var newTbody;
var newRow;
var newCell;
var fName;
var randNum;
var newImage;
var thisDiv;
var cards;
var status;
var teamStyleH;
var teamStyleA;
var scoreStyle;
var xmlDoc;

function importResults(cDiv)
{
	spImage = new Image(); 
	spImage.src = "images/spacer.gif";
	rcImage = new Image(); 
	rcImage.src = "images/redcard.png";
	ckImage = new Image(); 
	ckImage.src = "images/tick_small.png";
	thisDiv = cDiv;
	randNum = Math.random() * Date.parse(new Date());
	fName="data/results" + cDiv + ".xml?" + randNum;
	if (document.implementation && document.implementation.createDocument)
	{
		var xmlHTTP = new window.XMLHttpRequest();
		xmlHTTP.open("GET",fName,false);
		xmlHTTP.send(null);
		xmlDoc = xmlHTTP.responseXML.documentElement;
		readXML();
	}
	else if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.onreadystatechange = function () {
			if (xmlDoc.readyState == 4) readXML()
		};
		xmlDoc.load(fName);
 	}
	else
	{
		alert('Sorry - Your browser can\'t handle this script');
		return;
	}
}

function createSpacerCell(cWidth)
{
	newCell = document.createElement("td");
	newCell.height=20;
	var newImage = spImage.cloneNode(false);
	newImage.height=1;
	newImage.width=cWidth;
	newCell.appendChild(newImage);
	newRow.appendChild(newCell);
}

function createBodyRow(lArray, lnum)
{
	teamStyleH = "teamOpenH";
	teamStyleA = "teamOpenA";
	scoreStyle = "scoreOpen";
	newRow = document.createElement('tr');
	// Date
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.className="dateShaded";
	var cellContents = document.createTextNode(lArray[1]);
	newCell.appendChild(cellContents);
	newRow.appendChild(newCell);
	// Home Team
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.className=teamStyleH;
	var cellContents = document.createTextNode(lArray[2]);
	newCell.appendChild(cellContents);
	for (r=0;r<(lArray[3]);r++) {
		var newImage = rcImage.cloneNode(false);
		newCell.appendChild(newImage);
	}
	newRow.appendChild(newCell);
	// Home Goals
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.className=scoreStyle;
	var cellContents = document.createTextNode(lArray[4]);
	newCell.appendChild(cellContents);
	newRow.appendChild(newCell);
	// Away Goals
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.className=scoreStyle;
	var cellContents = document.createTextNode(lArray[5]);
	newCell.appendChild(cellContents);
	newRow.appendChild(newCell);
	// Away Team
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.className=teamStyleA;
	var cellContents = document.createTextNode(lArray[6]);
	newCell.appendChild(cellContents);
	for (r=0;r<(lArray[7]);r++) {
		var newImage = rcImage.cloneNode(false);
		newCell.appendChild(newImage);
	}
	newRow.appendChild(newCell);
	// Approved
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.className="approvedCell";
	if (lArray[0] == "Approved") {
		var newImage = ckImage.cloneNode(false);
		newCell.appendChild(newImage);
	}
	newRow.appendChild(newCell);
	// Forfeit
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.className="forfeitCell";
	var cellContents = document.createTextNode(lArray[8]);
	newCell.appendChild(cellContents);
	newRow.appendChild(newCell);

	// Add the row
	newTbody.appendChild(newRow);
}

function createSpacerRow()
{
	newRow = document.createElement('tr');
	newCell = document.createElement('td');
	newCell.height=20;
	newCell.bgColor="#ffffff";
	newCell.colSpan=5;
	newRow.appendChild(newCell);
	newTbody.appendChild(newRow);
}

function updateNav(nDiv)
//Highlight the current division in the navbar links
{
	var nav = document.getElementById("tablenav");
	for (n=0;n<nav.childNodes.length-1;n++)
	{
		if (nav.childNodes[n].tagName=="A")
		{
			if (nav.childNodes[n].id==nDiv)
			{
				nav.childNodes[n].className="navbarbold";
			}
			else
			{
				nav.childNodes[n].className="navbar";
			}
		} 
	}
	var division = document.getElementById("division");
	division.innerHTML=nDiv;
}

function createTable()
{
	newEl = document.createElement("table");
	newEl.border=0;
	newEl.cellSpacing=1;
	newEl.cellPadding=2;
	newEl.width=400;
	newTbody = document.createElement("tbody");
	newRow = document.createElement("tr");
	createSpacerCell(50);
	createSpacerCell(175);
	createSpacerCell(20);
	createSpacerCell(20);
	createSpacerCell(175);
	createSpacerCell(15);
	createSpacerCell(25);
	newTbody.appendChild(newRow);	
}

function readXML()
{
	//Traverse the XML document tree. For Firefox, we need to filter out the element nodes (nodeType 1)
	var output = document.getElementById('output');
	output.innerHTML="";
	var xd = xmlDoc.getElementsByTagName("week");
	if (xd.length == 0) {
		var newMsgPara = document.createElement('p');
		var newText = "No results available";
		var newMsg = document.createTextNode(newText);
		newMsgPara.appendChild(newMsg);
		output.appendChild(newMsgPara);
	} 
	createTable();
	for (d=0;d<xd.length;d++) { //Loop once for each week
		if (xd[d].nodeType != 1) continue;
		var xl = xd[d].getElementsByTagName("result");
		var lineArray= new Array();
		for (l=0;l<xl.length;l++) //Grab each result
		{
			var n=0;
			for (c=0;c<xl[l].childNodes.length;c++) { //Cells
				if (xl[l].childNodes[c].nodeType == 1)
				{
					if (xl[l].childNodes[c].firstChild) {
						lineArray[n] = xl[l].childNodes[c].firstChild.nodeValue;
					}
					else {
						lineArray[n] = "";
					}
					n=n+1;
				}
			}
			createBodyRow(lineArray, l);
		}
		createSpacerRow();
		newEl.appendChild(newTbody);
		document.getElementById('output').appendChild(newEl);
	}
	updateNav(thisDiv);
}