morse.js
// JavaScript: Morse Code Learning Tool
//
// Copyright (c) Paul Griffiths, 2007
// Email: mail@paulgriffiths.net
// Pre-cache images
var symbols = new Array(26);
symbols[0] = new Image(200,61);
symbols[0].src = "/images/program/js/morse/a.png";
symbols[1] = new Image(200,61);
symbols[1].src = "/images/program/js/morse/b.png";
symbols[2] = new Image(200,61);
symbols[2].src = "/images/program/js/morse/c.png";
symbols[3] = new Image(200,61);
symbols[3].src = "/images/program/js/morse/d.png";
symbols[4] = new Image(200,61);
symbols[4].src = "/images/program/js/morse/e.png";
symbols[5] = new Image(200,61);
symbols[5].src = "/images/program/js/morse/f.png";
symbols[6] = new Image(200,61);
symbols[6].src = "/images/program/js/morse/g.png";
symbols[7] = new Image(200,61);
symbols[7].src = "/images/program/js/morse/h.png";
symbols[8] = new Image(200,61);
symbols[8].src = "/images/program/js/morse/i.png";
symbols[9] = new Image(200,61);
symbols[9].src = "/images/program/js/morse/j.png";
symbols[10] = new Image(200,61);
symbols[10].src = "/images/program/js/morse/k.png";
symbols[11] = new Image(200,61);
symbols[11].src = "/images/program/js/morse/l.png";
symbols[12] = new Image(200,61);
symbols[12].src = "/images/program/js/morse/m.png";
symbols[13] = new Image(200,61);
symbols[13].src = "/images/program/js/morse/n.png";
symbols[14] = new Image(200,61);
symbols[14].src = "/images/program/js/morse/o.png";
symbols[15] = new Image(200,61);
symbols[15].src = "/images/program/js/morse/p.png";
symbols[16] = new Image(200,61);
symbols[16].src = "/images/program/js/morse/q.png";
symbols[17] = new Image(200,61);
symbols[17].src = "/images/program/js/morse/r.png";
symbols[18] = new Image(200,61);
symbols[18].src = "/images/program/js/morse/s.png";
symbols[19] = new Image(200,61);
symbols[19].src = "/images/program/js/morse/t.png";
symbols[20] = new Image(200,61);
symbols[20].src = "/images/program/js/morse/u.png";
symbols[21] = new Image(200,61);
symbols[21].src = "/images/program/js/morse/v.png";
symbols[22] = new Image(200,61);
symbols[22].src = "/images/program/js/morse/w.png";
symbols[23] = new Image(200,61);
symbols[23].src = "/images/program/js/morse/x.png";
symbols[24] = new Image(200,61);
symbols[24].src = "/images/program/js/morse/y.png";
symbols[25] = new Image(200,61);
symbols[25].src = "/images/program/js/morse/z.png";
var current = 0; // Stores current letter
var status = 0; // 0 when ready for new question, 1 when ready for answer
var alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; // Used to check whether answer is correct
var total = 0, correct = 0, incorrect = 0; // Score counters
// Function begins a new question
function newQuestion(form) {
current = Math.floor(Math.random() * 26); // Pick a new letter at random
document.images["symbol"].src = symbols[current].src; // Change image to new symbol
form.textBox.value = "Enter your guess."; // Update info box
form.newQ.disabled = true; // Disable 'New question' button
status = 1; // Switch status
}
// Function checks an answer
function giveAnswer(ans, form) {
if ( !status ) // Do nothing if not ready for answer
return;
if ( ans == alphabet.charAt(current) ) { // Check whether answer is correct
form.textBox.value = "Correct! It was: " + ans; // Update info box if correct...
form.correctQ.value = ++correct; // Increment correct score and update box
}
else {
form.textBox.value = "Wrong! It was: " + alphabet.charAt(current); // Update info box if incorrect...
form.incorrectQ.value = ++incorrect; // Increment incorrect score and update box
}
form.totalQ.value = ++total; // Increment total questions and update box
form.newQ.disabled = false; // Enable 'New question' button
form.percentQ.value = Math.round(correct/total*1000)/10 + "%"; // Update % correct box
status = 0; // Switch status
}
// Function resets scores and score boxes
function resetScores(form) {
total = correct = incorrect = 0;
form.totalQ.value = 0;
form.correctQ.value = 0;
form.incorrectQ.value = 0;
form.percentQ.value = "0%";
}