strt=new Array("Ponderosa pine;","oak,","condalia.","Paper birch:", "pecan.", "cherry.","Weeping willow!","cedar.","catclaw,","hackberry:","greasewood:","bigleaf maple,","mesquite;","peach.","Ponderosa pine.","redbud.","Poison oak:","rosewood!","Arroyo willow.","willow,","Balsam willow:","alder!","alder.","elm;","alder:","Speckled alder!","plum.","juneberry!","buckthorn:","sagebrush.","madrone,","Sugar sumac.","anacua!","rhododendron;","eucalyptus,","manzanita.","Potato-tree.","hazelnut.","oak!","Post oak,","cottonwood.","poplar.","aspen,","Northern hackberry!","basswood.","tuliptree.","sweetgum;","parasoltree,","Arizona sycamore,","mulberry:","fremontia;","peppertree.","bumelia.","jujube.","Desert apricot.","crabapple.","hawthorn:","smokethorn.","leadtree,","soapberry;","kidneywood!","mountain-ash;","walnut!","hickory:","walnut;","catclaw!","paloverde,","Honey mesquite.","Texas ebony:","buffaloberry.","dogwood,","blackhaw!","nannyberry.","ash,","Singleleaf ash!","Bigleaf maple:","ash;","Oregon ash.","horsechestnut,","barreta.","Western juniper!","redshank.","Giant sequoia;","cypress!","redcedar.","Mountain hemlock.","Balsam fir:","spruce;","Apache pine,","Mexican pinyon.","Slippery elm:","Pacific bayberry!","Bitter condalia,","Silver fir!","Austrian pine.","Date palm.","saguaro:","Jumping cholla!","redbay:","toyon,");
stra=new Array("Mountain lion.","chipmunk,","Whitetail deer.","Jaguar;","kangaroo:","opossum!","mongoos lemur.","bobcat!","Mountain goat:","elk,","Snow leopard.","tiger;","House mouse;","cougar!","Ferret,","Jackrabbit:","bear.","beaver;","Bactrian camel:","Pronghorn.","Crested porkupine;","Llama,","Longtail weasel!","sheep:","Frog-eating bat;","Gray wolf;","Cape buffalo.","squirrel.","lynx;","European polecat,","whale.","moose,","Gazelle;","Spotted hyena","Brush rabbit!","armadillo:","Slender mongoos;","pika,","European hare:","spider monkey!","rhinoceros.","koala.","woodchuck!","gorilla,","Rock squirrel.","Norwegian lemming,","impala!","Hog-nosed skunk.","porcupine,","Elephant seal!","ocelot.","arctic fox.","Golden hemster!","giraffe:","striped skunk:","Collared pika;","African elephant!","marten.","Common shrew;","Artic fox;","Bottlenose dolphin:","Arabian oryx,","eland.","Fat dormouse,","Giant otter!","Domestic ferret.","Mountain zebra!","Malay tapir.","Pampas cat,","Kashmir markhor.","Tuco-tuco,","mongoose:","reindeer!","Japanese marten:","indri;","Greater kudu!","Sifakas.","Guinea pig!","yak.","Sambar deer;","polar bear;","jaguar.","Big brown bat;","Bearded seal:","zorilla,","bison!","Grizzly bear.","Bighorn sheep.","wild boar;","armadilo,","bottlenose whale.","manatee.","Woodland caribou!","pronghorn.","Mountain cottontail!","woodchuck;","coyote.","pocket gopher;","badger;","antelope,");
strw=new Array("weather;","Panama,","India;","Nepal;","Germany;","France;","\"fair\";","meet;","started;","while:","personnel;","\"then\";","\"good\";","ticket:","with:","experience;","room:","Michelle;","\"night\";","addition,","great.","shiny,","finding.","students,","summer.","restaurant,","any.","ever.","nonstop;","opportunity.","because;","talking.","emphasis:","returning.","economic,","again.","question.","dining.","people.","quickly.","Houston.","stop,","many,","internship.","beginning.","including.","season,","Xerox.","fall.","encourages.","interested,","hundreds.","zealous.","yourself.","zebra.","willpower.","shipment.","story.","morning,","afternoon.","later.","February.","zealot.","absolute.","forest,","wonder.","yarning.","ruffian.","generation.","yardstick,","plunge.","firsthand.","ardently,","connected.","yearbook.","loans,","elementary.","community.","credit,","homes.","impact:","window.","glass.","fork.","savings,","exposure.","counter.","\"the stool\"!","Jackie,","\"beliefs\".","maintaining.","Washington.","\"better\".","affairs.","real.","wholehearted.","hunters.","schedule.","\"sure\"."); 
strn=new Array("(345+1)=z;","[789-102];","12+6=18;","$1029;","38-2=z;","#67!","56%>55%z;","$6031;","789*4=z;","#3507!","6734%!","9035-1=z;","1784+2=z;","%892!","$5678;","#30!","78+34=z;","1987%z;","234>231z;","$9891!","1 900 345-2376;","$454,","(90*7)=z;","870-23=z;","#19!","89*6=z;","%470!,","78<76z;","713 456-7896;","1 800 923 5464,","#453!","(7890),","65*34=z;","$701!","[3+4]*4=z;","#2!","(5+2)*3=z;","$90453:","45-8*6=z;","(615) 467-4089;","567823,","(90-6)*8=z;","{453+8};","$456;","910%;","#897!","$23;","480-67;","[48];","{34};","[10+(4*7)]=z;","$5679!","{(12-14)*8}=z;","$7892;","3490%!");

var intervalid=null;
var interid=null;
var runinterid=false;
var runintervalid=false;
var bottom_pos=270;
var setstop=null;
var runsetstop=false;

var flag1=0;
var flag2=0;
var flag3=1;
var step=1;
var tb;
var jk=2;
var coverpos;			//top position of covering layer 
var start;			//starts  time at beginning of typing
var end;		//ending time of typing
var strtyped="";
var setstop=null;
var f4=0;
var strx=3;
var count=0;
tpos=new Array();	
str=new Array()
pda=new Array();
pda9a=new Array();
imgstr = new Array();
//following vars are for checking only-useless
jffp=new Array(10);
var fspd=6;	//selected speed
var ftm1=0;	//beginning ex time
var ftm2=0;	//end ex time
var fcl=0;	//counts letters typed
var fnw=1;	//counts all words dislayed
var fwm=0;	//counts words missed and not typed
var jb=1;       //changes to 2 
function preload(){
	for(i=0;i<18;i++){
	imgstr[i]=new Image();
	imst="im/trees/t"+i+".gif";
	imgstr[i].src = imst;
	}
	impur=new Image();
	imfin=new Image();
	impur.src="im/trees/purpl.gif";
	imfin.src="im/trees/fingerpur.gif";
	}
	

function init(){
		preload();
	jtemp=new Array();
	jjt=new Array();

	if(ns4){
		for(i=0;i<17;i++){
		jtemp[i]="document.da.document.da"+i;
		if(i<5)jjt[i]="document.da.document.da9.document.da9a"+i;
		}
	}
//	else if(ie4){
//		for(i=0;i<17;i++){
//		jtemp[i]="da"+i;
//		if(i<5)jjt[i]="da9a"+i;
//
//		}
//	}
//	else if(ns6){
else{
		for(i=0;i<17;i++){
		k="da"+i;
		j="da9a"+i;	
		jtemp[i]=document.getElementById(k);
		if(i<5)jjt[i]=document.getElementById(j);
		}	
	}

		for(i=0;i<17;i++){
		pda[i]=eval(jtemp[i]);
		if(i<5)pda9a[i]=eval(jjt[i]);

		}
	str=strt;
	step=1;
	initposYel();
	hideit(pda9a[0]);
	if(ns4)centerit();
//	high_score(1);
	anim();
	//if(linux){
	//document.onkeydown = getkey; 
	//}
	j=i=10;
	while(i){
	i--;
	jff=i;
	jffp[j-i-1]=jff;
	}

	}



function load_win_again(){
	window.location.reload();
	}

function clickns4(beg,end,whatbutt){
	
	for(var i=beg;i<end;i++){
	k=2*i;
	pda[i].document.images[0].src="im/trees/t"+k+".gif";
	}
	k=2*whatbutt+1;
	pda[whatbutt].document.images[0].src="im/trees/t"+k+".gif";
	}

function clickbutt(beg,end,whatbutt){
	if(whatbutt>4)beg=0;
	if(ns4){
		clickns4(beg,end,whatbutt);
		return;
	}

	for(i=beg,j=beg*2;i<end;i++,j=j+2){
	document.images[i].src=imgstr[j].src;
	}
	k=whatbutt*2+1;
//	if(ns4)document.images[whatbutt].src=imgstr[k].src;
	document.images[whatbutt].src=imgstr[k].src;

	}

function speed(beg,end,whatbutt,spd){
	clickbutt(beg,end,whatbutt);
	if(spd==1)step++;
	else step=1;

		begin(spd);
	}

function picktext(beg,end,whatbutt,st){
	clickbutt(beg,end,whatbutt);
//	clickbutt(5,8,whatbutt);
	str=st;
	if(runintervalid)finish();
	}

function begin(sp){
	fspd=sp;
	number();
	fnw=0;
	errasetext();
	initposYel();
	for(i=0;i<4;i++){
			tpos[i]=str[i];
			showit(pda9a[i]);
	}
	var s=sp;
	jb=2;

	for(i=0;i<4;i++){
	if(ns4)j="<LAYER width='200' height='20'><center><font size='+1'>"+str[i]+"<\/font><\/center><\/LAYER>";
	else
	j=str[i];

		writeit(pda9a[i],j);
	}
	


for(var i=0;i<4;i++){tpos[i]=str[i];}
	if(ns4)document.da.document.da13.document.frm1.txt.focus();	
	else document.forms[1].elements[0].focus();
	scrollit(s)
	}

function scrollit(sp){
if(runintervalid){finish();return;}
	if(!runintervalid){
	fcl=0;
	var s=new Date();
	start=s.getTime();
	ftm1=start;
	}
	tb=bottom_pos;

	coverpos=bottom_pos;	
	if(ns4)document.forms["form0"].elements[jffp[9]].value=fspd;
	else
	document.forms[2].elements[jffp[9]].value=fspd;
	var spd=sp;
	stopit();
	runintervalid=true;
	intervalid=setInterval("moveit()",spd);
	flag1=0;
	}

function moveit(){
	for(i=0;i<4;i++){
		istop=moveVerBy(pda9a[i],step);
	if(istop>tb){
		moveVerTo(pda9a[i],-20);
		fnw+=1;
				if(!pda9a[i].isvisible){
				pda9a[i].isvisible=1;
				showit(pda9a[i]);
				}
				else {
					moveVerBy(pda9a[4],-10)
					tb-=5;   //from here yellow returns
					coverpos-=10;
					fwm+=1;
					if(coverpos<20)finish();
					}
	}
	}
	}

function moveVerTo(pwhat,d){
	if(ns4)pwhat.top=d;
	else pwhat.style.top=d;
	nextword(pwhat);

	}

function moveitTo(pwhat,ver,hor){
	if(ns4){
		pwhat.top=ver;
		pwhat.left=hor;
		}
	else{
		pwhat.style.top=ver;
		pwhat.style.left=hor;
		}
	}




function nextword(pwhat){
m=str.length-1;
if(strx>=m)strx=-1;
	strx++;
	pwhat.text=str[strx];
if(ns4)j="<LAYER width='200' height='20'><center><font size='+1'>"+str[strx]+"<\/font><\/center><\/LAYER>";
	else j=str[strx];
	writeit(pwhat,j);
	}
	
function moveVerBy(pwhat,d){
	if(ns4)i1=pwhat.top;
	else{
		i1=pwhat.style.top;
		i1=parseInt(i1);
	}
	i1+=d;

	if(ns4)pwhat.top=i1;
	else pwhat.style.top=i1;
	return i1;
	}

function getkey(e){

	fcl+=1;
	var ch
	var keyChar;
	var nets=(e.which)?true:false;
		if(nets){
			ch=e.which;
			keyChar = String.fromCharCode(e.which);
			
		}
		else {
			ch=e.keyCode;
			keyChar = String.fromCharCode(e.keyCode);
		}
		if(ch==16)return;
if(ch==8){
		if(strtyped.length<1)return;
	var i=strtyped.length-1;
	var strtyped2="";
	strtyped2=strtyped.substring(0,i)
	strtyped=strtyped2;
	return true;
	}
	

	
	if(ch==13)keyChar =";";
	strtyped+=keyChar;
	switch(keyChar){
		case ";" :
		case ":" :
		case "\," :
		case "\." :
		case "\!" :		
		hideYel();
		strtyped="";
		if(nets)return false;
		else e.keyCode="a";
		
	}		
	return true;
	}

function hideYel(){
	for(var i=0;i<4;i++){
	if(strtyped==pda9a[i].text){
	count+=1;
	tempscore();
	pda9a[i].isvisible=0;
	hideit(pda9a[i]);
	strtyped="";
	}
	errasetext();	
	}
	}

function errasetext(){
	if(ns4)document.da.document.da13.document.frm1.reset();
	else document.forms[1].reset();
	}

function number(){
	var n;
	s2=new Array();
	s3=new Array();
	n=Math.random();
	n=n*100;
	n=Math.round(n);
	s2=str.slice(n);
	s3=str.slice(0,n);
	str=s2.concat(s3);
//	document.forms[jk].elements[jffp[9]].value=fspd;
	fwm=0;
	}	

function tempscore(){
		var tempe=new Date();
		tempend=tempe.getTime();			//marks end of typing
		var tempdiff=(tempend-start)/(60*1000);
		var tempa=1;
		if(tempdiff>1)tempa=Math.sqrt(tempdiff);
		var tscore=count*count/tempa;
		tscore=Math.round(tscore);
		h="<p>your score:<br>"+tscore+"<br>count="+count+"<\/p>";
		writeit(pda[11],h);
		return;
		}

function finish(){
	stopit();
	var e=new Date();
	var end=e.getTime();			//marks end of typing
	var diff=(end-start)/(60*1000);
	var tempa=Math.sqrt(diff);
	ftm2=end;
	if(tempa<1)tempa=1;
	var score=count*count/tempa;
	score=Math.round(score);
	tb=bottom_pos;
	tb1=count;
	coverpos=bottom_pos;
	strx=3;
	strtyped="";
	errasetext();
	coverfin();
	for(i=0;i<4;i++){
	hideit(pda9a[i]);
	}

	
	h="<p>your score: <br>"+score+"<\/p>";
	

	writeit(pda[11],h);
	
	if(ns4)document.forms["form0"].elements[jffp[1]].value=tb1;
	else
	document.forms[jb].elements[jffp[1]].value=tb1;
		if(ns4){document.forms["form0"].elements[jffp[8]].value=ftm1;
document.forms["form0"].elements[jffp[2]].value=fwm;document.forms["form0"].elements[jffp[4]].value=score;}else{
	
/*
	if(!(GetCookie("usrid")))
	{
	clearTimeout(setstop);
	setstop=null;*/
	document.forms[2].elements[jffp[8]].value=ftm1;
	document.forms[jb].elements[jffp[2]].value=fwm;/*
	alert("document.forms[2].elements[1].value="+document.forms[2].elements[1].value+"\nftm1= "+ftm1);
	alert("This is only a demonstration. You need to sign in.");
	gohome();
	return;
	}
*/
document.forms[2].elements[jffp[4]].value=score;}
//	high_score(score);
	wpm=fcl*12000/(ftm2-ftm1);
	wm=Math.round(wpm);
	if(ns4)document.forms["form0"].elements[jffp[0]].value=wm;
	else document.forms[jk].elements[jffp[0]].value=wm;
	count=0;
	}

function high_score(w){
	var score=w;
	var top_score;
	var tree=0;
	if(!(GetCookie("usrid")))
	{
	alert("This is a short demonstration. You need to sign in.");
	}
	else
	{
	if(!(GetCookie("lessons")))return;
	else
	lessons=GetCookie("lessons");
	tree=lessons.substr(30,6);
	tree=parseInt(tree,10);
	if(tree<score)
	{
	a1="000000";
	tree=score;
	j=score.toString();
	i=j.length;
	n=6-i;
	a1=a1.slice(0,n);
	score=a1.concat(j);
	var beg=lessons.substr(0,30);
	var ending=lessons.substr(36,42);
	lessons=beg.concat(score,ending);
	SetCookie("lessons",lessons,null,"/");	
	}
	}
	top_score=tree;

	j="<P>top score:  <FONT SIZE=\"+1\" COLOR=\"cyan\">"+top_score+"<\/FONT><\/P>";
	writeit(pda[10],j);

	}


function stop1(){
	stop2();
	alert("This is only a demonstration. You need to sign in.");
	gohome();
	}

function stop2(){
	if(runsetstop){
	clearTimeout(setstop);
	setstop=null;
	runsetstop=false;
	}
	}

function stopit(){
	if(runintervalid){
		runintervalid=false;
		clearInterval(intervalid);
	}
	if(runinterid){
		runinterid=false;
		clearInterval(interid);
	}
	hideanim();
	}

function writeit(pwhat,whattext){
		if(ns4){
			pwhat.document.open();
			pwhat.document.write(whattext);
			pwhat.document.close();
			}
		else
			pwhat.innerHTML=whattext;
		}

function showit(pwhat){
	if(ns4)pwhat.visibility="show";
	else pwhat.style.visibility="visible";
	}

function hideit(pwhat){
	if(ns4)pwhat.visibility="hide";
	else pwhat.style.visibility="hidden";
	}


function initposYel(){
		var d=50;
		for(i=0;i<4;i++){
		d-=70;
		if(ns4)pda9a[i].top=d;
		else pda9a[i].style.top=d;
		}
		if(ns4)pda9a[4].top=270;
		else pda9a[4].style.top=270;
		for(i=0;i<4;i++){
		pda9a[i].text=str[i];
		}
	
		pda9a[i].isvisible=1;
		}

		

function stopkey(e){
if(strtyped.length<1)return;
	var ch;
	nets=(e.which)?true:false;
		if(nets)return;
		else ch=e.keyCode;
	if(ch==8){
	var i=strtyped.length-1;
	var strtyped2="";
	strtyped2=strtyped.substring(0,i)
	strtyped=strtyped2;
	return ;
	}	

	}	
	
//******* begining of func for initial anim******

function anim(){
	if(runintervalid)return;
	if(runinterid)return;
	flag2=0;
	flag3=1;
	f4=0;
//	if(runinterid)stopinterid();
	runinterid=true;

	interid=setInterval("doit()",200);
}

function doit(){
	var oT;
	var oL;

	flag2++;
		if(flag2==1){
			doposit(149,150,260,261," to begin ...");
		return;
		}
		
		if(flag2<10){
			tobegin();
			return;
		}
	if(flag2<19){return;}

	else if(flag2==19){		

			//titles
		doposit(50,51,230,231,"1\) select text");
		f4=5;
		return;
		}

	else if(flag2<26){
		tobegin();
		return;
		}

	else if(flag2<30)return;

	else if(flag2<35){				//titles
			
			dohilite(5,8);
			return;
		}

	else if(flag2==35){				//titles
			doposit(140,141,180,181,"2\) select speed");
			f4=0;
			return;
		}

	else if(flag2<40){
		tobegin();
		return;
		}

	else if(flag2<45)return;

	else if(flag2<51){				//levels
			dohilite(0,4);
		return;
		}
	else if(flag2==51){			
	doposit(250,251,200,201,"3\) then type ");	
 		return;
		}
		
		if(flag2<58){		
			tobegin();
			return;
		}

		if(flag2<66){		
			flipimg();
			return;
		}

	else{

	clearInterval(interid);
	interid=null;
		hideanim();
		runinterid=false;
			return;
		}
		}

function tobegin(){
	i=getVisibility(pda[16]);
	if(i)hideit(pda[16]);
	else 	showit(pda[16]);
		}
function coverfin(){
if(ns4)document.forms["form0"].elements[jffp[6]].value=ftm2;
	else document.forms[jk].elements[jffp[6]].value=ftm2;
	if(count>0)if(ns4)
	{document.forms["form0"].elements[jffp[5]].value=fcl;
	document.forms["form0"].elements[jffp[3]].value=fnw;
	}else
	{
	document.forms[jb].elements[jffp[5]].value=fcl;
	document.forms[2].elements[jffp[3]].value=fnw;}}
function getVisibility(pwhat){
		var i=0;
		if(ns4){
			if(pwhat.visibility=="show")i=1;
			}
		else {
			if(pwhat.style.visibility=="visible")i=1;
		}
		return i;
		}

function dohilite(i2,i3){
	if(f4>i3){
		k=i3*2;
		if(ns4)pda[i3].document.images[0].src="im/trees/t"+k+".gif";
		else document.images[i3].src="im/trees/t"+k+".gif";	
		return;
		}
	
	clickbutt(i2,i3,f4)
	f4+=1;

	}

function doposit(t1,t2,l1,l2,trs){
	j=new Array();
	j[14]=j[15]=j[16]=trs;
	if(ns4){
	j[14]="<font size='+1' color='black'>"+trs+"<\/font>";
	j[15]="<font size='+1' color='lavender'>"+trs+"<\/font>";
	j[16]="<font size='+1' color='fuchsia'>"+trs+"<\/font>";
	}
	for(i=14;i<17;i++){
		writeit(pda[i],j[i])
		}

	moveitTo(pda[14],t1,l1);
	moveitTo(pda[15],t2,l2);
	moveitTo(pda[16],t2,l2);

	showit(pda[14]);
	showit(pda[15]);
	hideit(pda[16]);
	return;
	}

function flipimg(){
	i=impur.src;
	if(flag2%2==0)i=imfin.src;
	
		if(ns4)document.da.document.da13.document.images[0].src=i;
		else document.images[9].src=i;
	}

function stopinterid(){
	clearInterval(interid);
	interid=null;
	runinterid=false;
	hideanim();
	return;
	}

function hideanim(){
	for(i=14;i<17;i++){
	hideit(pda[i]);
	}
	}

//***** end of func for initial animation*****

function centerit(){
	if(ns4){
	daW=parent.innerWidth;
	daH=parent.innerHeight;
	document.da.left=(daW/2.>350)? (daW/2.-340) : 10;
	document.da.top=(daH/2.>220)? (daH/2.-180) : 10;
	pda[6].left=pda[5].left+79;
	pda[7].left=pda[6].left+89;
	pda[8].left=pda[7].left+79;

	}
	}
var rdme=0;
function openReadme(){
	if(rdme==1){
	if(!readme.closed)
	{
	readme.focus();
	}
	else{
	readme=window.open('NNhowtrees.html','rwindow',',scrollbars=yes,resizable=yes,width=500,height=300');
	rdme=1;
	}
	}
	else
	{
	readme=window.open('NNhowtrees.html','rwindow',',scrollbars=yes,resizable=yes,width=500,height=300');
	rdme=1;
	}
	}

function gohome(){
//	if(!(GetCookie("usrid")))
window.location="http://www.powertyping.com";
//	else window.location="cbhomeu.html";
	}
popwindow=0;
function MM_openBrWindow(theURL,winName,features) { 
	if(popwindow){mypop.focus();return;}
  mypop=window.open(theURL,winName,features);
popwindow=1;
}

function submitsc(){

if(ns4){
	if(document.forms["form0"].elements[jffp[4]].value<5)alert("score is not high enough");
	else
	document.forms["form0"].submit();
	}


else {
	if(document.forms[2].elements[jffp[4]].value<5)alert("score is not high enough");
		else {
	document.forms[2].submit();
	}}
	mypop.close();
	
}
