| 1 | <?xml version="1.0"?> |
|---|
| 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "xhtml11.dtd"> |
|---|
| 3 | <html xmlns="http://www.w3.org/1999/xhtml" |
|---|
| 4 | xml:lang="en"><head><meta name="author" content="Created with Hot Potatoes by Half-Baked Software, registered to Martin Holmes."></meta><meta name="keywords" content="Hot Potatoes, Hot Potatoes, Half-Baked Software, Windows, University of Victoria"></meta> |
|---|
| 5 | |
|---|
| 6 | <link rel="schema.DC" href="http://purl.org/dc/elements/1.1/" /> |
|---|
| 7 | <meta name="DC:Creator" content="Martin Holmes" /> |
|---|
| 8 | <meta name="DC:Creator" content="UNREGISTERED" /> |
|---|
| 9 | <meta name="DC:Title" content="A Quiz made with JQuiz" /> |
|---|
| 10 | |
|---|
| 11 | |
|---|
| 12 | <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> |
|---|
| 13 | |
|---|
| 14 | <title> |
|---|
| 15 | A Quiz made with JQuiz |
|---|
| 16 | </title> |
|---|
| 17 | |
|---|
| 18 | <!-- Made with executable version 6.0 Release 2 Build 0 --> |
|---|
| 19 | |
|---|
| 20 | <!-- The following insertion allows you to add your own code directly to this head tag from the configuration screen --> |
|---|
| 21 | |
|---|
| 22 | |
|---|
| 23 | |
|---|
| 24 | <style type="text/css"> |
|---|
| 25 | |
|---|
| 26 | |
|---|
| 27 | /* This is the CSS stylesheet used in the exercise. */ |
|---|
| 28 | /* Elements in square brackets are replaced by data based on configuration settings when the exercise is built. */ |
|---|
| 29 | |
|---|
| 30 | |
|---|
| 31 | body{ |
|---|
| 32 | font-family: Geneva,Arial; |
|---|
| 33 | background-color: #ffffff; |
|---|
| 34 | color: #000000; |
|---|
| 35 | |
|---|
| 36 | margin-right: 5%; |
|---|
| 37 | margin-left: 5%; |
|---|
| 38 | font-size: small; |
|---|
| 39 | } |
|---|
| 40 | |
|---|
| 41 | p{ |
|---|
| 42 | text-align: left; |
|---|
| 43 | margin: 0px; |
|---|
| 44 | font-size: small; |
|---|
| 45 | } |
|---|
| 46 | |
|---|
| 47 | div,span,td{ |
|---|
| 48 | font-size: small; |
|---|
| 49 | color: #000000; |
|---|
| 50 | } |
|---|
| 51 | |
|---|
| 52 | .RTLText{ |
|---|
| 53 | text-align: right; |
|---|
| 54 | font-size: 150%; |
|---|
| 55 | direction: rtl; |
|---|
| 56 | font-family: "Simplified Arabic", "Traditional Arabic", "Times New Roman", Geneva,Arial; |
|---|
| 57 | } |
|---|
| 58 | |
|---|
| 59 | .CentredRTLText{ |
|---|
| 60 | text-align: center; |
|---|
| 61 | font-size: 150%; |
|---|
| 62 | direction: rtl; |
|---|
| 63 | font-family: "Simplified Arabic", "Traditional Arabic", "Times New Roman", Geneva,Arial; |
|---|
| 64 | } |
|---|
| 65 | |
|---|
| 66 | button p.RTLText{ |
|---|
| 67 | text-align: center; |
|---|
| 68 | } |
|---|
| 69 | |
|---|
| 70 | .RTLGapBox{ |
|---|
| 71 | text-align: right; |
|---|
| 72 | font-size: 150%; |
|---|
| 73 | direction: rtl; |
|---|
| 74 | font-family: "Times New Roman", Geneva,Arial; |
|---|
| 75 | } |
|---|
| 76 | |
|---|
| 77 | .Guess{ |
|---|
| 78 | font-weight: bold; |
|---|
| 79 | } |
|---|
| 80 | |
|---|
| 81 | .CorrectAnswer{ |
|---|
| 82 | font-weight: bold; |
|---|
| 83 | } |
|---|
| 84 | |
|---|
| 85 | div.Titles{ |
|---|
| 86 | padding: 10px; |
|---|
| 87 | text-align: center; |
|---|
| 88 | color: #000033; |
|---|
| 89 | } |
|---|
| 90 | |
|---|
| 91 | button{ |
|---|
| 92 | display: inline; |
|---|
| 93 | } |
|---|
| 94 | |
|---|
| 95 | .ExerciseTitle{ |
|---|
| 96 | font-size: large; |
|---|
| 97 | color: #000033; |
|---|
| 98 | } |
|---|
| 99 | |
|---|
| 100 | .ExerciseSubtitle{ |
|---|
| 101 | color: #000033; |
|---|
| 102 | } |
|---|
| 103 | |
|---|
| 104 | div#Timer{ |
|---|
| 105 | padding: 6px; |
|---|
| 106 | margin-left: auto; |
|---|
| 107 | margin-right: auto; |
|---|
| 108 | text-align: center; |
|---|
| 109 | } |
|---|
| 110 | |
|---|
| 111 | span#TimerText{ |
|---|
| 112 | padding: 6px; |
|---|
| 113 | border-width: 1px; |
|---|
| 114 | border-style: solid; |
|---|
| 115 | font-weight: bold; |
|---|
| 116 | display: none; |
|---|
| 117 | } |
|---|
| 118 | |
|---|
| 119 | span.Instructions{ |
|---|
| 120 | |
|---|
| 121 | } |
|---|
| 122 | |
|---|
| 123 | div.ExerciseText{ |
|---|
| 124 | |
|---|
| 125 | } |
|---|
| 126 | |
|---|
| 127 | .FeedbackText{ |
|---|
| 128 | color: #000033; |
|---|
| 129 | } |
|---|
| 130 | |
|---|
| 131 | span.LeftItem{ |
|---|
| 132 | font-size: small; |
|---|
| 133 | color: #000000; |
|---|
| 134 | } |
|---|
| 135 | |
|---|
| 136 | span.RightItem{ |
|---|
| 137 | font-weight: bold; |
|---|
| 138 | font-size: small; |
|---|
| 139 | color: #000000; |
|---|
| 140 | } |
|---|
| 141 | |
|---|
| 142 | span.CorrectMark{ |
|---|
| 143 | |
|---|
| 144 | } |
|---|
| 145 | |
|---|
| 146 | div.Feedback { |
|---|
| 147 | background-color: #ffffff; |
|---|
| 148 | left: 33%; |
|---|
| 149 | width: 34%; |
|---|
| 150 | top: 33%; |
|---|
| 151 | z-index: 1; |
|---|
| 152 | border-style: solid; |
|---|
| 153 | border-width: 1px; |
|---|
| 154 | padding: 5px; |
|---|
| 155 | text-align: center; |
|---|
| 156 | color: #000033; |
|---|
| 157 | position: absolute; |
|---|
| 158 | display: none; |
|---|
| 159 | font-size: small; |
|---|
| 160 | } |
|---|
| 161 | |
|---|
| 162 | |
|---|
| 163 | |
|---|
| 164 | div.LeftContainer{ |
|---|
| 165 | border-style: none; |
|---|
| 166 | padding: 2px 0px 2px 0px; |
|---|
| 167 | float: left; |
|---|
| 168 | width: 49.8%; |
|---|
| 169 | margin-bottom: 0px; |
|---|
| 170 | } |
|---|
| 171 | |
|---|
| 172 | div.RightContainer{ |
|---|
| 173 | border-style: none; |
|---|
| 174 | padding: 2px 0px 2px 0px; |
|---|
| 175 | float: right; |
|---|
| 176 | width: 49.8%; |
|---|
| 177 | margin-bottom: 0px; |
|---|
| 178 | } |
|---|
| 179 | |
|---|
| 180 | .ReadingText{ |
|---|
| 181 | |
|---|
| 182 | } |
|---|
| 183 | |
|---|
| 184 | |
|---|
| 185 | div.ExerciseDiv{ |
|---|
| 186 | color: #000000; |
|---|
| 187 | } |
|---|
| 188 | |
|---|
| 189 | /* JMatch flashcard styles */ |
|---|
| 190 | table.FlashcardTable{ |
|---|
| 191 | background-color: transparent; |
|---|
| 192 | color: #000000; |
|---|
| 193 | border-color: #000000; |
|---|
| 194 | margin-left: 5%; |
|---|
| 195 | margin-right: 5%; |
|---|
| 196 | margin-top: 2em; |
|---|
| 197 | margin-bottom: 2em; |
|---|
| 198 | width: 90%; |
|---|
| 199 | position: relative; |
|---|
| 200 | align: center; |
|---|
| 201 | padding: 0px; |
|---|
| 202 | } |
|---|
| 203 | |
|---|
| 204 | table.FlashcardTable tr{ |
|---|
| 205 | border-style: none; |
|---|
| 206 | margin: 0px; |
|---|
| 207 | padding: 0px; |
|---|
| 208 | background-color: #bbbbee; |
|---|
| 209 | } |
|---|
| 210 | |
|---|
| 211 | table.FlashcardTable td.Showing{ |
|---|
| 212 | font-size: large; |
|---|
| 213 | text-align: center; |
|---|
| 214 | width: 50%; |
|---|
| 215 | display: table-cell; |
|---|
| 216 | padding: 2em; |
|---|
| 217 | margin: 0px; |
|---|
| 218 | border-style: solid; |
|---|
| 219 | border-width: 1px; |
|---|
| 220 | color: #000000; |
|---|
| 221 | background-color: #bbbbee; |
|---|
| 222 | } |
|---|
| 223 | |
|---|
| 224 | table.FlashcardTable td.Hidden{ |
|---|
| 225 | display: none; |
|---|
| 226 | } |
|---|
| 227 | |
|---|
| 228 | /* JMix styles */ |
|---|
| 229 | div#SegmentDiv{ |
|---|
| 230 | margin-top: 2em; |
|---|
| 231 | margin-bottom: 2em; |
|---|
| 232 | text-align: center; |
|---|
| 233 | } |
|---|
| 234 | |
|---|
| 235 | a.ExSegment{ |
|---|
| 236 | font-size: medium; |
|---|
| 237 | font-weight: bold; |
|---|
| 238 | text-decoration: none; |
|---|
| 239 | color: #000000; |
|---|
| 240 | } |
|---|
| 241 | |
|---|
| 242 | span.RemainingWordList{ |
|---|
| 243 | font-style: italic; |
|---|
| 244 | } |
|---|
| 245 | |
|---|
| 246 | div.DropLine { |
|---|
| 247 | position: absolute; |
|---|
| 248 | text-align: center; |
|---|
| 249 | border-bottom-style: solid; |
|---|
| 250 | border-bottom-width: 1px; |
|---|
| 251 | border-bottom-color: #000033; |
|---|
| 252 | width: 80%; |
|---|
| 253 | } |
|---|
| 254 | |
|---|
| 255 | /* JCloze styles */ |
|---|
| 256 | |
|---|
| 257 | input{ |
|---|
| 258 | font-family: Geneva,Arial; |
|---|
| 259 | font-size: larger; |
|---|
| 260 | } |
|---|
| 261 | |
|---|
| 262 | .ClozeWordList{ |
|---|
| 263 | text-align: center; |
|---|
| 264 | font-weight: bold; |
|---|
| 265 | } |
|---|
| 266 | |
|---|
| 267 | div.ClozeBody{ |
|---|
| 268 | text-align: left; |
|---|
| 269 | margin-top: 2em; |
|---|
| 270 | margin-bottom: 2em; |
|---|
| 271 | line-height: 2.0 |
|---|
| 272 | } |
|---|
| 273 | |
|---|
| 274 | span.GapSpan{ |
|---|
| 275 | font-weight: bold; |
|---|
| 276 | } |
|---|
| 277 | |
|---|
| 278 | /* JCross styles */ |
|---|
| 279 | |
|---|
| 280 | table.CrosswordGrid{ |
|---|
| 281 | margin: auto auto 1em auto; |
|---|
| 282 | border-collapse: collapse; |
|---|
| 283 | padding: 0px; |
|---|
| 284 | } |
|---|
| 285 | |
|---|
| 286 | table.CrosswordGrid td{ |
|---|
| 287 | width: 1.5em; |
|---|
| 288 | height: 1.5em; |
|---|
| 289 | text-align: center; |
|---|
| 290 | vertical-align: middle; |
|---|
| 291 | font-size: large; |
|---|
| 292 | padding: 0px; |
|---|
| 293 | margin: 0px; |
|---|
| 294 | border-style: solid; |
|---|
| 295 | border-width: 1px; |
|---|
| 296 | border-color: #000000; |
|---|
| 297 | } |
|---|
| 298 | |
|---|
| 299 | table.CrosswordGrid td.BlankCell{ |
|---|
| 300 | background-color: #000000; |
|---|
| 301 | color: #000000; |
|---|
| 302 | } |
|---|
| 303 | |
|---|
| 304 | table.CrosswordGrid td.LetterOnlyCell{ |
|---|
| 305 | text-align: center; |
|---|
| 306 | vertical-align: middle; |
|---|
| 307 | background-color: #ffffff; |
|---|
| 308 | color: #000000; |
|---|
| 309 | font-weight: bold; |
|---|
| 310 | } |
|---|
| 311 | |
|---|
| 312 | table.CrosswordGrid td.NumLetterCell{ |
|---|
| 313 | text-align: left; |
|---|
| 314 | vertical-align: top; |
|---|
| 315 | background-color: #ffffff; |
|---|
| 316 | color: #000000; |
|---|
| 317 | padding: 1px; |
|---|
| 318 | font-weight: bold; |
|---|
| 319 | } |
|---|
| 320 | |
|---|
| 321 | .NumLetterCellText{ |
|---|
| 322 | cursor: pointer; |
|---|
| 323 | } |
|---|
| 324 | |
|---|
| 325 | .GridNum{ |
|---|
| 326 | vertical-align: super; |
|---|
| 327 | font-size: x-small; |
|---|
| 328 | font-weight: bold; |
|---|
| 329 | text-decoration: none; |
|---|
| 330 | color: #000000; |
|---|
| 331 | } |
|---|
| 332 | |
|---|
| 333 | table#Clues{ |
|---|
| 334 | margin: auto; |
|---|
| 335 | vertical-align: top; |
|---|
| 336 | } |
|---|
| 337 | |
|---|
| 338 | table#Clues td{ |
|---|
| 339 | vertical-align: top; |
|---|
| 340 | } |
|---|
| 341 | |
|---|
| 342 | table.ClueList{ |
|---|
| 343 | margin: auto; |
|---|
| 344 | } |
|---|
| 345 | |
|---|
| 346 | td.ClueNum{ |
|---|
| 347 | text-align: right; |
|---|
| 348 | font-weight: bold; |
|---|
| 349 | vertical-align: top; |
|---|
| 350 | } |
|---|
| 351 | |
|---|
| 352 | td.Clue{ |
|---|
| 353 | text-align: left; |
|---|
| 354 | } |
|---|
| 355 | |
|---|
| 356 | div#ClueEntry{ |
|---|
| 357 | text-align: left; |
|---|
| 358 | margin-bottom: 1em; |
|---|
| 359 | } |
|---|
| 360 | |
|---|
| 361 | /* Keypad styles */ |
|---|
| 362 | |
|---|
| 363 | div.Keypad{ |
|---|
| 364 | text-align: center; |
|---|
| 365 | } |
|---|
| 366 | |
|---|
| 367 | div.Keypad button{ |
|---|
| 368 | font-family: Geneva,Arial; |
|---|
| 369 | font-size: 120%; |
|---|
| 370 | background-color: #ffffff; |
|---|
| 371 | color: #000000; |
|---|
| 372 | width: 2em; |
|---|
| 373 | } |
|---|
| 374 | |
|---|
| 375 | /* JQuiz styles */ |
|---|
| 376 | |
|---|
| 377 | div.QuestionNavigation{ |
|---|
| 378 | text-align: center; |
|---|
| 379 | } |
|---|
| 380 | |
|---|
| 381 | .QNum{ |
|---|
| 382 | margin: 0em 1em 0.5em 1em; |
|---|
| 383 | font-weight: bold; |
|---|
| 384 | vertical-align: middle; |
|---|
| 385 | } |
|---|
| 386 | |
|---|
| 387 | textarea{ |
|---|
| 388 | font-family: Geneva,Arial; |
|---|
| 389 | font-size: larger; |
|---|
| 390 | } |
|---|
| 391 | |
|---|
| 392 | .QuestionText{ |
|---|
| 393 | |
|---|
| 394 | } |
|---|
| 395 | |
|---|
| 396 | .Answer{ |
|---|
| 397 | font-size: 120%; |
|---|
| 398 | letter-spacing: 0.1em; |
|---|
| 399 | } |
|---|
| 400 | |
|---|
| 401 | .Highlight{ |
|---|
| 402 | color: #000000; |
|---|
| 403 | background-color: #ffff00; |
|---|
| 404 | font-weight: bold; |
|---|
| 405 | font-size: 120%; |
|---|
| 406 | } |
|---|
| 407 | |
|---|
| 408 | ol.QuizQuestions{ |
|---|
| 409 | text-align: left; |
|---|
| 410 | list-style-type: none; |
|---|
| 411 | } |
|---|
| 412 | |
|---|
| 413 | li.QuizQuestion{ |
|---|
| 414 | padding: 1em; |
|---|
| 415 | border-style: solid; |
|---|
| 416 | border-width: 0px 0px 1px 0px; |
|---|
| 417 | } |
|---|
| 418 | |
|---|
| 419 | ol.MCAnswers{ |
|---|
| 420 | text-align: left; |
|---|
| 421 | list-style-type: upper-alpha; |
|---|
| 422 | padding: 1em; |
|---|
| 423 | } |
|---|
| 424 | |
|---|
| 425 | ol.MCAnswers li{ |
|---|
| 426 | margin-bottom: 1em; |
|---|
| 427 | } |
|---|
| 428 | |
|---|
| 429 | ol.MSelAnswers{ |
|---|
| 430 | text-align: left; |
|---|
| 431 | list-style-type: lower-alpha; |
|---|
| 432 | padding: 1em; |
|---|
| 433 | } |
|---|
| 434 | |
|---|
| 435 | div.ShortAnswer{ |
|---|
| 436 | padding: 1em; |
|---|
| 437 | } |
|---|
| 438 | |
|---|
| 439 | div.StdDiv{ |
|---|
| 440 | background-color: #bbbbee; |
|---|
| 441 | text-align: center; |
|---|
| 442 | font-size: small; |
|---|
| 443 | color: #000000; |
|---|
| 444 | padding: 8px; |
|---|
| 445 | border-style: solid; |
|---|
| 446 | border-width: 1px 1px 1px 1px; |
|---|
| 447 | border-color: #000000; |
|---|
| 448 | margin: 1px; |
|---|
| 449 | } |
|---|
| 450 | |
|---|
| 451 | .FuncButton { |
|---|
| 452 | text-align: center; |
|---|
| 453 | border-style: solid; |
|---|
| 454 | |
|---|
| 455 | border-left-color: #ddddf6; |
|---|
| 456 | border-top-color: #ddddf6; |
|---|
| 457 | border-right-color: #5d5d77; |
|---|
| 458 | border-bottom-color: #5d5d77; |
|---|
| 459 | color: #000000; |
|---|
| 460 | background-color: #bbbbee; |
|---|
| 461 | |
|---|
| 462 | border-width: 2px; |
|---|
| 463 | padding: 3px 6px 3px 6px; |
|---|
| 464 | cursor: pointer; |
|---|
| 465 | } |
|---|
| 466 | |
|---|
| 467 | .FuncButtonUp { |
|---|
| 468 | color: #bbbbee; |
|---|
| 469 | text-align: center; |
|---|
| 470 | border-style: solid; |
|---|
| 471 | |
|---|
| 472 | border-left-color: #ddddf6; |
|---|
| 473 | border-top-color: #ddddf6; |
|---|
| 474 | border-right-color: #5d5d77; |
|---|
| 475 | border-bottom-color: #5d5d77; |
|---|
| 476 | |
|---|
| 477 | background-color: #000000; |
|---|
| 478 | color: #bbbbee; |
|---|
| 479 | border-width: 2px; |
|---|
| 480 | padding: 3px 6px 3px 6px; |
|---|
| 481 | cursor: pointer; |
|---|
| 482 | } |
|---|
| 483 | |
|---|
| 484 | .FuncButtonDown { |
|---|
| 485 | color: #bbbbee; |
|---|
| 486 | text-align: center; |
|---|
| 487 | border-style: solid; |
|---|
| 488 | |
|---|
| 489 | border-left-color: #5d5d77; |
|---|
| 490 | border-top-color: #5d5d77; |
|---|
| 491 | border-right-color: #ddddf6; |
|---|
| 492 | border-bottom-color: #ddddf6; |
|---|
| 493 | background-color: #000000; |
|---|
| 494 | color: #bbbbee; |
|---|
| 495 | |
|---|
| 496 | border-width: 2px; |
|---|
| 497 | padding: 3px 6px 3px 6px; |
|---|
| 498 | cursor: pointer; |
|---|
| 499 | } |
|---|
| 500 | |
|---|
| 501 | /*BeginNavBarStyle*/ |
|---|
| 502 | |
|---|
| 503 | div.NavButtonBar{ |
|---|
| 504 | background-color: #000066; |
|---|
| 505 | text-align: center; |
|---|
| 506 | margin: 2px 0px 2px 0px; |
|---|
| 507 | clear: both; |
|---|
| 508 | font-size: small; |
|---|
| 509 | } |
|---|
| 510 | |
|---|
| 511 | .NavButton { |
|---|
| 512 | border-style: solid; |
|---|
| 513 | |
|---|
| 514 | border-left-color: #7f7fb2; |
|---|
| 515 | border-top-color: #7f7fb2; |
|---|
| 516 | border-right-color: #000033; |
|---|
| 517 | border-bottom-color: #000033; |
|---|
| 518 | background-color: #000066; |
|---|
| 519 | color: #ffffff; |
|---|
| 520 | |
|---|
| 521 | border-width: 2px; |
|---|
| 522 | cursor: pointer; |
|---|
| 523 | } |
|---|
| 524 | |
|---|
| 525 | .NavButtonUp { |
|---|
| 526 | border-style: solid; |
|---|
| 527 | |
|---|
| 528 | border-left-color: #7f7fb2; |
|---|
| 529 | border-top-color: #7f7fb2; |
|---|
| 530 | border-right-color: #000033; |
|---|
| 531 | border-bottom-color: #000033; |
|---|
| 532 | color: #000066; |
|---|
| 533 | background-color: #ffffff; |
|---|
| 534 | |
|---|
| 535 | border-width: 2px; |
|---|
| 536 | cursor: pointer; |
|---|
| 537 | } |
|---|
| 538 | |
|---|
| 539 | .NavButtonDown { |
|---|
| 540 | border-style: solid; |
|---|
| 541 | |
|---|
| 542 | border-left-color: #000033; |
|---|
| 543 | border-top-color: #000033; |
|---|
| 544 | border-right-color: #7f7fb2; |
|---|
| 545 | border-bottom-color: #7f7fb2; |
|---|
| 546 | color: #000066; |
|---|
| 547 | background-color: #ffffff; |
|---|
| 548 | |
|---|
| 549 | border-width: 2px; |
|---|
| 550 | cursor: pointer; |
|---|
| 551 | } |
|---|
| 552 | |
|---|
| 553 | /*EndNavBarStyle*/ |
|---|
| 554 | |
|---|
| 555 | a{ |
|---|
| 556 | color: #0000ff; |
|---|
| 557 | } |
|---|
| 558 | |
|---|
| 559 | a: visited{ |
|---|
| 560 | color: #0000cc; |
|---|
| 561 | } |
|---|
| 562 | |
|---|
| 563 | a:hover{ |
|---|
| 564 | color: #0000ff; |
|---|
| 565 | } |
|---|
| 566 | |
|---|
| 567 | div.CardStyle { |
|---|
| 568 | position: absolute; |
|---|
| 569 | font-family: Geneva,Arial; |
|---|
| 570 | font-size: small; |
|---|
| 571 | padding: 5px; |
|---|
| 572 | border-style: solid; |
|---|
| 573 | border-width: 1px; |
|---|
| 574 | color: #000000; |
|---|
| 575 | background-color: #bbbbee; |
|---|
| 576 | left: -50px; |
|---|
| 577 | top: -50px; |
|---|
| 578 | overflow: visible; |
|---|
| 579 | } |
|---|
| 580 | |
|---|
| 581 | .rtl{ |
|---|
| 582 | text-align: right; |
|---|
| 583 | font-size: large; |
|---|
| 584 | } |
|---|
| 585 | |
|---|
| 586 | |
|---|
| 587 | </style> |
|---|
| 588 | |
|---|
| 589 | <script type="text/javascript"> |
|---|
| 590 | |
|---|
| 591 | |
|---|
| 592 | |
|---|
| 593 | <!-- |
|---|
| 594 | |
|---|
| 595 | |
|---|
| 596 | function Client(){ |
|---|
| 597 | |
|---|
| 598 | this.min = false; if (document.getElementById){this.min = true;}; |
|---|
| 599 | |
|---|
| 600 | this.ua = navigator.userAgent; |
|---|
| 601 | this.name = navigator.appName; |
|---|
| 602 | this.ver = navigator.appVersion; |
|---|
| 603 | |
|---|
| 604 | |
|---|
| 605 | this.mac = (this.ver.indexOf('Mac') != -1); |
|---|
| 606 | this.win = (this.ver.indexOf('Windows') != -1); |
|---|
| 607 | |
|---|
| 608 | |
|---|
| 609 | this.gecko = (this.ua.indexOf('Gecko') > 1); |
|---|
| 610 | if (this.gecko){ |
|---|
| 611 | this.geckoVer = parseInt(this.ua.substring(this.ua.indexOf('Gecko')+6, this.ua.length)); |
|---|
| 612 | if (this.geckoVer < 20020000){this.min = false;} |
|---|
| 613 | } |
|---|
| 614 | |
|---|
| 615 | |
|---|
| 616 | this.firebird = (this.ua.indexOf('Firebird') > 1); |
|---|
| 617 | |
|---|
| 618 | |
|---|
| 619 | this.safari = (this.ua.indexOf('Safari') > 1); |
|---|
| 620 | if (this.safari){ |
|---|
| 621 | this.gecko = false; |
|---|
| 622 | } |
|---|
| 623 | |
|---|
| 624 | |
|---|
| 625 | this.ie = (this.ua.indexOf('MSIE') > 0); |
|---|
| 626 | if (this.ie){ |
|---|
| 627 | this.ieVer = parseFloat(this.ua.substring(this.ua.indexOf('MSIE')+5, this.ua.length)); |
|---|
| 628 | if (this.ieVer < 5.5){this.min = false;} |
|---|
| 629 | } |
|---|
| 630 | |
|---|
| 631 | |
|---|
| 632 | this.opera = (this.ua.indexOf('Opera') > 0); |
|---|
| 633 | if (this.opera){ |
|---|
| 634 | this.operaVer = parseFloat(this.ua.substring(this.ua.indexOf('Opera')+6, this.ua.length)); |
|---|
| 635 | if (this.operaVer < 7.04){this.min = false;} |
|---|
| 636 | } |
|---|
| 637 | if (this.min == false){ |
|---|
| 638 | alert('Your browser may not be able to handle this page.'); |
|---|
| 639 | } |
|---|
| 640 | |
|---|
| 641 | |
|---|
| 642 | this.ie5mac = (this.ie&&this.mac&&(this.ieVer<6)); |
|---|
| 643 | } |
|---|
| 644 | |
|---|
| 645 | var C = new Client(); |
|---|
| 646 | |
|---|
| 647 | |
|---|
| 648 | |
|---|
| 649 | |
|---|
| 650 | |
|---|
| 651 | |
|---|
| 652 | |
|---|
| 653 | |
|---|
| 654 | |
|---|
| 655 | |
|---|
| 656 | function NavBtnOver(Btn){ |
|---|
| 657 | if (Btn.className != 'NavButtonDown'){Btn.className = 'NavButtonUp';} |
|---|
| 658 | } |
|---|
| 659 | |
|---|
| 660 | function NavBtnOut(Btn){ |
|---|
| 661 | Btn.className = 'NavButton'; |
|---|
| 662 | } |
|---|
| 663 | |
|---|
| 664 | function NavBtnDown(Btn){ |
|---|
| 665 | Btn.className = 'NavButtonDown'; |
|---|
| 666 | } |
|---|
| 667 | |
|---|
| 668 | |
|---|
| 669 | function FuncBtnOver(Btn){ |
|---|
| 670 | if (Btn.className != 'FuncButtonDown'){Btn.className = 'FuncButtonUp';} |
|---|
| 671 | } |
|---|
| 672 | |
|---|
| 673 | function FuncBtnOut(Btn){ |
|---|
| 674 | Btn.className = 'FuncButton'; |
|---|
| 675 | } |
|---|
| 676 | |
|---|
| 677 | function FuncBtnDown(Btn){ |
|---|
| 678 | Btn.className = 'FuncButtonDown'; |
|---|
| 679 | } |
|---|
| 680 | |
|---|
| 681 | function FocusAButton(){ |
|---|
| 682 | if (document.getElementById('CheckButton1') != null){ |
|---|
| 683 | document.getElementById('CheckButton1').focus(); |
|---|
| 684 | } |
|---|
| 685 | else{ |
|---|
| 686 | if (document.getElementById('CheckButton2') != null){ |
|---|
| 687 | document.getElementById('CheckButton2').focus(); |
|---|
| 688 | } |
|---|
| 689 | else{ |
|---|
| 690 | document.getElementsByTagName('button')[0].focus(); |
|---|
| 691 | } |
|---|
| 692 | } |
|---|
| 693 | } |
|---|
| 694 | |
|---|
| 695 | |
|---|
| 696 | |
|---|
| 697 | |
|---|
| 698 | |
|---|
| 699 | |
|---|
| 700 | var topZ = 1000; |
|---|
| 701 | |
|---|
| 702 | function ShowMessage(Feedback){ |
|---|
| 703 | var Output = Feedback + '<br /><br />'; |
|---|
| 704 | document.getElementById('FeedbackContent').innerHTML = Output; |
|---|
| 705 | var FDiv = document.getElementById('FeedbackDiv'); |
|---|
| 706 | topZ++; |
|---|
| 707 | FDiv.style.zIndex = topZ; |
|---|
| 708 | FDiv.style.top = TopSettingWithScrollOffset(30) + 'px'; |
|---|
| 709 | |
|---|
| 710 | if (C.gecko){ |
|---|
| 711 | document.getElementById('FeedbackOKButton').focus(); |
|---|
| 712 | } |
|---|
| 713 | FDiv.style.display = 'block'; |
|---|
| 714 | |
|---|
| 715 | ShowElements(false, 'input'); |
|---|
| 716 | ShowElements(false, 'select'); |
|---|
| 717 | ShowElements(false, 'object'); |
|---|
| 718 | if (C.ie){ |
|---|
| 719 | document.getElementById('FeedbackOKButton').focus(); |
|---|
| 720 | } |
|---|
| 721 | |
|---|
| 722 | |
|---|
| 723 | } |
|---|
| 724 | |
|---|
| 725 | function ShowElements(Show, TagName){ |
|---|
| 726 | |
|---|
| 727 | if (C.ie){ |
|---|
| 728 | var Els = document.getElementsByTagName(TagName); |
|---|
| 729 | for (var i=0; i<Els.length; i++){ |
|---|
| 730 | if (Show == true){ |
|---|
| 731 | Els[i].style.display = 'inline'; |
|---|
| 732 | } |
|---|
| 733 | else{ |
|---|
| 734 | Els[i].style.display = 'none'; |
|---|
| 735 | } |
|---|
| 736 | } |
|---|
| 737 | } |
|---|
| 738 | } |
|---|
| 739 | |
|---|
| 740 | function HideFeedback(){ |
|---|
| 741 | document.getElementById('FeedbackDiv').style.display = 'none'; |
|---|
| 742 | ShowElements(true, 'input'); |
|---|
| 743 | ShowElements(true, 'select'); |
|---|
| 744 | ShowElements(true, 'object'); |
|---|
| 745 | if (Finished == true){ |
|---|
| 746 | Finish(); |
|---|
| 747 | } |
|---|
| 748 | } |
|---|
| 749 | |
|---|
| 750 | |
|---|
| 751 | |
|---|
| 752 | |
|---|
| 753 | |
|---|
| 754 | function PageDim(){ |
|---|
| 755 | |
|---|
| 756 | this.W = 600; |
|---|
| 757 | this.H = 400; |
|---|
| 758 | this.W = document.getElementsByTagName('body')[0].clientWidth; |
|---|
| 759 | this.H = document.getElementsByTagName('body')[0].clientHeight; |
|---|
| 760 | } |
|---|
| 761 | |
|---|
| 762 | var pg = null; |
|---|
| 763 | |
|---|
| 764 | function GetPageXY(El) { |
|---|
| 765 | var XY = {x: 0, y: 0}; |
|---|
| 766 | while(El){ |
|---|
| 767 | XY.x += El.offsetLeft; |
|---|
| 768 | XY.y += El.offsetTop; |
|---|
| 769 | El = El.offsetParent; |
|---|
| 770 | } |
|---|
| 771 | return XY; |
|---|
| 772 | } |
|---|
| 773 | |
|---|
| 774 | function GetScrollTop(){ |
|---|
| 775 | if (document.documentElement && document.documentElement.scrollTop){ |
|---|
| 776 | return document.documentElement.scrollTop; |
|---|
| 777 | } |
|---|
| 778 | else{ |
|---|
| 779 | if (document.body){ |
|---|
| 780 | return document.body.scrollTop; |
|---|
| 781 | } |
|---|
| 782 | else{ |
|---|
| 783 | return window.pageYOffset; |
|---|
| 784 | } |
|---|
| 785 | } |
|---|
| 786 | } |
|---|
| 787 | |
|---|
| 788 | function GetViewportHeight(){ |
|---|
| 789 | if (window.innerWidth){ |
|---|
| 790 | return window.innerWidth; |
|---|
| 791 | } |
|---|
| 792 | else{ |
|---|
| 793 | return document.getElementsByTagName('body')[0].clientHeight; |
|---|
| 794 | } |
|---|
| 795 | } |
|---|
| 796 | |
|---|
| 797 | function TopSettingWithScrollOffset(TopPercent){ |
|---|
| 798 | var T = Math.floor(GetViewportHeight() * (TopPercent/100)); |
|---|
| 799 | return GetScrollTop() + T; |
|---|
| 800 | } |
|---|
| 801 | |
|---|
| 802 | |
|---|
| 803 | var InTextBox = false; |
|---|
| 804 | |
|---|
| 805 | function SuppressBackspace(e){ |
|---|
| 806 | if (InTextBox == true){return;} |
|---|
| 807 | if (C.ie) { |
|---|
| 808 | thisKey = window.event.keyCode; |
|---|
| 809 | } |
|---|
| 810 | else { |
|---|
| 811 | thisKey = e.keyCode; |
|---|
| 812 | } |
|---|
| 813 | |
|---|
| 814 | var Suppress = false; |
|---|
| 815 | |
|---|
| 816 | if (thisKey == 8) { |
|---|
| 817 | Suppress = true; |
|---|
| 818 | } |
|---|
| 819 | |
|---|
| 820 | if (Suppress == true){ |
|---|
| 821 | if (C.ie){ |
|---|
| 822 | window.event.returnValue = false; |
|---|
| 823 | window.event.cancelBubble = true; |
|---|
| 824 | } |
|---|
| 825 | else{ |
|---|
| 826 | e.preventDefault(); |
|---|
| 827 | } |
|---|
| 828 | } |
|---|
| 829 | } |
|---|
| 830 | |
|---|
| 831 | if (C.ie){ |
|---|
| 832 | document.attachEvent('onkeydown',SuppressBackspace); |
|---|
| 833 | window.attachEvent('onkeydown',SuppressBackspace); |
|---|
| 834 | } |
|---|
| 835 | else{ |
|---|
| 836 | window.addEventListener('keypress',SuppressBackspace,false); |
|---|
| 837 | } |
|---|
| 838 | |
|---|
| 839 | function ReduceItems(InArray, ReduceToSize){ |
|---|
| 840 | var ItemToDump=0; |
|---|
| 841 | var j=0; |
|---|
| 842 | while (InArray.length > ReduceToSize){ |
|---|
| 843 | ItemToDump = Math.floor(InArray.length*Math.random()); |
|---|
| 844 | InArray.splice(ItemToDump, 1); |
|---|
| 845 | } |
|---|
| 846 | } |
|---|
| 847 | |
|---|
| 848 | function Shuffle(InArray){ |
|---|
| 849 | Temp = new Array(); |
|---|
| 850 | var Len = InArray.length; |
|---|
| 851 | |
|---|
| 852 | var j = Len; |
|---|
| 853 | |
|---|
| 854 | for (var i=0; i<Len; i++){ |
|---|
| 855 | Temp[i] = InArray[i]; |
|---|
| 856 | } |
|---|
| 857 | |
|---|
| 858 | for (i=0; i<Len; i++){ |
|---|
| 859 | Num = Math.floor(j * Math.random()); |
|---|
| 860 | InArray[i] = Temp[Num]; |
|---|
| 861 | |
|---|
| 862 | for (var k=Num; k < j; k++) { |
|---|
| 863 | Temp[k] = Temp[k+1]; |
|---|
| 864 | } |
|---|
| 865 | j--; |
|---|
| 866 | } |
|---|
| 867 | return InArray; |
|---|
| 868 | } |
|---|
| 869 | |
|---|
| 870 | function WriteToInstructions(Feedback) { |
|---|
| 871 | |
|---|
| 872 | document.getElementById('InstructionsDiv').innerHTML = Feedback; |
|---|
| 873 | |
|---|
| 874 | } |
|---|
| 875 | |
|---|
| 876 | |
|---|
| 877 | |
|---|
| 878 | |
|---|
| 879 | function EscapeDoubleQuotes(InString){ |
|---|
| 880 | return InString.replace(/"/g, '"') |
|---|
| 881 | } |
|---|
| 882 | |
|---|
| 883 | function FocusAButton(){ |
|---|
| 884 | if (document.getElementById('CheckButton1') != null){ |
|---|
| 885 | document.getElementById('CheckButton1').focus(); |
|---|
| 886 | } |
|---|
| 887 | else{ |
|---|
| 888 | document.getElementsByTagName('button')[0].focus(); |
|---|
| 889 | } |
|---|
| 890 | } |
|---|
| 891 | |
|---|
| 892 | function TrimString(InString){ |
|---|
| 893 | var x = 0; |
|---|
| 894 | |
|---|
| 895 | if (InString.length != 0) { |
|---|
| 896 | while ((InString.charAt(InString.length - 1) == '\u0020') || (InString.charAt(InString.length - 1) == '\u000A') || (InString.charAt(InString.length - 1) == '\u000D')){ |
|---|
| 897 | InString = InString.substring(0, InString.length - 1) |
|---|
| 898 | } |
|---|
| 899 | |
|---|
| 900 | while ((InString.charAt(0) == '\u0020') || (InString.charAt(0) == '\u000A') || (InString.charAt(0) == '\u000D')){ |
|---|
| 901 | InString = InString.substring(1, InString.length) |
|---|
| 902 | } |
|---|
| 903 | |
|---|
| 904 | while (InString.indexOf(' ') != -1) { |
|---|
| 905 | x = InString.indexOf(' ') |
|---|
| 906 | InString = InString.substring(0, x) + InString.substring(x+1, InString.length) |
|---|
| 907 | } |
|---|
| 908 | |
|---|
| 909 | return InString; |
|---|
| 910 | } |
|---|
| 911 | |
|---|
| 912 | else { |
|---|
| 913 | return ''; |
|---|
| 914 | } |
|---|
| 915 | } |
|---|
| 916 | |
|---|
| 917 | function FindLongest(InArray){ |
|---|
| 918 | if (InArray.length < 1){return -1;} |
|---|
| 919 | |
|---|
| 920 | var Longest = 0; |
|---|
| 921 | for (var i=1; i<InArray.length; i++){ |
|---|
| 922 | if (InArray[i].length > InArray[Longest].length){ |
|---|
| 923 | Longest = i; |
|---|
| 924 | } |
|---|
| 925 | } |
|---|
| 926 | return Longest; |
|---|
| 927 | } |
|---|
| 928 | |
|---|
| 929 | //UNICODE CHARACTER FUNCTIONS |
|---|
| 930 | function IsCombiningDiacritic(CharNum){ |
|---|
| 931 | var Result = (((CharNum >= 0x0300)&&(CharNum <= 0x370))||((CharNum >= 0x20d0)&&(CharNum <= 0x20ff))); |
|---|
| 932 | Result = Result || (((CharNum >= 0x3099)&&(CharNum <= 0x309a))||((CharNum >= 0xfe20)&&(CharNum <= 0xfe23))); |
|---|
| 933 | return Result; |
|---|
| 934 | } |
|---|
| 935 | |
|---|
| 936 | function IsCJK(CharNum){ |
|---|
| 937 | return ((CharNum >= 0x3000)&&(CharNum < 0xd800)); |
|---|
| 938 | } |
|---|
| 939 | |
|---|
| 940 | //SETUP FUNCTIONS |
|---|
| 941 | //BROWSER WILL REFILL TEXT BOXES FROM CACHE IF NOT PREVENTED |
|---|
| 942 | function ClearTextBoxes(){ |
|---|
| 943 | var NList = document.getElementsByTagName('input'); |
|---|
| 944 | for (var i=0; i<NList.length; i++){ |
|---|
| 945 | if (NList[i].id.indexOf('Guess') > -1){ |
|---|
| 946 | NList[i].value = ''; |
|---|
| 947 | } |
|---|
| 948 | if (NList[i].id.indexOf('Chk') > -1){ |
|---|
| 949 | NList[i].checked = ''; |
|---|
| 950 | } |
|---|
| 951 | } |
|---|
| 952 | } |
|---|
| 953 | |
|---|
| 954 | //EXTENSION TO ARRAY OBJECT |
|---|
| 955 | function Array_IndexOf(Input){ |
|---|
| 956 | var Result = -1; |
|---|
| 957 | for (var i=0; i<this.length; i++){ |
|---|
| 958 | if (this[i] == Input){ |
|---|
| 959 | Result = i; |
|---|
| 960 | } |
|---|
| 961 | } |
|---|
| 962 | return Result; |
|---|
| 963 | } |
|---|
| 964 | Array.prototype.indexOf = Array_IndexOf; |
|---|
| 965 | |
|---|
| 966 | //IE HAS RENDERING BUG WITH BOTTOM NAVBAR |
|---|
| 967 | function RemoveBottomNavBarForIE(){ |
|---|
| 968 | if (C.ie){ |
|---|
| 969 | if (document.getElementById('BottomNavBar') != null){ |
|---|
| 970 | document.getElementById('TheBody').removeChild(document.getElementById('BottomNavBar')); |
|---|
| 971 | } |
|---|
| 972 | } |
|---|
| 973 | } |
|---|
| 974 | |
|---|
| 975 | |
|---|
| 976 | |
|---|
| 977 | |
|---|
| 978 | //HOTPOTNET-RELATED CODE |
|---|
| 979 | |
|---|
| 980 | var HPNStartTime = (new Date()).getTime(); |
|---|
| 981 | var SubmissionTimeout = 30000; |
|---|
| 982 | var Detail = ''; //Global that is used to submit tracking data |
|---|
| 983 | |
|---|
| 984 | function Finish(){ |
|---|
| 985 | //If there's a form, fill it out and submit it |
|---|
| 986 | if (document.store != null){ |
|---|
| 987 | Frm = document.store; |
|---|
| 988 | Frm.starttime.value = HPNStartTime; |
|---|
| 989 | Frm.endtime.value = (new Date()).getTime(); |
|---|
| 990 | Frm.mark.value = Score; |
|---|
| 991 | Frm.detail.value = Detail; |
|---|
| 992 | Frm.submit(); |
|---|
| 993 | } |
|---|
| 994 | } |
|---|
| 995 | |
|---|
| 996 | |
|---|
| 997 | |
|---|
| 998 | //JQUIZ CORE JAVASCRIPT CODE |
|---|
| 999 | |
|---|
| 1000 | var CurrQNum = 0; |
|---|
| 1001 | var CorrectIndicator = ':-)'; |
|---|
| 1002 | var IncorrectIndicator = 'X'; |
|---|
| 1003 | var YourScoreIs = 'Your score is '; |
|---|
| 1004 | var ContinuousScoring = true; |
|---|
| 1005 | var CorrectFirstTime = 'Questions answered correctly first time: '; |
|---|
| 1006 | var ShowCorrectFirstTime = false; |
|---|
| 1007 | var ShuffleQs = false; |
|---|
| 1008 | var ShuffleAs = false; |
|---|
| 1009 | var DefaultRight = 'Correct!'; |
|---|
| 1010 | var DefaultWrong = 'Sorry! Try again.'; |
|---|
| 1011 | var QsToShow = 7; |
|---|
| 1012 | var Score = 0; |
|---|
| 1013 | var Finished = false; |
|---|
| 1014 | var Qs = null; |
|---|
| 1015 | var QArray = new Array(); |
|---|
| 1016 | var ShowingAllQuestions = false; |
|---|
| 1017 | var ShowAllQuestionsCaption = 'Show all questions'; |
|---|
| 1018 | var ShowOneByOneCaption = 'Show questions one by one'; |
|---|
| 1019 | var State = new Array(); |
|---|
| 1020 | var Feedback = ''; |
|---|
| 1021 | |
|---|
| 1022 | function CompleteEmptyFeedback(){ |
|---|
| 1023 | var QNum, ANum; |
|---|
| 1024 | for (QNum=0; QNum<I.length; QNum++){ |
|---|
| 1025 | for (ANum = 0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1026 | if (I[QNum][3][ANum][1].length < 1){ |
|---|
| 1027 | if (I[QNum][3][ANum][2] > 0){ |
|---|
| 1028 | I[QNum][3][ANum][1] = DefaultRight; |
|---|
| 1029 | } |
|---|
| 1030 | else{ |
|---|
| 1031 | I[QNum][3][ANum][1] = DefaultWrong; |
|---|
| 1032 | } |
|---|
| 1033 | } |
|---|
| 1034 | } |
|---|
| 1035 | } |
|---|
| 1036 | } |
|---|
| 1037 | |
|---|
| 1038 | function SetUpQuestions(){ |
|---|
| 1039 | var AList = new Array(); |
|---|
| 1040 | var QList = new Array(); |
|---|
| 1041 | var i, j; |
|---|
| 1042 | Qs = document.getElementById('Questions'); |
|---|
| 1043 | while (Qs.getElementsByTagName('li').length > 0){ |
|---|
| 1044 | QList.push(Qs.removeChild(Qs.getElementsByTagName('li')[0])); |
|---|
| 1045 | } |
|---|
| 1046 | var DumpItem = 0; |
|---|
| 1047 | while (QsToShow < QList.length){ |
|---|
| 1048 | DumpItem = Math.floor(QList.length*Math.random()); |
|---|
| 1049 | for (j=DumpItem; j<(QList.length-1); j++){ |
|---|
| 1050 | QList[j] = QList[j+1]; |
|---|
| 1051 | } |
|---|
| 1052 | QList.length = QList.length-1; |
|---|
| 1053 | } |
|---|
| 1054 | if (ShuffleQs == true){ |
|---|
| 1055 | QList = Shuffle(QList); |
|---|
| 1056 | } |
|---|
| 1057 | if (ShuffleAs == true){ |
|---|
| 1058 | var As; |
|---|
| 1059 | for (var i=0; i<QList.length; i++){ |
|---|
| 1060 | As = QList[i].getElementsByTagName('ol')[0]; |
|---|
| 1061 | if (As != null){ |
|---|
| 1062 | AList.length = 0; |
|---|
| 1063 | while (As.getElementsByTagName('li').length > 0){ |
|---|
| 1064 | AList.push(As.removeChild(As.getElementsByTagName('li')[0])); |
|---|
| 1065 | } |
|---|
| 1066 | AList = Shuffle(AList); |
|---|
| 1067 | for (j=0; j<AList.length; j++){ |
|---|
| 1068 | As.appendChild(AList[j]); |
|---|
| 1069 | } |
|---|
| 1070 | } |
|---|
| 1071 | } |
|---|
| 1072 | } |
|---|
| 1073 | |
|---|
| 1074 | for (i=0; i<QList.length; i++){ |
|---|
| 1075 | Qs.appendChild(QList[i]); |
|---|
| 1076 | QArray[QArray.length] = QList[i]; |
|---|
| 1077 | } |
|---|
| 1078 | |
|---|
| 1079 | //Show the first item |
|---|
| 1080 | QArray[0].style.display = ''; |
|---|
| 1081 | |
|---|
| 1082 | //Now hide all except the first item |
|---|
| 1083 | for (i=1; i<QArray.length; i++){ |
|---|
| 1084 | QArray[i].style.display = 'none'; |
|---|
| 1085 | } |
|---|
| 1086 | SetQNumReadout(); |
|---|
| 1087 | } |
|---|
| 1088 | |
|---|
| 1089 | function ChangeQ(ChangeBy){ |
|---|
| 1090 | if (((CurrQNum + ChangeBy) < 0)||((CurrQNum + ChangeBy) >= QArray.length)){return;} |
|---|
| 1091 | QArray[CurrQNum].style.display = 'none'; |
|---|
| 1092 | CurrQNum += ChangeBy; |
|---|
| 1093 | QArray[CurrQNum].style.display = ''; |
|---|
| 1094 | SetQNumReadout(); |
|---|
| 1095 | //if there's a textbox, set the focus in it |
|---|
| 1096 | if (QArray[CurrQNum].getElementsByTagName('input')[0] != null){ |
|---|
| 1097 | QArray[CurrQNum].getElementsByTagName('input')[0].focus(); |
|---|
| 1098 | } |
|---|
| 1099 | } |
|---|
| 1100 | |
|---|
| 1101 | function SetQNumReadout(){ |
|---|
| 1102 | document.getElementById('QNumReadout').innerHTML = (CurrQNum+1) + ' / ' + QArray.length; |
|---|
| 1103 | } |
|---|
| 1104 | |
|---|
| 1105 | I=new Array(); |
|---|
| 1106 | I[0]=new Array();I[0][0]=100; |
|---|
| 1107 | I[0][1]=''; |
|---|
| 1108 | I[0][2]='0'; |
|---|
| 1109 | I[0][3]=new Array(); |
|---|
| 1110 | I[0][3][0]=new Array('four','It\'s more than that!',0,0,1); |
|---|
| 1111 | I[0][3][1]=new Array('five','It\'s more than five!',0,0,1); |
|---|
| 1112 | I[0][3][2]=new Array('unlimited','Correct! You can include as many answers as you like for any JQuiz question.',1,100,1); |
|---|
| 1113 | I[1]=new Array();I[1][0]=100; |
|---|
| 1114 | I[1][1]=''; |
|---|
| 1115 | I[1][2]='0'; |
|---|
| 1116 | I[1][3]=new Array(); |
|---|
| 1117 | I[1][3][0]=new Array('True','Sorry! Try again.',0,0,1); |
|---|
| 1118 | I[1][3][1]=new Array('False','Correct! Well done.',1,100,1); |
|---|
| 1119 | I[2]=new Array();I[2][0]=100; |
|---|
| 1120 | I[2][1]=''; |
|---|
| 1121 | I[2][2]='0'; |
|---|
| 1122 | I[2][3]=new Array(); |
|---|
| 1123 | I[2][3][0]=new Array('It will go down.','That would be a little annoying for the user. Why not try it and find out?',0,0,1); |
|---|
| 1124 | I[2][3][1]=new Array('It will remain the same.','Correct! This allows you to view the feedback for wrong answers after getting the correct one.',1,100,1); |
|---|
| 1125 | I[2][3][2]=new Array('It will rise.','That would be a little confusing for the user. Why not try it and find out?',0,0,1); |
|---|
| 1126 | I[2][3][3]=new Array('It will be set to zero.','That would be a little annoying for the user. Why not try it and find out?',0,0,1); |
|---|
| 1127 | I[3]=new Array();I[3][0]=100; |
|---|
| 1128 | I[3][1]=''; |
|---|
| 1129 | I[3][2]='0'; |
|---|
| 1130 | I[3][3]=new Array(); |
|---|
| 1131 | I[3][3][0]=new Array('3','You can have only three questions in the Windows version until you register. Then you can have more.',0,0,1); |
|---|
| 1132 | I[3][3][1]=new Array('100','Sorry! You can have more than 100.',0,0,1); |
|---|
| 1133 | I[3][3][2]=new Array('1000','Sorry! You can have more than 1000.',0,0,1); |
|---|
| 1134 | I[3][3][3]=new Array('unlimited','Correct! There is no limit to the number of questions in a quiz. However, if there are too many questions, the Web pages may become slow.',1,100,1); |
|---|
| 1135 | I[4]=new Array();I[4][0]=100; |
|---|
| 1136 | I[4][1]=''; |
|---|
| 1137 | I[4][2]='1'; |
|---|
| 1138 | I[4][3]=new Array(); |
|---|
| 1139 | I[4][3][0]=new Array('JQuiz','Correct! JQuiz makes exercises with multiple-choice, short-answer and multiple-select questions.',1,100,1); |
|---|
| 1140 | I[4][3][1]=new Array('Hot Potatoes','That\'s not exactly correct. Hot Potatoes is the <em>suite</em> of programs; what\'s the actual program used to make question-based quizzes?',0,50,1); |
|---|
| 1141 | I[4][3][2]=new Array('JBC','JBC was the old Potato used to make multiple-choice exercises in previous versions of Hot Potatoes. JBC is no longer part of Hot Potatoes; it has been combined with one of the other Potatoes.',0,0,1); |
|---|
| 1142 | I[5]=new Array();I[5][0]=100; |
|---|
| 1143 | I[5][1]=''; |
|---|
| 1144 | I[5][2]='2'; |
|---|
| 1145 | I[5][3]=new Array(); |
|---|
| 1146 | I[5][3][0]=new Array('JCross','Sorry! JCross makes crosswords.',0,0,1); |
|---|
| 1147 | I[5][3][1]=new Array('JJumble','Sorry! That\'s not what it\'s called.',0,0,1); |
|---|
| 1148 | I[5][3][2]=new Array('JCloze','Sorry! JCloze makes gapfill exercises.',0,0,1); |
|---|
| 1149 | I[5][3][3]=new Array('JMix','Correct! JMix can be used to make mixed-up sentence or mixed-up word exercises.',1,100,1); |
|---|
| 1150 | I[6]=new Array();I[6][0]=100; |
|---|
| 1151 | I[6][1]=''; |
|---|
| 1152 | I[6][2]='3'; |
|---|
| 1153 | I[6][3]=new Array(); |
|---|
| 1154 | I[6][3][0]=new Array('JQuiz','Hint: Don\'t forget the Potato that makes question-based quizzes.',1,100,1); |
|---|
| 1155 | I[6][3][1]=new Array('JCloth','Hint: JCloths are cleaning supplies!',0,0,1); |
|---|
| 1156 | I[6][3][2]=new Array('JCloze','Hint: Don\'t forget the Potato that makes gap-fill exercises.',1,100,1); |
|---|
| 1157 | I[6][3][3]=new Array('JMatch','Hint: Don\'t forget the Potato that makes matching exercises.',1,100,1); |
|---|
| 1158 | I[6][3][4]=new Array('JCPenney','Hint: J C Penney is a department store.',0,0,1); |
|---|
| 1159 | I[6][3][5]=new Array('JCross','Hint: Don\'t forget the Potato that makes crosswords.',1,100,1); |
|---|
| 1160 | I[6][3][6]=new Array('JMix','Hint: Don\'t forget the Potato that makes jumbled-sentence exercises.',1,100,1); |
|---|
| 1161 | I[6][3][7]=new Array('The Masher','Hint: The Masher is an important part of Hot Potatoes.',1,100,1); |
|---|
| 1162 | I[6][3][8]=new Array('JLeno','Hint: Jay Leno is a talk-show host!',0,0,1); |
|---|
| 1163 | |
|---|
| 1164 | |
|---|
| 1165 | function StartUp(){ |
|---|
| 1166 | RemoveBottomNavBarForIE(); |
|---|
| 1167 | |
|---|
| 1168 | |
|---|
| 1169 | |
|---|
| 1170 | |
|---|
| 1171 | |
|---|
| 1172 | CompleteEmptyFeedback(); |
|---|
| 1173 | |
|---|
| 1174 | SetUpQuestions(); |
|---|
| 1175 | ClearTextBoxes(); |
|---|
| 1176 | CreateStatusArray(); |
|---|
| 1177 | |
|---|
| 1178 | |
|---|
| 1179 | |
|---|
| 1180 | } |
|---|
| 1181 | |
|---|
| 1182 | function ShowHideQuestions(){ |
|---|
| 1183 | FuncBtnOut(document.getElementById('ShowMethodButton')); |
|---|
| 1184 | document.getElementById('ShowMethodButton').style.display = 'none'; |
|---|
| 1185 | if (ShowingAllQuestions == false){ |
|---|
| 1186 | for (var i=0; i<QArray.length; i++){ |
|---|
| 1187 | QArray[i].style.display = ''; |
|---|
| 1188 | } |
|---|
| 1189 | document.getElementById('Questions').style.listStyleType = 'decimal'; |
|---|
| 1190 | document.getElementById('OneByOneReadout').style.display = 'none'; |
|---|
| 1191 | document.getElementById('ShowMethodButton').innerHTML = ShowOneByOneCaption; |
|---|
| 1192 | ShowingAllQuestions = true; |
|---|
| 1193 | } |
|---|
| 1194 | else{ |
|---|
| 1195 | for (var i=0; i<QArray.length; i++){ |
|---|
| 1196 | if (i != CurrQNum){ |
|---|
| 1197 | QArray[i].style.display = 'none'; |
|---|
| 1198 | } |
|---|
| 1199 | } |
|---|
| 1200 | document.getElementById('Questions').style.listStyleType = 'none'; |
|---|
| 1201 | document.getElementById('OneByOneReadout').style.display = ''; |
|---|
| 1202 | document.getElementById('ShowMethodButton').innerHTML = ShowAllQuestionsCaption; |
|---|
| 1203 | ShowingAllQuestions = false; |
|---|
| 1204 | } |
|---|
| 1205 | document.getElementById('ShowMethodButton').style.display = 'inline'; |
|---|
| 1206 | } |
|---|
| 1207 | |
|---|
| 1208 | function CreateStatusArray(){ |
|---|
| 1209 | var QNum, ANum; |
|---|
| 1210 | //For each item in the item array |
|---|
| 1211 | for (QNum=0; QNum<I.length; QNum++){ |
|---|
| 1212 | //Check if the question still exists (hasn't been nuked by showing a random selection) |
|---|
| 1213 | if (document.getElementById('Q_' + QNum) != null){ |
|---|
| 1214 | State[QNum] = new Array(); |
|---|
| 1215 | State[QNum][0] = -1; //Score for this q; -1 shows question not done yet |
|---|
| 1216 | State[QNum][1] = new Array(); //answers |
|---|
| 1217 | for (ANum = 0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1218 | State[QNum][1][ANum] = 0; //answer not chosen yet; when chosen, will store its position in the series of choices |
|---|
| 1219 | } |
|---|
| 1220 | State[QNum][2] = 0; //tries at this q so far |
|---|
| 1221 | State[QNum][3] = 0; //incrementing percent-correct values of selected answers |
|---|
| 1222 | State[QNum][4] = 0; //penalties incurred for hints |
|---|
| 1223 | State[QNum][5] = ''; //Sequence of answers chosen by number |
|---|
| 1224 | } |
|---|
| 1225 | else{ |
|---|
| 1226 | State[QNum] = null; |
|---|
| 1227 | } |
|---|
| 1228 | } |
|---|
| 1229 | } |
|---|
| 1230 | |
|---|
| 1231 | |
|---|
| 1232 | |
|---|
| 1233 | function CheckMCAnswer(QNum, ANum, Btn){ |
|---|
| 1234 | //if question doesn't exist, bail |
|---|
| 1235 | if (State[QNum].length < 1){return;} |
|---|
| 1236 | |
|---|
| 1237 | //Get the feedback |
|---|
| 1238 | Feedback = I[QNum][3][ANum][1]; |
|---|
| 1239 | |
|---|
| 1240 | //Now show feedback and bail if question already complete |
|---|
| 1241 | if (State[QNum][0] > -1){ |
|---|
| 1242 | ShowMessage(Feedback); |
|---|
| 1243 | return; |
|---|
| 1244 | } |
|---|
| 1245 | |
|---|
| 1246 | //Hide the button while processing |
|---|
| 1247 | Btn.style.display = 'none'; |
|---|
| 1248 | |
|---|
| 1249 | //Increment the number of tries |
|---|
| 1250 | State[QNum][2]++; |
|---|
| 1251 | |
|---|
| 1252 | //Add the percent-correct value of this answer |
|---|
| 1253 | State[QNum][3] += I[QNum][3][ANum][3]; |
|---|
| 1254 | |
|---|
| 1255 | //Store the try number in the answer part of the State array, for tracking purposes |
|---|
| 1256 | State[QNum][1][ANum] = State[QNum][2]; |
|---|
| 1257 | State[QNum][5] += String.fromCharCode(65+ANum) + ','; |
|---|
| 1258 | |
|---|
| 1259 | //Should this answer be accepted as correct? |
|---|
| 1260 | if (I[QNum][3][ANum][2] < 1){ |
|---|
| 1261 | //It's wrong |
|---|
| 1262 | |
|---|
| 1263 | //Mark the answer |
|---|
| 1264 | Btn.innerHTML = IncorrectIndicator; |
|---|
| 1265 | |
|---|
| 1266 | //Check whether this leaves just one MC answer unselected, in which case the Q is terminated |
|---|
| 1267 | var RemainingAnswer = FinalAnswer(QNum); |
|---|
| 1268 | if (RemainingAnswer > -1){ |
|---|
| 1269 | //Behave as if the last answer had been selected, but give no credit for it |
|---|
| 1270 | //Increment the number of tries |
|---|
| 1271 | State[QNum][2]++; |
|---|
| 1272 | |
|---|
| 1273 | //Calculate the score for this question |
|---|
| 1274 | CalculateMCQuestionScore(QNum); |
|---|
| 1275 | |
|---|
| 1276 | //Get the overall score and add it to the feedback |
|---|
| 1277 | CalculateOverallScore(); |
|---|
| 1278 | if ((ContinuousScoring == true)||(Finished == true)){ |
|---|
| 1279 | Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.'; |
|---|
| 1280 | WriteToInstructions(YourScoreIs + ' ' + Score + '%.'); |
|---|
| 1281 | } |
|---|
| 1282 | } |
|---|
| 1283 | } |
|---|
| 1284 | else{ |
|---|
| 1285 | //It's right |
|---|
| 1286 | //Mark the answer |
|---|
| 1287 | Btn.innerHTML = CorrectIndicator; |
|---|
| 1288 | |
|---|
| 1289 | //Calculate the score for this question |
|---|
| 1290 | CalculateMCQuestionScore(QNum); |
|---|
| 1291 | |
|---|
| 1292 | //Get the overall score and add it to the feedback |
|---|
| 1293 | if (ContinuousScoring == true){ |
|---|
| 1294 | CalculateOverallScore(); |
|---|
| 1295 | if ((ContinuousScoring == true)||(Finished == true)){ |
|---|
| 1296 | Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.'; |
|---|
| 1297 | WriteToInstructions(YourScoreIs + ' ' + Score + '%.'); |
|---|
| 1298 | } |
|---|
| 1299 | } |
|---|
| 1300 | } |
|---|
| 1301 | |
|---|
| 1302 | //Show the button again |
|---|
| 1303 | Btn.style.display = 'inline'; |
|---|
| 1304 | |
|---|
| 1305 | //Finally, show the feedback |
|---|
| 1306 | ShowMessage(Feedback); |
|---|
| 1307 | |
|---|
| 1308 | //Check whether all questions are now done |
|---|
| 1309 | CheckFinished(); |
|---|
| 1310 | } |
|---|
| 1311 | |
|---|
| 1312 | function CalculateMCQuestionScore(QNum){ |
|---|
| 1313 | var Tries = State[QNum][2] + State[QNum][4]; //include tries and hint penalties |
|---|
| 1314 | var PercentCorrect = State[QNum][3]; |
|---|
| 1315 | var TotAns = GetTotalMCAnswers(QNum); |
|---|
| 1316 | var HintPenalties = State[QNum][4]; |
|---|
| 1317 | |
|---|
| 1318 | //Make sure it's not already complete |
|---|
| 1319 | |
|---|
| 1320 | if (State[QNum][0] < 0){ |
|---|
| 1321 | //Allow for Hybrids |
|---|
| 1322 | if (HintPenalties >= 1){ |
|---|
| 1323 | State[QNum][0] = 0; |
|---|
| 1324 | } |
|---|
| 1325 | else{ |
|---|
| 1326 | State[QNum][0] = ((TotAns-(Tries-1))/TotAns)*(PercentCorrect/(100*Tries)); |
|---|
| 1327 | } |
|---|
| 1328 | if (State[QNum][0] < 0){ |
|---|
| 1329 | State[QNum][0] = 0; |
|---|
| 1330 | } |
|---|
| 1331 | } |
|---|
| 1332 | } |
|---|
| 1333 | |
|---|
| 1334 | function GetTotalMCAnswers(QNum){ |
|---|
| 1335 | var Result = 0; |
|---|
| 1336 | for (var ANum=0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1337 | if (I[QNum][3][ANum][4] == 1){ //This is an MC answer |
|---|
| 1338 | Result++; |
|---|
| 1339 | } |
|---|
| 1340 | } |
|---|
| 1341 | return Result; |
|---|
| 1342 | } |
|---|
| 1343 | |
|---|
| 1344 | function FinalAnswer(QNum){ |
|---|
| 1345 | var UnchosenAnswers = 0; |
|---|
| 1346 | var FinalAnswer = -1; |
|---|
| 1347 | for (var ANum=0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1348 | if (I[QNum][3][ANum][4] == 1){ //This is an MC answer |
|---|
| 1349 | if (State[QNum][1][ANum] < 1){ //This answer hasn't been chosen yet |
|---|
| 1350 | UnchosenAnswers++; |
|---|
| 1351 | FinalAnswer = ANum; |
|---|
| 1352 | } |
|---|
| 1353 | } |
|---|
| 1354 | } |
|---|
| 1355 | if (UnchosenAnswers == 1){ |
|---|
| 1356 | return FinalAnswer; |
|---|
| 1357 | } |
|---|
| 1358 | else{ |
|---|
| 1359 | return -1; |
|---|
| 1360 | } |
|---|
| 1361 | } |
|---|
| 1362 | |
|---|
| 1363 | |
|---|
| 1364 | |
|---|
| 1365 | |
|---|
| 1366 | |
|---|
| 1367 | function CheckMultiSelAnswer(QNum){ |
|---|
| 1368 | //bail if question doesn't exist or exercise finished |
|---|
| 1369 | if ((State[QNum].length < 1)||(Finished == true)){return;} |
|---|
| 1370 | |
|---|
| 1371 | //Increment the tries for this question |
|---|
| 1372 | State[QNum][2]++; |
|---|
| 1373 | |
|---|
| 1374 | var ShouldBeChecked; |
|---|
| 1375 | var Matches = 0; |
|---|
| 1376 | State[QNum][5] += '|'; |
|---|
| 1377 | |
|---|
| 1378 | //Check if there are any mismatches |
|---|
| 1379 | Feedback = ''; |
|---|
| 1380 | var CheckBox = null; |
|---|
| 1381 | for (var ANum=0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1382 | CheckBox = document.getElementById('Q_' + QNum + '_' + ANum + '_Chk'); |
|---|
| 1383 | if (CheckBox.checked == true){ |
|---|
| 1384 | State[QNum][5] += 'Y'; |
|---|
| 1385 | } |
|---|
| 1386 | else{ |
|---|
| 1387 | State[QNum][5] += 'N'; |
|---|
| 1388 | } |
|---|
| 1389 | ShouldBeChecked = (I[QNum][3][ANum][2] == 1); |
|---|
| 1390 | if (ShouldBeChecked == CheckBox.checked){ |
|---|
| 1391 | Matches++; |
|---|
| 1392 | } |
|---|
| 1393 | else{ |
|---|
| 1394 | Feedback = I[QNum][3][ANum][1]; |
|---|
| 1395 | } |
|---|
| 1396 | } |
|---|
| 1397 | //Add the hit readout |
|---|
| 1398 | Feedback = Matches + ' / ' + I[QNum][3].length + '<br />' + Feedback; |
|---|
| 1399 | if (Matches == I[QNum][3].length){ |
|---|
| 1400 | //It's right |
|---|
| 1401 | CalculateMultiSelQuestionScore(QNum); |
|---|
| 1402 | if (ContinuousScoring == true){ |
|---|
| 1403 | CalculateOverallScore(); |
|---|
| 1404 | if ((ContinuousScoring == true)||(Finished == true)){ |
|---|
| 1405 | Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.'; |
|---|
| 1406 | WriteToInstructions(YourScoreIs + ' ' + Score + '%.'); |
|---|
| 1407 | } |
|---|
| 1408 | } |
|---|
| 1409 | } |
|---|
| 1410 | //If it's wrong, no need to do anything but show the feedback |
|---|
| 1411 | ShowMessage(Feedback); |
|---|
| 1412 | |
|---|
| 1413 | //Check whether all questions are now done |
|---|
| 1414 | CheckFinished(); |
|---|
| 1415 | } |
|---|
| 1416 | |
|---|
| 1417 | function CalculateMultiSelQuestionScore(QNum){ |
|---|
| 1418 | var Tries = State[QNum][2]; |
|---|
| 1419 | var TotAns = State[QNum][1].length; |
|---|
| 1420 | |
|---|
| 1421 | //Make sure it's not already complete |
|---|
| 1422 | if (State[QNum][0] < 0){ |
|---|
| 1423 | State[QNum][0] = (TotAns - (Tries-1)) / TotAns; |
|---|
| 1424 | if (State[QNum][0] < 0){ |
|---|
| 1425 | State[QNum][0] = 0; |
|---|
| 1426 | } |
|---|
| 1427 | } |
|---|
| 1428 | } |
|---|
| 1429 | |
|---|
| 1430 | |
|---|
| 1431 | |
|---|
| 1432 | function CalculateOverallScore(){ |
|---|
| 1433 | var TotalWeighting = 0; |
|---|
| 1434 | var TotalScore = 0; |
|---|
| 1435 | |
|---|
| 1436 | for (var QNum=0; QNum<State.length; QNum++){ |
|---|
| 1437 | if (State[QNum] != null){ |
|---|
| 1438 | if (State[QNum][0] > -1){ |
|---|
| 1439 | TotalWeighting += I[QNum][0]; |
|---|
| 1440 | TotalScore += (I[QNum][0] * State[QNum][0]); |
|---|
| 1441 | } |
|---|
| 1442 | } |
|---|
| 1443 | } |
|---|
| 1444 | Score = Math.floor((TotalScore/TotalWeighting)*100); |
|---|
| 1445 | } |
|---|
| 1446 | |
|---|
| 1447 | function CheckFinished(){ |
|---|
| 1448 | var FB = ''; |
|---|
| 1449 | var AllDone = true; |
|---|
| 1450 | for (var QNum=0; QNum<State.length; QNum++){ |
|---|
| 1451 | if (State[QNum] != null){ |
|---|
| 1452 | if (State[QNum][0] < 0){ |
|---|
| 1453 | AllDone = false; |
|---|
| 1454 | } |
|---|
| 1455 | } |
|---|
| 1456 | } |
|---|
| 1457 | if (AllDone == true){ |
|---|
| 1458 | |
|---|
| 1459 | //Report final score and submit if necessary |
|---|
| 1460 | CalculateOverallScore(); |
|---|
| 1461 | FB = YourScoreIs + ' ' + Score + '%.'; |
|---|
| 1462 | if (ShowCorrectFirstTime == true){ |
|---|
| 1463 | var CFT = 0; |
|---|
| 1464 | for (QNum=0; QNum<State.length; QNum++){ |
|---|
| 1465 | if (State[QNum] != null){ |
|---|
| 1466 | if (State[QNum][0] >= 1){ |
|---|
| 1467 | CFT++; |
|---|
| 1468 | } |
|---|
| 1469 | } |
|---|
| 1470 | } |
|---|
| 1471 | FB += '<br />' + CorrectFirstTime + ' ' + CFT + '/' + QsToShow; |
|---|
| 1472 | } |
|---|
| 1473 | WriteToInstructions(FB); |
|---|
| 1474 | |
|---|
| 1475 | Finished == true; |
|---|
| 1476 | |
|---|
| 1477 | TimeOver = true; |
|---|
| 1478 | Locked = true; |
|---|
| 1479 | |
|---|
| 1480 | |
|---|
| 1481 | |
|---|
| 1482 | Finished = true; |
|---|
| 1483 | Detail = '<?xml version="1.0"?><hpnetresult><fields>'; |
|---|
| 1484 | for (QNum=0; QNum<State.length; QNum++){ |
|---|
| 1485 | if (State[QNum] != null){ |
|---|
| 1486 | if (State[QNum][5].length > 0){ |
|---|
| 1487 | Detail += '<field><fieldname>Question #' + (QNum+1) + '</fieldname><fieldtype>question-tracking</fieldtype><fieldlabel>Q ' + (QNum+1) + '</fieldlabel><fieldlabelid>QuestionTrackingField</fieldlabelid><fielddata>' + State[QNum][5] + '</fielddata></field>'; |
|---|
| 1488 | } |
|---|
| 1489 | } |
|---|
| 1490 | } |
|---|
| 1491 | Detail += '</fields></hpnetresult>'; |
|---|
| 1492 | setTimeout('Finish()', SubmissionTimeout); |
|---|
| 1493 | } |
|---|
| 1494 | } |
|---|
| 1495 | |
|---|
| 1496 | |
|---|
| 1497 | |
|---|
| 1498 | |
|---|
| 1499 | |
|---|
| 1500 | //CORE CODE FOR CHECKING SHORT ANSWER GUESSES AGAINST ANSWER ARRAYS |
|---|
| 1501 | |
|---|
| 1502 | var CaseSensitive = false; |
|---|
| 1503 | var ShowAlsoCorrect = true; |
|---|
| 1504 | var PleaseEnter = 'Please enter a guess.'; |
|---|
| 1505 | var HybridTries = 2; |
|---|
| 1506 | var PartlyIncorrect = 'Your answer is partly wrong: '; |
|---|
| 1507 | var CorrectList = 'Correct answers: '; |
|---|
| 1508 | var NextCorrect = 'Next correct letter in the answer: '; |
|---|
| 1509 | var CurrBox = null; |
|---|
| 1510 | |
|---|
| 1511 | function TrackFocus(BoxID){ |
|---|
| 1512 | InTextBox = true; |
|---|
| 1513 | CurrBox = document.getElementById(BoxID); |
|---|
| 1514 | } |
|---|
| 1515 | |
|---|
| 1516 | function LeaveGap(){ |
|---|
| 1517 | InTextBox = false; |
|---|
| 1518 | } |
|---|
| 1519 | |
|---|
| 1520 | function TypeChars(Chars){ |
|---|
| 1521 | if (CurrBox != null){ |
|---|
| 1522 | // if (CurrBox.style.display != 'none'){ |
|---|
| 1523 | CurrBox.value += Chars; |
|---|
| 1524 | // } |
|---|
| 1525 | } |
|---|
| 1526 | } |
|---|
| 1527 | |
|---|
| 1528 | function CheckGuess(Guess, Answer, CaseSensitive, PercentCorrect, Feedback){ |
|---|
| 1529 | this.Guess = Guess; |
|---|
| 1530 | this.Answer = Answer; |
|---|
| 1531 | this.PercentCorrect = PercentCorrect; |
|---|
| 1532 | this.Feedback = Feedback; |
|---|
| 1533 | if (CaseSensitive == false){ |
|---|
| 1534 | this.WorkingGuess = Guess.toLowerCase(); |
|---|
| 1535 | this.WorkingAnswer = Answer.toLowerCase(); |
|---|
| 1536 | } |
|---|
| 1537 | else{ |
|---|
| 1538 | this.WorkingGuess = Guess; |
|---|
| 1539 | this.WorkingAnswer = Answer; |
|---|
| 1540 | } |
|---|
| 1541 | this.Hint = ''; |
|---|
| 1542 | this.HintPenalty = 1/Answer.length; |
|---|
| 1543 | this.CorrectStart = ''; |
|---|
| 1544 | this.WrongMiddle = ''; |
|---|
| 1545 | this.CorrectEnd = ''; |
|---|
| 1546 | this.PercentMatch = 0; |
|---|
| 1547 | this.DoCheck(); |
|---|
| 1548 | } |
|---|
| 1549 | |
|---|
| 1550 | function CheckGuess_DoCheck(){ |
|---|
| 1551 | //Check if it's an exact match |
|---|
| 1552 | if (this.WorkingAnswer == this.WorkingGuess){ |
|---|
| 1553 | this.PercentMatch = 100; |
|---|
| 1554 | this.CorrectStart = this.Guess; |
|---|
| 1555 | return; |
|---|
| 1556 | } |
|---|
| 1557 | //Figure out how much of the beginning is correct |
|---|
| 1558 | var i = 0; |
|---|
| 1559 | var CorrectChars = 0; |
|---|
| 1560 | while (this.WorkingAnswer.charAt(i) == this.WorkingGuess.charAt(i)){ |
|---|
| 1561 | i++; |
|---|
| 1562 | CorrectChars++; |
|---|
| 1563 | } |
|---|
| 1564 | //Stash the hint |
|---|
| 1565 | this.Hint = this.Answer.charAt(i); |
|---|
| 1566 | |
|---|
| 1567 | this.CorrectStart = this.Guess.substring(0, i); |
|---|
| 1568 | //Figure out how much of the end is correct |
|---|
| 1569 | var j = this.WorkingGuess.length-1; |
|---|
| 1570 | var k = this.WorkingAnswer.length-1; |
|---|
| 1571 | while ((this.WorkingAnswer.charAt(k) == this.WorkingGuess.charAt(j))&&(CorrectChars < this.Answer.length)){ |
|---|
| 1572 | CorrectChars++; |
|---|
| 1573 | j--; |
|---|
| 1574 | k--; |
|---|
| 1575 | } |
|---|
| 1576 | this.CorrectEnd = this.Guess.substring(j+1, this.Guess.length); |
|---|
| 1577 | this.WrongMiddle = this.Guess.substring(i, j+1); |
|---|
| 1578 | if (TrimString(this.WrongMiddle).length < 1){this.WrongMiddle = '_____';} |
|---|
| 1579 | //Calculate match score based on how much of the guess is correct |
|---|
| 1580 | if (CorrectChars < this.Answer.length){ |
|---|
| 1581 | this.PercentMatch = Math.floor(100*CorrectChars)/this.Answer.length; |
|---|
| 1582 | } |
|---|
| 1583 | else{ |
|---|
| 1584 | this.PercentMatch = Math.floor((100 * CorrectChars)/this.Guess.length); |
|---|
| 1585 | } |
|---|
| 1586 | } |
|---|
| 1587 | |
|---|
| 1588 | CheckGuess.prototype.DoCheck = CheckGuess_DoCheck; |
|---|
| 1589 | |
|---|
| 1590 | function CheckAnswerArray(CaseSensitive){ |
|---|
| 1591 | this.CaseSensitive = CaseSensitive; |
|---|
| 1592 | this.Answers = new Array(); |
|---|
| 1593 | this.Score = 0; |
|---|
| 1594 | this.Feedback = ''; |
|---|
| 1595 | this.Hint = ''; |
|---|
| 1596 | this.HintPenalty = 0; |
|---|
| 1597 | this.MatchedAnswerLength = 1; |
|---|
| 1598 | this.CompleteMatch = false; |
|---|
| 1599 | this.MatchNum = -1; |
|---|
| 1600 | } |
|---|
| 1601 | |
|---|
| 1602 | function CheckAnswerArray_AddAnswer(Guess, Answer, PercentCorrect, Feedback){ |
|---|
| 1603 | this.Answers.push(new CheckGuess(Guess, Answer, this.CaseSensitive, PercentCorrect, Feedback)); |
|---|
| 1604 | } |
|---|
| 1605 | |
|---|
| 1606 | CheckAnswerArray.prototype.AddAnswer = CheckAnswerArray_AddAnswer; |
|---|
| 1607 | |
|---|
| 1608 | function CheckAnswerArray_ClearAll(){ |
|---|
| 1609 | this.Answers.length = 0; |
|---|
| 1610 | } |
|---|
| 1611 | |
|---|
| 1612 | CheckAnswerArray.prototype.ClearAll = CheckAnswerArray_ClearAll; |
|---|
| 1613 | |
|---|
| 1614 | function CheckAnswerArray_GetBestMatch(){ |
|---|
| 1615 | //First check for a 100% match |
|---|
| 1616 | for (var i=0; i<this.Answers.length; i++){ |
|---|
| 1617 | if (this.Answers[i].PercentMatch == 100){ |
|---|
| 1618 | this.Feedback = this.Answers[i].Feedback; |
|---|
| 1619 | this.Score = this.Answers[i].PercentCorrect; |
|---|
| 1620 | this.CompleteMatch = true; |
|---|
| 1621 | this.MatchNum = i; |
|---|
| 1622 | return; |
|---|
| 1623 | } |
|---|
| 1624 | } |
|---|
| 1625 | //Now check for the best alternative match |
|---|
| 1626 | var PercentMatch = 0; |
|---|
| 1627 | var BestMatch = -1; |
|---|
| 1628 | for (i=0; i<this.Answers.length; i++){ |
|---|
| 1629 | if ((this.Answers[i].PercentMatch > PercentMatch)&&(this.Answers[i].PercentCorrect == 100)){ |
|---|
| 1630 | BestMatch = i; |
|---|
| 1631 | PercentMatch = this.Answers[i].PercentMatch; |
|---|
| 1632 | } |
|---|
| 1633 | } |
|---|
| 1634 | if (BestMatch > -1){ |
|---|
| 1635 | this.Score = this.Answers[BestMatch].PercentMatch; |
|---|
| 1636 | this.Feedback = PartlyIncorrect + ' '; |
|---|
| 1637 | this.Feedback += '<span class="Answer">' + this.Answers[BestMatch].CorrectStart; |
|---|
| 1638 | this.Feedback += '<span class="Highlight">' + this.Answers[BestMatch].WrongMiddle + '</span>'; |
|---|
| 1639 | this.Feedback += this.Answers[BestMatch].CorrectEnd + '</span>'; |
|---|
| 1640 | this.Hint = '<span class="Answer">' + this.Answers[BestMatch].CorrectStart; |
|---|
| 1641 | this.Hint += '<span class="Highlight">' + this.Answers[BestMatch].Hint + '</span></span>'; |
|---|
| 1642 | this.HintPenalty = this.Answers[BestMatch].HintPenalty; |
|---|
| 1643 | } |
|---|
| 1644 | else{ |
|---|
| 1645 | this.Score = 0; |
|---|
| 1646 | this.Feedback = ''; |
|---|
| 1647 | } |
|---|
| 1648 | } |
|---|
| 1649 | |
|---|
| 1650 | CheckAnswerArray.prototype.GetBestMatch = CheckAnswerArray_GetBestMatch; |
|---|
| 1651 | |
|---|
| 1652 | function CheckShortAnswer(QNum){ |
|---|
| 1653 | //bail if question doesn't exist or exercise finished |
|---|
| 1654 | if ((State[QNum].length < 1)||(Finished == true)){return;} |
|---|
| 1655 | |
|---|
| 1656 | //bail if question already complete |
|---|
| 1657 | if (State[QNum][0] > -1){return;} |
|---|
| 1658 | |
|---|
| 1659 | //Get the guess |
|---|
| 1660 | var G = document.getElementById('Q_' + QNum + '_Guess').value; |
|---|
| 1661 | |
|---|
| 1662 | //If no guess, bail with message; no penalty |
|---|
| 1663 | if (G.length < 1){ |
|---|
| 1664 | ShowMessage(PleaseEnter); |
|---|
| 1665 | return; |
|---|
| 1666 | } |
|---|
| 1667 | |
|---|
| 1668 | //Increment tries |
|---|
| 1669 | State[QNum][2]++; |
|---|
| 1670 | |
|---|
| 1671 | //Create a check object |
|---|
| 1672 | var CA = new CheckAnswerArray(CaseSensitive); |
|---|
| 1673 | |
|---|
| 1674 | CA.ClearAll(); |
|---|
| 1675 | for (var ANum=0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1676 | CA.AddAnswer(G, I[QNum][3][ANum][0], I[QNum][3][ANum][3], I[QNum][3][ANum][1]); |
|---|
| 1677 | } |
|---|
| 1678 | CA.GetBestMatch(); |
|---|
| 1679 | |
|---|
| 1680 | //Store any match in the state tracking field |
|---|
| 1681 | if (CA.MatchNum > -1){ |
|---|
| 1682 | State[QNum][5] += String.fromCharCode(65+CA.MatchNum) + ','; |
|---|
| 1683 | } |
|---|
| 1684 | |
|---|
| 1685 | //Add the percent correct value for this answer to the Q State (works for all |
|---|
| 1686 | //situations, wrong or right |
|---|
| 1687 | State[QNum][3] += CA.Score; |
|---|
| 1688 | |
|---|
| 1689 | //Now branch, based on the nature of the match |
|---|
| 1690 | //Is it a complete match? |
|---|
| 1691 | if (CA.CompleteMatch == true){ |
|---|
| 1692 | |
|---|
| 1693 | //Is it with a wrong answer, or a right answer? |
|---|
| 1694 | if (CA.Score == 100){ |
|---|
| 1695 | //It's right |
|---|
| 1696 | CalculateShortAnsQuestionScore(QNum); |
|---|
| 1697 | //Get correct answer list if required, assuming there are any other correct alternatives |
|---|
| 1698 | if (ShowAlsoCorrect == true){ |
|---|
| 1699 | var AlsoCorrectList = GetCorrectList(QNum, G, false); |
|---|
| 1700 | if (AlsoCorrectList.length > 0){ |
|---|
| 1701 | CA.Feedback += '<br />' + CorrectList + '<br />' + '<span class="Answer">' + AlsoCorrectList + '</span>'; |
|---|
| 1702 | } |
|---|
| 1703 | } |
|---|
| 1704 | |
|---|
| 1705 | //Get the overall score and add it to the feedback |
|---|
| 1706 | if (ContinuousScoring == true){ |
|---|
| 1707 | CalculateOverallScore(); |
|---|
| 1708 | CA.Feedback += '<br />' + YourScoreIs + ' ' + Score + '%.'; |
|---|
| 1709 | WriteToInstructions(YourScoreIs + ' ' + Score + '%.'); |
|---|
| 1710 | } |
|---|
| 1711 | ShowMessage(CA.Feedback); |
|---|
| 1712 | //Put the answer in |
|---|
| 1713 | ReplaceGuessBox(QNum, G); |
|---|
| 1714 | CheckFinished(); |
|---|
| 1715 | return; |
|---|
| 1716 | } |
|---|
| 1717 | } |
|---|
| 1718 | |
|---|
| 1719 | //Otherwise, it's a match to a predicted wrong/partially correct, or a partial |
|---|
| 1720 | //match to a right answer |
|---|
| 1721 | if (CA.Feedback.length < 1){CA.Feedback = DefaultWrong;} |
|---|
| 1722 | ShowMessage(CA.Feedback); |
|---|
| 1723 | |
|---|
| 1724 | //If necessary, switch a hybrid question to m/c |
|---|
| 1725 | if (State[QNum][2] >= HybridTries){ |
|---|
| 1726 | SwitchHybridDisplay(QNum); |
|---|
| 1727 | } |
|---|
| 1728 | } |
|---|
| 1729 | |
|---|
| 1730 | function CalculateShortAnsQuestionScore(QNum){ |
|---|
| 1731 | var Tries = State[QNum][2] + State[QNum][4]; //include tries and hint penalties; |
|---|
| 1732 | var PercentCorrect = State[QNum][3]; |
|---|
| 1733 | var HintPenalties = State[QNum][4]; |
|---|
| 1734 | |
|---|
| 1735 | //Make sure it's not already complete |
|---|
| 1736 | if (State[QNum][0] < 0){ |
|---|
| 1737 | if (HintPenalties >= 1){ |
|---|
| 1738 | State[QNum][0] = 0; |
|---|
| 1739 | } |
|---|
| 1740 | else{ |
|---|
| 1741 | State[QNum][0] = (PercentCorrect/(100*Tries)); |
|---|
| 1742 | } |
|---|
| 1743 | if (State[QNum][0] < 0){ |
|---|
| 1744 | State[QNum][0] = 0; |
|---|
| 1745 | } |
|---|
| 1746 | } |
|---|
| 1747 | } |
|---|
| 1748 | |
|---|
| 1749 | function SwitchHybridDisplay(QNum){ |
|---|
| 1750 | if (document.getElementById('Q_' + QNum + '_Hybrid_MC') != null){ |
|---|
| 1751 | document.getElementById('Q_' + QNum + '_Hybrid_MC').style.display = ''; |
|---|
| 1752 | if (document.getElementById('Q_' + QNum + '_SA') != null){ |
|---|
| 1753 | document.getElementById('Q_' + QNum + '_SA').style.display = 'none'; |
|---|
| 1754 | } |
|---|
| 1755 | } |
|---|
| 1756 | } |
|---|
| 1757 | |
|---|
| 1758 | function GetCorrectArray(QNum){ |
|---|
| 1759 | var Result = new Array(); |
|---|
| 1760 | for (var ANum=0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1761 | if (I[QNum][3][ANum][2] == 1){ //This is an acceptable correct answer |
|---|
| 1762 | Result.push(I[QNum][3][ANum][0]); |
|---|
| 1763 | } |
|---|
| 1764 | } |
|---|
| 1765 | return Result; |
|---|
| 1766 | } |
|---|
| 1767 | |
|---|
| 1768 | function GetCorrectList(QNum, Answer, IncludeAnswer){ |
|---|
| 1769 | var As = GetCorrectArray(QNum); |
|---|
| 1770 | var Result = ''; |
|---|
| 1771 | for (var ANum=0; ANum<As.length; ANum++){ |
|---|
| 1772 | if ((IncludeAnswer == true)||(As[ANum] != Answer)){ |
|---|
| 1773 | Result += As[ANum] + '<br />'; |
|---|
| 1774 | } |
|---|
| 1775 | } |
|---|
| 1776 | return Result; |
|---|
| 1777 | } |
|---|
| 1778 | |
|---|
| 1779 | function GetFirstCorrectAnswer(QNum){ |
|---|
| 1780 | var As = GetCorrectArray(QNum); |
|---|
| 1781 | if (As.length > 0){ |
|---|
| 1782 | return As[0]; |
|---|
| 1783 | } |
|---|
| 1784 | else{ |
|---|
| 1785 | return ''; |
|---|
| 1786 | } |
|---|
| 1787 | } |
|---|
| 1788 | |
|---|
| 1789 | function ReplaceGuessBox(QNum, Ans){ |
|---|
| 1790 | if (document.getElementById('Q_' + QNum + '_SA') != null){ |
|---|
| 1791 | var El = document.getElementById('Q_' + QNum + '_SA'); |
|---|
| 1792 | while (El.childNodes.length > 0){ |
|---|
| 1793 | El.removeChild(El.childNodes[0]); |
|---|
| 1794 | } |
|---|
| 1795 | var A = document.createElement('span'); |
|---|
| 1796 | A.setAttribute('class', 'Answer'); |
|---|
| 1797 | var T = document.createTextNode(Ans); |
|---|
| 1798 | A.appendChild(T); |
|---|
| 1799 | El.appendChild(A); |
|---|
| 1800 | } |
|---|
| 1801 | } |
|---|
| 1802 | |
|---|
| 1803 | |
|---|
| 1804 | |
|---|
| 1805 | function ShowAnswers(QNum){ |
|---|
| 1806 | //bail if question doesn't exist or exercise finished |
|---|
| 1807 | if ((State[QNum].length < 1)||(Finished == true)){return;} |
|---|
| 1808 | |
|---|
| 1809 | //Get the answer list to display |
|---|
| 1810 | var Ans = GetCorrectList(QNum, '', false); |
|---|
| 1811 | Ans = CorrectList + '<br /><span class="Answer">' + Ans + '</span>'; |
|---|
| 1812 | |
|---|
| 1813 | //Display feedback |
|---|
| 1814 | ShowMessage(Ans); |
|---|
| 1815 | |
|---|
| 1816 | //Set the score for this question to 0 if no |
|---|
| 1817 | if (State[QNum][0] < 1){ |
|---|
| 1818 | State[QNum][0] = 0; |
|---|
| 1819 | } |
|---|
| 1820 | |
|---|
| 1821 | //Get the first correct answer |
|---|
| 1822 | var FirstAns = GetFirstCorrectAnswer(QNum); |
|---|
| 1823 | |
|---|
| 1824 | //Replace the textbox |
|---|
| 1825 | ReplaceGuessBox(QNum, FirstAns); |
|---|
| 1826 | |
|---|
| 1827 | //This may be the last, so check finished status |
|---|
| 1828 | CheckFinished(); |
|---|
| 1829 | } |
|---|
| 1830 | |
|---|
| 1831 | |
|---|
| 1832 | |
|---|
| 1833 | |
|---|
| 1834 | |
|---|
| 1835 | function ShowHint(QNum){ |
|---|
| 1836 | //bail if question doesn't exist or exercise finished |
|---|
| 1837 | if ((State[QNum].length < 1)||(Finished == true)){return;} |
|---|
| 1838 | |
|---|
| 1839 | //bail if question already complete |
|---|
| 1840 | if (State[QNum][0] > -1){return;} |
|---|
| 1841 | |
|---|
| 1842 | //Get the guess |
|---|
| 1843 | var G = document.getElementById('Q_' + QNum + '_Guess').value; |
|---|
| 1844 | |
|---|
| 1845 | //If no guess, give the first correct bit |
|---|
| 1846 | if (G.length < 1){ |
|---|
| 1847 | var Ans = GetFirstCorrectAnswer(QNum); |
|---|
| 1848 | var Hint = Ans.charAt(0); |
|---|
| 1849 | ShowMessage(NextCorrect + '<br />' + Hint); |
|---|
| 1850 | //Penalty for hint |
|---|
| 1851 | State[QNum][4] += (1/Ans.length); |
|---|
| 1852 | return; |
|---|
| 1853 | } |
|---|
| 1854 | |
|---|
| 1855 | //Increment tries |
|---|
| 1856 | State[QNum][2]++; |
|---|
| 1857 | |
|---|
| 1858 | //Create a check object |
|---|
| 1859 | var CA = new CheckAnswerArray(CaseSensitive); |
|---|
| 1860 | |
|---|
| 1861 | CA.ClearAll(); |
|---|
| 1862 | for (var ANum=0; ANum<I[QNum][3].length; ANum++){ |
|---|
| 1863 | //Use only correct answers |
|---|
| 1864 | if (I[QNum][3][ANum][2] == 1){ |
|---|
| 1865 | CA.AddAnswer(G, I[QNum][3][ANum][0], I[QNum][3][ANum][3], I[QNum][3][ANum][1]); |
|---|
| 1866 | } |
|---|
| 1867 | } |
|---|
| 1868 | CA.GetBestMatch(); |
|---|
| 1869 | if (CA.CompleteMatch == true){ |
|---|
| 1870 | //It's right! |
|---|
| 1871 | CheckShortAnswer(QNum); |
|---|
| 1872 | return; |
|---|
| 1873 | } |
|---|
| 1874 | else{ |
|---|
| 1875 | if (CA.Hint.length > 0){ |
|---|
| 1876 | ShowMessage(NextCorrect + '<br />' + CA.Hint); |
|---|
| 1877 | State[QNum][4] += CA.HintPenalty; |
|---|
| 1878 | } |
|---|
| 1879 | else{ |
|---|
| 1880 | ShowMessage(DefaultWrong + '<br />' + NextCorrect + '<br />' + GetFirstCorrectAnswer(QNum)[0]); |
|---|
| 1881 | } |
|---|
| 1882 | } |
|---|
| 1883 | } |
|---|
| 1884 | |
|---|
| 1885 | |
|---|
| 1886 | |
|---|
| 1887 | |
|---|
| 1888 | |
|---|
| 1889 | |
|---|
| 1890 | |
|---|
| 1891 | |
|---|
| 1892 | |
|---|
| 1893 | //--> |
|---|
| 1894 | |
|---|
| 1895 | //]]> |
|---|
| 1896 | |
|---|
| 1897 | </script> |
|---|
| 1898 | |
|---|
| 1899 | |
|---|
| 1900 | </head> |
|---|
| 1901 | |
|---|
| 1902 | <body onload="StartUp()" id="TheBody"> |
|---|
| 1903 | |
|---|
| 1904 | <!-- BeginTopNavButtons --> |
|---|
| 1905 | |
|---|
| 1906 | |
|---|
| 1907 | <div class="NavButtonBar" id="TopNavBar"> |
|---|
| 1908 | |
|---|
| 1909 | |
|---|
| 1910 | |
|---|
| 1911 | |
|---|
| 1912 | |
|---|
| 1913 | |
|---|
| 1914 | <button class="NavButton" onfocus="NavBtnOver(this)" onblur="NavBtnOut(this)" onmouseover="NavBtnOver(this)" onmouseout="NavBtnOut(this)" onmousedown="NavBtnDown(this)" onmouseup="NavBtnOut(this)" onclick="location='jcloze1.htm'; return false;">Next example</button> |
|---|
| 1915 | |
|---|
| 1916 | |
|---|
| 1917 | </div> |
|---|
| 1918 | |
|---|
| 1919 | |
|---|
| 1920 | |
|---|
| 1921 | <!-- EndTopNavButtons --> |
|---|
| 1922 | |
|---|
| 1923 | <div class="Titles"> |
|---|
| 1924 | <h2 class="ExerciseTitle">A Quiz made with JQuiz</h2> |
|---|
| 1925 | <h3 class="ExerciseSubtitle">Choose the correct answer for each question.</h3> |
|---|
| 1926 | |
|---|
| 1927 | |
|---|
| 1928 | </div> |
|---|
| 1929 | |
|---|
| 1930 | <div id="InstructionsDiv" class="StdDiv"> |
|---|
| 1931 | <p id="Instructions"></p> |
|---|
| 1932 | </div> |
|---|
| 1933 | |
|---|
| 1934 | |
|---|
| 1935 | <div class="LeftContainer"> |
|---|
| 1936 | |
|---|
| 1937 | <div id="Reading" class="StdDiv"> |
|---|
| 1938 | |
|---|
| 1939 | <div id="ReadingDiv"> |
|---|
| 1940 | <h3 class="ExerciseSubtitle">A Quiz made with JQuiz</h3><p>This is a typical JQuiz quiz. In this box, there is a reading text. The reading text may be entered directly into the JQuiz program by choosing <strong>File / Add Reading Text</strong>. Alternatively, you may choose not to include a reading text at all. All of the Hot Potatoes applications allow you to include a reading text.<br /><br />On the other side of the screen, you'll see the first of the questions. You can answer the first question by clicking on one of the answer buttons; you can keep choosing answers until you get one which is correct. When you've answered a question, you can move on to the next one using the arrow buttons above the question. You can also choose to see all the questions together, by clicking on the "Show all questions" button.</p> |
|---|
| 1941 | </div> |
|---|
| 1942 | </div> |
|---|
| 1943 | |
|---|
| 1944 | </div> |
|---|
| 1945 | |
|---|
| 1946 | |
|---|
| 1947 | <div class="RightContainer"> |
|---|
| 1948 | |
|---|
| 1949 | |
|---|
| 1950 | |
|---|
| 1951 | <div id="MainDiv" class="StdDiv"> |
|---|
| 1952 | |
|---|
| 1953 | <div class="QuestionNavigation"> |
|---|
| 1954 | |
|---|
| 1955 | <p style="text-align: right;"> |
|---|
| 1956 | <button id="ShowMethodButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOver(this)" onclick="ShowHideQuestions(); return false;">Show all questions</button> |
|---|
| 1957 | </p> |
|---|
| 1958 | |
|---|
| 1959 | <div id="OneByOneReadout"> |
|---|
| 1960 | <button id="PrevQButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOver(this)" onclick="ChangeQ(-1); return false;"><=</button> |
|---|
| 1961 | |
|---|
| 1962 | <span id="QNumReadout" class="QNum"> </span> |
|---|
| 1963 | |
|---|
| 1964 | <button id="NextQButton" class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOver(this)" onclick="ChangeQ(1); return false;">=></button> |
|---|
| 1965 | <br /> |
|---|
| 1966 | </div> |
|---|
| 1967 | |
|---|
| 1968 | </div> |
|---|
| 1969 | |
|---|
| 1970 | <ol class="QuizQuestions" id="Questions"> |
|---|
| 1971 | <li class="QuizQuestion" id="Q_0" style="display: none;"><p class="QuestionText">What's the maximum number of answers you can include in a multiple-choice quiz question?</p><ol class="MCAnswers"><li id="Q_0_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_0_0_Btn" onclick="CheckMCAnswer(0,0,this)"> ? </button> four</li><li id="Q_0_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_0_1_Btn" onclick="CheckMCAnswer(0,1,this)"> ? </button> five</li><li id="Q_0_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_0_2_Btn" onclick="CheckMCAnswer(0,2,this)"> ? </button> unlimited</li></ol></li> |
|---|
| 1972 | <li class="QuizQuestion" id="Q_1" style="display: none;"><p class="QuestionText">True or false: You must include a reading text.</p><ol class="MCAnswers"><li id="Q_1_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_1_0_Btn" onclick="CheckMCAnswer(1,0,this)"> ? </button> True</li><li id="Q_1_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_1_1_Btn" onclick="CheckMCAnswer(1,1,this)"> ? </button> False</li></ol></li> |
|---|
| 1973 | <li class="QuizQuestion" id="Q_2" style="display: none;"><p class="QuestionText">Imagine that you click on Question 1 Answer A, which is correct, and your score is 100%. If you then click on Answer B for the same question, what will happen to your score?</p><ol class="MCAnswers"><li id="Q_2_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_2_0_Btn" onclick="CheckMCAnswer(2,0,this)"> ? </button> It will go down.</li><li id="Q_2_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_2_1_Btn" onclick="CheckMCAnswer(2,1,this)"> ? </button> It will remain the same.</li><li id="Q_2_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_2_2_Btn" onclick="CheckMCAnswer(2,2,this)"> ? </button> It will rise.</li><li id="Q_2_3"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_2_3_Btn" onclick="CheckMCAnswer(2,3,this)"> ? </button> It will be set to zero.</li></ol></li> |
|---|
| 1974 | <li class="QuizQuestion" id="Q_3" style="display: none;"><p class="QuestionText">How many questions can a JQuiz exercise have?</p><ol class="MCAnswers"><li id="Q_3_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_3_0_Btn" onclick="CheckMCAnswer(3,0,this)"> ? </button> 3</li><li id="Q_3_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_3_1_Btn" onclick="CheckMCAnswer(3,1,this)"> ? </button> 100</li><li id="Q_3_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_3_2_Btn" onclick="CheckMCAnswer(3,2,this)"> ? </button> 1000</li><li id="Q_3_3"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_3_3_Btn" onclick="CheckMCAnswer(3,3,this)"> ? </button> unlimited</li></ol></li> |
|---|
| 1975 | <li class="QuizQuestion" id="Q_4" style="display: none;"><p class="QuestionText">This is another type of question you can use. This one is a short-answer question:<br /><br />What is the name of the program used to make this exercise?</p><div class="ShortAnswer" id="Q_4_SA"><form method="post" action="" onsubmit="return false;"><div><input type="text" id="Q_4_Guess" onfocus="TrackFocus('Q_4_Guess')" onblur="LeaveGap()" class="GapBox" size="9"></input><br /><br /><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckShortAnswer(4)">Check</button><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="ShowHint(4)">Hint</button><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="ShowAnswers(4)">Show answer</button></div></form></div></li> |
|---|
| 1976 | <li class="QuizQuestion" id="Q_5" style="display: none;"><p class="QuestionText">This question type is a new feature in version 6 of Hot Potatoes. It's called a <strong>hybrid</strong> question. It starts off as a short-answer question, but if you get it wrong twice, it will turn into a multiple-choice question to make it easier.<br /><br />Which Potato is used to make jumbled-sentence exercises?</p><div class="ShortAnswer" id="Q_5_SA"><form method="post" action="" onsubmit="return false;"><div><input type="text" id="Q_5_Guess" onfocus="TrackFocus('Q_5_Guess')" onblur="LeaveGap()" class="GapBox" size="9"></input><br /><br /><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckShortAnswer(5)">Check</button><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="ShowHint(5)">Hint</button><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="ShowAnswers(5)">Show answer</button></div></form></div><ol class="MCAnswers" id="Q_5_Hybrid_MC" style="display: none;"><li id="Q_5_0"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_5_0_Btn" onclick="CheckMCAnswer(5,0,this)"> ? </button> JCross</li><li id="Q_5_1"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_5_1_Btn" onclick="CheckMCAnswer(5,1,this)"> ? </button> JJumble</li><li id="Q_5_2"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_5_2_Btn" onclick="CheckMCAnswer(5,2,this)"> ? </button> JCloze</li><li id="Q_5_3"><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" id="Q_5_3_Btn" onclick="CheckMCAnswer(5,3,this)"> ? </button> JMix</li></ol></li> |
|---|
| 1977 | <li class="QuizQuestion" id="Q_6" style="display: none;"><p class="QuestionText">This question illustrates the <strong>multi-select</strong> question type.<br /><br />Which of the following are Hot Potatoes programs?</p><ol class="MSelAnswers"><li id="Q_6_0"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_0_Chk" class="MSelCheckbox" />JQuiz</div></form></li><li id="Q_6_1"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_1_Chk" class="MSelCheckbox" />JCloth</div></form></li><li id="Q_6_2"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_2_Chk" class="MSelCheckbox" />JCloze</div></form></li><li id="Q_6_3"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_3_Chk" class="MSelCheckbox" />JMatch</div></form></li><li id="Q_6_4"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_4_Chk" class="MSelCheckbox" />JCPenney</div></form></li><li id="Q_6_5"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_5_Chk" class="MSelCheckbox" />JCross</div></form></li><li id="Q_6_6"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_6_Chk" class="MSelCheckbox" />JMix</div></form></li><li id="Q_6_7"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_7_Chk" class="MSelCheckbox" />The Masher</div></form></li><li id="Q_6_8"><form method="post" action="" onsubmit="return false;"><div><input type="checkbox" id="Q_6_8_Chk" class="MSelCheckbox" />JLeno</div></form></li></ol><button class="FuncButton" onfocus="FuncBtnOver(this)" onblur="FuncBtnOut(this)" onmouseover="FuncBtnOver(this)" onmouseout="FuncBtnOut(this)" onmousedown="FuncBtnDown(this)" onmouseup="FuncBtnOut(this)" onclick="CheckMultiSelAnswer(6)">Check</button></li></ol> |
|---|
| 1978 | |
|---|
| 1979 | |
|---|
| 1980 | |
|---|
| 1981 | </div> |
|---|
| 1982 | |
|---|
| 1983 | |
|---|
| 1984 | </div> |
|---|
| 1985 | |
|---|
| 1986 | |
|---|
| 1987 | <div class="Feedback" id="FeedbackDiv"> |
|---|
| 1988 | <div class="FeedbackText" id="FeedbackContent"></div> |
|---|
| 1989 | <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;"> OK </button> |
|---|
| 1990 | </div> |
|---|
| 1991 | |
|---|
| 1992 | <!-- BeginBottomNavButtons --> |
|---|
| 1993 | |
|---|
| 1994 | |
|---|
| 1995 | <div class="NavButtonBar" id="BottomNavBar"> |
|---|
| 1996 | |
|---|
| 1997 | |
|---|
| 1998 | |
|---|
| 1999 | |
|---|
| 2000 | |
|---|
| 2001 | |
|---|
| 2002 | <button class="NavButton" onfocus="NavBtnOver(this)" onblur="NavBtnOut(this)" onmouseover="NavBtnOver(this)" onmouseout="NavBtnOut(this)" onmousedown="NavBtnDown(this)" onmouseup="NavBtnOut(this)" onclick="location='jcloze1.htm'; return false;">Next example</button> |
|---|
| 2003 | |
|---|
| 2004 | |
|---|
| 2005 | </div> |
|---|
| 2006 | |
|---|
| 2007 | |
|---|
| 2008 | |
|---|
| 2009 | <!-- EndBottomNavButtons --> |
|---|
| 2010 | |
|---|
| 2011 | <!-- BeginSubmissionForm --> |
|---|
| 2012 | |
|---|
| 2013 | <!-- EndSubmissionForm --> |
|---|
| 2014 | |
|---|
| 2015 | </body> |
|---|
| 2016 | |
|---|
| 2017 | </html> |
|---|