Page Components JavaScript DHTML

jsTypingTutor


/*
#-----------------------------------------------------------------------------
# Name:        jsTypingTutor
# Purpose:     To help build typing speed in users
#              and in developers.
#
# Author:      Jason Don Stracner
#
# Created:     2001/10/06
# RCS-ID:      $Id: jsTypingTutor_lib.js $
# Copyright:   (c) Little Rock Technology Consulting
# Licence:     GPL
#-----------------------------------------------------------------------------
jsTypingTutor - Source Code Documentation
This file is the JavaScript code for jsTypingTutor.  This
project is intended to help users develop faster typing
by simply re-typing text.  The sample text files that are
included are mainly computer code.  Computer code is thought
to make fuller use of the keyboard.  It is a simple matter 
to add your own text to the HTML file and have any text
displayed.
*/
var objTimer=null;
var rStartTime=0;
var rSecondsPassed_=0;
var rPauseStart_=0;
var iStrLen_=0;
var sStatMsg="";
/**
  * Sets text in txtStats_ on the HTML page on a timed interval.
  *
  *
  **/
function timer() {
  var dtNow_ = new Date();
  rSecondsPassed_ = dtNow_.getTime();
  rSecondsPassed_ = rSecondsPassed_ / 1000;
  rSecondsPassed_ = Math.round(rSecondsPassed_ - rStartTime);
  iStrLen_ = document.frmTyping_.txtTop_.value.length;
  iStrLen_ = iStrLen_ + document.frmTyping_.txtTypeHere_.value.length;
  sStatMsg="Characters: " + iStrLen_;
  sStatMsg += "  Seconds Passed:" + rSecondsPassed_;
  sStatMsg += "  Word per minute:" + Math.round((iStrLen_ / rSecondsPassed_)/ (6 / 60));
  document.frmTyping_.txtStats_.value=sStatMsg;
}
/**
  * Called by button in HTML to start running the
  * 'timer' function on a timed interval.
  *
  **/
function startTimer() {
  rStartTime = parseInt((new Date).getTime()/1000);
  rSecondsPassed_=0;
  endTimer();
  objTimer = setInterval("timer();",1000);
}
/**
  * Called by button in HTML to pause the running 
  * of the 'timer' function on a timed interval.
  *
  **/
function pauseTimer() {
  rPauseStart_ = parseInt((new Date).getTime()/1000);
  if (objTimer != null) {
    clearInterval(objTimer);
    objTimer = null;
  }
}
/**
  * Called by button in HTML to resume the running 
  * of the 'timer' function on a timed interval.
  *
  **/
function resumeTimer() {
  rStartTime=rStartTime+(parseInt((new Date).getTime()/1000)-rPauseStart_);
  if (objTimer != null) {
    clearInterval(objTimer);
    objTimer = null;
  }
  objTimer = setInterval("timer();",1000);
}
/**
  * Called by button in HTML to stop running the
  * 'timer' function on a timed interval.
  *
  **/
function endTimer() {
  rSecondsPassed_ = 0;
  if (objTimer != null) {
    clearInterval(objTimer);
    objTimer = null;
  }
}
/**
  * Checks the content of the textbox 'txtTypeHere_'
  * and eleminates any incorrect characters.
  *
  **/
function validateTyping(e) {
  var isNN = (navigator.appName.indexOf("Netscape")!=-1);
  if (isNN) {
    sChar = String.fromCharCode(e.which);
  } else {
    sChar = String.fromCharCode(event.keyCode);
  }
  var iTypedLength =  document.frmTyping_.txtTypeHere_.value.length;
  var sInitialValue = document.frmTyping_.txtBottom_.value.substring(0,iTypedLength);
  var sTestChunk =    document.frmTyping_.txtTypeHere_.value.substring(0,iTypedLength) + sChar;
  var sCorrectChunk = document.frmTyping_.txtBottom_.value.substring(0,iTypedLength+1);
  
  if (sTestChunk != sCorrectChunk) {
    document.frmTyping_.txtTypeHere_.value=sInitialValue;
  } else {
    document.frmTyping_.txtTypeHere_.value=sCorrectChunk;
  }
  if (escape(document.frmTyping_.txtBottom_.value.charAt(iTypedLength))=="%0D") {
    document.frmTyping_.txtTop_.value+= "\n" +
    document.frmTyping_.txtBottom_.value.substring(0,iTypedLength);
    document.frmTyping_.txtBottom_.value=
    document.frmTyping_.txtBottom_.value.substring(iTypedLength+2,document.frmTyping_.txtBottom_.value.length);
    document.frmTyping_.txtTypeHere_.value="";
  }
  
  //There should never be a return character at the end.
  if (escape(document.frmTyping_.txtTypeHere_.value.charAt(iTypedLength-1))=="%0A") {
    // Remove return character.
    document.frmTyping_.txtTypeHere_.value=
       document.frmTyping_.txtTypeHere_.value.substring(0,iTypedLength-2);
  }
}



jsTypingTutor







Typing statistics:



 
 
 




Type text into this area:


Instructions:
Paste some text into this area then press the 'Start button'.