var zestawy =
[
	{ // Zestaw 0
		reakcje: {
			"czerwone": "pedall",
			"zielone": "pedalp",
			"zolte": "",
			"dzwiek": ""
		},
		bodzce: [
			"czerwone",
			"zolte",
			"zielone",
			"dzwiek",
			"czerwone",
			"dzwiek",
			"zolte",
			"czerwone",
			"zielone",
			"",
			"czerwone"
		]
	},
	{ // Zestaw 1
		reakcje: {
			"czerwone": "przycisk",
			"zielone": "przycisk",
			"zolte": "przycisk",
			"dzwiek": "przycisk"
		},
		bodzce: [
			"czerwone",
			"dzwiek",
			"zielone",
			"czerwone",
			"dzwiek",
			"dzwiek",
			"",
			"zielone",
			"",
			"zielone",
			"dzwiek",
			"",
			"zolte",
			"",
			"dzwiek",
			"",
			"zielone",
			"czerwone",
			"zielone",
			"zielone",
			"zolte",
			"zolte",
			"dzwiek",
			"zielone",
			"",
			"dzwiek",
			"",
			"czerwone",
			"zielone",
			"zolte",
			"zolte",
			"",
			"",
			"zielone",
			"czerwone",
			"zielone",
			"",
			"zolte",
			""
		]
	},
	{ // Zestaw 2
		reakcje: {
			"czerwone": "przycisk",
			"zielone": "przycisk",
			"zolte": "przycisk",
			"dzwiek": "pedal"
		},
		bodzce: [
			"czerwone",
			"",
			"czerwone",
			"dzwiek",
			"",
			"zielone",
			"",
			"zolte",
			"",
			"zielone",
			"",
			"zolte",
			"",
			"dzwiek",
			"",
			"",
			"czerwone",
			"",
			"czerwone",
			"dzwiek",
			"zolte",
			"",
			"zolte",
			"czerwone",
			"zielone",
			"zielone",
			"czerwone",
			"czerwone",
			"dzwiek",
			"dzwiek",
			"czerwone",
			"",
			"zolte",
			"",
			"zolte",
			"",
			"czerwone",
			"",
			"zielone",
			"dzwiek",
			"zolte"
		]
	}
];

var ile = 0;
var czasy = [];
var trafiony = [];
var trafionych = 0;
var bledow = 0;
var nadmiarowe = 0;
var zegar = 0;
var zestaw = 0;
var cLimit = 1000; // 1 sekunda na reakcję
var cTakt = 2000; // potem 2 na następny bodziec
var zaliczyc = false;

// Ostatnio zapalone
var akt = '';
var aktStart = new Date();
var aktTrafiony = true;
var i = -1;


function instrukcja(azestaw) {
	zestaw = azestaw;
	z = zestawy[zestaw];
	$('#start').hide();
	$('#wynik').hide();
	$('#instrukcja'+zestaw).show();
	
	return false;
}

function start() {
	$('#instrukcja'+zestaw).hide();
	ile = z.bodzce.length;
	$('#zostalo').html('Zostało: ' + ile);
	
	i = -1;
	czasy = [];
	trafiony = [];
	trafionych = 0;
	bledow = 0;
	nadmiarowe = 0;
	zaliczyc = false;
	
	document.onkeydown = klawisz;
	
	zegar = window.setTimeout(takt, cTakt);
	
	return false;
}

function takt() {
	i++;
	if (i == ile) {
		window.clearInterval(zegar);
		zgas();
		koniec();
		return;
	}
	
	$('#zostalo').html('Zostało: ' + (ile - i - 1));
	aktTrafiony = false;
	aktProb = 0;
	zaliczyc = true;
	akt = z.bodzce[i];
	switch (akt) {
		case "czerwone": $('#czerwone').show(); break;
		case "zolte": $('#zolte').show(); break;
		case "zielone": $('#zielone').show(); break;
		case "dzwiek": $('#dzwiek').show(); dzwiek(); break;
		case "": ; break;
	}
	
	zegar = window.setTimeout(limit, cLimit);
	
	aktStart = new Date();
}

function limit() {
	if (!aktTrafiony) {
		if (zaliczyc &&
			(z.bodzce[i] == '' || z.reakcje[z.bodzce[i]] == '')
		) { // Nie przewidziano żadnej reakcji na dany bodziec
				aktTrafiony = true;
				trafiony[i] = true;
				trafionych++;
		} else {
			trafiony[i] = false;
		}
		zaliczyc = false;
		czasy[i] = 0;
	}
	zgas();
	
	zegar = window.setTimeout(takt, cTakt);
}

function klawisz(e) {
	key = (e != null && e.which != null) ? e.which : window.event.keyCode;
	k = String.fromCharCode(key).toUpperCase();
	switch (k) {
		case 'D': $('#przycisk1').show(); break;
		case 'K': $('#przycisk2').show(); break;
		case 'F': $('#pedall').show(); break;
		case 'J': $('#pedalp').show(); break;
	}
	window.setTimeout(zgasReakcje, 100);
	
	if (!zaliczyc) {
		nadmiarowe++;
		return;
	}
	zaliczyc = false;
	if (
		((k == 'D' || k == 'K') && z.reakcje[z.bodzce[i]] == 'przycisk') ||
		((k == 'F' || k == 'J') && z.reakcje[z.bodzce[i]] == 'pedal') ||
		(k == 'F' && z.reakcje[z.bodzce[i]] == 'pedall') ||
		(k == 'J' && z.reakcje[z.bodzce[i]] == 'pedalp')
		) {
		aktTrafiony = true;
		stop = new Date();
		zgas();
		czasy[i] = stop.getTime() - aktStart.getTime();
		trafiony[i] = true;
		trafionych++;
	} else {
		bledow++;
	}
}

function dzwiek() {
	soundManager.play('bing');
}

function zgas() {
	$('img.bodz').hide();
}

function zgasReakcje() {
	$('img.reak').hide();
}

function koniec() {
	document.onkeydown = null;
	$('#zostalo').html('');
	$('#test').hide();
	obliczWyniki();
	$('#start').show();
}

function obliczWyniki() {
	cmin = 999999999;
	cmax = 0;
	csuma = 0;
	czasy_w = [];
	cile = 0;
	for (var a = 0; a < czasy.length; a++) {
		if (trafiony[a] && czasy[a] > 0) {
			c = czasy[a];
			cmin = Math.min(c, cmin);
			cmax = Math.max(c, cmax);
			csuma += c;
			cile++;
			czasy_w[a] = [a+1, c/1000];
		} else {
			czasy_w[a] = [a+1, null];
		}
	}
	sr = Math.ceil(csuma / cile);
	w = 'Twój wynik: <b>'+trafionych+'</b> poprawnych, szybkich reakcji na <b>'+ile+'</b> bodźców<br/ >';
	if (bledow > 0) {
		w += 'Błędy (zła reakcja): <b>'+bledow+'</b><br/ >';
	}
	if (nadmiarowe > 0) {
		w += 'Nadmiarowe reakcje: <b>'+nadmiarowe+'</b><br/ >';
	}
	w += '<br/ >';
	if (cile > 0) {
		w +=
			'<b>Czas reakcji z trafionych prób:</b><br/ >'+
			'minimalny: '+cmin+' milisekund<br/ >'+
			'maksymalny: '+cmax+' milisekund<br/ >'+
			'średni: '+sr+' milisekund<br/ ><br/ >';
	}
	w += 'Czas reakcji poprawnych prób (z wymaganą reakcją)<br/ ><div id="czas" style="widht: 620px; height: 400px;"></div>';
	$('#wynik').html(w);
	$('#wynik').show();
	
	$.plot($("#czas"), [{label: "Czas reakcji",  data: czasy_w, color: '#cb4b4b', points: { show: true }}],
		{ yaxis: { min: 0, max: 1.1 }, grid: { backgroundColor: "#fffaff" } });
}


