
var start=1;	//allows timer to start
var MyXp=0;	//possition of letter to be typed
var starttyping=0;
var endtyping=0;
var numofletters=0;
var mistakes=0;
var addmistake = 1;
var strtest="e";
var xPract=0;
var f1;
var t1;
var e1;
var obj1;
var numOfNodes=1;
var popwindow=0;
var popwindow1;
var historyOf="words1";
var wpmTracker=0;
numoflettersT=0;
var secondsT=0;
var mistakesT=0;
var mpmT=0;
var sCh=1;  //starting Ch
function clearRed(){
	var j=divNode.getElementsByTagName("span").length-1;
	for(var i=j;i>=0;--i){
	divNode.getElementsByTagName("span")[i].style.color="black";
divNode.getElementsByTagName("span")[MyXp].style.fontWeight="normal";
	divNode.getElementsByTagName("span")[i].style.textDecoration="none";

	}
	}
function addS(theString) {
var deep=true;
strtest=theString;
lengthT=strtest.length;
numOfNodes=divNode.getElementsByTagName("span").length;
clearRed();
	for(var i=0;i<lengthT;i++){
		if(i <= numOfNodes-1){
		divNode.getElementsByTagName("span")[i].firstChild.data=strtest.charAt(i);			
		}
		else {
	myNode=divNode.getElementsByTagName("span")[i-1].cloneNode(deep);
	myNode.firstChild.data=strtest.charAt(i);
	divNode.appendChild(myNode);
		}
	}
	extraNodes=divNode.getElementsByTagName("span").length-lengthT;
	pos=lengthT-1;
	while(extraNodes>=1){
		divNode.getElementsByTagName("span")[pos].firstChild.data="";
			pos++;
			extraNodes--;
	}}
function starttest(){
numOfNodes=divNode.getElementsByTagName("span").length;
	hiderror();
clearRed();
stopNow=false;
	start=1;
	MyXp=0;
	starttyping=0;
	endtyping=0;
	numofletters=0;	
	document.forms[0].elements[0].focus();
	document.forms[0].elements[0].value="";
	}

function hiderror(){
	e1.style.visibility="hidden";
	}	

function showerror(){
	e1.style.visibility="visible";	
	}	

function compare(e){
if(e.which==0)return;
if(e.keyCode==16)return;
var ns6=(e.which)?true:false;
	var keyChar;
	var k = strtest.length;
	if(start==1){
	start=2;
	clearRed();
	document.forms[0].elements[0].focus();
	document.forms[0].elements[0].value="";
	var beginning=new Date();
	starttyping=beginning.getTime();
	}
	if(MyXp < (k-1))
	{
	if(ns6)keyChar = String.fromCharCode(e.which);
	else keyChar = String.fromCharCode(e.keyCode);

	var ch1=strtest.charAt(MyXp);
	if(ch1==keyChar)
	{
divNode.getElementsByTagName("span")[MyXp+1].style.fontWeight="500";
divNode.getElementsByTagName("span")[MyXp+1].style.textDecoration="underline";
	addmistake = 1;
	hiderror();
divNode.getElementsByTagName("span")[MyXp].style.fontWeight="normal";
divNode.getElementsByTagName("span")[MyXp].style.textDecoration="none";
	MyXp+=1;
if(MyXp>(k-2))excercise_results();
	numofletters+=1;
	return true;
	}
	else
	{
divNode.getElementsByTagName("span")[MyXp].style.color="red";
var j1="";
var j2="";
var j3="";
    if( strtest.charCodeAt(MyXp) == 32 ){
j2="space bar";
    }
    else
    {
j2=ch1;
    }
e1.childNodes[3].firstChild.data=j2;
showerror();
if(addmistake == 1)mistakes+=1;
addmistake=2;
if(MyXp>(k-2))excercise_results();
return false;
	}
	}
	else
	{
	excercise_results();
	}
	}

function stopkey(e){
	if(e.which)return;	
	var ch=e.keyCode;
	if(ch==8){
divNode.childNodes[MyXp+1].style.textDecoration="underline";
hiderror();
	MyXp=MyXp-1;
	return;	
	}	
	}

function excercise_results(e){	
	var endtime=new Date();	
	endtyping=endtime.getTime();
	if(numofletters>0){
	var seconds=(endtyping-starttyping)/1000;
numoflettersT+=numofletters;secondsT+=seconds;mistakesT+=mistakes;
		if(checkForNext()){
		xPract++;
		return;
		}
	var timeTot=secondsT/60;
	var minuteT=Math.floor(timeTot);
	var secTot=secondsT-minuteT*60;
	secTot=Math.round(secTot);
		var words=numoflettersT/5;
		wpm=(words*60)/secondsT;
		wpm=Math.round(wpm);
		words=Math.round(words);
		var mpm=(mistakesT*60)/secondsT;
		nu="p"+mpm;
		re=/[0-9]*\.[0-9]/;
	mpm=re.exec(nu);
	start=1;	//reset time-count initilizer
alert("your typing rate is :  "+wpm+" wpm\nwords typed : "+words+"\nletters typed : "+numoflettersT+"\ntime typed : "+minuteT+" min "+secTot+" sec\nmistakes made : "+mistakesT+"\nmistakes per minute "+mpm+"\n\nacceptable rate is 1 mistake per min regardless of your typing speed");
	if(!stopNow)recordResults(wpm);
	cleartest();
	}
	}
function cleartest(){
	MyXp=0;
	start=1;	//reset time-count initilizer
	numofletters=0;
	numoflettersT=0;
	mistakes=0;
	mistakesT=0;
	secondsT=0;
	addmistake=1;
	starttyping=0;
	endtyping=0;
	stopNow=false;
	}
var rdme=0;
function openReadme(){
	if(rdme==1){
	if(!readme.closed)
	{
	readme.focus();
	}
	else{
	readme=window.open('../help.htm','rwindow',',scrollbars=yes,resizable=yes,width=600,height=300');
	rdme=1;
	}
	}
	else
	{
	readme=window.open('../help.htm','rwindow',',scrollbars=yes,resizable=yes,width=600,height=400');
	rdme=1;
	}
	}
