Merge commit 'catalyst/MOODLE_19_STABLE' into mdl19-linuxchix
[moodle-linuxchix.git] / mod / quiz / quiz.js
blobe6c8d4adbc95bf1241f971a63d67aae38d4c1932
1 /*
2  * JavaScript library for the quiz module.
3  *
4  * (c) The Open University and others.
5  * @author T.J.Hunt@open.ac.uk and others.
6  * @license http://www.gnu.org/copyleft/gpl.html GNU Public License
7  */
9 /* Used by quiz navigation links to force a form submit, and hence save the user's data. */
10 function navigate(page) {
11     var ourForm = document.getElementById('responseform');
12     ourForm.action = ourForm.action.replace(/page=.*/, 'page=' + page);
13     if (ourForm.onsubmit) {
14         ourForm.onsubmit();
15     }
16     ourForm.submit();
19 /* Use this in an onkeypress handler, to stop enter submitting the forum unless you 
20 are actually on the submit button. Don't stop the user typing things in text areas. */
21 function check_enter(e) {
22     var target = e.target ? e.target : e.srcElement;
23     var keyCode = e.keyCode ? e.keyCode : e.which;
24     if (keyCode==13 && target.nodeName.toLowerCase()!='a' &&
25             (!target.type || !(target.type=='submit' || target.type=='textarea'))) {
26         return false;
27     } else {
28         return true;
29     }
32 /* Used to update the on-screen countdown clock for quizzes with a time limit */
33 function countdown_clock(theTimer) {
34     var timeout_id = null;
36     quizTimerValue = Math.floor((ec_quiz_finish - new Date().getTime())/1000);
38     if(quizTimerValue <= 0) {
39         clearTimeout(timeout_id);
40         document.getElementById('timeup').value = 1;
41         var ourForm = document.getElementById('responseform');
42         if (ourForm.onsubmit) { 
43             ourForm.onsubmit();
44         }
45         ourForm.submit();
46         return;
47     }
49     now = quizTimerValue;
50     var hours = Math.floor(now/3600);
51     now = now - (hours*3600);
52     var minutes = Math.floor(now/60);
53     now = now - (minutes*60);
54     var seconds = now;
56     var t = "" + hours;
57     t += ((minutes < 10) ? ":0" : ":") + minutes;
58     t += ((seconds < 10) ? ":0" : ":") + seconds;
59     window.status = t.toString();
61     if(hours == 0 && minutes == 0 && seconds <= 15) {
62         //go from fff0f0 to ffe0e0 to ffd0d0...ff2020, ff1010, ff0000 in 15 steps
63         var hexascii = "0123456789ABCDEF";
64         var col = '#' + 'ff' + hexascii.charAt(seconds) + '0' + hexascii.charAt(seconds) + 0;
65         theTimer.style.backgroundColor = col;
66     }
67     document.getElementById('time').value = t.toString();
68     timeout_id = setTimeout("countdown_clock(theTimer)", 1000);
71 /* Use to keep the quiz timer on-screen as the user scrolls. */
72 function movecounter(timerbox) {
73     var pos;
75     if (window.innerHeight) {
76         pos = window.pageYOffset
77     } else if (document.documentElement && document.documentElement.scrollTop) {
78         pos = document.documentElement.scrollTop
79     } else if (document.body) {
80         pos = document.body.scrollTop
81     }
83     if (pos < theTop) {
84         pos = theTop;
85     } else {
86         pos += 100;
87     }
88     if (pos == old) {
89         timerbox.style.top = pos + 'px';
90     }
91     old = pos;
92     temp = setTimeout('movecounter(timerbox)',100);