

//<![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. Click on a number in the grid to see the clue or clues for that number. If you are stuck, you can click on "Hint" to get a free letter. ';
var BuiltGrid = '';
var BuiltClues = '';
var BuiltExercise = '';
var Penalties = 0;
var ExerciseSubtitle = 'Crossword';
var ExerciseTitle = 'Rooms in the house';
var FirstShow = true;
var ReadingURL = '';

var PreviousPage = history.length;
var CurrBoxElement = null;







var NavBar='';


NavBar+='<tr><form name="NavButtons1"><td bgcolor="#000066" align="center">';
NavBar+='<font face="Geneva,Arial" size="-1">';


NavBar+='<input type="button" value="Return to Games Page" onclick=\'parent.location="../../gamespage.html"\'></input>';


NavBar+='</font></td></form></tr>';
if (is.CRAPBrowser){NavBar=ResolveAllURLs(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 GridOpener = '<tr><td align="center" valign="middle" bgcolor="#bbbbee"><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="#bbbbee">';
Buttons += '<font face="Geneva,Arial" color="#000000">';
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  background="" 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>';

	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="" bgcolor="#ffffff" text="#000000" link="#0000ff" vlink="#0000cc">';
	OutString += '<center><table border="0" cellpadding="5" cellspacing="1" 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 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('A','T','T','I','C','','','','','','','','','','','','','','');
L[1] = new Array('','','','','L','I','B','R','A','R','Y','','','','','','','','');
L[2] = new Array('','','','','O','','','','','','','','','','','','','','');
L[3] = new Array('','','','','A','','P','','','','','','','','','','','','');
L[4] = new Array('','','','','K','','A','','S','P','A','R','E','R','O','O','M','','');
L[5] = new Array('','','','','R','','R','','I','','','','','','','','','','');
L[6] = new Array('','','','T','O','I','L','E','T','','','','','','','D','','','');
L[7] = new Array('','','','','O','','O','','T','','','','O','F','F','I','C','E','');
L[8] = new Array('','','','','M','','U','','I','','','','','','','N','','','');
L[9] = new Array('','','','','','','R','','N','','','','','','','I','','','');
L[10] = new Array('','','','L','','','','','G','','','','','','','N','','','');
L[11] = new Array('','D','R','A','W','I','N','G','R','O','O','M','','','','G','','','');
L[12] = new Array('','','','R','','','','','O','','','','B','O','X','R','O','O','M');
L[13] = new Array('','','','D','','','','','O','','','','','','','O','','','');
L[14] = new Array('','','','E','','','','','M','U','S','I','C','R','O','O','M','','');
L[15] = new Array('','','','R','','','','','','','','','E','','','M','','','');
L[16] = new Array('','','','','','','','','','','','','L','','','','','','');
L[17] = new Array('','','','','','','','','','','','','L','','','','','','');
L[18] = new Array('','','','','','','','','','','','','A','','','','','','');
L[19] = new Array('','','','','','','','','','','','','R','','','','','','');


C = new Array();
C[0] = new Array(1,0,0,0,2,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[1] = new Array(0,0,0,0,3,0,0,0,0,0,0,0,0,0,0,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);
C[3] = new Array(0,0,0,0,0,0,4,0,0,0,0,0,0,0,0,0,0,0,0);
C[4] = new Array(0,0,0,0,0,0,0,0,5,0,0,0,0,0,0,0,0,0,0);
C[5] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[6] = new Array(0,0,0,6,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0);
C[7] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,8,0,0,0,0,0,0);
C[8] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[9] = new Array(0,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,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[11] = new Array(0,10,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[12] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,11,0,0,0,0,0,0);
C[13] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[14] = new Array(0,0,0,0,0,0,0,0,12,0,0,0,13,0,0,0,0,0,0);
C[15] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[16] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[17] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[18] = new Array(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
C[19] = new Array(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('','','','','','','','','','','','','','','','','','','');
G[11] = new Array('','','','','','','','','','','','','','','','','','','');
G[12] = new Array('','','','','','','','','','','','','','','','','','','');
G[13] = new Array('','','','','','','','','','','','','','','','','','','');
G[14] = new Array('','','','','','','','','','','','','','','','','','','');
G[15] = new Array('','','','','','','','','','','','','','','','','','','');
G[16] = new Array('','','','','','','','','','','','','','','','','','','');
G[17] = new Array('','','','','','','','','','','','','','','','','','','');
G[18] = new Array('','','','','','','','','','','','','','','','','','','');
G[19] = new Array('','','','','','','','','','','','','','','','','','','');


A = new Array();
A[1]='A room at the top of the house where people store things.';
A[3]='A room where people keep books.';
A[5]='A room where guests sleep.';
A[6]='Another word for WC.';
A[8]='A room where people work.';
A[10]='A room where rich people entertain.';
A[11]='A small room used for storage.';
A[12]='A room where you may find a piano.';


D = new Array();
D[2]='A small room where people put their coats.';
D[4]='Old fashioned word for living room.';
D[5]='Another name for living room.';
D[7]='A room where people eat.';
D[9]='A small room used for storing food.';
D[13]='A room underneath the house.';


function StartUp(){

	BuildExercise();

	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>&copy;Half-Baked Software. Loading...</body></html>';
}

//-->

//]]>



