
//Script to generate a cup results grid from an XML file.
//Last edited 1/11/06 - PB

var newTbody;
var newRow;
var newCell;
var newImage;
var fName;
var cupYear;
var randNum;
var s1 = 1;
var s2 = 1;
var s3 = 1;
var s4 = 1;
var s5 = 1;
var rounds = 3; //Number of rounds in the competition, change as necessary
var cellCount = (rounds * 2) + 1;

function importXML(cYear)
{
	if (document.implementation && document.implementation.createDocument)
	{
		xmlDoc = document.implementation.createDocument("", "", null);
		xmlDoc.onload = createTable;
	}
	else if (window.ActiveXObject)
	{
		xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.onreadystatechange = function () {
			if (xmlDoc.readyState == 4) createTable()
		};
 	}
	else
	{
		alert('Sorry - Your browser can\'t handle this script');
		return;
	}
	cupYear = cYear;
	randNum = Math.random() * Date.parse(new Date());
    fName="data/statecupgrid" + cYear + ".xml?" + randNum;
	xmlDoc.load(fName);
}

function createSpacerCell(cWidth)
{
	newCell = document.createElement("td");
	newImage = document.createElement("img");
	newImage.height=1;
	newImage.alt="";
	newImage.src="img/spacer.gif";
	newImage.width=cWidth;
	newImage.border=0;
	newCell.appendChild(newImage);
	newRow.appendChild(newCell);
}

function createHeaderCell(cTitle)
{
	newCell = document.createElement("th");
	newCell.colSpan=2;
	newCell.height=30;
	//newCell.className="smallfontbold";
	newCell.align="center";
	var cellContents = document.createTextNode(cTitle);
	newCell.appendChild(cellContents);
	newRow.appendChild(newCell);
}

function createBodyRow(cArray,cRow)
{
	newRow = document.createElement('tr');
	for (b=1;b<cellCount;b++)
	{
		newCell = document.createElement("td");
		newCell.height=10;
		//newCell.className="smallfont";
		newCell.align="left";
		if (b==1|b==2)
		{   //Shade in blocks of 4 cells
			if (s1==1|s1==2|s1==3|s1==4) { newCell.bgColor="#E1EDFB"; } 
			s1++;
			if (s1==9) { s1 = 1 }
		}
		if ( b==3|b==4)
		{   //Shade in blocks of 8 cells
			if (s2==3|s2==4|s2==5|s2==6) { newCell.bgColor="#E1EDFB"; }
			s2++;
			if (s2==9) { s2 = 1 }
		}
		if ( b==5|b==6)
		{   //Shade in blocks of 16 cells
			if (s3==7|s3==8|s3==9|s3==10) { newCell.bgColor="#E1EDFB"; }
			s3++;
			if (s3==17) { s3 = 1 }
		}
		if ( b==7|b==8)
		{   //Shade in blocks of 32 cells
			if (s4==15|s4==16|s4==17|s4==18) { newCell.bgColor="#E1EDFB"; }
			s4++;
			if (s4==33) { s4 = 1 }
		}
		if ( b==9|b==10)
		{   //Shade just the center four cells
			if (s5==31|s5==32|s5==33|s5==34) { newCell.bgColor="#E1EDFB"; }
			s5++;
			if (s5==65) { s5 = 1 }
		}
		var cellContents = document.createTextNode(cArray["cell" + b]);
		newCell.appendChild(cellContents);
		newRow.appendChild(newCell);
	}
	newTbody.appendChild(newRow);
}

function updateNav(nYear)
//Highlight the current year in the navbar links and
//update the intro paragraph
{
	var nav = document.getElementById("cupnav");
	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 + " season ";
}

function createTable()
{
	var newEl = document.createElement("table");
	newEl.border=0;
	newEl.cellSpacing=1;
	newEl.cellPadding=2;
	newEl.width=550;
	newEl.className="datagrid";
	newTbody = document.createElement("tbody");
	newRow = document.createElement("tr");
	createSpacerCell(80);
	createSpacerCell(15);
	createSpacerCell(80);
	createSpacerCell(15);
	createSpacerCell(80);
	createSpacerCell(15);
	createSpacerCell(80);
	createSpacerCell(15);
	createSpacerCell(80);
	createSpacerCell(15);
	newTbody.appendChild(newRow);	
	newRow = document.createElement("tr");
	newRow.vAlign="top";
	//createHeaderCell('First Round');
	//createHeaderCell('Second Round');
	//createHeaderCell('Quarter');
	createHeaderCell('Round 1');
	createHeaderCell('Semi');
	createHeaderCell('Final');
	newTbody.appendChild(newRow);	
	
	//Traverse the XML document tree. For Firefox, we need to filter out the element nodes (nodeType=1)
	var x = xmlDoc.getElementsByTagName("results");
	for (r=0;r<x[0].childNodes.length;r++)
	{
		if (x[0].childNodes[r].nodeType != 1) continue;
		//Create a associative array whose item names match the "cellx"
		//format we expect from the XML file and pre-fill with blanks
		var cellArray = new Array();
		for (a=1;a<cellCount;a++)
		{
			cellArray["cell" + a]="";
		}
		//For each of the ten nodes that actually exists in the XML, grab the
		//value and overwrite the corresponding element in the array
		for (c=0;c<x[0].childNodes[r].childNodes.length;c++)
		{
			if (x[0].childNodes[r].childNodes[c].nodeType != 1) continue;
			var theCell = x[0].childNodes[r].childNodes[c].nodeName;
			var theData = x[0].childNodes[r].childNodes[c].firstChild.nodeValue;
			cellArray[theCell]=theData;
		}
		createBodyRow(cellArray,r);
	}
	newEl.appendChild(newTbody);
	if (document.getElementById('output').childNodes.length == 0)
	{ 
		document.getElementById('output').appendChild(newEl);
	}
	else
	{
		var rmChild = document.getElementById('output').childNodes[0];
		document.getElementById('output').replaceChild(newEl, rmChild);
	}
	//updateNav(cupYear);
}