For full XHTML 1.0 compatibility, remove the border and framespacing attributes. These are required for proper display in current browsers, but render the document incompatible. Then, you'll need to add the appropriate Document Type Declaration; use the W3C XHTML 1 frameset DTD.--> '; OutString += '
'; OutString += NavBar; if (Feedback.length>0){ OutString += '' } OutString += '
'; OutString += ''; OutString += Feedback; OutString += '
'; if (is.CRAPBrowser){OutString=ResolveAllURLs(OutString);} //Write it to the frame TopFrame.document.clear(); TopFrame.document.open(); TopFrame.document.write(OutString); TopFrame.document.close(); } function Restart(){ Penalties = 0; GuessSequence.length = 0; Segments = Shuffle(Segments); BuildCurrGuess(); WriteFeedback(RemainingWords + '
' + RemainingList + ''); BuildExercise(); DisplayExercise(Exercise); } function Undo(){ if (GuessSequence.length < 1){ return; } GuessSequence.length = GuessSequence.length - 1; BuildCurrGuess(); WriteFeedback('' + Output + '

' + RemainingWords + '
' + RemainingList + ''); BuildExercise(); DisplayExercise(Exercise); } function AddSegment(SegNum){ GuessSequence[GuessSequence.length] = SegNum; BuildCurrGuess(); WriteFeedback('' + Output + ''); // WriteFeedback('' + Output + '

' + RemainingWords + '
' + RemainingList + ''); BuildExercise(); DisplayExercise(Exercise); } function BuildCurrGuess(){ var i = 0; var j = 0; var NewSeg = ''; //first, create arrays of all the segments guessed so far and those not yet used GuessSegs = new Array(); GuessSegs.length = 0; //set the "used" markers all to 0 for (i=0; i 0){ OutString = OutArray[0]; } else{ OutString = ''; } var Spacer = ''; for (i=1; i -1)||(Punctuation.indexOf(OutArray[i].charAt(0)) > -1)){ Spacer = ''; } OutString = OutString + Spacer + OutArray[i]; } //Capitalize the first letter if necessary if (CapitalizeFirst == true){ i = 0; if ((Openers.indexOf(OutString.charAt(i))>-1)||(OutString.charAt(i) == ' ')){ i++; } if ((Openers.indexOf(OutString.charAt(i))>-1)||(OutString.charAt(i) == ' ')){ i++; } var Temp = OutString.charAt(i); Temp = Temp.toUpperCase(); OutString = OutString.substring(0, i) + Temp + OutString.substring(i+1, OutString.length); } return OutString; } function CheckAnswer(CheckType){ if (GuessSequence.length < 1){ if (CheckType == 1){ WriteFeedback(NextCorrect + '
' + FindSegment(Answers[0][0]) + ''); Penalties++; } return; } var i = 0; var j = 0; var k = 0; var WellDone = ''; var WhichCorrect = -1; var TryAgain = ''; var LongestCorrectBit = ''; TempCorrect = new Array(); LongestCorrect = new Array(); var TempHint = ''; var HintToReturn = 1; var OtherAnswers = ''; for (i=0; i LongestCorrect.length){ LongestCorrect.length = 0; for (k=0; k -1){ for (i=0; i

' + CorrectResponse + '
'; //Do score calculation here var Score = Math.floor(((Segments.length-Penalties) * 100)/Segments.length); WellDone += YourScoreIs + ' ' + Score + '%.
'; if (OtherAnswers.length > 0){ WellDone += TheseAnswersToo + '' + OtherAnswers + ''; } WriteFeedback(WellDone); return; } else{ TryAgain = '' + CompileString(GuessSequence) + '

'; Penalties++; if (CheckType == 0){ TryAgain += IncorrectResponse + '
'; } if (LongestCorrect.length > 0){ LongestCorrectBit = CompileString(LongestCorrect); GuessSequence.length = LongestCorrect.length; TryAgain += ThisMuchCorrect + '
' + LongestCorrectBit + '
'; } if (CheckType == 1){ TryAgain += NextCorrect + '
' + FindSegment(HintToReturn); } WriteFeedback(TryAgain); BuildCurrGuess(); BuildExercise(); DisplayExercise(Exercise); } } function FindSegment(SegID){ var Seg = ''; for (var i=0; i-1){ FirstBit = InString.substring(0, i); LastBit = InString.substring(i + Token.length, InString.length); InString = FirstBit + Replacement + LastBit; i = InString.indexOf(Token); } return InString; } function DisplayExercise(StuffToDisplay){ //Build the output string var OutString = ''; OutString += ''; OutString += ''; OutString += '
'; OutString += TitleCode; OutString += ''; OutString += NavBar; OutString += '
'; OutString += ''; OutString += StuffToDisplay; OutString += '
'; if (is.CRAPBrowser){OutString=ResolveAllURLs(OutString);} //Write it to the frame BottomFrame.document.clear(); BottomFrame.document.open(); BottomFrame.document.write(OutString); BottomFrame.document.close(); } function Blank(){ return '©Half-Baked Software. Loading...'; } //-->//]]> <BODY BGCOLOR="#FFFFFF"><!-- tql_banner_head --><script type="text/javascript" src="/banner/banner.js"></script></script><script>tql_drawTop();</script> <P></P> <!-- tql_banner_foot --><script type="text/javascript"> var _gaq = _gaq || []; _gaq.push(['_setAccount', 'UA-174705-4']); _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; (document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(ga); })(); </script></BODY>