debug=0;
globalDelay = 20;
game = 0;
keyLock = 0;
level = 0;
flash = "";
flashTime = 0;
score = 0;
timeLimit = 0;
sequenceDelay = 600;
sequenceStep = 0;
flashInterval = 0;
dotsRemaining = 0;
times = new Array();
onColor="#222255";
offColor="#8382C8";
notificationBlank = new Image(25,25);
notificationBlank.src = "images/global-spacer.gif";
notificationReact = new Image(155,25);
notificationReact.src = "images/focus-react.gif";
notificationRemember = new Image(360,25);
notificationRemember.src = "images/focus-remember.gif";
notificationGo = new Image(65,25);
notificationGo.src = "images/focus-go.gif";
notificationGood = new Image(125,25);
notificationGood.src = "images/focus-good.gif";
notificationGreat = new Image(155,25);
notificationGreat.src = "images/focus-great.gif";
notificationWhoa = new Image(125,25);
notificationWhoa.src = "images/focus-whoa.gif";
notificationCrazy = new Image(155,25);
notificationCrazy.src = "images/focus-crazy.gif";
notificationInhuman = new Image(215,25);
notificationInhuman.src = "images/focus-inhuman.gif";
notificationAimbot = new Image(185,25);
notificationAimbot.src = "images/focus-aimbot.gif";
notificationHelpyourself = new Image(400,25);
notificationHelpyourself.src = "images/focus-helpyourself.gif";
playOff = new Image(12,52);
playOff.src = "images/focus-play-off.gif";
playOn = new Image(12,52);
playOn.src = "images/focus-play-on.gif";
helpOff = new Image(12,51);
helpOff.src = "images/focus-help-off.gif";
helpOn = new Image(12,51);
helpOn.src = "images/focus-help-on.gif";
highscoresOff = new Image(12,103);
highscoresOff.src = "images/focus-highscores-off.gif";
highscoresOn = new Image(12,103);
highscoresOn.src = "images/focus-highscores-on.gif";
reactionOff = new Image(94,10);
reactionOff.src = "images/focus-reaction-off.gif";
reactionOn = new Image(94,10);
reactionOn.src = "images/focus-reaction-on.gif";
rememberOff = new Image(94,10);
rememberOff.src = "images/focus-remember-off.gif";
rememberOn = new Image(94,10);
rememberOn.src = "images/focus-remember-on.gif";
keySequence = new Array();
var t;
var t2;
var t3;
var t4;
function keyDown(evt)
{
	self.focus;
	window.scroll(0,0); 
	if (keyLock==1) return;
	var nbr, chr;
	if (window.Event) nbr = evt.which;
	else nbr = event.keyCode;
	if  (
			nbr == 20 ||  nbr == 32 || nbr == 13 || 
			nbr == 16 || nbr == 17 || nbr == 18 ||
			(nbr > 47 && nbr < 58) || (nbr > 64 && nbr < 91) || (nbr > 185 && nbr < 193) ||
			(nbr > 218 && nbr < 223)
		)
	{
		if (game==1)
		{
			now = new Date().getTime();
			clearTimeout(timeLimit);
			if (flash=="clown") keyNeeded = 65;
			else keyNeeded = 76;
			if (nbr != keyNeeded)
			{
				gameOver("You hit the wrong key!");
				return;
			}
			reactionTime = now - flashTime;
			times[level] = reactionTime;
			feedback = "";
			if (reactionTime < 2000) feedback = "WAKE UP!";
			if (reactionTime < 1500) feedback = "SLOW!";
			if (reactionTime < 1000) feedback = "MEH.";
			if (reactionTime < 700) feedback = "OK.";
			if (reactionTime < 500) feedback = "NOT BAD!";
			if (reactionTime < 400) feedback = "GOOD!";
			if (reactionTime < 300) feedback = "GREAT!";
			if (reactionTime < 250) feedback = "WOW!";
			if (reactionTime < 230) feedback = "AMAZING!";
			if (reactionTime < 215) feedback = "INHUMAN!!";
			document.getElementById("trialNum").innerHTML = (level+1);
			document.getElementById("trialSpeed").innerHTML = reactionTime;
			document.getElementById("trialFeedback").innerHTML = feedback;
			document.getElementById("textNotificationArea").style.display = "block";
			level++;
			if (level==8)
			{
				handleReactionWin();
				document.getElementById('textNotificationArea').style.display = 'none';
				return;
			}
			keyLock=1;
			document.getElementById("clown").style.display = "none";
			document.getElementById("bunny").style.display = "none";
			setTimeout("setFlash(); document.getElementById('textNotificationArea').style.display = 'none';",4000);
		}
		else if (game == 2)
		{
			for (i=0; i<100; i++) document.getElementById("t"+i).style.display = "none";
			clearTimeout(t3);
			clearTimeout(t2);
			clearTimeout(t);
			document.notify.src = notificationBlank.src;
			if (nbr != keySequence[sequenceStep]) gameOver("You hit the wrong key! Your score was "+score+".");
			else
			{
				sequenceStep++;
				score += ((sequenceStep+1)*dotsRemaining*(level+1))
				document.getElementById("scoreSpan").innerHTML = score;
				if (sequenceStep == (level+2)) newRememberLevel();
				else animateSpiral(99,20);
			}
		}
		document.getElementById("k"+nbr).style.backgroundColor=onColor;
		if (nbr==16) document.getElementById("k16-2").style.backgroundColor=onColor;
		if (nbr==17) document.getElementById("k17-2").style.backgroundColor=onColor;
		if (nbr==18) document.getElementById("k18-2").style.backgroundColor=onColor;
		if (debug) window.status = nbr;
	}
}
function keyUp(evt)
{
	window.scroll(0,0); 
	var nbr, chr;
	if (window.Event) nbr = evt.which;
	else nbr = event.keyCode;
	if  (
			nbr == 20 ||  nbr == 32 || nbr == 13 || 
			nbr == 16 || nbr == 17 || nbr == 18 ||
			(nbr > 47 && nbr < 58) || (nbr > 64 && nbr < 91) || (nbr > 185 && nbr < 193) ||
			(nbr > 218 && nbr < 223)
		)
	{
		document.getElementById("k"+nbr).style.backgroundColor=offColor;
		if (nbr==16) document.getElementById("k16-2").style.backgroundColor=offColor;
		if (nbr==17) document.getElementById("k17-2").style.backgroundColor=offColor;
		if (nbr==18) document.getElementById("k18-2").style.backgroundColor=offColor;
		if (game==1)
		{
			document.getElementById("k76").style.backgroundColor = "#9796E5";
			document.getElementById("k76").style.borderColor = "#E0DBFF";
			document.getElementById("k76").style.color = "#E0DBFF";
			document.getElementById("k65").style.backgroundColor = "#9796E5";
			document.getElementById("k65").style.borderColor = "#E0DBFF";
			document.getElementById("k65").style.color = "#E0DBFF";
		}
	}
}
function randomSequence(length)
{
	for(i=0; i<length; i++)
	{
		rand=0;
		while (!(rand == 20 ||  rand == 32 || rand == 16 || rand == 17 || rand == 192 || (rand > 47 && rand < 58) || (rand > 64 && rand < 91)))
		{
			rand = Math.round(Math.random() * 200);
		}
		keySequence[i] = rand;
	}
}
function playOver(){ document.playImg.src = playOn.src; }
function playOut() { document.playImg.src = playOff.src; }
function helpOver() { document.helpImg.src = helpOn.src; }
function helpOut() { document.helpImg.src = helpOff.src; }
function highscoresOver()
{
	document.highscoresImg.src = highscoresOn.src;
	document.getElementById("highScoreList").style.display = "block";
}
function highscoresOut()
{
	document.highscoresImg.src = highscoresOff.src;
	document.getElementById("highScoreList").style.display = "none";
}
function reactionOver()
{
	document.reaction.src = reactionOn.src;
	document.getElementById("reactionDescription").style.display = "block";
	document.getElementById("bunny").style.display = "none";
	document.getElementById("clown").style.display = "none";
}
function reactionOut()
{
	document.reaction.src = reactionOff.src;
	document.getElementById("reactionDescription").style.display = "none";
}
function rememberOver()
{
	document.remember.src = rememberOn.src;
	document.getElementById("rememberDescription").style.display = "block";
	document.getElementById("bunny").style.display = "none";
	document.getElementById("clown").style.display = "none";
}
function rememberOut()
{
	document.remember.src = rememberOff.src;
	document.getElementById("rememberDescription").style.display = "none";
}
function begin()
{
	document.getElementById("playActive").style.display = "block";
	document.getElementById("timer").style.display = "block";
	document.getElementById('choose').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
	document.getElementById('reactionButton').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
	document.getElementById('rememberButton').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity=0)";
	document.getElementById('choose').style.display = "block";
	document.getElementById('reactionButton').style.display = "block";
	document.getElementById('rememberButton').style.display = "block";
	animateIntro(99);
	animateSpiral(99,globalDelay);
}
function animateIntro(i)
{
	if (t) t = clearTimeout(t);
	document.getElementById('highscores').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+i+")";
	document.getElementById('help').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+i+")";
	document.getElementById('play').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+i+")";
	document.getElementById('playActive').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+i+")";
	document.getElementById('choose').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+(100-i)+")";
	document.getElementById('reactionButton').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+(100-i)+")";
	document.getElementById('rememberButton').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+(100-i)+")";
	document.getElementById('reactionDescription').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+(100-i)+")";
	document.getElementById('rememberDescription').style.filter = "progid:DXImageTransform.Microsoft.Alpha(opacity="+(100-i)+")";
	i--;
	if (i > -1) t = setTimeout("animateIntro("+i+")",20);
	else
	{
		document.getElementById('highscores').style.display = "none";
		document.getElementById('play').style.display = "none";
		document.getElementById('help').style.display = "none";
		document.getElementById('playActive').style.display = "none";
	}
}
function animateSpiral(i3,delay)
{
	if (t3) t3 = clearTimeout(t3);
	if (i3 < 93) document.getElementById('t'+(i3+6)).style.display = "none";
	if (i3 == 96) document.getElementById('t99').style.display = "none";
	if (i3 == 95) document.getElementById('t98').style.display = "none";
	if (i3 == 94) document.getElementById('t97').style.display = "none";
	if (i3 == 93) document.getElementById('t96').style.display = "none";
	if (i3 == 93) document.getElementById('t95').style.display = "none";
	document.getElementById('t'+i3).style.display="block";
	dotsRemaining = i3;
	i3--;
	if (i3 > -1) t3 = setTimeout("animateSpiral("+i3+","+delay+")",delay);
	else
	{
		killTrail(6);
	}
}
function killTrail(i)
{
	if (t) t = clearTimeout(t);
	document.getElementById('t'+i).style.display="none";
	i--;
	if (i > -1) t = setTimeout("killTrail("+i+")",20);
	else
	{
		if (game==2) gameOver("You weren't fast enough! Your score was "+score+".");
		return;
	}
}
function beginReact()
{
	document.getElementById("highScoreList").style.display = "none";
	document.reaction.src = reactionOff.src;
	document.getElementById("gameOver").style.display = "none";
	document.getElementById("reactionButton").style.display = "none";
	document.getElementById("rememberButton").style.display = "none";
	document.getElementById("reactionDescription").style.display = "none";
	document.getElementById("choose").style.display = "none";
	document.notify.src = notificationReact.src;
	document.getElementById("k76").style.backgroundColor = "#9796E5";
	document.getElementById("k76").style.borderColor = "#E0DBFF";
	document.getElementById("k76").style.color = "#E0DBFF";
	document.getElementById("k65").style.backgroundColor = "#9796E5";
	document.getElementById("k65").style.borderColor = "#E0DBFF";
	document.getElementById("k65").style.color = "#E0DBFF";
	game = 1;
	keyLock = 1;
	level = 0;
	setTimeout("document.notify.src = notificationBlank.src; setFlash();",4000);
}
function setFlash()
{
	flashDelay = ((Math.random() * 5000)+500);
	setTimeout("flashImage();",flashDelay);
}
function flashImage()
{
	keyLock=0;
	picture = Math.random();
	if (picture > .5) flash = "clown";
	else flash = "bunny";
	document.getElementById(flash).style.display = "block";
	timeLimit = setTimeout("gameOver('Try reacting next time.')",2000);
	flashTime = new Date().getTime();
}
function gameOver(message)
{
	if (game==2)
	{
		document.rememberForm.remember_score.value = score;
		if (score > minRememberForHighscore) document.getElementById("rememberHighscore").style.display = "block";
	}
	game=0;
	level=0;
	keyLock=0;
	animating=0;
	clearTimeout(t2);
	clearTimeout(t3);
	clearTimeout(t4);
	clearTimeout(timeLimit);
	for (i=0; i<100; i++) document.getElementById("t"+i).style.display = "none";
	document.getElementById("highScoreList").style.display = "block";
	document.getElementById("highScoreList").style.backgroundColor = "Transparent";
	document.getElementById("highScoreList").style.border = "0px none #000000";
	document.getElementById("gameOver").style.display = "block";
	document.getElementById("gameOverMessage").innerHTML = message;
	document.getElementById("choose").style.display = "block";
	document.getElementById("rememberButton").style.display = "block";
	document.getElementById("reactionButton").style.display = "block";
	document.getElementById("scoreBoard").style.display = "none";
	document.getElementById("k76").style.backgroundColor = offColor;
	document.getElementById("k76").style.borderColor = "#B5B1FE";
	document.getElementById("k76").style.color = "#B5B1FE";
	document.getElementById("k65").style.backgroundColor = offColor;
	document.getElementById("k65").style.borderColor = "#B5B1FE";
	document.getElementById("k65").style.color = "#B5B1FE";
}
function handleReactionWin()
{
	total = 0;
	for (i=0;i<8;i++)
	{
		total += times[i];
	}
	avg = Math.round(total/8);
	skillLevel = "Comatose";
	if (avg < 1500) skillLevel = "Asleep";
	if (avg < 1000) skillLevel = "Drunk?";
	if (avg < 800) skillLevel = "Stoned?";
	if (avg < 700) skillLevel = "Average";
	if (avg < 575) skillLevel = "Halfway Decent";
	if (avg < 450) skillLevel = "Fast Fingers";
	if (avg < 350) skillLevel = "Hyperactive!";
	if (avg < 300) skillLevel = "<i>EXTREME!</i>";
	if (avg < 260) skillLevel = "<i>SPEED FREAK!</i>";
	document.reactForm.react_score.value = avg;
	if (avg < maxReactForHighscore) document.getElementById("reactionHighscore").style.display="block";
	gameOver("You finished the game with an average reaction time of "+avg+"ms!<br>Your skill level: <b>"+skillLevel+"</b>")
}
function beginRemember()
{
	document.getElementById("highScoreList").style.display = "none";
	document.remember.src = rememberOff.src;
	document.getElementById("gameOver").style.display = "none";
	document.getElementById("reactionButton").style.display = "none";
	document.getElementById("rememberButton").style.display = "none";
	document.getElementById("rememberDescription").style.display = "none";
	document.getElementById("choose").style.display = "none";
	document.getElementById("scoreBoard").style.display = "block";
	document.notify.src = notificationRemember.src;
	keyLock = 1;
	level = 0;
	animating = 1;
	score=0;
	document.getElementById('scoreSpan').innerHTML = score;
	t4 = setTimeout("document.notify.src = notificationBlank.src; startSequence();",5000);
}
function newRememberLevel()
{
	if (level <= 2) document.notify.src = notificationGood.src;
	if (level > 2 && level < 5) document.notify.src = notificationGreat.src;
	if (level > 4 && level < 7) document.notify.src = notificationWhoa.src;
	if (level > 6 && level < 9) document.notify.src = notificationCrazy.src;
	if (level > 8 && level < 11) document.notify.src = notificationInhuman.src;
	if (level > 10) document.notify.src = notificationAimbot.src;
	dotsRemaining=100;
	keyLock = 1;
	level++;
	setTimeout("document.notify.src = notificationRemember.src;",2500);
	setTimeout("document.notify.src = notificationBlank.src; startSequence();",5000);
}
function startSequence()
{
	game = 2;
	randomSequence((level+2));
	animating = 1;
	sequenceStep = 0;
	flashKey();
}
function flashKey()
{
	self.focus();
	clearInterval(flashInterval);
	if (game<2) return;
	if (sequenceStep<(level+2))
	{
		if (sequenceStep>0) document.getElementById("k"+keySequence[(sequenceStep-1)]).style.backgroundColor = offColor;
		keyToFlash = keySequence[sequenceStep];
		if (sequenceStep>0 && keyToFlash == keySequence[(sequenceStep-1)]) document.getElementById("k"+keyToFlash).style.backgroundColor = "#555522";
		else document.getElementById("k"+keyToFlash).style.backgroundColor = onColor;
		sequenceStep++;
		if (sequenceStep<(level+2)) flashInterval = setInterval('flashKey();', (sequenceDelay+200));
		else flashInterval = setInterval('endSequence();', (sequenceDelay+200))
	}
}
function endSequence()
{
	clearInterval(flashInterval);
	document.getElementById("k"+keySequence[(sequenceStep-1)]).style.backgroundColor = offColor;
	animating = 0;
	sequenceStep = 0;
	keyLock = 0;
	document.notify.src = notificationGo.src;
	t2 = setTimeout("document.notify.src = notificationBlank.src;",2000);
	t = setTimeout("animateSpiral(99,20);",250);
	
}
function helpYourself()
{
	document.getElementById("helpActive").style.display = "block";
	document.notify.src = notificationHelpyourself.src;
	setTimeout('document.notify.src = notificationBlank.src; document.getElementById("helpActive").style.display = "none";',5000)
}
function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i != ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}
randomSequence(5);
document.onkeydown=keyDown;
document.onkeyup=keyUp;
var detect = navigator.userAgent.toLowerCase();
place = detect.indexOf("gecko");
if (place > -1 && (!(readCookie('viewed')==1)))
{
	// document.getElementById("firefoxMessage").style.display = "block";
}
self.focus();
document.getElementById("loadingDiv").style.display = "none";
document.getElementById("r3m" + "3mb3rFo" + "rm").innerHTML = '<form name = "rememberForm" action = "focus.php" method="post"><input type = "text" value = "" name = "user_name" class = "textBox" maxlength="16"><br /><input type = "hidden" value = "2" name = "remember_score"><input type = "hidden" value = "1" name = "game_type"><input type = "submit" value = "Submit" class = "textBox" style = "border-style:outset;"></form>';
document.getElementById("r3" + "fl3xF" + "orm").innerHTML = '<form name = "reactForm" action = "focus.php" method="post"><input type = "text" value = "" name = "user_name" class = "textBox" maxlength="16"><br /><input type = "hidden" value = "3000" name = "react_score"><input type = "hidden" value = "0" name = "game_type"><input type = "submit" value = "Submit" class = "textBox" style = "border-style:outset;"></form>';
