// email encryption

var EMAIL_CRYPT_SIZE = 16;
// this script will be useless if you can't create the key... ruben
var EMAIL_CRYPT = [0x2b2c3b3c,0x37193b36,0x35303732,0x77362b3e];

var old_radio_value = null;

function get_byte(n, i)
{
	return n >> ((~i & 3) << 3) & 0xff;
}

function decrypt(key)
{
	var res = '';
	for (var i = 0; i < EMAIL_CRYPT_SIZE; i++)
		res += String.fromCharCode(
		    get_byte(EMAIL_CRYPT[i >> 2], i) ^ key);
	return res;
}

function show_email_prompt(show)
{
	var div = document.getElementById('email_prompt');

	// if radio didn't actually change, then return
	if (old_radio_value == show) return;
	old_radio_value = show;

	// remove children
	while (div.firstChild) div.removeChild(div.firstChild);

	var arr;
	if (show) {
		var partext = document.createTextNode(
		    'Now enter a prime number between 83 and 97: ');

		var field = document.createElement('input');
		field.type = 'text';
		field.id = 'email_key';
		field.onkeyup = update_email;
        field.size = 3;
        field.setAttribute('maxlength', 2);
        
		var space = document.createTextNode(' ');

		var span = document.createElement('span');
		span.id = 'email_decrypt';

		arr = [ partext, field, space, span ];
	} else
		arr = [ document.createTextNode('Wrong!') ];
	var par = document.createElement('p');
	for (var i = 0; i < arr.length; i++) par.appendChild(arr[i]);
	div.appendChild(par);
}

function update_whale()
{
	var radios = document.getElementsByName('whale_radio');
	var checked = -1;
	for (var i = 0; i < radios.length; i++)
		if (radios[i].checked) {
			checked = i;
			break;
		}
	show_email_prompt(checked >= 0 && radios[checked].value == 'y');
}

function update_email()
{
	var contents;
	var dst;
	var key;
	var res;
	contents = document.getElementById('email_key').value;
	if (/^\d+$/.test(contents)) {
		key = parseInt(contents);
		res = decrypt(key);
	} else
		res = '';

	dst = document.getElementById('email_decrypt');
	while (dst.firstChild) dst.removeChild(dst.firstChild);
	dst.appendChild(document.createTextNode(res));
}