

//<![CDATA[

<!--

// BrowserCheck Object

function BrowserCheck() {
	var b = navigator.appName
//HBS extension
	this.mac = (navigator.appVersion.indexOf('Mac') != -1)
	if (b=="Netscape") this.b = "ns"
	else if (b=="Microsoft Internet Explorer") this.b = "ie"
	else this.b = b
	this.version = navigator.appVersion
	this.v = parseInt(this.version)
	this.ns = (this.b=="ns" && this.v>=4)
	this.ns4 = (this.b=="ns" && this.v==4)
	this.ns5 = (this.b=="ns" && this.v==5)
	this.ie = (this.b=="ie" && this.v>=4)
	this.ie4 = (this.version.indexOf('MSIE 4')>0)
	this.ie5 = (this.version.indexOf('MSIE 5')>0)
	this.min = (this.ns||this.ie)
	this.CRAPBrowser = (this.ie && this.mac); //Cannot Resolve Addresses Properly
}

is = new BrowserCheck();

var LocFolder = GetFolder(window.location.href);
function GetFolder(LocPath){
	LocPath = ReplaceStuff('\'','%27',LocPath);
	var i = LocPath.lastIndexOf('/');
	if (i<0){i=LocPath.lastIndexOf('\\')};
	return LocPath.substring(0,i);
}

function CombineURLs(InURL){
	var i = InURL.indexOf('../');
	var s = LocFolder;
	while (i >- 1){
		s = GetFolder(s);
		InURL = InURL.substring(3,InURL.length);
		i = InURL.indexOf('../');
	}
	return s + '/' + InURL;
}

x = new Array();
function ResolveURLs(InText,Attribute){
	x.length=0;
	var Temp = InText.toLowerCase();
	var z;
	var AttLen = Attribute.length + 2;
	var y=Temp.lastIndexOf(Attribute + '="');
	while (y>-1){
		var sLoc = y+AttLen;
		if (Temp.substring(sLoc,sLoc+5) != 'http:'){
			x[x.length]=new Array();
			x[x.length-1][0] = sLoc;
			z = Temp.indexOf('"',sLoc);
			x[x.length-1][1] = z;
			x[x.length-1][2] = Temp.substring(sLoc,z);
		}
		Temp = Temp.substring(0,y);
		y=Temp.lastIndexOf(Attribute + '="');
	}
	for (var j=0; j<x.length; j++){
		InText = InText.substring(0,x[j][0]) + CombineURLs(x[j][2]) + InText.substring(x[j][1], InText.length);
	}
	return InText;
}

function ResolveAllURLs(Stuff){
	Stuff = ResolveURLs(Stuff,'href');
	Stuff = ResolveURLs(Stuff,'src');
	Stuff = ResolveURLs(Stuff,'parent.location');
	return Stuff;
}

var CorrectIndicator = ':-)';
var IncorrectIndicator = 'X';
var YourScoreIs = 'Your score is '; //'Your score is: ';
var CorrectResponse = 'Correct! Well done.';
var IncorrectResponse = 'Sorry! Try again. Incorrect matches have been removed.';
var TotalUnfixedLeftItems = 0;
var TotCorrectChoices = 0;
var Penalties = 0;
var ExerciseTitle = 'Scripture Matching  - 2 Timothy Chapter 4'; //'Test exercise';
var ExerciseSubtitle = 'Matching exercise'; //'Multiple-choice';
var Instructions = 'Select the Scripture reference from the drop down list to the right of the Scripture quote.'; //'';
var DefaultResponse = '[strDefaultResponse]';
var ReadingURL = '';

var PreviousPage = history.length;







var NavBar='';



var TitleCode = '<tr><td align="center" valign="middle" bgcolor="#ffffff">';
TitleCode += '<font size="+1" face="Geneva,Arial" color="#000033">' + ExerciseTitle + '</font><br />';
TitleCode += '<font size="-1" face="Geneva,Arial" color="#000033">' + ExerciseSubtitle + '<br />';
TitleCode += '</font></td></tr>';

var TableOpener = '<center><form name="QForm">';
TableOpener += '<table border="0">';

var IRow = '<tr><td valign="top" bgcolor="#bbbbee">';
IRow += '<font face="Geneva,Arial" color="#000000">[strLeftItem]&nbsp;&nbsp;&nbsp;&nbsp;</font></td>';
IRow += '<td valign="top" bgcolor="#bbbbee">';
IRow += '<font face="Geneva,Arial" color="#000000">[strRightItem]</font></td>';
IRow += '<td valign="top" bgcolor="#bbbbee"><font face="Geneva,Arial" color="#000000">';
IRow += '&nbsp;&nbsp;&nbsp;[Mark]';
IRow += '</font></td></tr>';

var CheckButton = '<tr><td valign="top" align="center" bgcolor="#bbbbee" colspan="3"><br /><input type="button" value="Check Your Answer" OnClick="parent.CheckAnswers()"></input></td></tr>';

TableCloser = '</table></form></center>';

var DropDownList = '';
var Exercise = '';

function GoBack(){
	var BackSkip = history.length - PreviousPage;
	if (BackSkip > 0){
		history.go((BackSkip+1)*-1);
	}
	else{
		parent.history.back();
	}
}

function Shuffle(InArray){
	Temp = new Array();
	var Len = InArray.length;

	var j = Len;

	for (var i=0; i<Len; i++){
		Temp[i] = InArray[i];
	}

	for (i=0; i<Len; i++){
		Num = Math.floor(j  *  Math.random());
		InArray[i] = Temp[Num];

		for (var k=Num; k < j; k++) {
			Temp[k] = Temp[k+1];
		}
		j--;
	}
	return InArray;
}

function WriteFeedback(Feedback) {
	if (is.CRAPBrowser){Feedback=ResolveAllURLs(Feedback);}
//Build the output string
	var OutString = '';
	OutString += '<html>';
	OutString += '<body  background="jesusbkgrnd.jpg" bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#0000cc">';
	OutString += '<center><table border="0" cellpadding="5" cellspacing="1" width="85%">';
	OutString += NavBar;
	if (Feedback.length>0){
		OutString += '<tr><td bgcolor="#bbbbee" align="center">'; 
		OutString += '<font face="Geneva,Arial" size="-1" color="#000000">';
		OutString += Feedback;
		OutString += '</font></td></tr>'
	}
	OutString += '</table></center></body></html>';
//Write it to the frame
	TopFrame.document.clear();
	TopFrame.document.open();
	TopFrame.document.write(OutString);
	TopFrame.document.close();
}

function BuildSelector(){
	DropDownList = '<select name="sel[INum]">';
	DropDownList += '<option value="Select an answer">Select an answer</option>';
	for (var i=0; i<RItems.length; i++){
		DropDownList += '<option value="' + EscapeDoubleQuotes(RItems[i][0]) + '">' + RItems[i][0] + '</option>';
	}
	DropDownList += '</select>';
}

function StartUp(){


	CorrectIndicator = '<nobr>' + CorrectIndicator + '</nobr>';
	IncorrectIndicator = '<nobr>' + IncorrectIndicator + '</nobr>';

//Write the top frame
	WriteFeedback(Instructions);

//Create the right-item/distractor array, and shuffle it
	var DuplicateItem = false;
	for (var i=0; i<I.length; i++){
//If it's not fixed
		if (I[i][2] < 1){
			if (I[i][0].length > 0){
				TotalUnfixedLeftItems++;
			}
			DuplicateItem = false;
//and it's not already in the array
			for (var j=0; j<RItems.length; j++){
				if (I[i][1] == RItems[j][0]){
					DuplicateItem = true;
					RItems[j][1][RItems[j][1].length] = i;
				}
			}
//add it to the array
			if (DuplicateItem == false){
				RItems[RItems.length] = new Array();
				RItems[RItems.length-1][0] = I[i][1];
				RItems[RItems.length-1][1] = new Array();
				RItems[RItems.length-1][1][0] = i;
			}
		}
	}
	RItems = Shuffle(RItems);

//Now tell the I array items which of the selector items matches to it
	for (i=0; i<RItems.length; i++){
		for (j=0; j<RItems[i][1].length; j++){
			I[RItems[i][1][j]][3] = i;
		}
	}

//Now use the RItems array to build the drop-down list selector
	BuildSelector();	

//Create arrays
	CreateStatusArrays();



//Build and show the exercise
	BuildExercise();
	DisplayExercise(Exercise);


}


function BuildExercise(){
	var TempRow = '';
	Exercise = '';
	for (var i=0; i<I.length; i++){
//if there's a left item -- ie it's not a distractor
		if (I[i][0].length > 0){
			TempRow = IRow;
			TempRow = ReplaceStuff('[strLeftItem]', I[i][0], TempRow);
//if not fixed and not yet answered correctly
			if ((I[i][2] < 1)&&(Status[i][0] < 1)){
				TempRow = ReplaceStuff('[strRightItem]', DropDownList, TempRow);
			}
			else{
				TempRow = ReplaceStuff('[strRightItem]', I[i][1], TempRow);
			}
//if it's not fixed, and it's been attempted, mark it appropriately
			if ((I[i][2] < 1)&&(Status[i][1] > 0)){
				if (Status[i][0] < 1){
					TempRow = ReplaceStuff('[Mark]', IncorrectIndicator, TempRow);
				}
				else{
					TempRow = ReplaceStuff('[Mark]', CorrectIndicator, TempRow);
				}
			}
			else{
				TempRow = ReplaceStuff('[Mark]', '', TempRow);
			}
			TempRow = ReplaceStuff('[INum]', i, TempRow);
			Exercise += TempRow;
		}
	}
//Add the check button
	Exercise += CheckButton;

//Make it into a table
	Exercise = TableOpener + Exercise + TableCloser;
}

I = new Array();
I[0] = new Array();
I[0][0] = 'For I am already being poured out as a drink offering, and the time of my departure has come.';
I[0][1] = '2 Timothy 4:6';
I[0][2] = 0;
I[1] = new Array();
I[1][0] = 'in the future there is layed up for me the crown of righteousness, which the Lord,  the righteous Judge, will award to me on that day; and not only to me, but also to all who have loved His appearing.';
I[1][1] = '2 Timothy 4:8';
I[1][2] = 0;
I[2] = new Array();
I[2][0] = 'At my first defense, no one supported me, but all deserted me; may it not be counted against them.';
I[2][1] = '2 Timothy 4:16';
I[2][2] = 0;
I[3] = new Array();
I[3][0] = 'The Lord be with your spirit. Grace be with you.';
I[3][1] = '2 Timothy 4:22';
I[3][2] = 0;
I[4] = new Array();
I[4][0] = 'For the time will come when they will not endure sound doctrine; but wanting to have their ears tickled, they will accumulate for themselves teachers in accordance to their own desires;';
I[4][1] = '2 Timothy 4:3';
I[4][2] = 0;
I[5] = new Array();
I[5][0] = 'When you come, bring the cloak which I left at Troas with Carpus, and the books, especially the parchments.';
I[5][1] = '2 Timothy 4:13';
I[5][2] = 0;
I[6] = new Array();
I[6][0] = 'But you, be sober in all things, endure hardship, do the work of an evangelist, fulfill your ministry.';
I[6][1] = '2 Timothy 4:5';
I[6][2] = 0;
I[7] = new Array();
I[7][0] = 'I have fought the good fight, I have finished the course, I have kept the faith;';
I[7][1] = '2 Timothy 4:7';
I[7][2] = 0;
I[8] = new Array();
I[8][0] = 'Make every effort to come to me soon;';
I[8][1] = '2 Timothy 4:9';
I[8][2] = 0;
I[9] = new Array();
I[9][0] = 'for Demas, having loved this present world, has deserted me and gone to Thessalonica; Crescens has gone to Galatia, Titus to Dalmatia.';
I[9][1] = '2 Timothy 4:10';
I[9][2] = 0;
I[10] = new Array();
I[10][0] = 'preach the word; be ready in season and out of season; reprove, rebuke, exhort, with great patience and instruction.';
I[10][1] = '2 Timothy 4:2';
I[10][2] = 0;
I[11] = new Array();
I[11][0] = 'Greet Prisca and Aquila, and the household of Onesiphorus.';
I[11][1] = '2 Timothy 4:19';
I[11][2] = 0;
I[12] = new Array();
I[12][0] = 'Be on guard against him yourself, for he vigorously opposed our teaching.';
I[12][1] = '2 Timothy 4:15';
I[12][2] = 0;
I[13] = new Array();
I[13][0] = 'Only Luke is with me. Pick up Mark and bring him with you, for he is useful to me for service.';
I[13][1] = '2 Timothy 4:11';
I[13][2] = 0;
I[14] = new Array();
I[14][0] = 'But Tychicus I have sent to Ephesus.';
I[14][1] = '2 Timothy 4:12';
I[14][2] = 0;
I[15] = new Array();
I[15][0] = 'Alexander the coppersmith did me much harm; the Lord will repay him according to his deeds.';
I[15][1] = '2 Timothy 4:14';
I[15][2] = 0;
I[16] = new Array();
I[16][0] = 'Make every effort to come before winter. Eubulus greets you, also Pudens and Linus and Claudia and all the brethren.';
I[16][1] = '2 Timothy 4:21';
I[16][2] = 0;
I[17] = new Array();
I[17][0] = 'But the Lord stood with me, and strengthened me, in order that through me the proclamation might be fully accomplished, and that all the Gentiles might hear; and I was delivered out of the lion\'s mouth.';
I[17][1] = '2 Timothy 4:17';
I[17][2] = 0;
I[18] = new Array();
I[18][0] = 'and will turn away their ears from the truth, and will turn aside to myths.';
I[18][1] = '2 Timothy 4:4';
I[18][2] = 0;
I[19] = new Array();
I[19][0] = 'The Lord will deliver me from every evil deed, and will bring me safely to His heavenly kingdom; to Him be the glory for ever and ever. Amen.';
I[19][1] = '2 Timothy 4:18';
I[19][2] = 0;
I[20] = new Array();
I[20][0] = 'Erastus remained at Corinth, but Trophimus I left sick at Miletus.';
I[20][1] = '2 Timothy 4:20';
I[20][2] = 0;


Status = new Array();

RItems = new Array();

function CreateStatusArrays(){
	for (var x=0; x<I.length; x++){
		Status[x] = new Array();
		Status[x][0] = 0; // Item not matched correctly yet
		Status[x][1] = 0; //Tries at this item so far
	}
}

function ReplaceStuff(Token, Replacement, InString){
	var i = InString.indexOf(Token);
	var FirstBit = '';
	var LastBit = '';
	while (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 EscapeDoubleQuotes(InString){
	var Result = '';
	for (var i=0; i<InString.length; i++){
		if (InString.charAt(i) == '"'){
			Result += '&quot;';
		}
		else{
			Result += InString.charAt(i);
		}
	}
	return Result;
}

function DisplayExercise(StuffToDisplay){
//Build the output string
	var OutString = '';
	OutString += '<html>';
	OutString += '<body  background="jesusbkgrnd.jpg" bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#0000cc">';
	OutString += '<center><table border="0" cellpadding="5" cellspacing="1" width="85%">';
	OutString += TitleCode; 
	OutString += '<tr><td bgcolor="#bbbbee" align="center">'; 
	OutString += '<font face="Geneva,Arial" size="-1">';
	OutString += StuffToDisplay;
	OutString += '</font></td></tr>';
	OutString += NavBar;
	OutString += '</table></center></body></html>';

	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 GetAnswer(INum){
	var Result = -1;
	var s = eval('BottomFrame.document.QForm.sel' + INum);
	if (s != null){
		Result = s.selectedIndex - 1;
	}
	return Result;
}

function CheckAnswers(){
	var AllDone = true;
	TotCorrectChoices = 0;
//for each item not fixed or a distractor
	for (var i=0; i<I.length; i++){
		if ((I[i][2] < 1)&&(I[i][0].length > 0)){
//if it hasn't been answered correctly yet
			if (Status[i][0] < 1){
//Add one to the number of tries for this item
				Status[i][1]++;
//Get the answer
				if (GetAnswer(i) == I[i][3]){
//The answer is correct, so set the status flag
					Status[i][0] = 1;
				}
//else the answer is wrong, so remember that
				else{
					AllDone = false;
				}				
			}
//If it's correct, count it
			if (Status[i][0] == 1){
				TotCorrectChoices++;
			}
		}
	}
//Calculate the score
	var Score = Math.floor(((TotCorrectChoices-Penalties)/TotalUnfixedLeftItems)*100);
	var Feedback = '';

//Build the feedback
	if (AllDone == true){
		Feedback = CorrectResponse + '<br />' + YourScoreIs + Score + '%.';
	}
	else{
		Feedback = IncorrectResponse + '<br />' + YourScoreIs + Score + '%.';
//Penalty for incorrect check
		Penalties++;
	}
//Show the feedback and rebuild the exercise
	WriteFeedback(Feedback);



	BuildExercise();
	DisplayExercise(Exercise);
}







function Blank(){
	return '<html><body>&copy;Half-Baked Software. Loading...</body></html>';
}

//-->

//]]>



