

//<![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 = 'Horizontaal:';
var CluesDown = 'Verticaal:';
var Correct = 'Juist Goed gedaan!';
var Incorrect = 'Enkele van je antwoorden zijn onjuist. Onjuist ingevoerde letters zijn gewist.'; 
var GiveHint = 'Er is een juiste letter ingevoerd.';
var YourScoreIs = 'Je score is ';
var Instructions = 'Vul de kruiswoordpuzzel in. Klik dan op "Controleren" om je antwoord te controleren. Wanneer je vast komt te zitten, klik je op "Hint" om een extra letter te krijgen. Klik op een nummer in de puzzel om de hint(s) bij dat nummer te krijgen.';
var BuiltGrid = '';
var BuiltClues = '';
var BuiltExercise = '';
var Penalties = 0;
var ExerciseSubtitle = 'Kruiswoordraadsel';
var ExerciseTitle = 'Eating and drinking';
var FirstShow = true;
var ReadingURL = '';

var PreviousPage = history.length;
var CurrBoxElement = null;







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 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="Antwoord controleren" 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="Antwoord Invoeren" ';
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="background.gif" 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="background.gif" 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 + 'Horizontaal: ' + 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 + 'Verticaal: ' + 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('','L','','','','','B','O','R','D');
L[1] = new Array('M','E','S','','F','','I','','','');
L[2] = new Array('','P','','G','R','O','E','N','T','E');
L[3] = new Array('','E','','','I','','R','','H','');
L[4] = new Array('V','L','E','E','S','','','','E','');
L[5] = new Array('O','','','','D','','','','E','');
L[6] = new Array('R','','','F','R','U','I','T','','');
L[7] = new Array('K','O','P','','A','','','','','');
L[8] = new Array('','','','','N','','','','','');
L[9] = new Array('','','','','K','O','F','F','I','E');


C = new Array();
C[0] = new Array(0,1,0,0,0,0,2,0,0,0);
C[1] = new Array(3,0,0,0,4,0,0,0,0,0);
C[2] = new Array(0,0,0,5,0,0,0,0,6,0);
C[3] = new Array(0,0,0,0,0,0,0,0,0,0);
C[4] = new Array(7,0,0,0,0,0,0,0,0,0);
C[5] = new Array(0,0,0,0,0,0,0,0,0,0);
C[6] = new Array(0,0,0,8,0,0,0,0,0,0);
C[7] = new Array(9,0,0,0,0,0,0,0,0,0);
C[8] = new Array(0,0,0,0,0,0,0,0,0,0);
C[9] = new Array(0,0,0,0,10,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('','','','','','','','','','');


A = new Array();
A[2]='plate';
A[3]='knife';
A[5]='vegetable';
A[7]='meat';
A[8]='fruit';
A[9]='cup';
A[10]='coffee';


D = new Array();
D[1]='spoon';
D[2]='beer';
D[4]='fresh frink';
D[6]='tea';
D[7]='fork';


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>';
}

//-->

//]]>



