var redInjuryClock = { "clock": 0, "clockSnapshot": 0, "clockLastStopped": 0, "clockExpected": 0, "clockState": { "bumpClockUpButton": null, "bumpClockDownButton": null, }, "isClockFlashing": false, "stopClockFlag": false, "reset": function(){ $("#redInjuryStopClockButton").click(); $("#redInjuryRewindClockButton").addClass("disabled"); redInjuryClock.setClock(scoreClock.config.colorClockLengths.redInjuryLength); }, "bumpClockUp": function() { length = redInjuryClock.clock + 1; redInjuryClock.setClock(length); }, "bumpClockDown": function() { if (redInjuryClock.clock == 0) { $("#redInjuryBumpClockDownButton").addClass("disabled"); return; } length = redInjuryClock.clock - 1; redInjuryClock.setClock(length); }, "flashClock": function() { if (redInjuryClock.stopClockFlag) { redInjuryClock.isClockFlashing = false; $("#redInjuryMinsField").css( "background-color", "rgb(255, 255, 255)"); $("#redInjurySecsField").css( "background-color", "rgb(255, 255, 255)"); return; } var backgroundColor = $("#redInjuryMinsField").css( "background-color" ); //window.alert(backgroundColor) if (backgroundColor == "rgb(255, 255, 255)") { $("#redInjuryMinsField").css( "background-color", "rgb(51, 51, 51)"); $("#redInjurySecsField").css( "background-color", "rgb(51, 51, 51)"); setTimeout(redInjuryClock.flashClock, 500); } else if (backgroundColor == "rgb(51, 51, 51)") { $("#redInjuryMinsField").css( "background-color", "rgb(255, 255, 255)"); $("#redInjurySecsField").css( "background-color", "rgb(255, 255, 255)"); setTimeout(redInjuryClock.flashClock, 500); } //window.alert(backgroundColor); }, "rewindClock": function() { if (redInjuryClock.clockSnapshot > 0) { redInjuryClock.clockLastStopped = redInjuryClock.clockSnapshot; redInjuryClock.setClock(redInjuryClock.clockSnapshot); } $("#redInjuryRewindClockButton").addClass("disabled"); }, "setClock": function (length) { redInjuryClock.clock = length; var min = Math.floor(length / 60); var secs = length % 60; if (secs < 10) { secs = "0" + secs; } $("#redInjuryMinsField").val(min); $("#redInjurySecsField").val(secs); scoreClock.syncColorClock("redInjury", min, secs); }, "startClock": function() { redInjuryClock.clockState.bumpClockUpButton = $("#redInjuryBumpClockUpButton").hasClass("disabled") ? "disabled" : "enabled"; redInjuryClock.clockState.bumpClockUpButton = $("#redInjuryBumpClockUpButton").hasClass("disabled") ? "disabled" : "enabled"; redInjuryClock.clockState.bumpClockDownButton = $("#redInjuryBumpClockDownButton").hasClass("disabled") ? "disabled" : "enabled"; $("#redInjuryBumpClockUpButton").addClass("disabled"); $("#redInjuryBumpClockDownButton").addClass("disabled"); $("#redInjuryRewindClockButton").addClass("disabled"); redInjuryClock.clockSnapshot = redInjuryClock.clock; redInjuryClock.stopClockFlag = false; redInjuryClock.clockExpected = Date.now() + 1000; setTimeout(redInjuryClock.stepClock, 1000); }, "stepClock": function() { var dt = Date.now() - redInjuryClock.clockExpected; // the drift (positive for overshooting) if (dt > 1000) { // something really bad happened. Maybe the browser (tab) was inactive? // possibly special handling to avoid futile "catch up" run } if (!redInjuryClock.stopClockFlag) { var newLength = redInjuryClock.clock - 1; if (newLength <= 0 && !redInjuryClock.isClockFlashing) { redInjuryClock.isClockFlashing = true; redInjuryClock.flashClock(); } if (newLength < 0) { return; } redInjuryClock.setClock(newLength); redInjuryClock.clockExpected += 1000; setTimeout(redInjuryClock.stepClock, Math.max(0, 1000 - dt)); // take into account drift } }, "stopClock": function() { if (redInjuryClock.clockState.bumpClockUpButton != "disabled") { $("#redInjuryBumpClockUpButton").removeClass("disabled"); } if (redInjuryClock.clockState.bumpClockUpButton != "disabled") { $("#redInjuryBumpClockUpButton").removeClass("disabled"); } if (redInjuryClock.clockState.bumpClockDownButton != "disabled") { $("#redInjuryBumpClockDownButton").removeClass("disabled"); } if (redInjuryClock.clockSnapshot > 0) { $("#redInjuryRewindClockButton").removeClass("disabled"); } redInjuryClock.clockLastStopped = redInjuryClock.clock; redInjuryClock.stopClockFlag = true; }, };