diff --git a/src/js/lib/snowfall.jquery.js b/src/js/lib/snowfall.jquery.js deleted file mode 100755 index c347a31..0000000 --- a/src/js/lib/snowfall.jquery.js +++ /dev/null @@ -1,409 +0,0 @@ -/** @license -======================================================================== - Snowfall jquery plugin version 1.51 Dec 2nd 2012 - - Licensed under the Apache License, Version 2.0 (the "License"); - you may not use this file except in compliance with the License. - You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - - Developed by Jason Brown for any bugs or questions email me at loktar69@hotmail - info on the plugin is located on Somethinghitme.com -*/ - -/* - Version 1.51 Dec 2nd 2012 - // fixed bug where snow collection didn't happen if a valid doctype was declared. - - Version 1.5 Oct 5th 2011 - Added collecting snow! Uses the canvas element to collect snow. In order to initialize snow collection use the following - - $(document).snowfall({collection : 'element'}); - - element = any valid jquery selector. - - The plugin then creates a canvas above every element that matches the selector, and collects the snow. If there are a varrying amount of elements the - flakes get assigned a random one on start they will collide. - - Version 1.4 Dec 8th 2010 - Fixed issues (I hope) with scroll bars flickering due to snow going over the edge of the screen. - Added round snowflakes via css, will not work for any version of IE. - Thanks to Luke Barker of http://www.infinite-eye.com/ - Added shadows as an option via css again will not work with IE. The idea behind shadows, is to show flakes on lighter colored web sites - Thanks Yutt - - Version 1.3.1 Nov 25th 2010 - Updated script that caused flakes not to show at all if plugin was initialized with no options, also added the fixes that Han Bongers suggested - - Developed by Jason Brown for any bugs or questions email me at loktar69@hotmail - info on the plugin is located on Somethinghitme.com - - values for snow options are - - flakeCount, - flakeColor, - flakeIndex, - minSize, - maxSize, - minSpeed, - maxSpeed, - round, true or false, makes the snowflakes rounded if the browser supports it. - shadow true or false, gives the snowflakes a shadow if the browser supports it. - - Example Usage : - $(document).snowfall({flakeCount : 100, maxSpeed : 10}); - - -or- - - $('#element').snowfall({flakeCount : 800, maxSpeed : 5, maxSize : 5}); - - -or with defaults- - - $(document).snowfall(); - - - To clear - - $('#element').snowfall('clear'); -*/ - -// requestAnimationFrame polyfill from https://github.com/darius/requestAnimationFrame -if (!Date.now) - Date.now = function() { return new Date().getTime(); }; - -(function() { - 'use strict'; - - var vendors = ['webkit', 'moz']; - for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) { - var vp = vendors[i]; - window.requestAnimationFrame = window[vp+'RequestAnimationFrame']; - window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame'] - || window[vp+'CancelRequestAnimationFrame']); - } - if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) // iOS6 is buggy - || !window.requestAnimationFrame || !window.cancelAnimationFrame) { - var lastTime = 0; - window.requestAnimationFrame = function(callback) { - var now = Date.now(); - var nextTime = Math.max(lastTime + 16, now); - return setTimeout(function() { callback(lastTime = nextTime); }, - nextTime - now); - }; - window.cancelAnimationFrame = clearTimeout; - } -}()); - -(function($){ - $.snowfall = function(element, options){ - var flakes = [], - defaults = { - flakeCount : 35, - flakeColor : '#ffffff', - flakePosition: 'absolute', - flakeIndex: 999999, - minSize : 1, - maxSize : 2, - minSpeed : 1, - maxSpeed : 5, - round : false, - shadow : false, - collection : false, - collectionHeight : 40, - deviceorientation : false - }, - options = $.extend(defaults, options), - random = function random(min, max){ - return Math.round(min + Math.random()*(max-min)); - }; - - $(element).data("snowfall", this); - - // Snow flake object - function Flake(_x, _y, _size, _speed){ - // Flake properties - this.x = _x; - this.y = _y; - this.size = _size; - this.speed = _speed; - this.step = 0; - this.stepSize = random(1,10) / 100; - - if(options.collection){ - this.target = canvasCollection[random(0,canvasCollection.length-1)]; - } - - var flakeMarkup = null; - - if(options.image){ - flakeMarkup = document.createElement("img"); - flakeMarkup.src = options.image; - }else{ - flakeMarkup = document.createElement("div"); - $(flakeMarkup).css({'background' : options.flakeColor}); - } - - $(flakeMarkup).attr({ - 'class': 'snowfall-flakes', - }).css({ - 'width' : this.size, - 'height' : this.size, - 'position' : options.flakePosition, - 'top' : this.y, - 'left' : this.x, - 'fontSize' : 0, - 'zIndex' : options.flakeIndex - }); - - if($(element).get(0).tagName === $(document).get(0).tagName){ - $('body').append($(flakeMarkup)); - element = $('body'); - }else{ - $(element).append($(flakeMarkup)); - } - - this.element = flakeMarkup; - - // Update function, used to update the snow flakes, and checks current snowflake against bounds - this.update = function(){ - this.y += this.speed; - - if(this.y > (elHeight) - (this.size + 6)){ - this.reset(); - } - - this.element.style.top = this.y + 'px'; - this.element.style.left = this.x + 'px'; - - this.step += this.stepSize; - - if (doRatio === false) { - this.x += Math.cos(this.step); - } else { - this.x += (doRatio + Math.cos(this.step)); - } - - // Pileup check - if(options.collection){ - if(this.x > this.target.x && this.x < this.target.width + this.target.x && this.y > this.target.y && this.y < this.target.height + this.target.y){ - var ctx = this.target.element.getContext("2d"), - curX = this.x - this.target.x, - curY = this.y - this.target.y, - colData = this.target.colData; - - if(colData[parseInt(curX)][parseInt(curY+this.speed+this.size)] !== undefined || curY+this.speed+this.size > this.target.height){ - if(curY+this.speed+this.size > this.target.height){ - while(curY+this.speed+this.size > this.target.height && this.speed > 0){ - this.speed *= .5; - } - - ctx.fillStyle = "#fff"; - ctx.shadowOffsetX = 1; - ctx.shadowOffsetY = 1; - ctx.shadowColor = "#000"; - ctx.shadowBlur = 1; - - if(colData[parseInt(curX)][parseInt(curY+this.speed+this.size)] == undefined){ - // console.log("1"); - colData[parseInt(curX)][parseInt(curY+this.speed+this.size)] = 1; - //ctx.fillRect(curX, (curY)+this.speed+this.size, this.size, this.size); - - ctx.beginPath(); - ctx.arc(curX, curY+this.speed+this.size, this.size / 2, 0, Math.PI * 2, true); - ctx.closePath(); - ctx.fill(); - - }else{ - // console.log("2"); - colData[parseInt(curX)][parseInt(curY+this.speed)] = 1; - //ctx.fillRect(curX, curY+this.speed, this.size, this.size); - - // ctx.fillStyle = "#f00"; - ctx.beginPath(); - ctx.arc(curX, curY+this.speed+this.size, this.size, 0, Math.PI * 2, true); - ctx.closePath(); - ctx.fill(); - } - this.reset(); - }else{ - // flow to the sides - this.speed = 1; - this.stepSize = 0; - - // console.log("3"); - - if(parseInt(curX)+1 < this.target.width && colData[parseInt(curX)+1][parseInt(curY)+1] == undefined ){ - // go left - this.x++; - }else if(parseInt(curX)-1 > 0 && colData[parseInt(curX)-1][parseInt(curY)+1] == undefined ){ - // go right - this.x--; - }else{ - //stop - ctx.fillStyle = "#fff"; - ctx.shadowOffsetX = -4; - ctx.shadowOffsetY = -4; - ctx.shadowColor = "#000"; - ctx.shadowBlur = 4; - //ctx.fillRect(curX, curY, this.size, this.size); - - ctx.beginPath(); - ctx.arc(curX, curY+this.speed+this.size, this.size, 0, Math.PI * 2, true); - ctx.closePath(); - ctx.fill(); - - colData[parseInt(curX)][parseInt(curY)] = 1; - this.reset(); - } - } - } - } - } - - if(this.x + this.size > (elWidth) - widthOffset || this.x < widthOffset){ - this.reset(); - } - } - - // Resets the snowflake once it reaches one of the bounds set - this.reset = function(){ - this.y = 0; - this.x = random(widthOffset, elWidth - widthOffset); - this.stepSize = random(1,10) / 100; - this.size = random((options.minSize * 100), (options.maxSize * 100)) / 100; - this.element.style.width = this.size + 'px'; - this.element.style.height = this.size + 'px'; - this.speed = random(options.minSpeed, options.maxSpeed); - } - } - - // local vars - var i = 0, - elHeight = $(element).height(), - elWidth = $(element).width(), - widthOffset = 0, - snowTimeout = 0; - - // Collection Piece ****************************** - if(options.collection !== false){ - var testElem = document.createElement('canvas'); - if(!!(testElem.getContext && testElem.getContext('2d'))){ - var canvasCollection = [], - elements = $(options.collection), - collectionHeight = options.collectionHeight; - - for(var i =0; i < elements.length; i++){ - var bounds = elements[i].getBoundingClientRect(), - $canvas = $('', - { - 'class' : 'snowfall-canvas' - }), - collisionData = []; - - if(bounds.top-collectionHeight > 0){ - $('body').append($canvas); - - $canvas.css({ - 'position' : options.flakePosition, - 'left' : bounds.left + 'px', - 'top' : bounds.top-collectionHeight + 'px' - }) - .prop({ - width: bounds.width, - height: collectionHeight - }); - - for(var w = 0; w < bounds.width; w++){ - collisionData[w] = []; - } - - canvasCollection.push({ - element : $canvas.get(0), - x : bounds.left, - y : bounds.top-collectionHeight, - width : bounds.width, - height: collectionHeight, - colData : collisionData - }); - } - } - }else{ - // Canvas element isnt supported - options.collection = false; - } - } - // ************************************************ - - // This will reduce the horizontal scroll bar from displaying, when the effect is applied to the whole page - if($(element).get(0).tagName === $(document).get(0).tagName){ - widthOffset = 25; - } - - // Bind the window resize event so we can get the innerHeight again - $(window).bind("resize", function(){ - elHeight = $(element)[0].clientHeight; - elWidth = $(element)[0].offsetWidth; - }); - - - // initialize the flakes - for(i = 0; i < options.flakeCount; i+=1){ - flakes.push(new Flake(random(widthOffset,elWidth - widthOffset), random(0, elHeight), random((options.minSize * 100), (options.maxSize * 100)) / 100, random(options.minSpeed, options.maxSpeed))); - } - - // This adds the style to make the snowflakes round via border radius property - if(options.round){ - $('.snowfall-flakes').css({'-moz-border-radius' : options.maxSize, '-webkit-border-radius' : options.maxSize, 'border-radius' : options.maxSize}); - } - - // This adds shadows just below the snowflake so they pop a bit on lighter colored web pages - if(options.shadow){ - $('.snowfall-flakes').css({'-moz-box-shadow' : '1px 1px 1px #555', '-webkit-box-shadow' : '1px 1px 1px #555', 'box-shadow' : '1px 1px 1px #555'}); - } - - // On newer Macbooks Snowflakes will fall based on deviceorientation - var doRatio = false; - if (options.deviceorientation) { - $(window).bind('deviceorientation', function(event) { - doRatio = event.originalEvent.gamma * 0.1; - }); - } - - // this controls flow of the updating snow - function snow(){ - for( i = 0; i < flakes.length; i += 1){ - flakes[i].update(); - } - - snowTimeout = requestAnimationFrame(function(){snow()}); - } - - snow(); - - // clears the snowflakes - this.clear = function(){ - $('.snowfall-canvas').remove(); - $(element).children('.snowfall-flakes').remove(); - cancelAnimationFrame(snowTimeout); - } - }; - - // Initialize the options and the plugin - $.fn.snowfall = function(options){ - if(typeof(options) == "object" || options == undefined){ - return this.each(function(i){ - (new $.snowfall(this, options)); - }); - }else if (typeof(options) == "string") { - return this.each(function(i){ - var snow = $(this).data('snowfall'); - if(snow){ - snow.clear(); - } - }); - } - }; -})(jQuery); \ No newline at end of file diff --git a/src/js/views/html/SeasonalWaiter.js b/src/js/views/html/SeasonalWaiter.js index a87ffef..3de85a1 100755 --- a/src/js/views/html/SeasonalWaiter.js +++ b/src/js/views/html/SeasonalWaiter.js @@ -19,17 +19,7 @@ var SeasonalWaiter = module.exports = function(app, manager) { * Loads all relevant items depending on the current date. */ SeasonalWaiter.prototype.load = function() { - var now = new Date(); - - // Snowfall - if (now.getMonth() === 11 && now.getDate() > 12) { // Dec 13 -> Dec 31 - this.app.options.snow = false; - this.createSnowOption(); - $(document).on("switchChange.bootstrapSwitch", ".option-item input:checkbox[option='snow']", this.letItSnow.bind(this)); - window.addEventListener("resize", this.letItSnow.bind(this)); - this.manager.addListeners(".btn", "click", this.shakeOffSnow, this); - if (now.getDate() === 25) this.letItSnow(); - } + //var now = new Date(); // SpiderChef // if (now.getMonth() === 3 && now.getDate() === 1) { // Apr 1 @@ -92,99 +82,6 @@ SeasonalWaiter.prototype.insertSpiderText = function() { }; -/** - * Adds an option to make it snow. - * #letitsnow - */ -SeasonalWaiter.prototype.createSnowOption = function() { - var optionsBody = document.getElementById("options-body"), - optionItem = document.createElement("div"); - - optionItem.className = "option-item"; - optionItem.innerHTML = - "\ - Let it snow"; - optionsBody.appendChild(optionItem); - - this.manager.options.load(); -}; - - -/** - * Initialises a snowstorm. - * #letitsnow - */ -SeasonalWaiter.prototype.letItSnow = function() { - $(document).snowfall("clear"); - if (!this.app.options.snow) return; - - var options = {}, - firefoxVersion = navigator.userAgent.match(/Firefox\/(\d\d?)/); - - if (firefoxVersion && parseInt(firefoxVersion[1], 10) < 30) { - // Firefox < 30 - options = { - flakeCount: 10, - flakeColor: "#fff", - flakePosition: "absolute", - minSize: 1, - maxSize: 2, - minSpeed: 1, - maxSpeed: 5, - round: false, - shadow: false, - collection: false, - collectionHeight: 20, - deviceorientation: true - }; - } else { - // All other browsers - options = { - flakeCount: 35, - flakeColor: "#fff", - flakePosition: "absolute", - minSize: 5, - maxSize: 8, - minSpeed: 1, - maxSpeed: 5, - round: true, - shadow: true, - collection: ".btn", - collectionHeight: 20, - deviceorientation: true - }; - } - - $(document).snowfall(options); -}; - - -/** - * When a button is clicked, shake the snow off that button. - * #letitsnow - */ -SeasonalWaiter.prototype.shakeOffSnow = function(e) { - var el = e.target, - rect = el.getBoundingClientRect(), - canvases = document.querySelectorAll("canvas.snowfall-canvas"), - canvas = null, - removeFunc = function() { - ctx.clearRect(0, 0, canvas.width, canvas.height); - $(this).fadeIn(); - }; - - for (var i = 0; i < canvases.length; i++) { - canvas = canvases[i]; - if (canvas.style.left === rect.left + "px" && canvas.style.top === (rect.top - 20) + "px") { - var ctx = canvas.getContext("2d"); - - $(canvas).fadeOut("slow", removeFunc); - break; - } - } -}; - - /** * Listen for the Konami code sequence of keys. Turn the page upside down if they are all heard in * sequence. diff --git a/src/js/views/html/main.js b/src/js/views/html/main.js index c3b48f9..1da9ac2 100755 --- a/src/js/views/html/main.js +++ b/src/js/views/html/main.js @@ -39,7 +39,6 @@ var main = function() { errorTimeout : 4000, autoBakeThreshold : 200, attemptHighlight : true, - snow : false, }; document.removeEventListener("DOMContentLoaded", main, false);