var Ajax = new Object(); 
Ajax = {
	xmlObj: (typeof window.ActiveXObject != 'undefined') ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(),
	getXML: function(filename,function_name) { 
		Ajax.xmlObj.open("GET", filename, true);
		Ajax.xmlObj.setRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT");
		Ajax.xmlObj.setRequestHeader("Cache-Control", "no-cache");
		Ajax.xmlObj.onreadystatechange=function() {
			if (Ajax.xmlObj.readyState==4) {
				eval(function_name+'(Ajax.xmlObj.responseText)');
			}
		}
		Ajax.xmlObj.send(null);
	}
}

var timerID = null;
var Tracker = new Object();
Tracker = {
	init: function() {
		var url = 'precinct.txt';
		Ajax.getXML(url,'Tracker.build_base');
	},
	lgColors : new Array(),

	build_base: function(pctList) {		//alert(pctList);
		var datain = pctList.split('\n');
		// build ledgend

		var legd = datain[0].split(',');
		var tp = '';
		for (var i=0; i<legd.length; i+=2) {
			var idx = legd[i].split(':')[0];
			Tracker.lgColors[idx] = legd[i].split(':')[1];
			tp += '<td style="background:#'+Tracker.lgColors[idx]+'">'+legd[i+1]+'</td>';
		}
		document.getElementById('touchpoints').innerHTML = '<table id="colors"><tr>'+tp+'</tr></table>';

		// Build precincts
		var precincts = datain[1].split(',');
		var count = precincts.length;
		var maxcol = (Math.sqrt(count)>20) ? 20 : Math.ceil(Math.sqrt(count));
		var pcts = '';
		var col = 1;
		for (var i in precincts) {
			if (col==maxcol) { col = 1;  pcts += '</tr><tr>'; }
			pcts += (precincts[i]) ? '<td>'+precincts[i]+'</td>' : '<td></td>';
			col++;
		}
		document.getElementById('precincts').innerHTML = '<table id="pcttable" width="100%"><tr>'+pcts+'</tr></table>';
		document.getElementById('tot').innerHTML = count;

		setTimeout("Tracker.get_stats()",100);
		if (!timerID) { timerID = setInterval("Tracker.get_stats()",30000); }

	},

	get_stats: function() {
		var url = 'status.txt';
		Ajax.getXML(url,'Tracker.update_stats');
	},

	update_stats: function(statList) {		//alert(statList);
		var tbl = document.getElementById('pcttable');
		var newstats = statList.split('');
		var r = 0, c = 0;
		for (var i in newstats) {
			if (newstats[i] == '0') {
				tbl.rows[r].cells[c].style.color='#999';
				tbl.rows[r].cells[c].style.background='#fff';
			} else {
				tbl.rows[r].cells[c].style.color = '#000';
				tbl.rows[r].cells[c].style.background='#'+Tracker.lgColors[newstats[i]];
			}
	
			c++;
			if (!tbl.rows[0].cells[c]) { r++; c = 0 }
		}
	}
}

window.onload = Tracker.init;