var xmlHttp = tworzXmlHttpRequestObject();
var dirRoot = "http://przepisywanie.pl/wp-content/themes/przepisywanie/";
//var dirRoot = "wp-content/themes/przepisywanie/";
var scierzkaDoPhp = dirRoot + "testSzybkosci/getText.php";
var idDivShowWord = "wysText";
var idTextInput  = "textInsert"; 
var correntWord = 0;
var arrayWord = new Array();
var wordOnePage = 25;
var maxWord = 200;
var timeStart = 60;
var wordOk = 0;
var wordError = 0;
var timeIClock;
var varStart = 0;
var idDivTest = "speedTest"; 
var odestekBledu;
var formHtml = "";
var iloscZnakow = 0;
function nicNieRob(){;}
function xmlToArray(resultsXml){
	var resultsArray = new Array();		
	for(i = 0; i < resultsXml.length; i++)
		resultsArray[i] = resultsXml.item(i).firstChild.data;	
	return resultsArray;
}
function trim(stringToTrim) {
	return stringToTrim.replace(/^\s+|\s+$/g,"");
}
function init(){
	var textInput = document.getElementById(idTextInput);
	textInput.value = "";
	textInput.autocomplete = "off";
	textInput.focus();
	formHtml = document.getElementById(idDivTest).innerHTML;
}
function tworzXmlHttpRequestObject() {
	var xmlHttp;
	try {
		xmlHttp = new XMLHttpRequest();
	} catch (e) {
		var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0",
				"MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0",
				"MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
		for (var i = 0; i < XmlHttpVersions.length && !xmlHttp; i++) {
			try {
				xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
			} catch (e) {				
			}
		}
	}
	if (!xmlHttp){
		alert("Błąd podczas tworzenia obiektu XMLHttpRequest.");
		return 0;
	}
	else
		return xmlHttp; 
}
function getText(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
		xmlHttp.open("GET", scierzkaDoPhp + "?idE=getText", true);
		xmlHttp.onreadystatechange = wstawaText;
		xmlHttp.send(null);
	}
	else 
		setTimeout('getText()', 1000);
}
function wstawaText(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {		
		if (xmlHttp.status == 200) {			
			var xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			arrayWord = xmlToArray(xmlRoot.getElementsByTagName('word'));
			stworzNapis(0,wordOnePage);
			
		}
	}
}
function stworzNapis(wordStart,wordStop){
	var htmlWordView = "";
	startWordGlob = wordStart;
	stopWordGlob = wordStop;
	for(var i = wordStart; i < wordStop; i++){
		if(i == correntWord)
			htmlWordView += "<span class='wordC' id='wordID_"+i+"'>" + arrayWord[i] + "</span> ";
		else
			htmlWordView += "<span class='wordV' id='wordID_"+i+"'>" + arrayWord[i] + "</span> "; 
	}
	document.getElementById(idDivShowWord).innerHTML = htmlWordView;
	
}
function sprawdzWord(){
	function przechwyc(e) {
		var kod = (window.event) ? window.event.keyCode : e.which;
		if(varStart == 0){
			timeIClock = setInterval("timeDown()", 1000);
			varStart = 1;
		}
		if(kod == 32) {			
			var textInput = document.getElementById(idTextInput);
			iloscZnakow += textInput.value.length;
			if(arrayWord[correntWord] == trim(textInput.value)) {
				document.getElementById('wordID_' + correntWord).className = "wordOk";				
				wordOk++;
			}
			else {
				document.getElementById('wordID_' + correntWord).className = "wordError";
				wordError++;
			}			
			correntWord++;			
			textInput.value = "";
			if((correntWord) % wordOnePage == 0) {				
				stworzNapis(correntWord,correntWord + wordOnePage);
			}			
			document.getElementById('wordID_' + correntWord).className = "wordC";			
		}		
	}	
	document.onkeydown = przechwyc;
	
}
function timeDown() {
	timeStart--;
	document.getElementById("clock").innerHTML = timeStart;
	if(timeStart == 0){
		clearInterval(timeIClock);
		podSuma();
	}
}
  
function podSuma(){
	odestekBledu = Math.round(wordError/correntWord * 100);
	var htmlPodSuma = "" +
			"<table>" +
			"<tr>" +
			"<td><span class='wordV'>Szybkość pisania:</span></td><td><span class='wordV'>"+iloscZnakow+"[znaki/m]</span></td><td><span class='wordOk'>Ilość słów prawidłowych:</span></td><td><span class='wordOk'>"+wordOk+"</span></td>" +
			"</tr>" +
			"<tr>" +
			"<td><span class='wordOk'>Odsetek błędu:</span></td><td><span class='wordOk'>"+(odestekBledu)+"%</span></td><td><span class='wordError'>Ilość słów błędnych:</span></td><td><span class='wordError'>"+wordError+"</span></td>" +
			"</tr>" +
			"<tr>" +
			"<td colspan='4'><span class='wordV'>Masz "+"<span class='wordV' id='miejsceR'>Sprawdzam...</span>" +" pozycję w rankingu mistrzów klawiatury.</span></td>" +
			"</tr>" +
			"</table>" +
			"<span class='fA' onclick='restart()'>Spróbuj ponownie</span> <span class='fA' onclick='zapiszWynik()'>Zapisz wynik</span>";
	document.getElementById(idDivTest).innerHTML = htmlPodSuma;
	getPozycje();
}
function restart(){
	correntWord = 0;
	iloscZnakow = 0;
	varStart = 0;
	timeStart = 60;
	odestekBledu = 0;
	wordOk = 0;
	wordError = 0;
	document.getElementById(idDivTest).innerHTML = formHtml;
	getText();
}

function zapiszWynik(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
		var link = "";
		link += "odsetakBledu=" + odestekBledu + "&";		
		link += "correntWord="+ correntWord + "&";
		link += "iloscZnakow="+ iloscZnakow + "&";
		xmlHttp.open("GET", scierzkaDoPhp + "?" + link, true);
		xmlHttp.onreadystatechange = zapiszOK;
		xmlHttp.send(null);
	}
	else 
		setTimeout('zapiszWynik()', 1000);
}
function zapiszOK(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {		
		if (xmlHttp.status == 200) {			
			var xmlResponse = xmlHttp.responseXML;
			try{
				xmlRoot = xmlResponse.documentElement;
				var stat = xmlRoot.getElementsByTagName('stat').item(0).firstChild.data;
				if(stat == "ok"){
					alert('Wynik został zapisany');
				}
			}
			catch (e) {
				alert('Nieudało się zapisać wyniku');
			}	
		}
	}	
}
function getPozycje(){
	var link = "";
	link += "odsetakBledu=" + odestekBledu + "&";		
	link += "correntWord="+ correntWord + "&";
	link += "iloscZnakow="+ iloscZnakow + "&";	
	xmlHttp.open("GET", scierzkaDoPhp + "?getPozucje=1&" + link, true);
	xmlHttp.onreadystatechange = wstawPozycje;
	xmlHttp.send(null);
}

function wstawPozycje(){
	if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) {		
		if (xmlHttp.status == 200) {			
			var xmlResponse = xmlHttp.responseXML;
			try{
				xmlRoot = xmlResponse.documentElement;
				var poz = xmlRoot.getElementsByTagName('poz').item(0).firstChild.data;				
				document.getElementById('miejsceR').innerHTML = poz;
			}
			catch (e) {
				alert('Nieudało się zapisać wyniku');
			}	
		}
	}	
}






