<!--
// ===========
// Version: 1
// ===========

INITIAL_DELAY = 100;
WORD_DELAY = 55;
SENTENCE_DELAY = 1400;
FIXED_DELAY = 75;

var nLoop;
var speaking = false;	// allows us to stop the user mousing around
var myWord = "";

function cedricSpeak( styleName , maxChar , str ){
	var arr1;
	var nbChar;

	if (is_nav4){
		elm = "document.layers.speech.document";
	} else if (is_ie4) {
		elm = "document.all['speech']";
	} else if (is_ie5up || is_nav6up ){
		elm = "document.getElementById('speech')";
	}

	// If cedric is saying something, let him finish

	if (!speaking){
		speaking = true;
		nChar = 0;
		nLoop = 0;

		// Replace any instances of ' with code
		arr1 = str.split("'");
		str = arr1.join("&#8217;");

		// Split speech by spaces
		arr1 = str.split(" ");

		// Create array of words and add <br> when line length reached
		var wordArray = new Array();

		for (i = 0 ; i < arr1.length ; i ++ ){
			nChar = nChar + arr1[i].length + 1;

			// allow for multiple speech marks within a single word
			if ((n = arr1[i].indexOf("&#8217;")) != -1){
				nChar = nChar - 6;
				while ( n < arr1[i].length + 1 && ((n = arr1[i].indexOf("&#8217;", n+1)) != -1)){
					nChar = nChar - 6;
				}
			}

			// don't count chars in <i> or <u>
			if ((arr1[i].indexOf("<i>") != -1) || (arr1[i].indexOf("<u>") != -1)){
				nChar = nChar - 3;
			}

			// don't count chars in </i> or </u>
			if ((arr1[i].indexOf("</i>") != -1) || (arr1[i].indexOf("</u>") != -1)){
				nChar = nChar - 4;
			}

			if (arr1[i].indexOf("<br>") != -1){
				nChar = arr1[i].length - 3;
			}

			// Handle new sentence delimiter
			if (arr1[i] == "endStr" ){
				// New sentence
				nChar = 0;
				wordArray[i] = arr1[i];		
			} else if (nChar > maxChar){	
				// New line
				wordArray[i] = "<br>" + arr1[i];
				nChar = arr1[i].length + 1;
			} else {
				wordArray[i] = arr1[i];
			}
		}

		// Setup for all browsers
		eval(elm + '.myText = ""');
		setTimeout("displayWord('" + wordArray[0] + "' , '" + styleName + "', '" + wordArray.join("^¬") + "' )", INITIAL_DELAY );
	}
}

function displayWord(word , styleName , passArray){
	var wordArray = passArray.split("^¬")

	if (word == "endStr"){
		// New sentence
		setTimeout ("emptySpeechBubble()", SENTENCE_DELAY);
	} else {
		// NN4 specific
		if (is_nav4){
			eval(elm + '.myText = ' + elm + '.myText + word + "&nbsp;"');
			eval(elm + '.write("<div class=" + styleName + ">" + ' + elm + '.myText + "</div>");');
			eval(elm + '.close()');
		// All others make use of innerHTML
		} else {
			// MAC IE 5.1 and above needs table bounding
			if (is_mac && is_ie5dot1up){
//				eval(elm + '.myText = ' + elm + '.myText + word + "&nbsp;"');
//				eval(elm + '.innerHTML = "<table><tr><td class=" + styleName + ">" + ' + elm + '.myText + "</td></tr></table>";');
				myWord += word;
				myWord += "&nbsp;";
			} else {
				if (is_mac){
					myWord += word;
					myWord += "&nbsp;";
				} else {
					eval(elm + '.myText = ' + elm + '.myText + word + "&nbsp;"');
					eval(elm + '.innerHTML = ' + elm + '.myText');
				}
			}
		}
	}

	if (word == "endStr"){
		if (is_mac){
			if (is_ie5dot1up){
				eval(elm + '.myText = myWord');
				eval(elm + '.innerHTML = "<table><tr><td class=" + styleName + ">" + ' + elm + '.myText + "</td></tr></table>";');
			} else {
				eval(elm + '.myText = myWord');
				eval(elm + '.innerHTML = ' + elm + '.myText');
			}
		}
		
		// New sentence
		nLoop++;
		setTimeout("displayWord('" + wordArray[nLoop] + "' , '" + styleName + "' , '" + wordArray.join("^¬") + "')", INITIAL_DELAY + SENTENCE_DELAY );
	} else if (nLoop == 0){
		// First word of the first sentence
		nLoop++;
		setTimeout("displayWord('" + wordArray[nLoop] + "' , '" + styleName + "' , '" + wordArray.join("^¬") + "')", INITIAL_DELAY );
	} else if (nLoop < wordArray.length - 1){
		// Following words
		nLoop++;
		setTimeout("displayWord('" + wordArray[nLoop] + "' , '" + styleName + "' , '" + wordArray.join("^¬") + "' )", FIXED_DELAY ); /// wordArray[nLoop-1].length * WORD_DELAY );
	} else {

		if (is_mac){
			if (is_ie5dot1up){
				eval(elm + '.myText = myWord');
				eval(elm + '.innerHTML = "<table><tr><td class=" + styleName + ">" + ' + elm + '.myText + "</td></tr></table>";');
			} else {
				eval(elm + '.myText = myWord');
				eval(elm + '.innerHTML = ' + elm + '.myText');
			}
		}

		// Last word spoken so allow user to ask cedric to speak again
		speaking = false;
	}
}

function emptySpeechBubble(){
	// Empty the content of the speech bubble for the next sentence

	myWord = "";
	if (is_nav4){
		eval(elm + '.myText = ""');
		eval(elm + '.write(" + ' + elm + '.myText + ");');
		eval(elm + '.close()');
	} else {
		eval(elm + '.myText = ""');
		eval(elm + '.innerHTML = ' + elm + '.myText');
	}
}
//-->