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

var tableYear;
var newTbody;
var newRow;
var newCell;
var newPara;
var fName;
var tableYear;
var randNum;
var newImage;
var xmlDoc;

function importTable(tYear)
{
	tableYear = tYear;
	randNum = Math.random() * Date.parse(new Date());
	fName="data/tables" + tYear + ".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;
	newImage = document.createElement("img");
	newImage.height=1;
	newImage.alt="";
	newImage.src="images/spacer.gif";
	newImage.width=cWidth;
	newImage.border=0;
	newCell.appendChild(newImage);
	newRow.appendChild(newCell);
}

function createHeaderCell(cTitle, cAlign, cSpan)
{
	newCell = document.createElement("td");
	newCell.height=15;
	newCell.className="smallfontbold";
	newCell.vAlign="bottom";
	newCell.align=cAlign;
	if (cSpan>1) { newCell.colSpan=cSpan; }
	var cellContents = document.createTextNode(cTitle);
	newCell.appendChild(cellContents);
	newRow.appendChild(newCell);
}

function createBodyRow(lArray, lnum)
{
	if (lnum%2 == 0)
	{
		rowColor = "#E1EDFB"
	}
	else
	{
		rowColor = "#F3F3F3"
	}
	newRow = document.createElement('tr');
	newCell = document.createElement("td");
	newCell.height=10;
	newCell.bgColor=rowColor;
	newCell.className="smallfont";
	newCell.align="left";
	var cellContents = document.createTextNode(lnum + 1);
	newCell.appendChild(cellContents);
	newRow.appendChild(newCell);
	for (b=0;b<12;b++)
	{
		newCell = document.createElement("td");
		newCell.height=10;
		newCell.bgColor=rowColor;
		newCell.className="smallfont";
		if (b == 0 || b == 11) { newCell.align="left"; }
		else { newCell.align="right"; }
		if (b == 11) { newCell.bgColor="#FFFFFF"; }
		var cellContents = document.createTextNode(lArray[b]);
		newCell.appendChild(cellContents);
		newRow.appendChild(newCell);
	}
	newTbody.appendChild(newRow);
}

function updateNav(nYear)
//Highlight the current year 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==nYear)
			{
				nav.childNodes[n].className="navbarbold";
			}
			else
			{
				nav.childNodes[n].className="navbar";
			}
		} 
	}
	var season = document.getElementById("season");
	season.innerHTML=nYear;
}

function createTable(thisDivision)
{
	newEl = document.createElement("table");
	newEl.border=0;
	newEl.cellSpacing=1;
	newEl.cellPadding=2;
	//newEl.bgColor="#F7F7F7";
	newEl.width=400;
	newTbody = document.createElement("tbody");
	newRow = document.createElement("tr");
	createSpacerCell(20);
	createSpacerCell(172);
	createSpacerCell(20);
	createSpacerCell(20);
	createSpacerCell(20);
	createSpacerCell(20);
	createSpacerCell(28);
	createSpacerCell(28);
	createSpacerCell(28);
	createSpacerCell(28);
	createSpacerCell(40);
	createSpacerCell(20);
	createSpacerCell(20);
	newTbody.appendChild(newRow);	
	newRow = document.createElement("tr");
	createHeaderCell('DIVISION ' + thisDivision, "left", 10);
	createHeaderCell('Red Cards', "right", 2);
	newTbody.appendChild(newRow);	
	newRow = document.createElement("tr");
	newRow.vAlign="top";
	createHeaderCell('', "left", 1);
	createHeaderCell('', "left", 1);
	createHeaderCell('P', "right", 1);
	createHeaderCell('W', "right", 1);
	createHeaderCell('L', "right", 1);
	createHeaderCell('T', "right", 1);
	createHeaderCell('GF', "right", 1);
	createHeaderCell('GA', "right", 1);
	createHeaderCell('GD', "right", 1);
	createHeaderCell('PT', "right", 1);
	createHeaderCell('LG-CP', "right", 1);
	createHeaderCell('-PT', "right", 1);
	createHeaderCell('', "left", 1);
	newTbody.appendChild(newRow);
}
	
function readXML()
{
	//Traverse the XML document tree. For Firefox, we need to filter out the element nodes (nodeType 1)
	var xd = xmlDoc.getElementsByTagName("division");
	for (d=0;d<xd.length;d++) { //Divisions
		createTable(d+1);
		if (xd[d].nodeType != 1) continue;
		var xl = xd[d].getElementsByTagName("line");
		var lineArray= new Array();
		for (l=0;l<xl.length;l++) //Lines
		{
			var n=0;
			for (c=0;c<xl[l].childNodes.length;c++) { //Cells
				if (xl[l].childNodes[c].nodeType == 1)
				{
					test=xl[l].childNodes[c].firstChild;
					if (test) { //IE can't deal with empty tags
						lineArray[n] = xl[l].childNodes[c].firstChild.nodeValue;
					}
					else {
						lineArray[n] = ""
					}
					n=n+1;
				}
			}
			createBodyRow(lineArray, l);
		}
		newEl.appendChild(newTbody);
		var output = document.getElementById('output');
		if (d == 0)
		{ 
			zcount = output.childNodes.length;
			for (z=0;z<zcount;z++)
			{
				output.removeChild(output.childNodes[0]);
			}
		}
		document.getElementById('output').appendChild(newEl);
	}
	newPara = document.createElement("p");
	newPara.className = "deductions";
	var msg = "[* - denotes additional points deducted for rule violations]"
	var msgNode = document.createTextNode(msg);

	newPara.appendChild(msgNode);
	document.getElementById('output').appendChild(newPara);
	updateNav(tableYear);
}