var elements = new Array('instructions','options','game','highscores');
var elementsFx = new Array();
var correct = 0;
var incorrect = 0;
var feedbackFx;
var countd = setTimeout("alert('hi');",1000);
clearTimeout(countd);
window.addEvent('domready', function() {

	for(i=0;i<elements.length;i++) {//alert(elements[i]);
		elementsFx[i] = new Fx.Slide(elements[i], {duration: 300});
	}
	for(i=0;i<elementsFx.length;i++) {
		elementsFx[i].hide();
	}
	show('options');
	feedbackFx = new Fx.Style('feedback', 'opacity', {duration: 500});
});

function captureKeys(evt) {
  var keyCode = evt.keyCode ? evt.keyCode :
  evt.charCode ? evt.charCode : evt.which;
  //alert(keyCode);
  if (keyCode == 13 || keyCode == 3) { // 8=backspace, 46=delete, 9=tab, 13=return, 3=enter (safari), 37=left, 38=up, 39=right, 40=down; 
    if (evt.preventDefault) {
      evt.preventDefault();
    }
    checkAnswer();
    return false;
  } // if keycode is not a number and it is not backspace, delete or an arrow then return false
  if ((keyCode<48 || keyCode>57) && (keyCode!=8 && keyCode!=46 && keyCode!=37 && keyCode!=38 && keyCode!=39 && keyCode!=40)) {
  	return false;
  }
  return keyCode;
}

function show(elid) {
	elementsFx[elements.indexOf(elid)].slideIn();
	for(i=0;i<elementsFx.length;i++) {
		elementsFx[i].slideOut();
	}
}
function generate() {
	var lowerlimit = 0;
	var upperlimit = $('difficulty').value;
	var difference = upperlimit-lowerlimit;
	var rand = lowerlimit + Math.floor(Math.random()*difference);
	return rand;
}

function populate() {
	$('answer').value='';
	$('answer').focus();
	$('x').innerHTML = generate();
	$('y').innerHTML = generate();
}

function startCounter() {
	$('timer').innerHTML = $('timelimit').value;
	setTimeout('countdown();',1000);
}
function countdown() {
	$('timer').innerHTML = $('timer').innerHTML-1;
	if($('timer').innerHTML>0) {
		countd = setTimeout('countdown();',1000);
	}
	else {
		finish();
	}
}

function finish() {
	clearTimeout(countd);
	$('answer').disabled=true;
	$('result').style.display='block';
	$('correct').innerHTML=correct;
	$('incorrect').innerHTML=incorrect;
	url = document.location+'?'+Object.toQueryString({action:'newscore',userid: $('user').value,lowerbound: '0',upperbound: $('difficulty').value,timelimit: $('timelimit').value,correct: correct,incorrect: incorrect,});
	//alert(url);
	new Ajax(url, {
		method: 'get',
		update: $('scorestable'),
		onComplete: function() { show('highscores'); }
	}).request();
}

function checkAnswer() {
	var x = $('x').innerHTML;
	var y = $('y').innerHTML;
	var real = x*y;
	var ans = $('answer').value;
	if(real==ans) {
		$('feedback').innerHTML='<span style="color: green;">&#10003;</span>';
		populate();
		correct++;
	}
	else {
		$('feedback').innerHTML='<span style="color: red;">&#10007;</span>';
		$('answer').value='';
		$('answer').focus();
		incorrect++;
	}
	feedbackFx.set(1);
	setTimeout('feedbackFx.set(0);',200);
}

function play() {
	correct = 0;
	incorrect = 0;
	$('answer').disabled=false;
	show('game');
	populate();
	startCounter();
}
