';
//Write it to the frame
TopFrame.document.clear();
TopFrame.document.open();
TopFrame.document.write(OutString);
TopFrame.document.close();
}
function DisplayExercise(){
//Build the output string
var OutString = '';
OutString += '';
OutString += '
';
OutString += '
';
OutString += TitleCode;
OutString += '';
OutString += NavBar;
OutString += '';
if (WordBox.length > 0){
OutString += WordBox;
}
OutString += '';
OutString += BuiltCloze;
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 ShowClue(ItemNum){
//alert(ItemNum);
State[ItemNum][0] = 1;
WriteFeedback(I[ItemNum][2]);
}
function SaveCurrentAnswers(){
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;
}
var LowerString='abcdefghijklmnopqrstuvwxyz%9A%9C%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9%EA%EB%EC%ED%EE%EF%F0%F1%F2%F3%F4%F5%F6%F8%F9%FA%FB%FC%FD%FE%FF';
var UpperString='ABCDEFGHIJKLMNOPQRSTUVWXYZ%8A%8C%C0%C1%C2%C3%C4%C5%C6%C7%C8%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D8%D9%DA%DB%DC%DD%DE%9F';
LowerString = unescape(LowerString);
UpperString = unescape(UpperString);
I = new Array();
I[0] = new Array();
I[0][1] = new Array();
I[0][1][0] = new Array();
I[0][1][0][0]='is going to rain';
I[0][1][1] = new Array();
I[0][1][1][0]='\'s going to rain';
I[0][2]='';
I[1] = new Array();
I[1][1] = new Array();
I[1][1][0] = new Array();
I[1][1][0][0]='is going to post';
I[1][1][1] = new Array();
I[1][1][1][0]='\'s going to post';
I[1][2]='';
I[2] = new Array();
I[2][1] = new Array();
I[2][1][0] = new Array();
I[2][1][0][0]='is going to miss';
I[2][1][1] = new Array();
I[2][1][1][0]='\'s going to miss';
I[2][2]='';
I[3] = new Array();
I[3][1] = new Array();
I[3][1][0] = new Array();
I[3][1][0][0]='is going to rob';
I[3][1][1] = new Array();
I[3][1][1][0]='\'s going to rob';
I[3][2]='';
I[4] = new Array();
I[4][1] = new Array();
I[4][1][0] = new Array();
I[4][1][0][0]='are going to travel';
I[4][1][1] = new Array();
I[4][1][1][0]='\'re going to travel';
I[4][2]='';
I[5] = new Array();
I[5][1] = new Array();
I[5][1][0] = new Array();
I[5][1][0][0]='Is';
I[5][2]='';
I[6] = new Array();
I[6][1] = new Array();
I[6][1][0] = new Array();
I[6][1][0][0]='going to meet';
I[6][2]='';
I[7] = new Array();
I[7][1] = new Array();
I[7][1][0] = new Array();
I[7][1][0][0]='Are';
I[7][2]='';
I[8] = new Array();
I[8][1] = new Array();
I[8][1][0] = new Array();
I[8][1][0][0]='going to buy him';
I[8][2]='';
I[9] = new Array();
I[9][1] = new Array();
I[9][1][0] = new Array();
I[9][1][0][0]='is going to give';
I[9][1][1] = new Array();
I[9][1][1][0]='\'s going to give';
I[9][2]='';
I[10] = new Array();
I[10][1] = new Array();
I[10][1][0] = new Array();
I[10][1][0][0]='is';
I[10][2]='';
I[11] = new Array();
I[11][1] = new Array();
I[11][1][0] = new Array();
I[11][1][0][0]='going to leave';
I[11][2]='';
I[12] = new Array();
I[12][1] = new Array();
I[12][1][0] = new Array();
I[12][1][0][0]='is going to have';
I[12][1][1] = new Array();
I[12][1][1][0]='\'s going to have';
I[12][2]='';
Text = new Array();
Text[0]='A: Why is Sara getting her umbrella?
B: Because it ';
Text[1]='. (rain)
A: John is in the post office now.
B: I know, he ';
Text[2]=' a letter. (post)
A: Paul is late.
B: Oh yeah, he ';
Text[3]=' the train. (miss)
A: Look, there\'s a thief hiding behind that tree.
B: Gee, I gues';
Text[3]+='s he ';
Text[4]=' that old lady. (rob)
A: The Johnsons are at the airport.
B: I know, They ';
Text[5]=' to Paris. (travel)
A: My sister is wearing a beautiful dress today.
B: ';
Text[6]=' she ';
Text[7]=' her boyfriend? (meet)
A: I think so.
A: Today is my father\'s birthday.
B: ';
Text[8]=' you ';
Text[9]=' a gift? (buy)
A: Why is Peter buying some flowers?
B: I guess he ';
Text[10]=' them to his girlfriend. (give)
A: Let\'s go to the railway station.
B: When ';
Text[11]=' the train ';
Text[12]='? (leave)
A: In an hour.
A: Why is Mark studying so hard?
B: He ';
Text[13]=' a test tomorrow. (have)
';
State = new Array();
CharList = new Array();
EscapeList = new Array();
function StartUp(){
var i = 0;
for (i=0; i 0){
OutString += FoundCode;
}
else{
OutString += NextChar;
}
}
return OutString;
}
var MacChars = '%80%81%82%83%84%85%86%87%88%89%8A%8B%8C%8D%8E%8F%90%91%92%93%94%95%96%97%98%99%9A';
MacChars += '%9B%9C%9D%9E%9F%A0%A1%A4%A5%A6%A7%A8%AA%AB%AC%AE%AF%B4%B6%BB%BC%BE%BF%C0%C1%C2%C4%C7%C8';
MacChars += '%C9%CA%CB%CC%CD%CE%CF%D0%D1%D2%D3%D4%D5%D6%D8%D9%DA%DB%DC%DD%E0%E1%E2%E3%E4%E5%E6%E7%E8%E9';
MacChars += '%EA%EB%EC%ED%EE%EF%F1%F2%F3%F4%F5%F6%F7%F8%FB%FD';
var WinChars = '%C4%C5%C7%C9%D1%D6%DC%E1%E0%E2%E4%E3%E5%E7%E9%E8%EA%EB%ED%EC%EE%EF%F1%F3%F2%F4';
WinChars += '%F6%F5%FA%F9%FB%FC%86%BA%A7%95%B6%DF%AE%99%92%A8%C6%D8%A5%F0%AA%BA%E6%F8%BF%A1%AC%83%AB%BB';
WinChars += '%85%82%C0%C3%D5%8C%9C%96%97%93%94%91%92%F7%FFY/%A4%8B%9B%87%B7%82%84%89%C2%CA%C1%CB';
WinChars += '%C8%CD%CE%CF%CC%D3%D4%D2%DA%DB%D9%B9%88%98%AF%B0%94';
WinChars = unescape(WinChars);
MacChars = unescape(MacChars)
function MacStringToWin(InString){
var OutString = '';
for (i=0; i '~') && (MacChars.indexOf(InString.charAt(i)) > -1) ){
OutString += WinChars.charAt(MacChars.indexOf(InString.charAt(i)));
}
else {
OutString += InString.charAt(i);
}
}
return OutString;
}
function WinStringToMac(InString){
var OutString = '';
for (i=0; i '~') && (WinChars.indexOf(InString.charAt(i)) > -1) ){
OutString += MacChars.charAt(WinChars.indexOf(InString.charAt(i)));
}
else {
OutString += InString.charAt(i);
}
}
return OutString;
}
function TrimString(InString){
var x = 0
if (InString.length != 0) {
while ((escape(InString.charAt(InString.length - 1)) == '%20') || (escape(InString.charAt(InString.length - 1)) == '%0A') || (escape(InString.charAt(InString.length - 1)) == '%0D')){
InString = InString.substring(0, InString.length - 1)
}
while ((escape(InString.charAt(0)) == '%20') || (escape(InString.charAt(0)) == '%0A') || (escape(InString.charAt(0)) == '%0D')){
InString = InString.substring(1, InString.length)
}
while (InString.indexOf(' ') != -1) {
x = InString.indexOf(' ')
InString = InString.substring(0, x) + InString.substring(x+1, InString.length)
}
return InString;
}
else {
return '';
}
}
function ConvertCase(InString, Direction){
var FromString = '';
var ToString = '';
if (Direction == 0){
FromString = UpperString;
ToString = LowerString;
}
else{
FromString = LowerString;
ToString = UpperString;
}
var i = 0;
j = 0;
var OutString = '';
for (i=0; i -1){
j = FromString.indexOf(InString.charAt(i));
OutString += ToString.charAt(j);
}
else{
OutString += InString.charAt(i);
}
}
return OutString;
}
function CheckAnswers(){
SaveCurrentAnswers();
var AllCorrect = 1;
//Check each answer
for (var i = 0; i< I.length; i++){
if (State[i][4] != 1){
//If it's right, calculate its score
if (CheckAnswer(i, true) > -1){
var TotalChars = GetGapValue(i).length;
State[i][3] = (TotalChars-State[i][1])/TotalChars;
if (State[i][0] > 0){State[i][3] = State[i][3]/2;}
if (State[i][3]<0){State[i][3] = 0;}
State[i][4] = 1;
}
else{
//Otherwise, add zero to the array and increment the hints for this item, as a penalty
State[i][1]++;
State[i][3] = 0;
//then set the flag
AllCorrect = 0;
}
}
}
//Calculate the total score
var TotalScore = 0;
for (i=0; i';
}
Output += YourScoreIs + ' ' + TotalScore + '%.
';
if (AllCorrect == 0){
Output += '
' + Incorrect;
}
BuildExercise();
WriteFeedback(Output);
DisplayExercise();
RestoreCurrentAnswers();
}
function TrackFocus(BoxNumber){
CurrentWord = BoxNumber;
}
function CheckBeginning(Guess, Answer){
var OutString = '';
var i = 0;
var UpperGuess = '';
var UpperAnswer = '';
if (CaseSensitive == false) {
UpperGuess = ConvertCase(Guess, 1);
UpperAnswer = ConvertCase(Answer, 1);
}
else {
UpperGuess = Guess;
UpperAnswer = Answer;
}
while (UpperGuess.charAt(i) == UpperAnswer.charAt(i)) {
OutString += Guess.charAt(i);
i++;
}
OutString += Answer.charAt(i);
return OutString;
}
function FindLongest(InArray){
if (InArray.length < 1){return -1;}
var Longest = 0;
for (var i=1; i InArray[Longest].length){
Longest = i;
}
}
return Longest;
}
function GetGapValue(GNum){
var RetVal = '';
if ((GNum<0)||(GNum>=I.length)){return RetVal;}
if (eval('BottomFrame.document.Cloze.Gap' + GNum) != null){
RetVal = eval('BottomFrame.document.Cloze.Gap' + GNum).value;
if (FlipChars==true){RetVal = MacStringToWin(RetVal);}
RetVal = TrimString(RetVal);
}
else{
RetVal = State[GNum][5];
}
return RetVal;
}
function SetGapValue(GNum, Val){
if ((GNum<0)||(GNum>=I.length)){return;}
if (FlipChars==true){Val = WinStringToMac(Val);}
if (eval('BottomFrame.document.Cloze.Gap' + GNum) != null){
eval('BottomFrame.document.Cloze.Gap' + GNum).value = Val;
}
}
function FindCurrent() {
var x = 0;
FoundCurrent = -1;
//Test the current word:
//If it's state is not set to already correct, check the word.
if (State[CurrentWord][4] != 1){
if (CheckAnswer(CurrentWord, false) < 0){
return CurrentWord;
}
}
x=CurrentWord + 1;
while (x -1){return ''}
RightBits = new Array();
for (var i=0; i 0){
SetGapValue(CurrGap, HintString);
State[CurrGap][1] = State[CurrGap][1] + 1;
}
WriteFeedback(GiveHint);
}
function Blank(){
return '
©Half-Baked Software. Loading...
';
}
//-->
//]]>