function collapse(id) {
	try {
		el = document.getElementById('c' + id);
		if (el.style.display != "none") {
			el.style.display="none";
			document.getElementById('a' + id).innerHTML= "+";
		} else {
			el.style.display="block";
			document.getElementById('a' + id).innerHTML= "-";
		}
	} catch (e) {
		parent.rpc.document.location="207.php?children=1&rpc=1&id=" + id;	
		//alert(e);
	}
	return true;
}

function rate(id, rate) {
	 parent.rpc.document.location="207.php?rate=" + rate + "&rpc=1&id=" + id;
}

function top(txt, id) {
	var c = document.createElement("div");
	c.appendChild(document.getElementById(curtop));
	
	document.getElementById('z').innerHTML = txt;

	var old = document.getElementById(curtop);
	var par = old.parentNode;
	par.replaceChild(c.firstChild, old);
	curtop = id;
}

function children(txt, id) {
	var c = document.createElement("div");
	c.id = 'c' + id;
	c.className = 'c';
	c.innerHTML = txt;
	document.getElementById('a' + id).innerHTML= "-";
	document.getElementById(id).appendChild(c);
}

function string_decode () {
	var result = "";
	var i = 0;
	var x;
	var shiftreg = 0;
	var count = -1;

	var str = this.toString();
	for (i=0; i < str.length; i++) {
		c = str.charAt(i);
		if ('A' <= c && c <= 'Z')
			x = str.charCodeAt(i) - 65;
		else if ('a' <= c && c <= 'z')
			x = str.charCodeAt(i) - 97 + 26;
		else if ('0' <= c && c <= '9')
			x = str.charCodeAt(i) - 48 + 52;
		else if (c == '+')
			x = 62;
		else if (c == '/')
			x = 63;
		else
			continue;

		count++;

		switch (count % 4)
		{
		case 0:
			shiftreg = x;
			continue;
		case 1:
			v = (shiftreg<<2) | (x >> 4);
			shiftreg = x & 0x0F;
			break;
		case 2:
			v = (shiftreg<<4) | (x >> 2);
			shiftreg = x & 0x03;
			break;
		case 3:
			v = (shiftreg<<6) | (x >> 0);
			shiftreg = x & 0x00;
			break;
		}

		result = result + String.fromCharCode(v);
	}
	return result.toString();
}

function checkInput() {
	document.forms[0].submit.disabled = !(document.forms[0].txt.value.length > 50 && document.forms[0].txt.value.length < 500 &&  document.forms[0].name.value.length > 0);
}

function init() {
	if (!getCookie("cw_state")) {
		document.getElementById('t').innerHTML = '<p>You will be shown a phrase as soon as you click \'start\' below.<br /><b>Concentrate</b> and try to <b>remember</b> this phrase; you have to re-type it after it is shown.</p><p>Note: it is shown only <b>once</b>.</p><p><a href="#" onclick="anim(0);return false;">start</a></p>';
	} else {
		document.getElementById('t').innerHTML = '<form method="POST" action="207" name="whisper">Now enter the text you just read:<div class="footnote">(more than 50, less than 500 characters)</div><br /><textarea name="txt" onkeyup="checkInput();" class="field"></textarea><br /><br />Enter your name:<br /><input name="name" type="text" onkeyup="checkInput();" class="field"/><br /><input type="submit" name="submit" disabled="disabled" value="submit" class="button" /></form>';
	}
}

function anim(i) {
	//alert(str);
	if (i == 0) {
		str1 = str1.decode();
		str2 = str2.decode();
	}

	l = str1.length;
	if (getCookie("cw_state")) {
		i = l+50;
	}
	if (i < l+50) {
		substr = '<pre>\n';
		substr += str2.slice(0,Math.max(0,i-50));
		substr += '<span class="g1">' + str1.slice(Math.max(0,i-50), Math.max(0,i-45)) + '</span>'; 
		substr += '<span class="g2">' + str1.slice(Math.max(0,i-45), Math.max(0,i-40)) + '</span>'; 
		substr += '<span class="g3">' + str1.slice(Math.max(0,i-40), Math.max(0,i-35)) + '</span>'; 
		substr += '<span class="g4">' + str1.slice(Math.max(0,i-35), Math.max(0,i-30)) + '</span>'; 
		substr += str1.slice(Math.max(0,i-30), i); 
		substr += "</pre>";
		document.getElementById('t').innerHTML = substr;
		i++;
		setTimeout("anim(" + i + ")", 100);
	} else {
		document.getElementById('t').innerHTML = '<form method="POST" action="207" name="whisper">Now enter the text you just read:<div class="footnote">(more than 50, less than 500 characters)</div><br /><textarea name="txt" onkeyup="checkInput();" class="field"></textarea><br /><br />Enter your name:<br /><input name="name" type="text" onkeyup="checkInput();" class="field"/><br /><input type="submit" name="submit" disabled="disabled" value="submit" class="button" /></form>';
		var now = new Date();
		var timeout = Date.parse(now) + 1000 * 60 * 10;
		setCookie('cw_state', 1, new Date(timeout));
	}
}

String.prototype.decode = string_decode;

function setCookie(name, value, expires, path, domain, secure) {
	document.cookie= name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toUTCString() : "") + "; path=/; domain=.drunkmenworkhere.org";

}

function getCookie(name) {
	var dc = document.cookie;
	var prefix = name + "=";
	var begin = dc.indexOf("; " + prefix);
	if (begin == -1) {
		begin = dc.indexOf(prefix);
		if (begin != 0) return null;
	} else {
		begin += 2;
	}
	var end = document.cookie.indexOf(";", begin);
	if (end == -1) {
		end = dc.length;
	}
	return unescape(dc.substring(begin + prefix.length, end));
}
