Skip to content
Browse files

removed bad newlines (\r\r\n) which caused double-spacing in HTML/JS/…

…CSS source
  • Loading branch information...
1 parent 02aff07 commit 71a10ef2ada3b356498517a96ba4b61486d53eb3 gbateson committed
Sorry, we could not display the entire diff because it was too big.
View
248 mod/hotpot/template/v6/djmatch6.ht_
@@ -1,124 +1,124 @@
-<?xml version="1.0"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml"
- xml:lang="en"><head>
-
-[strDublinCoreMetadata]
-
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-
-<title>
-[strPlainTitle]
-</title>
-
-<!-- Made with executable version [strFullVersionInfo] -->
-
-<!-- The following insertion allows you to add your own code directly to this head tag from the configuration screen -->
-
-[strHeaderCode]
-
-<style type="text/css">
-
-[strStyleSheet]
-
-</style>
-
-<script type="text/javascript">
-
-//<![CDATA[
-
-<!--
-
-[strJSBrowserCheck]
-
-[strJSButtons]
-
-[strJSShowMessage]
-
-[strJSUtilities]
-
-[strJSHotPotNet]
-
-[strJSCard]
-
-[strJSDJMatch6]
-
-[inclTimer]
-[strJSTimer]
-[/inclTimer]
-
-[inclSendResults]
-[strJSSendResults]
-[/inclSendResults]
-
-//-->
-
-//]]>
-
-</script>
-
-</head>
-
-<body onload="TimerStartUp()" id="TheBody">
-<!-- BeginTopNavButtons -->
-
-[inclNavButtons]
-[strTopNavBar]
-[/inclNavButtons]
-
-<!-- EndTopNavButtons -->
-
-<div class="Titles">
- <h2 class="ExerciseTitle">[strExerciseTitle]</h2>
-[inclExerciseSubtitle]
- <h3 class="ExerciseSubtitle">[strExerciseSubtitle]</h3>
-[/inclExerciseSubtitle]
-[inclTimer]
-<div id="Timer">&nbsp;<span id="TimerText">&nbsp;&nbsp;</span>&nbsp;</div>
-[/inclTimer]
-
-</div>
-
-<div id="InstructionsDiv" class="StdDiv">
- <p id="Instructions">[strInstructions]</p>
-</div>
-
-<div class="StdDiv" id="CheckButtonDiv">
-<button id="CheckButton1" class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckAnswers()">&nbsp;[strCheckCaption]&nbsp;</button>
-</div>
-
-<script type="text/javascript">
-
-//<![CDATA[
-
-<!--
-
-
-for (var i=0; i<F.length; i++){
- document.write('<div id="F' + i + '" class="CardStyle"></div>');
-}
-
-for (var i=0; i<D.length; i++){
- document.write('<div id="D' + i + '" class="CardStyle" onmousedown="beginDrag(event, ' + i + ')"></div>');
-}
-
-//-->
-
-//]]>
-</script>
-
-<div class="Feedback" id="FeedbackDiv">
-<div class="FeedbackText" id="FeedbackContent"></div>
-<button id="FeedbackOKButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="HideFeedback(); return false;">&nbsp;[strOKCaption]&nbsp;</button>
-</div>
-
-<!-- BeginBottomNavButtons -->
-
-<!-- EndBottomNavButtons -->
-
-<!-- BeginSubmissionForm -->
-
-<!-- EndSubmissionForm -->
-
-</body>
-</html>
+<?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"><head>
+
+[strDublinCoreMetadata]
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+
+<title>
+[strPlainTitle]
+</title>
+
+<!-- Made with executable version [strFullVersionInfo] -->
+
+<!-- The following insertion allows you to add your own code directly to this head tag from the configuration screen -->
+
+[strHeaderCode]
+
+<style type="text/css">
+
+[strStyleSheet]
+
+</style>
+
+<script type="text/javascript">
+
+//<![CDATA[
+
+<!--
+
+[strJSBrowserCheck]
+
+[strJSButtons]
+
+[strJSShowMessage]
+
+[strJSUtilities]
+
+[strJSHotPotNet]
+
+[strJSCard]
+
+[strJSDJMatch6]
+
+[inclTimer]
+[strJSTimer]
+[/inclTimer]
+
+[inclSendResults]
+[strJSSendResults]
+[/inclSendResults]
+
+//-->
+
+//]]>
+
+</script>
+
+</head>
+
+<body onload="TimerStartUp()" id="TheBody">
+<!-- BeginTopNavButtons -->
+
+[inclNavButtons]
+[strTopNavBar]
+[/inclNavButtons]
+
+<!-- EndTopNavButtons -->
+
+<div class="Titles">
+ <h2 class="ExerciseTitle">[strExerciseTitle]</h2>
+[inclExerciseSubtitle]
+ <h3 class="ExerciseSubtitle">[strExerciseSubtitle]</h3>
+[/inclExerciseSubtitle]
+[inclTimer]
+<div id="Timer">&nbsp;<span id="TimerText">&nbsp;&nbsp;</span>&nbsp;</div>
+[/inclTimer]
+
+</div>
+
+<div id="InstructionsDiv" class="StdDiv">
+ <p id="Instructions">[strInstructions]</p>
+</div>
+
+<div class="StdDiv" id="CheckButtonDiv">
+<button id="CheckButton1" class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckAnswers()">&nbsp;[strCheckCaption]&nbsp;</button>
+</div>
+
+<script type="text/javascript">
+
+//<![CDATA[
+
+<!--
+
+
+for (var i=0; i<F.length; i++){
+ document.write('<div id="F' + i + '" class="CardStyle"></div>');
+}
+
+for (var i=0; i<D.length; i++){
+ document.write('<div id="D' + i + '" class="CardStyle" onmousedown="beginDrag(event, ' + i + ')"></div>');
+}
+
+//-->
+
+//]]>
+</script>
+
+<div class="Feedback" id="FeedbackDiv">
+<div class="FeedbackText" id="FeedbackContent"></div>
+<button id="FeedbackOKButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="HideFeedback(); return false;">&nbsp;[strOKCaption]&nbsp;</button>
+</div>
+
+<!-- BeginBottomNavButtons -->
+
+<!-- EndBottomNavButtons -->
+
+<!-- BeginSubmissionForm -->
+
+<!-- EndSubmissionForm -->
+
+</body>
+</html>
View
646 mod/hotpot/template/v6/djmatch6.js_
@@ -1,323 +1,323 @@
-
-var CorrectResponse = '[strGuessCorrect]';
-var IncorrectResponse = '[strGuessIncorrect]';
-var YourScoreIs = '[strYourScoreIs]';
-var DivWidth = 600; //default value
-var FeedbackWidth = 200; //default
-var ExBGColor = '[strExBGColor]';
-var PageBGColor = '[strPageBGColor]';
-var TextColor = '[strTextColor]';
-var TitleColor = '[strTitleColor]';
-var Penalties = 0;
-var Score = 0;
-var TimeOver = false;
-var Locked = false;
-var ShuffleQs = [boolShuffleQs];
-var QsToShow = [QsToShow];
-
-var DragWidth = 200;
-var LeftColPos = 100;
-var RightColPos = 500;
-var DragTop = 120;
-var Finished = false;
-
-//Fixed and draggable card arrays
-FC = new Array();
-DC = new Array();
-
-function onEndDrag(){
-//Is it dropped on any of the fixed cards?
- var Docked = false;
- var DropTarget = DroppedOnFixed(CurrDrag);
- if (DropTarget > -1){
-//If so, send home any card that is currently docked there
- for (var i=0; i<DC.length; i++){
- if (DC[i].tag == DropTarget+1){
- DC[i].GoHome();
- DC[i].tag = 0;
- D[i][2] = 0;
- }
- }
-//Dock the dropped card
- DC[CurrDrag].DockToR(FC[DropTarget]);
- D[CurrDrag][2] = F[DropTarget][1];
- DC[CurrDrag].tag = DropTarget+1;
- Docked = true;
- }
-
- if (Docked == false){
- DC[CurrDrag].GoHome();
- DC[CurrDrag].tag = 0;
- D[CurrDrag][2] = 0;
- }
-}
-
-function DroppedOnFixed(DNum){
- var Result = -1;
- var OverlapArea = 0;
- var Temp = 0;
- for (var i=0; i<FC.length; i++){
- Temp = DC[DNum].Overlap(FC[i]);
- if (Temp > OverlapArea){
- OverlapArea = Temp;
- Result = i;
- }
- }
- return Result;
-}
-
-
-function StartUp(){
-
-[inclSendResults]
- GetUserName();
-[/inclSendResults]
-
-[inclPreloadImages]
- PreloadImages([PreloadImageList]);
-[/inclPreloadImages]
-
-//Calculate page dimensions and positions
- pg = new PageDim();
- DivWidth = Math.floor((pg.W*4)/5);
- DragWidth = Math.floor((DivWidth*3)/10);
- LeftColPos = Math.floor(pg.W/15);
- RightColPos = pg.W - (DragWidth + LeftColPos);
- DragTop = parseInt(document.getElementById('CheckButtonDiv').offsetHeight) + parseInt(document.getElementById('CheckButtonDiv').offsetTop) + 10;
-
- if (C.ie){
- DragTop += 15;
- }
-
-//Reduce array if required
- if (QsToShow < F.length){
- ReduceItems2();
- }
-
-//Shuffle the left items if required
- if (ShuffleQs == true){
- F = Shuffle(F);
- }
-
-//Shuffle the items on the right
- D = Shuffle(D);
-
- var CurrTop = DragTop;
- var TempInt = 0;
- var DropHome = 0;
- var Widest = 0;
- var CardContent = '';
- for (var i=0; i<F.length; i++){
- CardContent = F[i][0];
- FC[i] = new Card('F' + i, 10);
- FC[i].elm.innerHTML = CardContent;
- if (FC[i].GetW() > Widest){
- Widest = FC[i].GetW();
- }
- }
-
- if (Widest > DragWidth){Widest = DragWidth;}
-
- CurrTop = DragTop;
-
- DragWidth = Math.floor((DivWidth-Widest)/2) - 24;
- RightColPos = DivWidth + LeftColPos - (DragWidth + 14);
- var Highest = 0;
- var WidestRight = 0;
-
- for (i=0; i<D.length; i++){
- DC[i] = new Card('D' + i, 10);
- CardContent = D[i][0];
-// if (CardContent.indexOf('<img ') > -1){CardContent += '<br clear="all" />';} //used to be required for Navigator rendering bug with images
- DC[i].elm.innerHTML = CardContent;
- if (DC[i].GetW() > DragWidth){DC[i].SetW(DragWidth);}
- DC[i].css.cursor = 'move';
- DC[i].css.backgroundColor = '[strExBGColor]';
- DC[i].css.color = '[strTextColor]';
- TempInt = DC[i].GetH();
- if (TempInt > Highest){Highest = TempInt;}
- TempInt = DC[i].GetW();
- if (TempInt > WidestRight){WidestRight = TempInt;}
- }
-
- var HeightToSet = Highest;
- if (C.gecko||C.ie5mac){HeightToSet -= 12;}
- var WidthToSet = WidestRight;
- if (C.gecko||C.ie5mac){WidthToSet -= 12;}
-
- for (i=0; i<D.length; i++){
- DC[i].SetT(CurrTop);
- DC[i].SetL(RightColPos);
- if (DC[i].GetH() < Highest){
- DC[i].SetH(HeightToSet);
- }
- if (DC[i].GetW() < WidestRight){
- DC[i].SetW(WidthToSet);
- }
- DC[i].SetHome();
- DC[i].tag = -1;
- CurrTop = CurrTop + DC[i].GetH() + 5;
- }
-
- CurrTop = DragTop;
-
- for (var i=0; i<F.length; i++){
- FC[i].SetW(Widest);
- if (FC[i].GetH() < Highest){
- FC[i].SetH(HeightToSet);
- }
- FC[i].SetT(CurrTop);
- FC[i].SetL(LeftColPos);
- FC[i].SetHome();
- TempInt = FC[i].GetH();
- CurrTop = CurrTop + TempInt + 5;
- }
-
-[inclSlide]
-//Slide any elements that should be in position over
- for (i=0; i<D.length; i++){
- if (D[i][2] > 0){
- DC[i].tag = D[i][1];
- D[i][2] = D[i][1];
- var TopChange = 0;
-//Find the right target element
- var TargItem = -1;
- for (var j=0; j<F.length; j++){
- if (F[j][1] == D[i][1]){
- TargItem = j;
- }
- }
- var TargetLeft = FC[TargItem].GetR() + 5;
- var TargetTop = FC[TargItem].GetT();
-
- if (TargetTop < DC[i].GetT()){
- TopChange = -1;
- }
- else {
- if (TargetTop > DC[i].GetT()){
- TopChange = 1;
- }
- }
- Slide(i, TargetLeft, TargetTop, TopChange);
- D[i][2] = F[TargItem][1];
- DC[i].tag = TargItem+1;
- }
- }
-[/inclSlide]
-[inclTimer]
- StartTimer();
-[/inclTimer]
-}
-
-[inclSlide]
-function Slide(MoverNum, TargL, TargT, TopChange){
- var TempInt = DC[MoverNum].GetL();
- if (TempInt > TargL){
- DC[MoverNum].SetL(TempInt - 5);
- }
- TempInt = DC[MoverNum].GetT();
- if (TempInt != TargT){
- DC[MoverNum].SetT(TempInt + TopChange);
- }
- if ((DC[MoverNum].GetL() > TargL)||(DC[MoverNum].GetT() != TargT)){
- setTimeout('Slide('+MoverNum+','+TargL+','+TargT+','+TopChange+')', 1);
- }
- else{
- DC[MoverNum].SetL(TargL);
- }
-}
-[/inclSlide]
-
-F = new Array();
-[FixedArray]
-
-D = new Array();
-[DragArray]
-
-function ReduceItems2(){
- var ItemToDump=0;
- var j=0;
- while (F.length > QsToShow){
- ItemToDump = Math.floor(F.length*Math.random());
- for (j=ItemToDump; j<(F.length-1); j++){
- F[j] = F[j+1];
- }
- for (j=ItemToDump; j<(D.length-1); j++){
- D[j] = D[j+1];
- }
- F.length = F.length-1;
- D.length = D.length-1;
- }
-}
-
-function TimerStartUp(){
- setTimeout('StartUp()', 300);
-}
-
-function CheckAnswers(){
- if (Locked == true){return;}
-//Set the default score and response
- var TotalCorrect = 0;
- Score = 0;
- var Feedback = '';
-
-//for each fixed, check to see if the tag value for the draggable is the same as the fixed
- var i, j;
- for (i=0; i<D.length; i++){
- if ((D[i][2] == D[i][1])&&(D[i][2] > 0)){
- TotalCorrect++;
- }
- else{
-//Change made for version 6.0.3.41: don't send wrong items home,
-//show them in a more conspicuous way.
-// DC[i].GoHome();
- DC[i].SetL(DC[i].GetL() + 10);
- DC[i].Highlight();
- }
- }
-
- Score = Math.floor((100*(TotalCorrect-Penalties))/F.length);
-
- var AllDone = false;
-
- if (TotalCorrect == F.length) {
- AllDone = true;
- }
-
- if (AllDone == true){
- Feedback = YourScoreIs + ' ' + Score + '%.';
- ShowMessage(Feedback + '<br />' + CorrectResponse);
- }
- else {
- Feedback = IncorrectResponse + '<br />' + YourScoreIs + ' ' + Score + '%.';
- ShowMessage(Feedback);
- Penalties++; // Penalty for inaccurate check
- }
-//If the exercise is over, deal with that
- if ((AllDone == true)||(TimeOver == true)){
-[inclSendResults]
- setTimeout('SendResults(' + Score + ')', 50);
-[/inclSendResults]
-[inclTimer]
- window.clearInterval(Interval);
-[/inclTimer]
- TimeOver = true;
- Locked = true;
- Finished = true;
- setTimeout('Finish()', SubmissionTimeout);
- WriteToInstructions(Feedback);
- }
-}
-
-[inclTimer]
-function TimesUp() {
- document.getElementById('Timer').innerHTML = '[strTimesUp]';
-[inclPreloadImages]
- RefreshImages();
-[/inclPreloadImages]
- TimeOver = true;
- CheckAnswers();
- Locked = true;
-}
-[/inclTimer]
-
+
+var CorrectResponse = '[strGuessCorrect]';
+var IncorrectResponse = '[strGuessIncorrect]';
+var YourScoreIs = '[strYourScoreIs]';
+var DivWidth = 600; //default value
+var FeedbackWidth = 200; //default
+var ExBGColor = '[strExBGColor]';
+var PageBGColor = '[strPageBGColor]';
+var TextColor = '[strTextColor]';
+var TitleColor = '[strTitleColor]';
+var Penalties = 0;
+var Score = 0;
+var TimeOver = false;
+var Locked = false;
+var ShuffleQs = [boolShuffleQs];
+var QsToShow = [QsToShow];
+
+var DragWidth = 200;
+var LeftColPos = 100;
+var RightColPos = 500;
+var DragTop = 120;
+var Finished = false;
+
+//Fixed and draggable card arrays
+FC = new Array();
+DC = new Array();
+
+function onEndDrag(){
+//Is it dropped on any of the fixed cards?
+ var Docked = false;
+ var DropTarget = DroppedOnFixed(CurrDrag);
+ if (DropTarget > -1){
+//If so, send home any card that is currently docked there
+ for (var i=0; i<DC.length; i++){
+ if (DC[i].tag == DropTarget+1){
+ DC[i].GoHome();
+ DC[i].tag = 0;
+ D[i][2] = 0;
+ }
+ }
+//Dock the dropped card
+ DC[CurrDrag].DockToR(FC[DropTarget]);
+ D[CurrDrag][2] = F[DropTarget][1];
+ DC[CurrDrag].tag = DropTarget+1;
+ Docked = true;
+ }
+
+ if (Docked == false){
+ DC[CurrDrag].GoHome();
+ DC[CurrDrag].tag = 0;
+ D[CurrDrag][2] = 0;
+ }
+}
+
+function DroppedOnFixed(DNum){
+ var Result = -1;
+ var OverlapArea = 0;
+ var Temp = 0;
+ for (var i=0; i<FC.length; i++){
+ Temp = DC[DNum].Overlap(FC[i]);
+ if (Temp > OverlapArea){
+ OverlapArea = Temp;
+ Result = i;
+ }
+ }
+ return Result;
+}
+
+
+function StartUp(){
+
+[inclSendResults]
+ GetUserName();
+[/inclSendResults]
+
+[inclPreloadImages]
+ PreloadImages([PreloadImageList]);
+[/inclPreloadImages]
+
+//Calculate page dimensions and positions
+ pg = new PageDim();
+ DivWidth = Math.floor((pg.W*4)/5);
+ DragWidth = Math.floor((DivWidth*3)/10);
+ LeftColPos = Math.floor(pg.W/15);
+ RightColPos = pg.W - (DragWidth + LeftColPos);
+ DragTop = parseInt(document.getElementById('CheckButtonDiv').offsetHeight) + parseInt(document.getElementById('CheckButtonDiv').offsetTop) + 10;
+
+ if (C.ie){
+ DragTop += 15;
+ }
+
+//Reduce array if required
+ if (QsToShow < F.length){
+ ReduceItems2();
+ }
+
+//Shuffle the left items if required
+ if (ShuffleQs == true){
+ F = Shuffle(F);
+ }
+
+//Shuffle the items on the right
+ D = Shuffle(D);
+
+ var CurrTop = DragTop;
+ var TempInt = 0;
+ var DropHome = 0;
+ var Widest = 0;
+ var CardContent = '';
+ for (var i=0; i<F.length; i++){
+ CardContent = F[i][0];
+ FC[i] = new Card('F' + i, 10);
+ FC[i].elm.innerHTML = CardContent;
+ if (FC[i].GetW() > Widest){
+ Widest = FC[i].GetW();
+ }
+ }
+
+ if (Widest > DragWidth){Widest = DragWidth;}
+
+ CurrTop = DragTop;
+
+ DragWidth = Math.floor((DivWidth-Widest)/2) - 24;
+ RightColPos = DivWidth + LeftColPos - (DragWidth + 14);
+ var Highest = 0;
+ var WidestRight = 0;
+
+ for (i=0; i<D.length; i++){
+ DC[i] = new Card('D' + i, 10);
+ CardContent = D[i][0];
+// if (CardContent.indexOf('<img ') > -1){CardContent += '<br clear="all" />';} //used to be required for Navigator rendering bug with images
+ DC[i].elm.innerHTML = CardContent;
+ if (DC[i].GetW() > DragWidth){DC[i].SetW(DragWidth);}
+ DC[i].css.cursor = 'move';
+ DC[i].css.backgroundColor = '[strExBGColor]';
+ DC[i].css.color = '[strTextColor]';
+ TempInt = DC[i].GetH();
+ if (TempInt > Highest){Highest = TempInt;}
+ TempInt = DC[i].GetW();
+ if (TempInt > WidestRight){WidestRight = TempInt;}
+ }
+
+ var HeightToSet = Highest;
+ if (C.gecko||C.ie5mac){HeightToSet -= 12;}
+ var WidthToSet = WidestRight;
+ if (C.gecko||C.ie5mac){WidthToSet -= 12;}
+
+ for (i=0; i<D.length; i++){
+ DC[i].SetT(CurrTop);
+ DC[i].SetL(RightColPos);
+ if (DC[i].GetH() < Highest){
+ DC[i].SetH(HeightToSet);
+ }
+ if (DC[i].GetW() < WidestRight){
+ DC[i].SetW(WidthToSet);
+ }
+ DC[i].SetHome();
+ DC[i].tag = -1;
+ CurrTop = CurrTop + DC[i].GetH() + 5;
+ }
+
+ CurrTop = DragTop;
+
+ for (var i=0; i<F.length; i++){
+ FC[i].SetW(Widest);
+ if (FC[i].GetH() < Highest){
+ FC[i].SetH(HeightToSet);
+ }
+ FC[i].SetT(CurrTop);
+ FC[i].SetL(LeftColPos);
+ FC[i].SetHome();
+ TempInt = FC[i].GetH();
+ CurrTop = CurrTop + TempInt + 5;
+ }
+
+[inclSlide]
+//Slide any elements that should be in position over
+ for (i=0; i<D.length; i++){
+ if (D[i][2] > 0){
+ DC[i].tag = D[i][1];
+ D[i][2] = D[i][1];
+ var TopChange = 0;
+//Find the right target element
+ var TargItem = -1;
+ for (var j=0; j<F.length; j++){
+ if (F[j][1] == D[i][1]){
+ TargItem = j;
+ }
+ }
+ var TargetLeft = FC[TargItem].GetR() + 5;
+ var TargetTop = FC[TargItem].GetT();
+
+ if (TargetTop < DC[i].GetT()){
+ TopChange = -1;
+ }
+ else {
+ if (TargetTop > DC[i].GetT()){
+ TopChange = 1;
+ }
+ }
+ Slide(i, TargetLeft, TargetTop, TopChange);
+ D[i][2] = F[TargItem][1];
+ DC[i].tag = TargItem+1;
+ }
+ }
+[/inclSlide]
+[inclTimer]
+ StartTimer();
+[/inclTimer]
+}
+
+[inclSlide]
+function Slide(MoverNum, TargL, TargT, TopChange){
+ var TempInt = DC[MoverNum].GetL();
+ if (TempInt > TargL){
+ DC[MoverNum].SetL(TempInt - 5);
+ }
+ TempInt = DC[MoverNum].GetT();
+ if (TempInt != TargT){
+ DC[MoverNum].SetT(TempInt + TopChange);
+ }
+ if ((DC[MoverNum].GetL() > TargL)||(DC[MoverNum].GetT() != TargT)){
+ setTimeout('Slide('+MoverNum+','+TargL+','+TargT+','+TopChange+')', 1);
+ }
+ else{
+ DC[MoverNum].SetL(TargL);
+ }
+}
+[/inclSlide]
+
+F = new Array();
+[FixedArray]
+
+D = new Array();
+[DragArray]
+
+function ReduceItems2(){
+ var ItemToDump=0;
+ var j=0;
+ while (F.length > QsToShow){
+ ItemToDump = Math.floor(F.length*Math.random());
+ for (j=ItemToDump; j<(F.length-1); j++){
+ F[j] = F[j+1];
+ }
+ for (j=ItemToDump; j<(D.length-1); j++){
+ D[j] = D[j+1];
+ }
+ F.length = F.length-1;
+ D.length = D.length-1;
+ }
+}
+
+function TimerStartUp(){
+ setTimeout('StartUp()', 300);
+}
+
+function CheckAnswers(){
+ if (Locked == true){return;}
+//Set the default score and response
+ var TotalCorrect = 0;
+ Score = 0;
+ var Feedback = '';
+
+//for each fixed, check to see if the tag value for the draggable is the same as the fixed
+ var i, j;
+ for (i=0; i<D.length; i++){
+ if ((D[i][2] == D[i][1])&&(D[i][2] > 0)){
+ TotalCorrect++;
+ }
+ else{
+//Change made for version 6.0.3.41: don't send wrong items home,
+//show them in a more conspicuous way.
+// DC[i].GoHome();
+ DC[i].SetL(DC[i].GetL() + 10);
+ DC[i].Highlight();
+ }
+ }
+
+ Score = Math.floor((100*(TotalCorrect-Penalties))/F.length);
+
+ var AllDone = false;
+
+ if (TotalCorrect == F.length) {
+ AllDone = true;
+ }
+
+ if (AllDone == true){
+ Feedback = YourScoreIs + ' ' + Score + '%.';
+ ShowMessage(Feedback + '<br />' + CorrectResponse);
+ }
+ else {
+ Feedback = IncorrectResponse + '<br />' + YourScoreIs + ' ' + Score + '%.';
+ ShowMessage(Feedback);
+ Penalties++; // Penalty for inaccurate check
+ }
+//If the exercise is over, deal with that
+ if ((AllDone == true)||(TimeOver == true)){
+[inclSendResults]
+ setTimeout('SendResults(' + Score + ')', 50);
+[/inclSendResults]
+[inclTimer]
+ window.clearInterval(Interval);
+[/inclTimer]
+ TimeOver = true;
+ Locked = true;
+ Finished = true;
+ setTimeout('Finish()', SubmissionTimeout);
+ WriteToInstructions(Feedback);
+ }
+}
+
+[inclTimer]
+function TimesUp() {
+ document.getElementById('Timer').innerHTML = '[strTimesUp]';
+[inclPreloadImages]
+ RefreshImages();
+[/inclPreloadImages]
+ TimeOver = true;
+ CheckAnswers();
+ Locked = true;
+}
+[/inclTimer]
+
View
264 mod/hotpot/template/v6/djmix6.ht_
@@ -1,132 +1,132 @@
-<?xml version="1.0"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml"
- xml:lang="en"><head>
-
-[strDublinCoreMetadata]
-
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-
-<title>
-[strPlainTitle]
-</title>
-
-<!-- Made with executable version [strFullVersionInfo] -->
-
-<!-- The following insertion allows you to add your own code directly to this head tag from the configuration screen -->
-
-[strHeaderCode]
-
-<style type="text/css">
-
-[strStyleSheet]
-
-</style>
-
-<script type="text/javascript">
-
-//<![CDATA[
-
-<!--
-
-[strJSBrowserCheck]
-
-[strJSButtons]
-
-[strJSShowMessage]
-
-[strJSUtilities]
-
-[strJSHotPotNet]
-
-[strJSCard]
-
-[strJSDJMix6]
-
-[inclTimer]
-[strJSTimer]
-[/inclTimer]
-
-[inclSendResults]
-[strJSSendResults]
-[/inclSendResults]
-
-//-->
-
-//]]>
-
-</script>
-
-</head>
-
-<body onload="TimerStartUp()" id="TheBody">
-<!-- BeginTopNavButtons -->
-
-[inclNavButtons]
-[strTopNavBar]
-[/inclNavButtons]
-
-<!-- EndTopNavButtons -->
-
-<div class="Titles">
- <h2 class="ExerciseTitle">[strExerciseTitle]</h2>
-[inclExerciseSubtitle]
- <h3 class="ExerciseSubtitle">[strExerciseSubtitle]</h3>
-[/inclExerciseSubtitle]
-[inclTimer]
-<div id="Timer">&nbsp;<span id="TimerText">&nbsp;&nbsp;</span>&nbsp;</div>
-[/inclTimer]
-
-</div>
-
-<div id="InstructionsDiv" class="StdDiv">
- <p id="Instructions">[strInstructions]</p>
-</div>
-
-<div class="StdDiv" id="CheckButtonDiv">
-<button id="CheckButton1" class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckResults(0)">&nbsp;[strCheckCaption]&nbsp;</button>
-
-[inclRestart]
-<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="location.reload()">&nbsp;[strRestartCaption]&nbsp;</button>
-[/inclRestart]
-
-[inclHint]
-<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckResults(1)">&nbsp;[strHintCaption]&nbsp;</button>
-[/inclHint]
-</div>
-
-<script type="text/javascript">
-
-//<![CDATA[
-
-<!--
-
-
-for (var i=0; i<DropTotal; i++){
- document.write('<div id="Drop' + i + '" class="DropLine" align="center">&nbsp;<br />&nbsp;</div>');
-}
-
-for (var i=0; i<Segments.length; i++){
- document.write('<div id="D' + i + '" class="CardStyle" onmousedown="beginDrag(event, ' + i + ')"></div>');
-}
-
-//-->
-
-//]]>
-</script>
-
-<div class="Feedback" id="FeedbackDiv">
-<div class="FeedbackText" id="FeedbackContent"></div>
-<button id="FeedbackOKButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="HideFeedback(); return false;">&nbsp;[strOKCaption]&nbsp;</button>
-</div>
-
-<!-- BeginBottomNavButtons -->
-
-<!-- EndBottomNavButtons -->
-
-<!-- BeginSubmissionForm -->
-
-<!-- EndSubmissionForm -->
-
-</body>
-</html>
+<?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"><head>
+
+[strDublinCoreMetadata]
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+
+<title>
+[strPlainTitle]
+</title>
+
+<!-- Made with executable version [strFullVersionInfo] -->
+
+<!-- The following insertion allows you to add your own code directly to this head tag from the configuration screen -->
+
+[strHeaderCode]
+
+<style type="text/css">
+
+[strStyleSheet]
+
+</style>
+
+<script type="text/javascript">
+
+//<![CDATA[
+
+<!--
+
+[strJSBrowserCheck]
+
+[strJSButtons]
+
+[strJSShowMessage]
+
+[strJSUtilities]
+
+[strJSHotPotNet]
+
+[strJSCard]
+
+[strJSDJMix6]
+
+[inclTimer]
+[strJSTimer]
+[/inclTimer]
+
+[inclSendResults]
+[strJSSendResults]
+[/inclSendResults]
+
+//-->
+
+//]]>
+
+</script>
+
+</head>
+
+<body onload="TimerStartUp()" id="TheBody">
+<!-- BeginTopNavButtons -->
+
+[inclNavButtons]
+[strTopNavBar]
+[/inclNavButtons]
+
+<!-- EndTopNavButtons -->
+
+<div class="Titles">
+ <h2 class="ExerciseTitle">[strExerciseTitle]</h2>
+[inclExerciseSubtitle]
+ <h3 class="ExerciseSubtitle">[strExerciseSubtitle]</h3>
+[/inclExerciseSubtitle]
+[inclTimer]
+<div id="Timer">&nbsp;<span id="TimerText">&nbsp;&nbsp;</span>&nbsp;</div>
+[/inclTimer]
+
+</div>
+
+<div id="InstructionsDiv" class="StdDiv">
+ <p id="Instructions">[strInstructions]</p>
+</div>
+
+<div class="StdDiv" id="CheckButtonDiv">
+<button id="CheckButton1" class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckResults(0)">&nbsp;[strCheckCaption]&nbsp;</button>
+
+[inclRestart]
+<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="location.reload()">&nbsp;[strRestartCaption]&nbsp;</button>
+[/inclRestart]
+
+[inclHint]
+<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckResults(1)">&nbsp;[strHintCaption]&nbsp;</button>
+[/inclHint]
+</div>
+
+<script type="text/javascript">
+
+//<![CDATA[
+
+<!--
+
+
+for (var i=0; i<DropTotal; i++){
+ document.write('<div id="Drop' + i + '" class="DropLine" align="center">&nbsp;<br />&nbsp;</div>');
+}
+
+for (var i=0; i<Segments.length; i++){
+ document.write('<div id="D' + i + '" class="CardStyle" onmousedown="beginDrag(event, ' + i + ')"></div>');
+}
+
+//-->
+
+//]]>
+</script>
+
+<div class="Feedback" id="FeedbackDiv">
+<div class="FeedbackText" id="FeedbackContent"></div>
+<button id="FeedbackOKButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="HideFeedback(); return false;">&nbsp;[strOKCaption]&nbsp;</button>
+</div>
+
+<!-- BeginBottomNavButtons -->
+
+<!-- EndBottomNavButtons -->
+
+<!-- BeginSubmissionForm -->
+
+<!-- EndSubmissionForm -->
+
+</body>
+</html>
View
1,042 mod/hotpot/template/v6/djmix6.js_
@@ -1,521 +1,521 @@
-//JMIX DRAG-DROP OUTPUT FORMAT CODE
-
-var Punctuation = '[strPunctuation]';
-
-var Openers = '[strOpenPunctuation]';
-var CorrectResponse = '[strGuessCorrect]';
-var IncorrectResponse = '[strGuessIncorrect]';
-var ThisMuchCorrect = '[strThisMuch]';
-var TheseAnswersToo = '[strTheseAnswersToo]';
-var YourScoreIs = '[strYourScoreIs]';
-var NextCorrect = '[strNextCorrect]';
-var FeedbackWidth = 200; //default
-var ExBGColor = '[strExBGColor]';
-var PageBGColor = '[strPageBGColor]';
-var TextColor = '[strTextColor]';
-var TitleColor = '[strTitleColor]';
-var DropTotal = 3; // number of lines that will be available for dropping on
-var Gap = 4; //Gap between two segments when they're next to each other on a line
-var DropHeight = 30;
-var CapitalizeFirst = [boolCapitalizeFirst];
-var CompiledOutput = '';
-var TempSegment = '';
-var FirstSegment = -1;
-var FirstDiv = -1;
-var Penalties = 0;
-var Score = 0;
-var TimeOver = false;
-
-var CurrDrag = -1;
-var topZ = 100;
-var Cds = new Array();
-var L = new Array();
-var Finished = false;
-
-var Locked = false;
-var DivWidth = 600;
-var LeftColPos = 100;
-var DragTop = 120;
-var DragNumber = -1;
-
-Lines = new Array();
-
-function CapFirst(InString){
- var i = 0;
- if ((Openers.indexOf(InString.charAt(i))>-1)||(InString.charAt(i) == ' ')){
- i++;
- }
- if ((Openers.indexOf(InString.charAt(i))>-1)||(InString.charAt(i) == ' ')){
- i++;
- }
- var Temp = InString.charAt(i);
- Temp = Temp.toUpperCase();
- InString = InString.substring(0, i) + Temp + InString.substring(i+1, InString.length);
- return InString;
-}
-
-function CheckResults(ChkType){
-//Get sequence student has chosen
- GetGuessSequence();
-
-//Compile the answer
- CompiledOutput = CompileString(GuessSequence);
-
-//Check the answer
- CheckAnswer(ChkType);
-}
-
-function GetGuessSequence(){
-//Put pointers to draggables in arrays based on the lines they're sitting on
- var Drops = new Array();
- for (var i=0; i<L.length; i++){
- Drops[i] = new Array();
- }
-
- var CardPos = 0;
-
- for (i=0; i<Cds.length; i++){
- for (var j=0; j<L.length; j++){
-//Slight modification for 6.0.4: allow some leeway for 1px inaccuracy in card placing by browser.
- CardPos = L[j].GetB() - (Cds[i].GetH()+2);
- if (((Cds[i].GetT() - CardPos) < 4)&&((Cds[i].GetT() - CardPos) > -4)){
- Drops[j][Drops[j].length] = Cds[i];
- }
- }
- }
-
-//Sort the drop arrays based on the Left of each div
- for (i=0; i<Drops.length; i++){
- Drops[i].sort(CompDrags);
- }
-
-//Put the tags into the GuessSequence array
- GuessSequence.length = 0;
- for (i=0; i<Drops.length; i++){
- for (j=0; j<Drops[i].length; j++){
- GuessSequence[GuessSequence.length] = Drops[i][j].tag;
- }
- }
-
-//Set the variable recording which div is first
- var NewFirstDiv = -1;
- for (i=0; i<Drops.length; i++){
- if (Drops[i].length > 0){
- NewFirstDiv = Drops[i][0].index;
- break;
- }
- }
- return NewFirstDiv;
-}
-
-function CompDrags(a,b){
- return a.GetL() - b.GetL();
-}
-
-function FindSegment(SegID){
- var Seg = '';
- for (var i=0; i<Segments.length; i++){
- if (Segments[i][1] == SegID){
- Seg = Segments[i][0];
- break;
- }
- }
- return Seg;
-}
-
-function CompileString(InArray){
- var OutString = '';
- var i = 0;
- OutArray = new Array();
-
- for (i=0; i<InArray.length; i++){
- OutArray[OutArray.length] = FindSegment(InArray[i]);
- }
-
- if (OutArray.length > 0){
- OutString = OutArray[0];
- }
- else{
- OutString = '';
- }
- var Spacer = '';
-
- for (i=1; i<OutArray.length; i++){
- Spacer = ' ';
- if ((Openers.indexOf(OutString.charAt(OutString.length-1)) > -1)||(Punctuation.indexOf(OutArray[i].charAt(0)) > -1)){
- Spacer = '';
- }
- OutString = OutString + Spacer + OutArray[i];
- }
-
-//Capitalize the first letter if necessary
- if (CapitalizeFirst == true){
- OutString = CapFirst(OutString);
- }
- return OutString;
-}
-
-function CheckAnswer(CheckType){
- if (Locked == true){return;}
- if (GuessSequence.length < 1){
- if (CheckType == 1){
- Penalties++;
- ShowMessage(NextCorrect + '<br /><br />' + FindSegment(Answers[0][0]));
- }
- return;
- }
- var i = 0;
- var j = 0;
- var k = 0;
- var WellDone = '';
- var WhichCorrect = -1;
- var TryAgain = '';
- var LongestCorrectBit = '';
- TempCorrect = new Array();
- LongestCorrect = new Array();
- var TempHint = '';
- var HintToReturn = 1;
- var OtherAnswers = '';
- var AllDone = false;
-
- for (i=0; i<Answers.length; i++){
- TempCorrect.length = 0;
- for (j=0; j<Answers[i].length; j++){
- if (Answers[i][j] == GuessSequence[j]){
- TempCorrect[j] = GuessSequence[j];
- }
- else{
- TempHint = Answers[i][j];
- break;
- }
- }
- if ((TempCorrect.length == GuessSequence.length)&&(TempCorrect.length == Answers[i].length)){
- WhichCorrect = i;
- break;
- }
- else{
- if (TempCorrect.length > LongestCorrect.length){
- LongestCorrect.length = 0;
- for (k=0; k<TempCorrect.length; k++){
- LongestCorrect[k] = TempCorrect[k];
- }
- HintToReturn = TempHint;
- }
- }
- }
- if (WhichCorrect > -1){
- AllDone = true;
- for (i=0; i<Answers.length; i++){
- if (i!=WhichCorrect){
- OtherAnswers += '<br />' + CompileString(Answers[i]);
- }
- }
- WellDone = '<span class="CorrectAnswer">' + CompiledOutput + '</span><br /><br />' + CorrectResponse + '<br />';
-
-//Do score calculation here
- Score = Math.floor(((Segments.length-Penalties) * 100)/Segments.length);
- WellDone += YourScoreIs + ' ' + Score + '%.<br />';
-
-[inclAlsoCorrect]
- if (OtherAnswers.length > 0){
- WellDone += TheseAnswersToo + '<span class="CorrectAnswer">' + OtherAnswers + '</span>';
- }
-[/inclAlsoCorrect]
-
- ShowMessage(WellDone);
- WriteToInstructions(YourScoreIs + ' ' + Score + '%.');
- }
-
- else{
- TryAgain = '<span class="Guess">' + CompileString(GuessSequence) + '</span><br /><br />';
- if ((CheckType == 0)||(LongestCorrect.length==0)){
- TryAgain += IncorrectResponse + '<br />';
- }
-
- if (LongestCorrect.length > 0){
- LongestCorrectBit = CompileString(LongestCorrect);
- GuessSequence.length = LongestCorrect.length;
- TryAgain += '<br />' + ThisMuchCorrect + '<br /><span class="Guess">' + LongestCorrectBit + '</span><br />';
- }
-
- if (CheckType == 1){
- TryAgain += '<br />' + NextCorrect + '<br />' + FindSegment(HintToReturn);
- }
-
-[inclTimer]
- if (TimeOver == true){
- Score = Math.floor(((LongestCorrect.length-Penalties) * 100)/Segments.length);
- if (Score < 0){Score = 0;}
- TryAgain += YourScoreIs + ' ' + Score + '%.<br />';
- }
-[/inclTimer]
- Penalties++; //Penalty for inaccurate check
- ShowMessage(TryAgain);
- }
-
-//If the exercise is over, deal with that
- if ((AllDone == true)||(TimeOver == true)){
-[inclSendResults]
- setTimeout('SendResults(' + Score + ')', 50);
-[/inclSendResults]
-[inclTimer]
- window.clearInterval(Interval);
-[/inclTimer]
- TimeOver = true;
- Locked = true;
- Finished = true;
- setTimeout('Finish()', SubmissionTimeout);
- WriteToInstructions(YourScoreIs + ' ' + Score + '%.');
- }
-}
-
-
-var Segments = new Array();
-[SegmentArray]
-
-var GuessSequence = new Array();
-
-var Answers = new Array();
-[AnswerArray]
-
-function doDrag(e) {
- if (CurrDrag == -1) {return};
- if (C.ie){var Ev = window.event}else{var Ev = e}
- var difX = Ev.clientX-window.lastX;
- var difY = Ev.clientY-window.lastY;
- var newX = Cds[CurrDrag].GetL()+difX;
- var newY = Cds[CurrDrag].GetT()+difY;
- Cds[CurrDrag].SetL(newX);
- Cds[CurrDrag].SetT(newY);
- window.lastX = Ev.clientX;
- window.lastY = Ev.clientY;
- return false;
-}
-
-function beginDrag(e, DragNum) {
- CurrDrag = DragNum;
- if (C.ie){
- var Ev = window.event;
- document.onmousemove=doDrag;
- document.onmouseup=endDrag;
- }
- else{
- var Ev = e;
- window.onmousemove=doDrag;
- window.onmouseup=endDrag;
- }
- Cds[CurrDrag].SwapColours();
- topZ++;
- Cds[CurrDrag].css.zIndex = topZ;
- window.lastX=Ev.clientX;
- window.lastY=Ev.clientY;
- return true;
-}
-
-function endDrag(e) {
- if (CurrDrag == -1) {return};
- Cds[CurrDrag].SwapColours();
- if (C.ie){document.onmousemove=null}else{window.onmousemove=null;}
- onEndDrag();
- CurrDrag = -1;
- return true;
-}
-
-function onEndDrag(){
-//Snap to lines
- var i = 0;
- var SnapLine = Cds[CurrDrag].GetT();
- var BiggestOverlap = -1;
- var OverlapRect = 0;
- for (i=0; i<L.length; i++){
- if (Cds[CurrDrag].Overlap(L[i]) > OverlapRect){
- OverlapRect = Cds[CurrDrag].Overlap(L[i]);
- BiggestOverlap = i;
- }
- }
- if (BiggestOverlap > -1){
- SnapLine = L[BiggestOverlap].GetB() - (Cds[CurrDrag].GetH() + 2);
- Cds[CurrDrag].SetT(SnapLine);
- CheckOver(-1);
- }
- if (CapitalizeFirst==true){
- setTimeout('DoCapitalization()', 50);
- }
-}
-
-function DoCapitalization(){
-//Capitalize first segment if necessary
- var FD = GetGuessSequence();
- if ((FD == -1)&&(FirstDiv > -1)){
- Cds[FirstDiv].elm.innerHTML = Segments[FirstDiv][0];
- }
- if (((FD != FirstDiv)&&(CapitalizeFirst == true))&&(FD > -1)){
- if (FirstDiv > -1){
- Cds[FirstDiv].elm.innerHTML = Segments[FirstDiv][0];
- }
- }
- if ((FD > -1)&&(CapitalizeFirst == true)){
- var Temp = CapFirst(Segments[FD][0]);
- Cds[FD].elm.innerHTML = Temp;
- FirstDiv = FD;
- }
-}
-
-function CheckOver(NoMove){
-//This recursive function spreads out the Cards on a line if two of them are overlapping;
-//if the spread operation moves one beyond the end of a line, it wraps it to the next line.
- for (var i=0; i<Cds.length; i++){
- for (var j=0; j<Cds.length; j++){
- if (i!=j){
- if (Cds[i].Overlap(Cds[j]) > 0){
- if ((i==NoMove)||(Cds[i].GetL() < Cds[j].GetL())){
- Cds[j].DockToR(Cds[i]);
- if (Cds[j].GetR() > (LeftColPos + DivWidth)){
- Cds[j].SetL(LeftColPos);
- Cds[j].SetT(Cds[j].GetT() + DropHeight);
- }
- CheckOver(j);
- }
- else{
- Cds[i].DockToR(Cds[j]);
- if (Cds[i].GetR() > (LeftColPos + DivWidth)){
- Cds[i].SetL(LeftColPos);
- Cds[i].SetT(Cds[i].GetT() + DropHeight);
- }
- CheckOver(i);
- }
- }
- }
- }
- }
-}
-
-function StartUp(){
-
-[inclSendResults]
- GetUserName();
-[/inclSendResults]
-
-[inclPreloadImages]
- PreloadImages([PreloadImageList]);
-[/inclPreloadImages]
-
- Segments = Shuffle(Segments);
-
-//Calculate page dimensions and positions
- pg = new PageDim();
- DivWidth = Math.floor((pg.W*4)/5);
- LeftColPos = Math.floor(pg.W/10);
- DragTop = parseInt(document.getElementById('CheckButtonDiv').offsetHeight) + parseInt(document.getElementById('CheckButtonDiv').offsetTop) + 10;
-
- var CurrTop = DragTop + 10;
-
-//Position the drop divs
- for (var i=0; i<DropTotal; i++){
- L[i] = new Card('Drop' + i, 0);
- L[i].SetT(CurrTop)
- L[i].tag = CurrTop-5;
- L[i].SetL(LeftColPos);
- L[i].css.backgroundColor = '[strPageBGColor]';
- CurrTop += L[i].GetH();
- topZ++;
- L[i].css.zIndex = topZ;
- }
- DropHeight = L[0].GetH();
-
- CurrTop = DragTop;
- var TempInt = 0;
- var DropHome = 0;
-
- for (i=0; i<Segments.length; i++){
-//Create a new pointer in the C array to ref the card div
- Cds[i] = new Card('D'+i, 0);
- Cds[i].elm.innerHTML = Segments[i][0];
- Cds[i].SetT(CurrTop);
- Cds[i].SetL(LeftColPos);
- Cds[i].css.cursor = 'move';
- TempInt = Cds[i].GetH();
- CurrTop = CurrTop + TempInt + 5;
- Cds[i].css.backgroundColor = '[strExBGColor]';
- Cds[i].css.color = '[strTextColor]';
- topZ++;
- Cds[i].css.zIndex = topZ;
- Cds[i].tag = Segments[i][1];
- Cds[i].index = i;
- }
-//Place them at the bottom of the page
- SetInitialPositions();
-
-[inclTimer]
- StartTimer();
-[/inclTimer]
-}
-
-function SetInitialPositions(){
-//Places all the divs at the bottom of the page in centred rows
-//First, get the vertical position of the first row
- var RTop = L[L.length-1].GetB() + 10;
-
-//Create an array to hold the numbers of Cards for each row
- CRows = new Array();
- CRows[0] = new Array();
- Widths = new Array();
- var i=0;
- var r=0;
- var RowWidth=0;
-//Sort the Cards into rows, storing their numbers in the array
-
- while (i<Cds.length){
-//if it fits on this row, add it
- if ((RowWidth + Cds[i].GetW() + 5) < DivWidth){
- CRows[r][CRows[r].length] = i;
- RowWidth += Cds[i].GetW() + 5;
-//Store the width in the Widths array for later
- Widths[r] = RowWidth;
- }
-//if not, increment the row number, and add it to the next row
- else{
- r++;
- CRows[r] = new Array();
- CRows[r][CRows[r].length] = i;
- RowWidth = Cds[i].GetW() + 5;
-//Store the width in the Widths array for later
- Widths[r] = RowWidth;
- }
-//move to the next Card
- i++;
- }
-//Now we have the numbers in rows, set out each row
- r=0;
- var Indent=0;
- for (r=0; r<CRows.length; r++){
-//Get the required indent for this row
- Indent = Math.floor((DivWidth-Widths[r])/2);
-//Set the first card in position
- Cds[CRows[r][0]].SetL(Indent + LeftColPos);
- Cds[CRows[r][0]].SetT(RTop);
- Cds[CRows[r][0]].SetHome();
- for (i=1; i<CRows[r].length; i++){
- Cds[CRows[r][i]].DockToR(Cds[CRows[r][i-1]]);
- Cds[CRows[r][i]].SetHome();
- }
-//Increment the row height
- RTop += Cds[0].GetH() + 5;
- }
-}
-
-function TimerStartUp(){
- setTimeout('StartUp()', 300);
-}
-
-[inclTimer]
-function TimesUp() {
- document.getElementById('Timer').innerHTML = '[strTimesUp]';
-[inclPreloadImages]
- RefreshImages();
-[/inclPreloadImages]
- TimeOver = true;
- CheckAnswer(0);
- Locked = true;
-}
-[/inclTimer]
+//JMIX DRAG-DROP OUTPUT FORMAT CODE
+
+var Punctuation = '[strPunctuation]';
+
+var Openers = '[strOpenPunctuation]';
+var CorrectResponse = '[strGuessCorrect]';
+var IncorrectResponse = '[strGuessIncorrect]';
+var ThisMuchCorrect = '[strThisMuch]';
+var TheseAnswersToo = '[strTheseAnswersToo]';
+var YourScoreIs = '[strYourScoreIs]';
+var NextCorrect = '[strNextCorrect]';
+var FeedbackWidth = 200; //default
+var ExBGColor = '[strExBGColor]';
+var PageBGColor = '[strPageBGColor]';
+var TextColor = '[strTextColor]';
+var TitleColor = '[strTitleColor]';
+var DropTotal = 3; // number of lines that will be available for dropping on
+var Gap = 4; //Gap between two segments when they're next to each other on a line
+var DropHeight = 30;
+var CapitalizeFirst = [boolCapitalizeFirst];
+var CompiledOutput = '';
+var TempSegment = '';
+var FirstSegment = -1;
+var FirstDiv = -1;
+var Penalties = 0;
+var Score = 0;
+var TimeOver = false;
+
+var CurrDrag = -1;
+var topZ = 100;
+var Cds = new Array();
+var L = new Array();
+var Finished = false;
+
+var Locked = false;
+var DivWidth = 600;
+var LeftColPos = 100;
+var DragTop = 120;
+var DragNumber = -1;
+
+Lines = new Array();
+
+function CapFirst(InString){
+ var i = 0;
+ if ((Openers.indexOf(InString.charAt(i))>-1)||(InString.charAt(i) == ' ')){
+ i++;
+ }
+ if ((Openers.indexOf(InString.charAt(i))>-1)||(InString.charAt(i) == ' ')){
+ i++;
+ }
+ var Temp = InString.charAt(i);
+ Temp = Temp.toUpperCase();
+ InString = InString.substring(0, i) + Temp + InString.substring(i+1, InString.length);
+ return InString;
+}
+
+function CheckResults(ChkType){
+//Get sequence student has chosen
+ GetGuessSequence();
+
+//Compile the answer
+ CompiledOutput = CompileString(GuessSequence);
+
+//Check the answer
+ CheckAnswer(ChkType);
+}
+
+function GetGuessSequence(){
+//Put pointers to draggables in arrays based on the lines they're sitting on
+ var Drops = new Array();
+ for (var i=0; i<L.length; i++){
+ Drops[i] = new Array();
+ }
+
+ var CardPos = 0;
+
+ for (i=0; i<Cds.length; i++){
+ for (var j=0; j<L.length; j++){
+//Slight modification for 6.0.4: allow some leeway for 1px inaccuracy in card placing by browser.
+ CardPos = L[j].GetB() - (Cds[i].GetH()+2);
+ if (((Cds[i].GetT() - CardPos) < 4)&&((Cds[i].GetT() - CardPos) > -4)){
+ Drops[j][Drops[j].length] = Cds[i];
+ }
+ }
+ }
+
+//Sort the drop arrays based on the Left of each div
+ for (i=0; i<Drops.length; i++){
+ Drops[i].sort(CompDrags);
+ }
+
+//Put the tags into the GuessSequence array
+ GuessSequence.length = 0;
+ for (i=0; i<Drops.length; i++){
+ for (j=0; j<Drops[i].length; j++){
+ GuessSequence[GuessSequence.length] = Drops[i][j].tag;
+ }
+ }
+
+//Set the variable recording which div is first
+ var NewFirstDiv = -1;
+ for (i=0; i<Drops.length; i++){
+ if (Drops[i].length > 0){
+ NewFirstDiv = Drops[i][0].index;
+ break;
+ }
+ }
+ return NewFirstDiv;
+}
+
+function CompDrags(a,b){
+ return a.GetL() - b.GetL();
+}
+
+function FindSegment(SegID){
+ var Seg = '';
+ for (var i=0; i<Segments.length; i++){
+ if (Segments[i][1] == SegID){
+ Seg = Segments[i][0];
+ break;
+ }
+ }
+ return Seg;
+}
+
+function CompileString(InArray){
+ var OutString = '';
+ var i = 0;
+ OutArray = new Array();
+
+ for (i=0; i<InArray.length; i++){
+ OutArray[OutArray.length] = FindSegment(InArray[i]);
+ }
+
+ if (OutArray.length > 0){
+ OutString = OutArray[0];
+ }
+ else{
+ OutString = '';
+ }
+ var Spacer = '';
+
+ for (i=1; i<OutArray.length; i++){
+ Spacer = ' ';
+ if ((Openers.indexOf(OutString.charAt(OutString.length-1)) > -1)||(Punctuation.indexOf(OutArray[i].charAt(0)) > -1)){
+ Spacer = '';
+ }
+ OutString = OutString + Spacer + OutArray[i];
+ }
+
+//Capitalize the first letter if necessary
+ if (CapitalizeFirst == true){
+ OutString = CapFirst(OutString);
+ }
+ return OutString;
+}
+
+function CheckAnswer(CheckType){
+ if (Locked == true){return;}
+ if (GuessSequence.length < 1){
+ if (CheckType == 1){
+ Penalties++;
+ ShowMessage(NextCorrect + '<br /><br />' + FindSegment(Answers[0][0]));
+ }
+ return;
+ }
+ var i = 0;
+ var j = 0;
+ var k = 0;
+ var WellDone = '';
+ var WhichCorrect = -1;
+ var TryAgain = '';
+ var LongestCorrectBit = '';
+ TempCorrect = new Array();
+ LongestCorrect = new Array();
+ var TempHint = '';
+ var HintToReturn = 1;
+ var OtherAnswers = '';
+ var AllDone = false;
+
+ for (i=0; i<Answers.length; i++){
+ TempCorrect.length = 0;
+ for (j=0; j<Answers[i].length; j++){
+ if (Answers[i][j] == GuessSequence[j]){
+ TempCorrect[j] = GuessSequence[j];
+ }
+ else{
+ TempHint = Answers[i][j];
+ break;
+ }
+ }
+ if ((TempCorrect.length == GuessSequence.length)&&(TempCorrect.length == Answers[i].length)){
+ WhichCorrect = i;
+ break;
+ }
+ else{
+ if (TempCorrect.length > LongestCorrect.length){
+ LongestCorrect.length = 0;
+ for (k=0; k<TempCorrect.length; k++){
+ LongestCorrect[k] = TempCorrect[k];
+ }
+ HintToReturn = TempHint;
+ }
+ }
+ }
+ if (WhichCorrect > -1){
+ AllDone = true;
+ for (i=0; i<Answers.length; i++){
+ if (i!=WhichCorrect){
+ OtherAnswers += '<br />' + CompileString(Answers[i]);
+ }
+ }
+ WellDone = '<span class="CorrectAnswer">' + CompiledOutput + '</span><br /><br />' + CorrectResponse + '<br />';
+
+//Do score calculation here
+ Score = Math.floor(((Segments.length-Penalties) * 100)/Segments.length);
+ WellDone += YourScoreIs + ' ' + Score + '%.<br />';
+
+[inclAlsoCorrect]
+ if (OtherAnswers.length > 0){
+ WellDone += TheseAnswersToo + '<span class="CorrectAnswer">' + OtherAnswers + '</span>';
+ }
+[/inclAlsoCorrect]
+
+ ShowMessage(WellDone);
+ WriteToInstructions(YourScoreIs + ' ' + Score + '%.');
+ }
+
+ else{
+ TryAgain = '<span class="Guess">' + CompileString(GuessSequence) + '</span><br /><br />';
+ if ((CheckType == 0)||(LongestCorrect.length==0)){
+ TryAgain += IncorrectResponse + '<br />';
+ }
+
+ if (LongestCorrect.length > 0){
+ LongestCorrectBit = CompileString(LongestCorrect);
+ GuessSequence.length = LongestCorrect.length;
+ TryAgain += '<br />' + ThisMuchCorrect + '<br /><span class="Guess">' + LongestCorrectBit + '</span><br />';
+ }
+
+ if (CheckType == 1){
+ TryAgain += '<br />' + NextCorrect + '<br />' + FindSegment(HintToReturn);
+ }
+
+[inclTimer]
+ if (TimeOver == true){
+ Score = Math.floor(((LongestCorrect.length-Penalties) * 100)/Segments.length);
+ if (Score < 0){Score = 0;}
+ TryAgain += YourScoreIs + ' ' + Score + '%.<br />';
+ }
+[/inclTimer]
+ Penalties++; //Penalty for inaccurate check
+ ShowMessage(TryAgain);
+ }
+
+//If the exercise is over, deal with that
+ if ((AllDone == true)||(TimeOver == true)){
+[inclSendResults]
+ setTimeout('SendResults(' + Score + ')', 50);
+[/inclSendResults]
+[inclTimer]
+ window.clearInterval(Interval);
+[/inclTimer]
+ TimeOver = true;
+ Locked = true;
+ Finished = true;
+ setTimeout('Finish()', SubmissionTimeout);
+ WriteToInstructions(YourScoreIs + ' ' + Score + '%.');
+ }
+}
+
+
+var Segments = new Array();
+[SegmentArray]
+
+var GuessSequence = new Array();
+
+var Answers = new Array();
+[AnswerArray]
+
+function doDrag(e) {
+ if (CurrDrag == -1) {return};
+ if (C.ie){var Ev = window.event}else{var Ev = e}
+ var difX = Ev.clientX-window.lastX;
+ var difY = Ev.clientY-window.lastY;
+ var newX = Cds[CurrDrag].GetL()+difX;
+ var newY = Cds[CurrDrag].GetT()+difY;
+ Cds[CurrDrag].SetL(newX);
+ Cds[CurrDrag].SetT(newY);
+ window.lastX = Ev.clientX;
+ window.lastY = Ev.clientY;
+ return false;
+}
+
+function beginDrag(e, DragNum) {
+ CurrDrag = DragNum;
+ if (C.ie){
+ var Ev = window.event;
+ document.onmousemove=doDrag;
+ document.onmouseup=endDrag;
+ }
+ else{
+ var Ev = e;
+ window.onmousemove=doDrag;
+ window.onmouseup=endDrag;
+ }
+ Cds[CurrDrag].SwapColours();
+ topZ++;
+ Cds[CurrDrag].css.zIndex = topZ;
+ window.lastX=Ev.clientX;
+ window.lastY=Ev.clientY;
+ return true;
+}
+
+function endDrag(e) {
+ if (CurrDrag == -1) {return};
+ Cds[CurrDrag].SwapColours();
+ if (C.ie){document.onmousemove=null}else{window.onmousemove=null;}
+ onEndDrag();
+ CurrDrag = -1;
+ return true;
+}
+
+function onEndDrag(){
+//Snap to lines
+ var i = 0;
+ var SnapLine = Cds[CurrDrag].GetT();
+ var BiggestOverlap = -1;
+ var OverlapRect = 0;
+ for (i=0; i<L.length; i++){
+ if (Cds[CurrDrag].Overlap(L[i]) > OverlapRect){
+ OverlapRect = Cds[CurrDrag].Overlap(L[i]);
+ BiggestOverlap = i;
+ }
+ }
+ if (BiggestOverlap > -1){
+ SnapLine = L[BiggestOverlap].GetB() - (Cds[CurrDrag].GetH() + 2);
+ Cds[CurrDrag].SetT(SnapLine);
+ CheckOver(-1);
+ }
+ if (CapitalizeFirst==true){
+ setTimeout('DoCapitalization()', 50);
+ }
+}
+
+function DoCapitalization(){
+//Capitalize first segment if necessary
+ var FD = GetGuessSequence();
+ if ((FD == -1)&&(FirstDiv > -1)){
+ Cds[FirstDiv].elm.innerHTML = Segments[FirstDiv][0];
+ }
+ if (((FD != FirstDiv)&&(CapitalizeFirst == true))&&(FD > -1)){
+ if (FirstDiv > -1){
+ Cds[FirstDiv].elm.innerHTML = Segments[FirstDiv][0];
+ }
+ }
+ if ((FD > -1)&&(CapitalizeFirst == true)){
+ var Temp = CapFirst(Segments[FD][0]);
+ Cds[FD].elm.innerHTML = Temp;
+ FirstDiv = FD;
+ }
+}
+
+function CheckOver(NoMove){
+//This recursive function spreads out the Cards on a line if two of them are overlapping;
+//if the spread operation moves one beyond the end of a line, it wraps it to the next line.
+ for (var i=0; i<Cds.length; i++){
+ for (var j=0; j<Cds.length; j++){
+ if (i!=j){
+ if (Cds[i].Overlap(Cds[j]) > 0){
+ if ((i==NoMove)||(Cds[i].GetL() < Cds[j].GetL())){
+ Cds[j].DockToR(Cds[i]);
+ if (Cds[j].GetR() > (LeftColPos + DivWidth)){
+ Cds[j].SetL(LeftColPos);
+ Cds[j].SetT(Cds[j].GetT() + DropHeight);
+ }
+ CheckOver(j);
+ }
+ else{
+ Cds[i].DockToR(Cds[j]);
+ if (Cds[i].GetR() > (LeftColPos + DivWidth)){
+ Cds[i].SetL(LeftColPos);
+ Cds[i].SetT(Cds[i].GetT() + DropHeight);
+ }
+ CheckOver(i);
+ }
+ }
+ }
+ }
+ }
+}
+
+function StartUp(){
+
+[inclSendResults]
+ GetUserName();
+[/inclSendResults]
+
+[inclPreloadImages]
+ PreloadImages([PreloadImageList]);
+[/inclPreloadImages]
+
+ Segments = Shuffle(Segments);
+
+//Calculate page dimensions and positions
+ pg = new PageDim();
+ DivWidth = Math.floor((pg.W*4)/5);
+ LeftColPos = Math.floor(pg.W/10);
+ DragTop = parseInt(document.getElementById('CheckButtonDiv').offsetHeight) + parseInt(document.getElementById('CheckButtonDiv').offsetTop) + 10;
+
+ var CurrTop = DragTop + 10;
+
+//Position the drop divs
+ for (var i=0; i<DropTotal; i++){
+ L[i] = new Card('Drop' + i, 0);
+ L[i].SetT(CurrTop)
+ L[i].tag = CurrTop-5;
+ L[i].SetL(LeftColPos);
+ L[i].css.backgroundColor = '[strPageBGColor]';
+ CurrTop += L[i].GetH();
+ topZ++;
+ L[i].css.zIndex = topZ;
+ }
+ DropHeight = L[0].GetH();
+
+ CurrTop = DragTop;
+ var TempInt = 0;
+ var DropHome = 0;
+
+ for (i=0; i<Segments.length; i++){
+//Create a new pointer in the C array to ref the card div
+ Cds[i] = new Card('D'+i, 0);
+ Cds[i].elm.innerHTML = Segments[i][0];
+ Cds[i].SetT(CurrTop);
+ Cds[i].SetL(LeftColPos);
+ Cds[i].css.cursor = 'move';
+ TempInt = Cds[i].GetH();
+ CurrTop = CurrTop + TempInt + 5;
+ Cds[i].css.backgroundColor = '[strExBGColor]';
+ Cds[i].css.color = '[strTextColor]';
+ topZ++;
+ Cds[i].css.zIndex = topZ;
+ Cds[i].tag = Segments[i][1];
+ Cds[i].index = i;
+ }
+//Place them at the bottom of the page
+ SetInitialPositions();
+
+[inclTimer]
+ StartTimer();
+[/inclTimer]
+}
+
+function SetInitialPositions(){
+//Places all the divs at the bottom of the page in centred rows
+//First, get the vertical position of the first row
+ var RTop = L[L.length-1].GetB() + 10;
+
+//Create an array to hold the numbers of Cards for each row
+ CRows = new Array();
+ CRows[0] = new Array();
+ Widths = new Array();
+ var i=0;
+ var r=0;
+ var RowWidth=0;
+//Sort the Cards into rows, storing their numbers in the array
+
+ while (i<Cds.length){
+//if it fits on this row, add it
+ if ((RowWidth + Cds[i].GetW() + 5) < DivWidth){
+ CRows[r][CRows[r].length] = i;
+ RowWidth += Cds[i].GetW() + 5;
+//Store the width in the Widths array for later
+ Widths[r] = RowWidth;
+ }
+//if not, increment the row number, and add it to the next row
+ else{
+ r++;
+ CRows[r] = new Array();
+ CRows[r][CRows[r].length] = i;
+ RowWidth = Cds[i].GetW() + 5;
+//Store the width in the Widths array for later
+ Widths[r] = RowWidth;
+ }
+//move to the next Card
+ i++;
+ }
+//Now we have the numbers in rows, set out each row
+ r=0;
+ var Indent=0;
+ for (r=0; r<CRows.length; r++){
+//Get the required indent for this row
+ Indent = Math.floor((DivWidth-Widths[r])/2);
+//Set the first card in position
+ Cds[CRows[r][0]].SetL(Indent + LeftColPos);
+ Cds[CRows[r][0]].SetT(RTop);
+ Cds[CRows[r][0]].SetHome();
+ for (i=1; i<CRows[r].length; i++){
+ Cds[CRows[r][i]].DockToR(Cds[CRows[r][i-1]]);
+ Cds[CRows[r][i]].SetHome();
+ }
+//Increment the row height
+ RTop += Cds[0].GetH() + 5;
+ }
+}
+
+function TimerStartUp(){
+ setTimeout('StartUp()', 300);
+}
+
+[inclTimer]
+function TimesUp() {
+ document.getElementById('Timer').innerHTML = '[strTimesUp]';
+[inclPreloadImages]
+ RefreshImages();
+[/inclPreloadImages]
+ TimeOver = true;
+ CheckAnswer(0);
+ Locked = true;
+}
+[/inclTimer]
View
204 mod/hotpot/template/v6/fjmatch6.ht_
@@ -1,102 +1,102 @@
-<?xml version="1.0"?>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml"
- xml:lang="en"><head>
-
-[strDublinCoreMetadata]
-
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
-
-<title>
-[strPlainTitle]
-</title>
-
-<!-- Made with executable version [strFullVersionInfo] -->
-
-<!-- The following insertion allows you to add your own code directly to this head tag from the configuration screen -->
-
-[strHeaderCode]
-
-<style type="text/css">
-
-[strStyleSheet]
-
-</style>
-
-<script type="text/javascript">
-
-//<![CDATA[
-
-<!--
-
-
-[strJSBrowserCheck]
-
-[strJSButtons]
-
-[strJSUtilities]
-
-[strJSFJMatch6]
-
-//-->
-
-//]]>
-
-</script>
-
-
-</head>
-<!--<body>Fool those dumb ad-inserting ISPs</body>-->
-
-<body onload="StartUp()" id="TheBody">
-
-<!-- BeginTopNavButtons -->
-
-[inclNavButtons]
-[strTopNavBar]
-[/inclNavButtons]
-
-<!-- EndTopNavButtons -->
-
-<div class="Titles">
- <h2 class="ExerciseTitle">[strExerciseTitle]</h2>
-[inclExerciseSubtitle]
- <h3 class="ExerciseSubtitle">[strExerciseSubtitle]</h3>
-[/inclExerciseSubtitle]
-</div>
-
-<div id="InstructionsDiv" class="StdDiv">
- <p id="Instructions">[strInstructions]</p>
-</div>
-
-<div id="MainDiv" class="StdDiv">
-
-<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="ShowItem()">[strNextCaption]</button>
-
-<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="DeleteItem()">[strDeleteCaption]</button>
-
-</div>
-
-<table class="FlashcardTable" border="0" cellspacing="0">
-<tbody id="Questions">
-
-[strTRows]
-
-</tbody>
-</table>
-
-<!-- BeginBottomNavButtons -->
-
-[inclNavButtons]
-[strBottomNavBar]
-[/inclNavButtons]
-
-<!-- EndBottomNavButtons -->
-
-<!-- BeginSubmissionForm -->
-
-<!-- EndSubmissionForm -->
-
-</body>
-
-</html>
+<?xml version="1.0"?>
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd">
+ <html xmlns="http://www.w3.org/1999/xhtml"
+ xml:lang="en"><head>
+
+[strDublinCoreMetadata]
+
+<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+
+<title>
+[strPlainTitle]
+</title>
+
+<!-- Made with executable version [strFullVersionInfo] -->
+
+<!-- The following insertion allows you to add your own code directly to this head tag from the configuration screen -->
+
+[strHeaderCode]
+
+<style type="text/css">
+
+[strStyleSheet]
+
+</style>
+
+<script type="text/javascript">
+
+//<![CDATA[
+
+<!--
+
+
+[strJSBrowserCheck]
+
+[strJSButtons]
+
+[strJSUtilities]
+
+[strJSFJMatch6]
+
+//-->
+
+//]]>
+
+</script>
+
+
+</head>
+<!--<body>Fool those dumb ad-inserting ISPs</body>-->
+
+<body onload="StartUp()" id="TheBody">
+
+<!-- BeginTopNavButtons -->
+
+[inclNavButtons]
+[strTopNavBar]
+[/inclNavButtons]
+
+<!-- EndTopNavButtons -->
+
+<div class="Titles">
+ <h2 class="ExerciseTitle">[strExerciseTitle]</h2>
+[inclExerciseSubtitle]
+ <h3 class="ExerciseSubtitle">[strExerciseSubtitle]</h3>
+[/inclExerciseSubtitle]
+</div>
+
+<div id="InstructionsDiv" class="StdDiv">
+ <p id="Instructions">[strInstructions]</p>
+</div>
+
+<div id="MainDiv" class="StdDiv">
+
+<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="ShowItem()">[strNextCaption]</button>
+
+<button class="FuncButton" onmouseover="FuncBtnOver(this)" onfocus="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onblur="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="DeleteItem()">[strDeleteCaption]</button>
+
+</div>
+
+<table class="FlashcardTable" border="0" cellspacing="0">
+<tbody id="Questions">
+
+[strTRows]
+
+</tbody>
+</table>
+
+<!-- BeginBottomNavButtons -->
+
+[inclNavButtons]
+[strBottomNavBar]
+[/inclNavButtons]
+
+<!-- EndBottomNavButtons -->
+
+<!-- BeginSubmissionForm -->
+
+<!-- EndSubmissionForm -->
+
+</body>
+
+</html>
View
214 mod/hotpot/template/v6/fjmatch6.js_
@@ -1,107 +1,107 @@
-
-var CurrItem = null;
-var Stage = 2;
-var QList = new Array();
-var ShuffleQs = [boolShuffleQs];
-
-function SetUpItems(){
-
- var i;
- var Row = null;
-
-//Remove all the table rows and put them in an array for processing
- var Qs = document.getElementById('Questions');
-
-//Remove the table rows to an array
- while (Qs.getElementsByTagName('tr').length > 0){
- Row = Qs.getElementsByTagName('tr')[0];
- Row.getElementsByTagName('td')[0].className = 'Hidden';
- Row.getElementsByTagName('td')[1].className = 'Hidden';
- QList.push(Qs.removeChild(Row));
- }
-
-//Shuffle the rows
- if (ShuffleQs == true){
- QList = Shuffle(QList);
- }
-
-//Write the rows back to the table body
- for (i=0; i<QList.length; i++){
- Qs.appendChild(QList[i]);
- }
-}
-
-function StartUp(){
-
- SetUpItems();
-
-[inclPreloadImages]
- PreloadImages([PreloadImageList]);
-[/inclPreloadImages]
-
-[inclPreloadImages]
- RefreshImages();
-[/inclPreloadImages]
-}
-
-var Started = false;
-
-function DeleteItem(){
- if ((CurrItem == null)||(document.getElementById('Questions').getElementsByTagName('tr').length < 1)){return;}
-
-//Delete the current item
- var DelItem = CurrItem;
- Stage = 2;
- ShowItem();
- document.getElementById('Questions').removeChild(DelItem);
-}
-
-function ShowItem(){
- var Qs = document.getElementById('Questions');
-
- var Len = Qs.getElementsByTagName('tr').length;
-
-//Bail if no more items
- if (Len < 1){
- return;
- }
-
-//if no current item, get the last item so we roll forward
- if (CurrItem == null){
- CurrItem = Qs.getElementsByTagName('tr')[Len-1];
- if (CurrItem == null){
- return;
- }
- }
-
-//if CurrItem has been fully shown, move to the next one
- if (Stage == 2){
- CurrItem.getElementsByTagName('td')[0].className = 'Hidden';
- CurrItem.getElementsByTagName('td')[1].className = 'Hidden';
- if (CurrItem.nextSibling != null){
- CurrItem = CurrItem.nextSibling;
- }
- else{
- CurrItem = Qs.getElementsByTagName('tr')[0];
- }
- }
-
-//Show the appropriate bits
- if (Stage == 2){
-//Show the first item and hide the second
- CurrItem.getElementsByTagName('td')[0].className = 'Showing';
- CurrItem.getElementsByTagName('td')[1].className = 'Hidden';
- Stage = 1;
- }
- else{
-//Show both items
- CurrItem.getElementsByTagName('td')[0].className = 'Showing';
- CurrItem.getElementsByTagName('td')[1].className = 'Showing';
- Stage = 2;
- }
-
-[inclPreloadImages]
- RefreshImages();
-[/inclPreloadImages]
-}
-
+
+var CurrItem = null;
+var Stage = 2;
+var QList = new Array();
+var ShuffleQs = [boolShuffleQs];
+
+function SetUpItems(){
+
+ var i;
+ var Row = null;
+
+//Remove all the table rows and put them in an array for processing
+ var Qs = document.getElementById('Questions');
+
+//Remove the table rows to an array
+ while (Qs.getElementsByTagName('tr').length > 0){
+ Row = Qs.getElementsByTagName('tr')[0];
+ Row.getElementsByTagName('td')[0].className = 'Hidden';
+ Row.getElementsByTagName('td')[1].className = 'Hidden';
+ QList.push(Qs.removeChild(Row));
+ }
+
+//Shuffle the rows
+ if (ShuffleQs == true){
+ QList = Shuffle(QList);
+ }
+
+//Write the rows back to the table body
+ for (i=0; i<QList.length; i++){
+ Qs.appendChild(QList[i]);
+ }
+}
+
+function StartUp(){
+
+ SetUpItems();
+
+[inclPreloadImages]
+ PreloadImages([PreloadImageList]);
+[/inclPreloadImages]
+
+[inclPreloadImages]
+ RefreshImages();
+[/inclPreloadImages]
+}
+
+var Started = false;
+
+function DeleteItem(){
+ if ((CurrItem == null)||(document.getElementById('Questions').getElementsByTagName('tr').length < 1)){return;}
+
+//Delete the current item
+ var DelItem = CurrItem;
+ Stage = 2;
+ ShowItem();
+ document.getElementById('Questions').removeChild(DelItem);
+}
+
+function ShowItem(){
+ var Qs = document.getElementById('Questions');
+
+ var Len = Qs.getElementsByTagName('tr').length;
+
+//Bail if no more items
+ if (Len < 1){
+ return;
+ }
+
+//if no current item, get the last item so we roll forward
+ if (CurrItem == null){
+ CurrItem = Qs.getElementsByTagName('tr')[Len-1];
+ if (CurrItem == null){
+ return;
+ }
+ }
+
+//if CurrItem has been fully shown, move to the next one
+ if (Stage == 2){
+ CurrItem.getElementsByTagName('td')[0].className = 'Hidden';
+ CurrItem.getElementsByTagName('td')[1].className = 'Hidden';
+ if (CurrItem.nextSibling != null){
+ CurrItem = CurrItem.nextSibling;
+ }
+ else{
+ CurrItem = Qs.getElementsByTagName('tr')[0];
+ }
+ }
+
+//Show the appropriate bits
+ if (Stage == 2){
+//Show the first item and hide the second
+ CurrItem.getElementsByTagName('td')[0].className = 'Showing';
+ CurrItem.getElementsByTagName('td')[1].className = 'Hidden';
+ Stage = 1;
+ }
+ else{
+//Show both items
+ CurrItem.getElementsByTagName('td')[0].className = 'Showing';
+ CurrItem.getElementsByTagName('td')[1].className = 'Showing';
+ Stage = 2;
+ }
+
+[inclPreloadImages]
+ RefreshImages();
+[/inclPreloadImages]
+}
+
View
16 mod/hotpot/template/v6/hotpot6r.ht_
@@ -1,8 +1,8 @@
-
-[inclReadingTitle]
-<h3 class="ExerciseSubtitle">[strReadingTitle]</h3>
-[/inclReadingTitle]
-<div class="ReadingText">
-[strReadingText]
-</div>
-
+
+[inclReadingTitle]
+<h3 class="ExerciseSubtitle">[strReadingTitle]</h3>
+[/inclReadingTitle]
+<div class="ReadingText">
+[strReadingText]
+</div>
+
View
1,192 mod/hotpot/template/v6/hp6.cs_
@@ -1,596 +1,596 @@
-
-/* This is the CSS stylesheet used in the exercise. */
-/* Elements in square brackets are replaced by data based on configuration settings when the exercise is built. */
-
-/* BeginCorePageCSS */
-
-/* Made with executable version [strFullVersionInfo] */
-
-body{
- font-family: [strFontFace];
-[inclPageBGColor] background-color: [strPageBGColor];[/inclPageBGColor]
- color: [strTextColor];