/* * TODO: * * - rework use of global variables and functions into OO idioms * - initialise time wasting clock from storage in OO idiom rather * than just stray function call */ // class: one of the classes in our school var Class = function (grade, clas, total) { this.grade = grade; this.clas = clas; this.total = total; this.points = $.jStorage.get(this.grade + "_" + this.clas + "_" + "points", 0); this.time = $.jStorage.get(this.grade + "_" + this.clas + "_" + "time", 0); }; // save a class to local storage Class.prototype.save = function () { $.jStorage.set(this.grade + "_" + this.clas + "_" + "points", this.points); $.jStorage.set(this.grade + "_" + this.clas + "_" + "time", this.time); }; // modify a class's points or time Class.prototype.changePoints = function (change) { this.points = this.points + change; this.save(); updateClasses(); } Class.prototype.changeTime = function (change) { this.time = this.time + change; this.save(); updateClasses(); } // now set up all our classes var classes = [ new Class(5, 1, 30), new Class(5, 2, 30), new Class(5, 3, 30), new Class(6, 1, 19), new Class(6, 2, 18), new Class(6, 3, 19) ]; function classesComparison(a, b) { if (a.points < b.points) return 1; if (b.points < a.points) return -1; return 0; } function sortClasses() { classes.sort(classesComparison); } // function to update the HTML display of classes function updateClasses () { sortClasses(); var i = 0; $('#classes').html(""); for (i = 0; i < classes.length; i++) { var classstring = classes[i].grade + '-' + classes[i].clas; var minutes = Math.floor(classes[i].time / 60); var seconds = classes[i].time - minutes * 60; seconds = seconds.toString(); if (seconds.length == 1) seconds = "0" + seconds; if (i < 2) var colour = " style=\"background-color: lightgreen;\""; else var colour = ""; $('#classes').append('
\

' + classstring + '

\

\ ' + classes[i].points + ' points \

\

\ ' + minutes + ':' + seconds + ' this week \

\

\ Lucky number \

\
'); } } $.ionSound({ sounds: [ { name: "klaxon" }, { name: "button_tiny", }, { name: "cheonjae", }, { name: "onetwothree", }, { name: "school_bell", } ], // volume: 0.5, path: "sounds/", preload: true }); var timeWastingClock = new FlipClock($('.time-wasting-clock'), { autoStart:false, callbacks:{ interval:function () { $.ionSound.play("button_tiny"); var time = timeWastingClock.getTime().time; $.jStorage.set("time_wasted", time); } } }); timeWastingClock.setTime($.jStorage.get("time_wasted", 0)); var $timeWastingClockRunning = false; var activityClock = new FlipClock($('.activity-countdown'), { autoStart:false, countdown:true, callbacks:{ stop:function () { $.ionSound.play("cheonjae"); } } }); function timeWastingClockToggle() { if ($timeWastingClockRunning) { $('#timeWastingClockGo').html('Start timer'); timeWastingClock.stop(); $timeWastingClockRunning = false; } else { $('#timeWastingClockGo').html('Stop timer'); timeWastingClock.start(); $timeWastingClockRunning = true; } } $(document).bind('keydown', 't', timeWastingClockToggle); $(document).bind('keydown', 'j', timeWastingClockToggle); $(document).bind('keydown', 'space', timeWastingClockToggle); $(document).bind('keydown', 'd', toggleDateStyle); $(document).bind('keydown', 'k', function (){$.ionSound.play("klaxon");}); $(document).bind('keydown', 'o', function (){$.ionSound.play("onetwothree");}); $(document).bind('keydown', 'b', function (){$.ionSound.play("school_bell");}); function activityClockGo($seconds) { activityClock.setTime($seconds); activityClock.start(); } function timeWastingClockReset() { if (timeWastingClock.getTime() != 0) { var $timeWastingClockResetConfirm = confirm("Are you sure?"); if ($timeWastingClockResetConfirm) { if ($timeWastingClockRunning) { $('#timeWastingClockGo').html('Start timer'); timeWastingClock.stop(); $timeWastingClockRunning = false; } $.jStorage.set("time_wasted", 0); timeWastingClock.setTime(0); } } } function activityClockReset() { activityClock.stop(); activityClock.setTime(0); } function activityClockCustom() { var minutes = prompt("Number of minutes", "0"); var seconds = prompt("Number of seconds", "0"); activityClockGo(parseInt(minutes) * 60 + parseInt(seconds)); } // mplungjan on stack overflow: http://stackoverflow.com/a/15397495 function nth(d) { if(d>3 && d<21) return 'th'; // thanks kennebec switch (d % 10) { case 1: return "st"; case 2: return "nd"; case 3: return "rd"; default: return "th"; } } function toggleDateStyle() { var currentDate = $('#date').html(); var today = new Date(); var month = "January,February,March,April,May,June,July,August,September,October,November,December" .split(",")[today.getMonth()]; var day = "Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday" .split(",")[today.getDay()]; var date = today.getDate(); var British = day + " " + date + nth(date) + " " + month + " " + today.getFullYear(); var American = day + " " + month + " " + date + nth(date) + ", " + today.getFullYear(); if ($.jStorage.get("date_style", 0) == 0) { $('#date').html(American); $.jStorage.set("date_style", 1); } else { $('#date').html(British); $.jStorage.set("date_style", 0); } } // set initial date to British style if ($.jStorage.get("date_style", 0) == 0) $.jStorage.set("date_style", 1); else $.jStorage.set("date_style", 0); toggleDateStyle(); // expire chosen date style each day $.jStorage.setTTL("date_style", 86400); $(document).bind('keydown', 's', timeWastingClockReset); $(document).bind('keydown', 'r', activityClockReset); $(document).bind('keydown', 'c', activityClockCustom); $(document).bind('keydown', '0', function (){activityClockGo(30);}); $(document).bind('keydown', '1', function (){activityClockGo(60);}); $(document).bind('keydown', '9', function (){activityClockGo(90);}); $(document).bind('keydown', '2', function (){activityClockGo(120);}); $(document).bind('keydown', '3', function (){activityClockGo(180);}); $(document).bind('keydown', '4', function (){activityClockGo(240);}); $(document).bind('keydown', '5', function (){activityClockGo(300);}); $(document).bind('keydown', '6', function (){activityClockGo(360);}); $(document).bind('keydown', '7', function (){activityClockGo(420);}); $(document).bind('keydown', '8', function (){activityClockGo(480);}); $(document).ready(function(){ $('#klaxon').button(); $('#klaxon').click(function (){$.ionSound.play("klaxon");}); $('#bell').button(); $('#bell').click(function (){$.ionSound.play("school_bell");}); $('#one-two-three').button(); $('#one-two-three').click(function (){$.ionSound.play("onetwothree");}); $('#timeWastingClockGo').button(); $('#timeWastingClockGo').click(timeWastingClockToggle); $('#timeWastingClockReset').button(); $('#timeWastingClockReset').click(timeWastingClockReset); $('#activityClockReset').button(); $('#activityClockReset').click(activityClockReset); $('#activityClockCustom').button(); $('#activityClockCustom').click(activityClockCustom); $('#activityClock30s').button(); $('#activityClock30s').click(function (){activityClockGo(30);}) $('#activityClock60s').button(); $('#activityClock60s').click(function (){activityClockGo(60);}) $('#activityClock90s').button(); $('#activityClock90s').click(function (){activityClockGo(90);}) $('#activityClock120s').button(); $('#activityClock120s').click(function (){activityClockGo(120);}) $('#activityClock180s').button(); $('#activityClock180s').click(function (){activityClockGo(180);}) $('#activityClock240s').button(); $('#activityClock240s').click(function (){activityClockGo(240);}) $('#activityClock300s').button(); $('#activityClock300s').click(function (){activityClockGo(300);}) $('#date-toggle').button(); $('#date-toggle').click(function (){toggleDateStyle();}); updateClasses(); });