// ==UserScript==
// @name           AddGraph
// @namespace      danbjorn
// @include        http://planet.termisoc.org/
// ==/UserScript==
var debuglog = "";
function debug(text){
	debuglog += text;
	debuglog += "\n";
}

try{
	var names = {};
	var alldays, allchannels, allentries;
	var daynode, day, channelnode, channel, entrynode, entries;
	
	//Twat the document tree with a big XPath stick
	alldays = document.evaluate("//div[@class='daygroup']", document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
	for (var i = 0; i < alldays.snapshotLength; i++) {
		daynode = alldays.snapshotItem(i);
		day = daynode.childNodes[1].innerHTML;
		allchannels = document.evaluate("div[@class='channelgroup']", daynode, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);//div[@class='channelgroup']
		for (var j = 0; j < allchannels.snapshotLength; j++) {
			channelnode = allchannels.snapshotItem(j);
			channel = channelnode.childNodes[1].firstChild.innerHTML;
			allentries = document.evaluate("div[@class='entrygroup']", channelnode, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
			if(!names[channel]){names[channel] = {};}
			names[channel][day] = allentries.snapshotLength;
			if(!names[channel]['total']){names[channel]['total'] = 0;}
			names[channel]['total'] += allentries.snapshotLength;
		}
	}
	
	//We have built up some data. Now for a graph url.
	//This is roughly what we're going for:
	//http://chart.apis.google.com/chart?cht=bvg&chs=300x100&chd=t:30.0|70.0|90.0|70.0|30.0&chco=cc0000,00aa00,cc0000,00aa00,cc0000&chdl=Dan|Ben|Gem|Skippy|Rich&chxt=y&chxl=0:|0|1|2|3|4|5
	var url = "http://chart.apis.google.com/chart?cht=bvg&chs=600x200";
	var allcolours = ["ff0000","00ff00","0000ff","ffff00","00ffff","ff00ff","aaff33"];
	var colindex = 0;
	var data = [];

	for (name in names) {
		data.push(names[name]['total']);
	}
	data.sort(function(a,b){if(a>b){return 1;} else {return -1;}});
	var max = data[data.length-1];
	var factor = (100/max);

	//Data (chd)
	url += "&chd=t:";
	for (name in names) {
		url += (factor * names[name]['total'] * 1.0) + "|";
	}
	url = url.slice(0,url.length-1);

	//Labels (chxl)
	url += "&chxt=y&chxl=0:";
	var jump = Math.floor(max / 10);
	if(jump == 0){jump = 1;}
	for (var k = 1; k <= max; k += jump) {
		url += "|" + k;
	}
	
	//Names (chdl)
	url += "&chdl=";
	for (name in names) {
		url += name + "|";
	}
	url = url.slice(0,url.length-1);
	
	//Colours (chco)
	url += "&chco=";
	for (name in names) {
		url += allcolours[colindex] + ",";
		colindex++;
		if(colindex >= allcolours.length){colindex=0;}
	}
	url = url.slice(0,url.length-1);
	
	//Now display the image
	var body = document.getElementsByTagName('body')[0];
	var image = document.createElement('img');
	image.src = url;
	image.title = "Graph of posts!";
	body.insertBefore(image,body.firstChild);
	//body.insertBefore(document.createTextNode(url),body.firstChild);

}catch(ex){debug("Err: " + ex);}

if(debuglog){
	alert(debuglog);
}
