
//        ********************************
//        *********   StoryBard   ********
//        ********************************

// this script was created by Steve Bolton a.k.a. sirtib (sirtib@hotmail.com) - April 2004
// please ask for permission to use it :) ************************************************

var myOldArray = new Array();
var myNewArray = new Array();
var myNoPunctArray = new Array();
var myTries = [];

toArrays(myOldString);

var myNewString = "";
var temp = "";

//statistics
var wrongs = new Array();
var rights = 1;
var help = 0;
var hints = 0;
var helpStatus = "";
var right = 0;
var wrong = 0;
var totWords = 0;
var totAsts = 0;
var comparison = "";

//status
var seeingtext = 0;
var already = 0;

function showStatus() {	
	document.myForm.mySearch.focus();	
	var helpStatus =  "<p style=\"padding:0px;\"><strong>Statistics:</strong>" + "<br>" + "Hints: " + hints + "<br>" + "Show text: " + help 
	+ "<br>" + "Right guesses: " + right + "/" + totWords + "</p>";
	document.getElementById('statistics').innerHTML = helpStatus;
}

//this happens first!! *********************************************************
function toArrays(oldText)
{
	var firstChar = 0;
	var lastChar = 0;
	var nextWord = "";
	var wordCount = 0;
	for(n = 0; n < oldText.length; n++) {
		nextWord = "";
		
		if(oldText.charCodeAt(n) == 32) { // 32 = space
			lastChar = n
			nextWord = oldText.slice(firstChar, lastChar);
			myOldArray[wordCount] = nextWord;
			myNewArray[wordCount] = nextWord;
			myNoPunctArray[wordCount] = nextWord;
			wordCount = wordCount + 1;
		}
		
		firstChar = lastChar;		
	}
	// clean up last word at end of list
	if (firstChar < oldText.length) {
			lastChar = oldText.length;
			nextWord = oldText.slice(firstChar, lastChar);
			myOldArray[wordCount] = nextWord;
			myNewArray[wordCount] = nextWord;
			myNoPunctArray[wordCount] = nextWord;			
	}
	
	// MAKE NO PUNCT ARRAY PLUS ALL LOWER CASE
	myWord = ""
	for(n = 0; n < myNoPunctArray.length; n++) {
		for(i = 0; i < myNoPunctArray[n].length; i++) {
			if ((myNoPunctArray[n].charCodeAt(i) > 96 && myNewArray[n].charCodeAt(i) < 123) || 
			(myNewArray[n].charCodeAt(i) > 64 && myNewArray[n].charCodeAt(i) < 91) || 
			(myNewArray[n].charCodeAt(i) > 47 && myNewArray[n].charCodeAt(i) < 58) || 
			(myNoPunctArray[n].charCodeAt(i) == 39)) {
				myWord = myWord + myNoPunctArray[n].charAt(i)
			}
		}
		// make all lower case
		myWord = myWord.toLowerCase();
		myNoPunctArray[n] = myWord;
		myWord = "";
	}
}

function setUp()
{
	// FIRST OUTPUT *************'S
	var myOldWord = "";
	var myNewWord = "";
	var myText = "";
	for(n = 0; n < myNewArray.length; n++) {
		myOldWord = myNewArray[n];
		myNewWord = myOldWord.replace(/[a-zA-Z]/g, "&bull;");
			
		myNewArray[n] = myNewWord;
		myOldArray[n] = myOldWord;
		
		if(myNoPunctArray[n] == "sbsbsbsb") {
			myText = myText + " <BR><BR>";
			comparison = comparison + " <BR><BR>";
		} else {
			myText = myText + myNewWord;
			comparison = comparison + myOldWord;
			// ADD ONLY LETTER WORDS TO WORD COUNT
			if(myNewWord.search(/\d/) == -1) {
				totWords = totWords + 1;
			}
		myNewWord = "";
		}
	}
	document.getElementById('pOutput').innerHTML = "";
	document.getElementById('pOutput').innerHTML = myText;
	
	showStatus();
	
	document.myForm.mySearch.focus();
}

function checkIt(theString)
{
	var searchString = document.myForm.mySearch.value;
	var theWord = ""
	var rights = 1;
	var already = 0;
	
	// MAKE SURE THERE'S INPUT!
	if(searchString == "") {
		alert('Please enter some text');
	}

	// CHECK FOR MULTIPLE WORDS
	x = searchString.search(" ");
	if(x != -1) {
		alert('Please enter one word at a time');		
	}

	// CHECK FOR REPETITION
	for(n = 0; n < myTries.length; n++) {
		if(myTries[n] == searchString) {
			already = 1;
			alert("You've already tried that word");
			document.myForm.mySearch.value = "";
		} 
	}

	if(already == 0) {

		myTries[myTries.length] = searchString;

		// to lower case for comparison
		searchString = searchString.toLowerCase();

		for(n = 0;n < myNoPunctArray.length; n++) {		
			if(myNoPunctArray[n] == searchString) {
				myNewArray[n] = myOldArray[n]; // put the space back where it was!
				rights++;
				right++;
			} else {
				// workaround to check words in single quotes
				if(myNoPunctArray[n] == '\'' + searchString + '\'') {
					myNewArray[n] = myOldArray[n]; // put the space back where it was!
					rights++;
					right++;
				} else {
					document.myForm.mySearch.value = "";
				}
			}
		}

		showStatus();

		if(rights < 2) {
			wrongs[wrongs.length] = searchString;
			wrong = wrong + 1;
			showStatus();
		}

		// OUTPUT WRONG Guesses
		myText = "";
		for(n=0;n<wrongs.length;n++) {
			if(wrongs[n] != "") {
				myText = wrongs[n] + " <BR>" + myText;
			}
		}
		
		if (wrong > 0) {
			document.getElementById('guessflow').innerHTML = "<strong>Wrong guesses:</strong><br />" + myText;
		}
		
			
		// OUTPUT TEXT
		myText = "";
		
		document.getElementById('pOutput').innerHTML = "";		
		var myNoReturnText = "";
		for(n=0;n<myNewArray.length;n++) {
			if(myNoPunctArray[n] == "sbsbsbsb") {
			myText = myText + " <BR><BR>";
			} else {
			myText = myText + myNewArray[n];
			}
		}		
		document.getElementById('pOutput').innerHTML = myText;
	}
	
	// CHECK TO SEE IF USER HAS COMPLETED TEXT
	var current = document.getElementById('pOutput').innerHTML;
	if(current == comparison) {
		alert('WELL DONE!\nReload the page to start again or choose another activity.');
	}
	
	document.myForm.mySearch.focus();
}

function seeText()
{
	if(document.myForm.b2.value == "see text") {
		seeingtext = 1;
		myText = "";
		for(i=0;i<myOldArray.length;i++) {
			if(myNoPunctArray[i] == "sbsbsbsb") {
			myText = myText + "<br><br>";
			} else {
			myText = myText + myOldArray[i];
			}
		}
		document.getElementById('pOutput').innerHTML = "";
		document.getElementById('pOutput').innerHTML = myText;
		document.myForm.b2.value = "continue";
		help = help + 1;
	} else {
		seeingtext = 0;
		myText = "";
		for(i=0;i<myNewArray.length;i++) {
			if(myNoPunctArray[i] == "sbsbsbsb") {
			myText = myText + " <BR><BR>";
			} else {
			myText = myText + myNewArray[i];
			}
		}
		document.getElementById('pOutput').innerHTML = "";
		document.getElementById('pOutput').innerHTML = myText;
		document.myForm.b2.value = "see text";		
	}
	showStatus();
}

<!-- NEEDS DEVELOPING STEVE -->
function seeInstructions()
{
	if(document.myForm.b2.value == "see text") {
		seeingtext = 1;
		myText = "";
		for(i=0;i<myOldArray.length;i++) {
			if(myNoPunctArray[i] == "sbsbsbsb") {
			myText = myText + "<br><br>";
			} else {
			myText = myText + myOldArray[i];
			}
		}
		document.getElementById('pOutput').innerHTML = "";
		document.getElementById('pOutput').innerHTML = myText;
		document.myForm.b2.value = "continue";
		help = help + 1;
	} else {
		seeingtext = 0;
		myText = "";
		for(i=0;i<myNewArray.length;i++) {
			if(myNoPunctArray[i] == "sbsbsbsb") {
			myText = myText + " <BR><BR>";
			} else {
			myText = myText + myNewArray[i];
			}
		}
		document.getElementById('pOutput').innerHTML = "";
		document.getElementById('pOutput').innerHTML = myText;
		document.myForm.b2.value = "see text";		
	}
	showStatus();
}

function hint()
{
	// 1. CHECK TO SEE IF THERE ARE ANY *'S and change first instance of *
	
	if(seeingtext == 0) {
	
		var bullets = document.getElementById('pOutput').innerHTML;		
		var totalChars = bullets.length;
		var found = false;
		var foundPos = 0;
		bulletArray = new Array();
		
		for(i=0;i<totalChars;i++) {
			theChar = bullets.charAt(i);
			bulletArray[i] = theChar;		
			if (found == false) {
			
				var theCharCode = bullets.charCodeAt(i);
				if((theCharCode < 0) || (theCharCode > 127)) {
					found = true;
					foundPos = i;
				}			

			}
		}
		
		var theChar = "";
		if (found == true) {
			theChar = myOldString.charAt(foundPos);
			bulletArray[foundPos] = theChar;
		} else {
			alert('No more hints!');
		}
		
		var myText = "";
		for(i=0;i<totalChars;i++) {
			myText = myText + bulletArray[i];
		}		
		
		hints++;
		document.getElementById('pOutput').innerHTML = "";
		document.getElementById('pOutput').innerHTML = myText;
	}
}

function instructions() {
	alert('Type one word at a time into the field on the right and press \'enter\' on your keyboard. Keep entering words until the text is complete.');
	document.myForm.mySearch.focus();
}

