let getRandomInt = function(min, max) { min = Math.ceil(min); max = Math.floor(max); return Math.floor(Math.random() * (max - min) + min); //The maximum is exclusive and the minimum is inclusive } let popUpShowing = js_vars.popUpDuration; let min = js_vars.minTime; let max = js_vars.maxTime; let showPopUp, hidePopUp; let startTime; let timeDiff, cumTimeWaiting, remainingTime, storedTimeInt, countDownTime; let waitTime = js_vars.waitTime; let penalty = js_vars.penalty; let maxWaitTime = js_vars.maxWaitTime; let pauseDurationTime = 0; let waitIndicator = true; let misses = 0; let pauseTime = 0; let resumeTime = 0; let poppingUp = function(){ let popUpNotShowing = getRandomInt(min, max); // console.log(popUpNotShowing); showPopUp = setTimeout(function() { popUp.style.display = "block"; }, popUpNotShowing); hidePopUp = setTimeout(function() { popUp.style.display = "none"; misses = misses + 1; poppingUp(); }, popUpShowing + popUpNotShowing); } let clickingPopUp = function(){ clearTimeout(hidePopUp); popUp.style.display = "none"; poppingUp(); } let popUp = document.getElementById('popUp'); let otreeTitle = document.getElementById('_otree-title'); let timeIsUp = document.getElementById('timeIsUp'); let timeIsUpTrial = document.getElementById('timeIsUpTrial'); let maxTimeIsUp = document.getElementById('maxTimeIsUp'); let nextButton = document.getElementById('nextButton'); let resumeButton = document.getElementById('resumeButton'); let pauseButton = document.getElementById('pauseButton'); let trial = js_vars.trial; const COUNTER_KEY = 'my-counter'; const COUNTER_KEY_TRIAL = 'my-counter-trial'; const pausedClicked = '0'; const pausedNow = '0'; let pause = function(){ clearTimeout(showPopUp); clearTimeout(hidePopUp); resumeButton.style.display = "block"; pauseButton.style.display = "none"; pauseTimer(); popUp.style.display = "none"; window.sessionStorage.setItem(pausedClicked, '1'); window.sessionStorage.setItem(pausedNow, '1'); } let resume = function(){ poppingUp(); resumeButton.style.display = "none"; resumeTimer(); window.sessionStorage.setItem(pausedNow, '0'); } let startTimer = function() { startTime = new Date(); } let pauseTimer = function() { pauseTime = new Date(); timeDiff = pauseTime - startTime; document.getElementById('paused').value = pauseTime.getTime().toString(); waitIndicator = false; } let resumeTimer = function() { resumeTime = new Date(); pauseDurationTime = resumeTime - pauseTime; document.getElementById('resumed').value = resumeTime.getTime().toString(); waitIndicator = true; } let mainInterval = function(storedTime) {setInterval(function(){ storedTimeInt = parseInt(storedTime); cumTimeWaiting = new Date() - startTime - pauseDurationTime; remainingTime = storedTimeInt + misses * penalty - cumTimeWaiting; console.log("Remaining time", remainingTime,"storedTime", storedTimeInt); if (waitIndicator && (remainingTime <= 0)) { clearTimeout(showPopUp); clearTimeout(hidePopUp); clearInterval(mainInterval); if (trial) { timeIsUpTrial.style.display = "block"; } else { timeIsUp.style.display = "block"; } nextButton.style.display = "block"; pauseButton.style.display = "none"; popUp.style.display = "none"; document.getElementById('misses').value = misses; window.sessionStorage.clear(); } else if (waitIndicator && (remainingTime >= maxWaitTime)) { clearTimeout(showPopUp); clearTimeout(hidePopUp); clearInterval(mainInterval); maxTimeIsUp.style.display = "block"; nextButton.style.display = "block"; pauseButton.style.display = "none"; popUp.style.display = "none"; document.getElementById('misses').value = misses; if (!trial) { document.getElementById('failed').value = true; } window.sessionStorage.clear(); } if (waitIndicator) { if (trial) { window.sessionStorage.setItem(COUNTER_KEY_TRIAL, remainingTime); } else { window.sessionStorage.setItem(COUNTER_KEY, remainingTime); } } }, 1000)} window.onload = function() { startTimer(); poppingUp(); if (trial) { countDownTime = window.sessionStorage.getItem(COUNTER_KEY_TRIAL) || waitTime; otreeTitle.textContent = waitTime/1000 + "-seconds Waiting Practice Session"; } else { countDownTime = window.sessionStorage.getItem(COUNTER_KEY) || waitTime; otreeTitle.textContent = "Click the pop-ups when they appear"; } mainInterval(countDownTime); let pausedClick = window.sessionStorage.getItem(pausedClicked); let pausedNowInd = window.sessionStorage.getItem(pausedNow); if (pausedClick == '1') { pauseButton.style.display = "none"; } else { pauseButton.style.display = "block"; } if (pausedNowInd == '1') { pause(); } }