

//<![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.ie4 && 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] = InText.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;
}

if (is.ie){
	var BoxSize = '1';
}
else{
	var BoxSize = '2';
}

var CurrentBox = -1;
var Feedback = '';
var CluesAcross = 'Across:';
var CluesDown = 'Down:';
var Correct = 'Correct! Well done.';
var Incorrect = 'Some of your answers are incorrect. Incorrect squares have been blanked out.'; 
var GiveHint = 'A correct letter has been added.';
var YourScoreIs = 'Your score is ';
var Instructions = 'Complete the crossword, then click on "Check" to check your answer. If you are stuck, you can click on "Hint" to get a free letter. Click on a number in the grid to see the clue or clues for that number. You may need to scroll down to see all the questions.';
var BuiltGrid = '';
var BuiltClues = '';
var BuiltExercise = '';
var Penalties = 0;
var ExerciseSubtitle = 'Solve the crossword puzzle!';
var ExerciseTitle = '';
var FirstShow = true;
var ReadingURL = '';

var PreviousPage = history.length;
var CurrBoxElement = null;







var NavBar='';



var TitleCode = '<tr><td align="center" bgcolor="#000000">';
TitleCode += '<h3>' + ExerciseSubtitle + '</h3>';
TitleCode += '</td></tr>';

var GridOpener = '<tr><td align="center" valign="middle" bgcolor="#ffffff"><table border="1" cellpadding="0" cellspacing="0">';
var GridRowOpener = '<tr>';
var GridRowCloser = '</tr>';

var BlankCell = '<td bgcolor="#000000" width="30" height="30">&nbsp;</td>';
var LetterOnlyCell = '<td bgcolor="#ffffff" width="30" height="30" align="center" valign="middle"><b><font color="#000000">[Letter]</font></b></td>';
var NumLetterCell = '<td bgcolor="#ffffff" width="30" height="30" align="center" valign="top" onclick="parent.ShowClue([ClueNum],[x],[y])" style="cursor: pointer; cursor: hand;"><sup><u>';

if (! is.CRAPBrowser){
	NumLetterCell += '<a href="javascript:parent.DoNothing()" onclick="parent.ShowClue([ClueNum],[x],[y])">[ClueNum]</a>';
}
else{
	NumLetterCell += '[ClueNum]';
}
NumLetterCell += '</u></sup>&nbsp;<b><font color="#000000">[Letter]</font></b></td>';

var GridCloser = '</table></td></tr>';

var Buttons = '<tr><form name="Buttons[Num]" action=""><td align="center" valign="top" bgcolor="#000000">';
Buttons += '<font face="Arial, Helvetica, san-serif" color="#ffffff">';
Buttons += '<input type="button" value="Check" onclick="parent.CheckAnswers()"></input>';
Buttons += '</font></td></form></tr>';

var Buttons1 = ReplaceStuff('[Num]', '1', Buttons);
var Buttons2 = ReplaceStuff('[Num]', '2', Buttons);

var GetAnswerOpener = '<form name="AnswerForm" action="" onSubmit="return false;">';
var GetAnswer = ' <font size="3"><input type="text" name="[BoxName]" size="[AnsLength]" maxlength="[AnsLength]"></input>';
GetAnswer += ' <input type="button" value="Enter" ';
GetAnswer += 'onClick="parent.EnterAnswer(document.AnswerForm.[BoxName].value,[boolAcross],[AnsLength],[x],[y])"></input>';


GetAnswer += '<input type="button" value="Hint" onclick="parent.ShowHint([boolAcross],[x],[y],\'[FrameName].document.AnswerForm.[BoxName]\')"></input>';


GetAnswer += '</font>';

var GetAnswerCloser = '</form>';

function GoBack(){
	var BackSkip = history.length - PreviousPage;
	if (BackSkip > 0){
		history.go((BackSkip+1)*-1);
	}
	else{
		parent.history.back();
	}
}





function BuildExercise(){
	var OutString = '';
	var Temp = '';
	var GridStuff = GridOpener;	

	for (var i=0; i<L.length; i++){
		GridStuff += GridRowOpener;
		for (var j=0; j<L[i].length; j++){
//If the cell is blank, add a black cell
			if (L[i][j] == ''){
				GridStuff += BlankCell;
			}
//else there's a letter there
			else{
//If there's a clue number, add it
				if (C[i][j] > 0){
					Temp = NumLetterCell;
					Temp = ReplaceStuff('[ClueNum]', C[i][j], Temp);
//Add location info
					Temp = ReplaceStuff('[x]', i, Temp);
					Temp = ReplaceStuff('[y]', j, Temp);
				}
//Otherwise add a blank cell
				else{
					Temp = LetterOnlyCell;
				}

//If the cell is already answered, add the letter from the Guess array
				if (G[i][j] != ''){
					Temp = ReplaceStuff('[Letter]', G[i][j], Temp);
				}
//Otherwise, put in a non-breaking space
				else{
					Temp = ReplaceStuff('[Letter]', '&nbsp;', Temp);
				}
				GridStuff += Temp;
			}
		}
		GridStuff += GridRowCloser;
	}

	GridStuff += GridCloser;

//Put the final pieces together
	OutString = GridStuff;
	BuiltExercise = OutString;
}

function WriteFeedback(Feedback) {
//Build the output string
	var OutString = '';
	OutString += '<html>';
	OutString += '<body bgcolor="#000000" text="#ffffff" link="#800080" vlink="#990066">';
	OutString += '<center><table border="0" cellpadding="2" cellspacing="0" width="85%">';
	OutString += NavBar;
	if (Feedback.length>0){
		OutString += '<tr><td bgcolor="#000000" align="center">'; 
		OutString += '<font face="Arial, Helvetica, san-serif" size="-1" color="#ffffff">';
		OutString += Feedback;
		OutString += '</font></td></tr>'
	}
	OutString += '</table></center></body></html>';

	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 DisplayExercise(){
//Build the output string
	var OutString = '';
	OutString += '<html>';
	OutString += '<body background="../images/zebrabg.gif" bgcolor="#000000" text="#ffffff" link="#800080" vlink="#990066">';
	OutString += '<center><table border="0" cellpadding="2" cellspacing="0" width="85%">';
	OutString += TitleCode;
	OutString += Buttons1; 
	OutString += BuiltExercise;
	OutString += Buttons2;
	OutString += BuiltClues;
	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 BuildClue(ClueNum,x,y,Across){
	var OutString = '';
	if (Across == true){
		if (ClueNum >= A.length){
			return '';
		}	
		if (A[ClueNum] == null){
			return '';
		}
		OutString = ClueNum + '. ' + A[ClueNum];
		OutString += GetAnswer;
		OutString = ReplaceStuff('[BoxName]', 'BA'+ClueNum, OutString);
//Find out how long the answer is
		AnsLength = 0;
		i = x;
		j = y;
		while (j<L[i].length){
			if (L[i][j] != ''){
				AnsLength++;
			}
			else{
				break;
			}
			j++;
		}
		OutString = ReplaceStuff('[AnsLength]', AnsLength, OutString);
		OutString = ReplaceStuff('[boolAcross]', 'true', OutString);
	}
	else{
		if (ClueNum >= D.length){
			return '';
		}	
		if (D[ClueNum] == null){
			return '';
		}
		OutString = ClueNum + '. ' + D[ClueNum];
		OutString += GetAnswer;
		OutString = ReplaceStuff('[BoxName]', 'BD'+ClueNum, OutString);
//Find out how long the answer is
		AnsLength = 0;
		i = x;
		j = y;
		while (i<L.length){
			if (L[i][j] != ''){
				AnsLength++;
			}
			else{
				break;
			}
			i++;
		}
		OutString = ReplaceStuff('[AnsLength]', AnsLength, OutString);
		OutString = ReplaceStuff('[boolAcross]', 'false', OutString);
	}
	OutString = ReplaceStuff('[x]', x ,OutString);
	OutString = ReplaceStuff('[y]', y, OutString);
	OutString = ReplaceStuff('[FrameName]', 'BottomFrame', OutString);
	OutString += '<br />';
	return OutString;
}


function BuildCompleteClues(){
	var OutString = '<tr>';
	OutString += '<form name="AnswerForm" onSubmit="return false;">';
	var AcrossClues = '';
	var DownClues = '';
	for (var i=0; i<C.length; i++){
		for (var j=0; j<C[i].length; j++){
			if (C[i][j] > 0){
				AcrossClues += BuildClue(C[i][j], i, j, true);
				DownClues += BuildClue(C[i][j], i, j, false);
			}
		}
	}
	OutString += '<td bgcolor="#000000"><font face="Arial, Helvetica, san-serif"><font size="+1">';
	OutString += CluesAcross + '</font><br /><br />' + AcrossClues + '<br /><br />'; 
	OutString += '<font size="+1">';
	OutString += CluesDown + '</font><br /><br />' + DownClues + '</font></td>'
	OutString += '</form></tr>';
	BuiltClues = OutString;
}


function ShowClue(ClueNum,x,y){
	var OutString = '';
	var AnsLength = 0;
	var i;
	var j;
	CurrBoxElement = ClueNum;
	if (A[ClueNum] != null){
		OutString = OutString + 'Across: ' + ClueNum + '. ' + A[ClueNum];
		OutString += GetAnswer;
		OutString = ReplaceStuff('[BoxName]', 'BA'+ClueNum, OutString);
//Find out how long the answer is
		AnsLength = 0;
		i = x;
		j = y;
		while (j<L[i].length){
			if (L[i][j] != ''){
				AnsLength++;
			}
			else{
				break;
			}
			j++;
		}
		OutString = ReplaceStuff('[AnsLength]', AnsLength, OutString);
		OutString = ReplaceStuff('[boolAcross]', 'true', OutString);
	}
	if (D[ClueNum] != null){
		if (OutString.length > 0){
			OutString += '<br />';
		}
		OutString = OutString + 'Down: ' + ClueNum + '. ' + D[ClueNum];
		OutString += GetAnswer;
		OutString = ReplaceStuff('[BoxName]', 'BD'+ClueNum, OutString);
//Find out how long the answer is
		AnsLength = 0;
		i = x;
		j = y;
		while (i<L.length){
			if (L[i][j] != ''){
				AnsLength++;
			}
			else{
				break;
			}
			i++;
		}
		OutString = ReplaceStuff('[AnsLength]', AnsLength, OutString);
		OutString = ReplaceStuff('[boolAcross]', 'false', OutString);
	}
	OutString = GetAnswerOpener + OutString + GetAnswerCloser;
	OutString = ReplaceStuff('[x]', x ,OutString);
	OutString = ReplaceStuff('[y]', y, OutString);
	OutString = ReplaceStuff('[FrameName]', 'TopFrame', OutString);
	WriteFeedback(OutString); 
	if (eval('TopFrame.document.AnswerForm.BA' + ClueNum) != null){
		eval('TopFrame.document.AnswerForm.BA' + ClueNum).focus();
	}
	else{
		if (eval('TopFrame.document.AnswerForm.BD' + ClueNum) != null){
			eval('TopFrame.document.AnswerForm.BD' + ClueNum).focus();
		}
	}
}

function EnterAnswer(Guess,Across,AnsLength,x,y){

	Guess = Guess.toUpperCase();

	var i=x;
	var j=y;
	var Letter = 0;
	while (Letter < AnsLength){
		if (Letter < Guess.length){
			G[i][j] = Guess.charAt(Letter);
		}
		if (Across == true){
			j++;
		}
		else{
			i++;
		}
		Letter++;
	}

	BuildExercise();
	DisplayExercise();
}

function ShowHint(Across,x,y,BoxName){
	var i=x;
	var j=y;
	var OutString = '';
	if (Across==true){
		while (j<L[i].length){
			if (L[i][j] != ''){
				OutString += L[i][j];
				if (G[i][j] != L[i][j]){
					G[i][j] = L[i][j];
					Penalties++;
					break;
				}
			}
			else{
				break;
			}
		j++;
		}
	}
	else{
		while (i<L.length){
			if (L[i][j] != ''){
				OutString += L[i][j];
				if (G[i][j] != L[i][j]){
					G[i][j] = L[i][j];
					Penalties++;
					break;
				}
			}
			else{
				break;
			}
		i++;
		}
	}
	if (eval(BoxName) != null){
		eval(BoxName).value = OutString;
	}
}

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;
}

L = new Array();
L[0] = new Array('','','B','','','','','','T','','','','','','','','','','','');
L[1] = new Array('','','U','','','H','A','B','I','T','A','T','','','','P','','','','');
L[2] = new Array('','','L','','','O','','','G','','','H','','','','L','','','','');
L[3] = new Array('B','A','L','D','E','A','G','L','E','','','R','','','','A','','','','');
L[4] = new Array('','F','','A','','R','','','R','','','E','X','T','I','N','C','T','','T');
L[5] = new Array('','R','','Y','','D','O','G','S','','','A','','','','T','','A','','U');
L[6] = new Array('','I','','','','','','','','','','T','W','I','N','S','','L','','R');
L[7] = new Array('','C','A','R','N','I','V','O','R','E','','E','','','','','','O','','T');
L[8] = new Array('','A','','','','','','','','G','','N','O','C','T','U','R','N','A','L');
L[9] = new Array('','N','O','R','F','O','L','K','','G','','E','','','','','','S','','E');
L[10] = new Array('','','','','','','','','','S','','D','','','','','','','','');


C = new Array();
C[0] = new Array(0,0,1,0,0,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0);
C[1] = new Array(0,0,0,0,0,3,0,0,0,0,0,4,0,0,0,5,0,0,0,0);
C[2] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[3] = new Array(6,7,0,8,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[4] = new Array(0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,10,0,11);
C[5] = new Array(0,0,0,0,0,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[6] = new Array(0,0,0,0,0,0,0,0,0,0,0,13,0,0,0,0,0,0,0,0);
C[7] = new Array(0,14,0,0,0,0,0,0,0,15,0,0,0,0,0,0,0,0,0,0);
C[8] = new Array(0,0,0,0,0,0,0,0,0,0,0,16,0,0,0,0,0,0,0,0);
C[9] = new Array(0,17,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[10] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);


G = new Array();
G[0] = new Array('','','','','','','','','','','','','','','','','','','','');
G[1] = new Array('','','','','','','','','','','','','','','','','','','','');
G[2] = new Array('','','','','','','','','','','','','','','','','','','','');
G[3] = new Array('','','','','','','','','','','','','','','','','','','','');
G[4] = new Array('','','','','','','','','','','','','','','','','','','','');
G[5] = new Array('','','','','','','','','','','','','','','','','','','','');
G[6] = new Array('','','','','','','','','','','','','','','','','','','','');
G[7] = new Array('','','','','','','','','','','','','','','','','','','','');
G[8] = new Array('','','','','','','','','','','','','','','','','','','','');
G[9] = new Array('','','','','','','','','','','','','','','','','','','','');
G[10] = new Array('','','','','','','','','','','','','','','','','','','','');


A = new Array();
A[3]='Food, water, shelter, and space make up an animal\'s';
A[6]='The ________, our National bird, is a threatened species.';
A[9]='When an entire species dies out, it becomes';
A[12]='Our pet _____ are descendants of wolves.';
A[13]='Tigers often give birth to two babies, or';
A[14]='A _______ only eats meat.';
A[16]='Animals that sleep during the day and are awake at night are';
A[17]='The Virginia Zoo is located in _______, VA.';


D = new Array();
D[1]='A male cow is called a';
D[2]='The largest cats in the world are Siberian';
D[3]='Animals like squirrels __________ food for the winter.';
D[4]='In Danger of Becoming Endangered.';
D[5]='An herbivore eats only';
D[7]='The Virginia Zoo has two _________ elephants.';
D[8]='Diurnal animals sleep at night and are awake during the';
D[10]='An owl catches its prey with its';
D[11]='A reptile that carries its shell on its back.';
D[15]='The ostrich lays the biggest _____ of any animal.';


function StartUp(){

	BuildExercise();

	BuildCompleteClues();

	WriteFeedback(Instructions);
	DisplayExercise();





}
function CheckAnswers(){

	var AllCorrect = true;
	var TotLetters = 0;
	var CorrectLetters = 0;

//Check each letter
	for (var i=0; i<L.length; i++){
		for (var j=0; j<L[i].length; j++){
			if (L[i][j] != ''){
				TotLetters++;
				if (G[i][j] != L[i][j]){
					G[i][j] = '';
					AllCorrect = false;
				}
				else{
					CorrectLetters++;
				}
			}
		}
	}

	var Score = Math.floor(((CorrectLetters-Penalties) * 100)/TotLetters);

//Compile the output
	var Output = '';

	if (AllCorrect == true){
		Output = Correct + '<br />';
	}

	Output += YourScoreIs + ' ' + Score + '%.<br />';
	if (AllCorrect == false){
		Output += '<br />' + Incorrect;
		Penalties++;
	}
	BuildExercise();
	WriteFeedback(Output);

		


	DisplayExercise();
}



function DoNothing(){}

function Blank(){
	return '<html><body>Crossword Puzzle is Loading...</body></html>';
}

//-->

//]]>


