var greenBloodClock = { "clock": 0, "clockSnapshot": 0, "clockLastStopped": 0, "clockExpected": 0, "clockState": { "bumpClockUpButton": null, "bumpClockDownButton": null, }, "isClockFlashing": false, "stopClockFlag": false, "reset": function(){ $("#greenBloodStopClockButton").click(); $("#greenBloodRewindClockButton").addClass("disabled"); greenBloodClock.setClock(scoreClock.config.colorClockLengths.greenBloodLength); }, "bumpClockUp": function() { length = greenBloodClock.clock + 1; greenBloodClock.setClock(length); }, "bumpClockDown": function() { if (greenBloodClock.clock == 0) { $("#greenBloodBumpClockDownButton").addClass("disabled"); return; } length = greenBloodClock.clock - 1; greenBloodClock.setClock(length); }, "flashClock": function() { if (greenBloodClock.stopClockFlag) { greenBloodClock.isClockFlashing = false; $("#greenBloodMinsField").css( "background-color", "rgb(255, 255, 255)"); $("#greenBloodSecsField").css( "background-color", "rgb(255, 255, 255)"); return; } var backgroundColor = $("#greenBloodMinsField").css( "background-color" ); //window.alert(backgroundColor) if (backgroundColor == "rgb(255, 255, 255)") { $("#greenBloodMinsField").css( "background-color", "rgb(51, 51, 51)"); $("#greenBloodSecsField").css( "background-color", "rgb(51, 51, 51)"); setTimeout(greenBloodClock.flashClock, 500); } else if (backgroundColor == "rgb(51, 51, 51)") { $("#greenBloodMinsField").css( "background-color", "rgb(255, 255, 255)"); $("#greenBloodSecsField").css( "background-color", "rgb(255, 255, 255)"); setTimeout(greenBloodClock.flashClock, 500); } //window.alert(backgroundColor); }, "rewindClock": function() { if (greenBloodClock.clockSnapshot > 0) { greenBloodClock.clockLastStopped = greenBloodClock.clockSnapshot; greenBloodClock.setClock(greenBloodClock.clockSnapshot); } $("#greenBloodRewindClockButton").addClass("disabled"); }, "setClock": function (length) { greenBloodClock.clock = length; var min = Math.floor(length / 60); var secs = length % 60; if (secs < 10) { secs = "0" + secs; } $("#greenBloodMinsField").val(min); $("#greenBloodSecsField").val(secs); scoreClock.syncColorClock("greenBlood", min, secs); }, "startClock": function() { greenBloodClock.clockState.bumpClockUpButton = $("#greenBloodBumpClockUpButton").hasClass("disabled") ? "disabled" : "enabled"; greenBloodClock.clockState.bumpClockUpButton = $("#greenBloodBumpClockUpButton").hasClass("disabled") ? "disabled" : "enabled"; greenBloodClock.clockState.bumpClockDownButton = $("#greenBloodBumpClockDownButton").hasClass("disabled") ? "disabled" : "enabled"; $("#greenBloodBumpClockUpButton").addClass("disabled"); $("#greenBloodBumpClockDownButton").addClass("disabled"); $("#greenBloodRewindClockButton").addClass("disabled"); greenBloodClock.clockSnapshot = greenBloodClock.clock; greenBloodClock.stopClockFlag = false; greenBloodClock.clockExpected = Date.now() + 1000; setTimeout(greenBloodClock.stepClock, 1000); }, "stepClock": function() { var dt = Date.now() - greenBloodClock.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 (!greenBloodClock.stopClockFlag) { var newLength = greenBloodClock.clock - 1; if (newLength <= 0 && !greenBloodClock.isClockFlashing) { greenBloodClock.isClockFlashing = true; greenBloodClock.flashClock(); } if (newLength < 0) { return; } greenBloodClock.setClock(newLength); greenBloodClock.clockExpected += 1000; setTimeout(greenBloodClock.stepClock, Math.max(0, 1000 - dt)); // take into account drift } }, "stopClock": function() { if (greenBloodClock.clockState.bumpClockUpButton != "disabled") { $("#greenBloodBumpClockUpButton").removeClass("disabled"); } if (greenBloodClock.clockState.bumpClockUpButton != "disabled") { $("#greenBloodBumpClockUpButton").removeClass("disabled"); } if (greenBloodClock.clockState.bumpClockDownButton != "disabled") { $("#greenBloodBumpClockDownButton").removeClass("disabled"); } if (greenBloodClock.clockSnapshot > 0) { $("#greenBloodRewindClockButton").removeClass("disabled"); } greenBloodClock.clockLastStopped = greenBloodClock.clock; greenBloodClock.stopClockFlag = true; }, };