ÿþ<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD><TITLE>SHAPES</TITLE> <META content="text/html; charset=unicode" http-equiv=Content-Type> <META content="Created with Hot Potatoes by Half-Baked Software, registered to amirsyed." name=author></META> <META content="Hot Potatoes, Half-Baked Software, Windows, University of Victoria" name=keywords></META> <SCRIPT language=javascript type=text/javascript> //<![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] = 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; } 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 = 'SHAPES'; //'Test exercise'; var ExerciseSubtitle = ' Matching exercise<br /> by<br /> Amir Hussain Syed'; //'Multiple-choice'; var Instructions = 'Match the items on the right with the items on the left.'; //''; var DefaultResponse = '[strDefaultResponse]'; var ReadingURL = ''; var PreviousPage = history.length; var NavBar=''; NavBar+='<tr><form name="NavButtons1" action=""><td bgcolor="#ff8040" align="center">'; NavBar+='<font face="Geneva,Arial" size="-1">'; NavBar+='<input type="button" value="ESLZONE1 HOMEPAGE" onclick=\'parent.location="http://eslzone1.tripod.com"\'></input>'; NavBar+='</font></td></form></tr>'; if (is.CRAPBrowser){NavBar = ResolveAllURLs(NavBar);} var TitleCode = '<tr><td align="center" valign="middle" bgcolor="#fcfdce">'; 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" 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="" bgcolor="#fcfdce" 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="??? ">??? </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] = '<img src="http://eslzone1.tripod.com/pictures/shapes/cone-vb.gif" width="110" height="110" border="0"></img>'; I[0][1] = 'CONE'; I[0][2] = 0; I[1] = new Array(); I[1][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/cube-vb.gif" width="110" height="110" border="0"></img>'; I[1][1] = 'CUBE'; I[1][2] = 0; I[2] = new Array(); I[2][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/cylinder-vb.gif" width="110" height="110" border="0"></img>'; I[2][1] = 'CYLINDER'; I[2][2] = 0; I[3] = new Array(); I[3][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/oval-vb.gif" width="110" height="110" border="0"></img>'; I[3][1] = 'OVAL'; I[3][2] = 0; I[4] = new Array(); I[4][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/pentagon-vb.gif" width="110" height="110" border="0"></img>'; I[4][1] = 'PENTAGON'; I[4][2] = 0; I[5] = new Array(); I[5][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/pyramid-vb.gif" width="110" height="110" border="0"></img>'; I[5][1] = 'PYRAMID'; I[5][2] = 0; I[6] = new Array(); I[6][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/quadrangle-vb.gif" width="110" height="110" border="0"></img>'; I[6][1] = 'QUADRANGLE'; I[6][2] = 0; I[7] = new Array(); I[7][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/rectangle-vb.gif" width="110" height="110" border="0"></img>'; I[7][1] = 'RECTANGLE'; I[7][2] = 0; I[8] = new Array(); I[8][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/semi-circle-vb.gif" width="110" height="110" border="0"></img>'; I[8][1] = 'SEMI-CIRCLE'; I[8][2] = 0; I[9] = new Array(); I[9][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/sphere-vb.gif" width="110" height="110" border="0"></img>'; I[9][1] = 'SPHERE'; I[9][2] = 0; I[10] = new Array(); I[10][0] = '<img src="http://eslzone1.tripod.com/pictures/shapes/triangle-vb.gif" width="110" height="110" border="0"></img>'; I[10][1] = 'TRIANGLE'; I[10][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="" bgcolor="#fcfdce" 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>'; } //--> //]]> </SCRIPT> <!--<body>Fool those dumb ad-inserting ISPs</body>--><!--For full XHTML 1.0 compatibility, remove the border and framespacing attributes. These are required for proper display in current browsers, but render the document incompatible. Then, you'll need to add the appropriate Document Type Declaration; use the W3C XHTML 1 frameset DTD.--> <META content="MSHTML 5.00.2314.1000" name=GENERATOR></HEAD><FRAMESET border=0 frameSpacing=0 onload=StartUp() rows=25%,*><FRAME frameBorder=0 name=TopFrame src="javascript:parent.Blank()"><FRAME frameBorder=0 name=BottomFrame src="javascript:parent.Blank()"></FRAMESET></HTML>