diff --git a/app/assets/javascripts/toicontest.js b/app/assets/javascripts/toicontest.js
--- a/app/assets/javascripts/toicontest.js
+++ b/app/assets/javascripts/toicontest.js
@@ -1,7 +1,9 @@
var TOIContest = {
NO_TIMEOUT: -1,
+ SUBMISSION_TIMEOUT: 300,
timeOuts: {},
+ timeStarted: 0,
problemSelectClick: function() {
$$(".submission-submit-divs").each(function(item) {
@@ -14,8 +16,18 @@
$("submission_submit_div_" + problem_id + "_id").show();
},
- confirmDownload: function() {
- return confirm("แน่ใจ?");
+ confirmDownload: function(pid) {
+ result = confirm("คุณแน่ใจที่จะส่งข้อนี้หรือไม่?\nเมื่อคุณดาวน์โหลดข้อมูลชุดทดสอบแล้ว คุณจะต้องส่งข้อมูลส่งออกและโปรแกรมภายในเวลา 5 นาที");
+ if ( result ) {
+ if ( TOIContest.timeOuts[ pid ] == TOIContest.NO_TIMEOUT ) {
+ TOIContest.refreshTimeOuts();
+
+ TOIContest.timeOuts[ pid ] = TOIContest.SUBMISSION_TIMEOUT;
+
+ TOIContest.refreshTimeOutMessages();
+ }
+ }
+ return result;
},
refreshTimeOutMessages: function() {
@@ -26,12 +38,40 @@
var minLeft = parseInt(timeOut / 60);
var secLeft = parseInt(timeOut % 60);
$('submission_time_left_' + pid + '_id').innerHTML = '| เหลือเวลาอีก ' + minLeft + ':' + secLeft + ' นาที';
+ $('submission_form_'+ pid + '_id').show();
} else {
$('submission_time_left_' + pid + '_id').innerHTML = '| หมดเวลาส่ง';
$('submission_form_'+ pid + '_id').hide();
}
+ } else {
+ $('submission_form_'+ pid + '_id').hide();
}
}
- }
+ },
+
+ refreshTimeOuts: function() {
+ if ( TOIContest.timeStarted == 0 ) {
+ TOIContest.timeStarted = (new Date()).getTime();
+ }
+
+ var timeElapsed = ((new Date()).getTime() - TOIContest.timeStarted)/1000;
+ for ( var pid in TOIContest.timeOuts ) {
+ var timeOut = TOIContest.timeOuts[ pid ];
+ if ( timeOut > timeElapsed ) {
+ TOIContest.timeOuts[ pid ] -= timeElapsed;
+ } else if ( timeOut > 0 ) {
+ TOIContest.timeOuts[ pid ] = 0;
+ }
+ }
+ },
+
+ registerRefreshEvent: function() {
+ TOIContest.timeStarted = (new Date()).getTime();
+ setTimeout(function () {
+ TOIContest.refreshTimeOuts();
+ TOIContest.refreshTimeOutMessages();
+ TOIContest.registerRefreshEvent();
+ }, 1000);
+ },
};