var bodyFS = 10;
var cycleDir = 1;
var cycleRun = 'off';
var goodWeed = 'off';

function rand(n) {
  return (Math.floor(Math.random() * n + 1 ));
}

function bgChange(state) {
	var bdy = document.getElementsByTagName('body')[0];
	if (!state || state == 'off') {
		bdy.style.backgroundColor = 'rgb(255,255,255)';
		bdy.style.backgroundImage = 'none';
	} else {
		var bgp = rand(50) + 'px ' + rand(50) + 'px';
		var bgc = 'rgb(';
		for (var i = 0; i < 3; i++) {
			bgc += (255 - rand(32)).toString();
			if (i < 2) bgc += ',';
		}
		bgc += ')';
		bdy.style.backgroundColor = bgc;
		bdy.style.backgroundImage = 'url(aea-scale_files/paisley2.png)';
		bdy.style.backgroundPosition = bgp;
	}
}

function reset() {
	if (cycleRun == 'on') {
		cycleRun = 'off';
		clearTimeout(cyc);
	}
	bodyFS = 10;
	var bdy = document.getElementsByTagName('body')[0];
	bdy.style.fontSize = bodyFS + 'px';
	var readout = document.getElementById('readout');
	readout.innerHTML = bodyFS;
	goodWeed = 'off';
	bgChange(goodWeed);
}	

function sizer(direction) {
	if (direction != '88' && direction != '90') return false;
	if (cycleRun == 'on') {
		cycleRun = 'off';
		clearTimeout(cyc);
	}
	if (direction == '88') {
		cycleDir = 1;
		bodyFS++;
	} else {
		cycleDir = -1;
		bodyFS--;
	}
	var bdy = document.getElementsByTagName('body')[0];
	bdy.style.fontSize = bodyFS + 'px';
	var readout = document.getElementById('readout');
	readout.innerHTML = bodyFS;
}

function cycler() {
	if (cycleDir > 0) bodyFS++; else bodyFS--;
	if (bodyFS > 18) {
		cycleDir = -1;
		bodyFS--;
	}
	if (bodyFS < 4) {
		cycleDir = 1;
		bodyFS++;
	}
	var bdy = document.getElementsByTagName('body')[0];
	bdy.style.fontSize = bodyFS + 'px';
	var readout = document.getElementById('readout');
	readout.innerHTML = bodyFS;
	bgChange(goodWeed);
	cyc = setTimeout('cycler()', 1000);
}

// 'keys' code adapted from MozPoint (http://mozpoint.mozdev.org/)
function keys(key) {
	if (!key) {
		key = event;
		key.which = key.keyCode;
	}
	switch (key.which) {
		case 82: // r
			reset();
			break;
		case 88: // x
		case 90: // z
			sizer(key.which);
			break;
		case 67: // c
			if (cycleRun == 'off') {
				cycleRun = 'on';
				cycler();
			} else {
				cycleRun = 'off';
				clearTimeout(cyc);
			}
			break;
		case 66: // b
			if (goodWeed == 'off') {
				goodWeed = 'on';
			} else {
				goodWeed = 'off';
			}
			break;
	}
	return false;
}

function trap(e) {
	if (!e) {
		e = event;
		e.which = e.keyCode;
	}
	try {
		modifierKey = e.ctrlKey || e.altKey || e.metaKey;
	}
	catch(e) {
		modifierKey = false;
	}
	return modifierKey || e.which == 0;
}

function bootstrap() {
	document.onkeyup = keys;
//	document.onkeypress = trap;
}

window.onload = bootstrap;