var Whisper = Whisper || {}; (function () { 'use strict'; // This is an ephemeral collection of global notification messages to be // presented in some nice way to the user. In this case they will fade in/out // one at a time. var queue = new Backbone.Collection(); var view = new (Backbone.View.extend({ className: 'help', initialize: function() { this.$el.appendTo($('body')); this.listenToOnce(queue, 'add', this.presentNext); }, presentNext: function() { var next = queue.shift(); if (next) { this.$el.text(next.get('message')).fadeIn(this.setFadeOut.bind(this)); } else { this.listenToOnce(queue, 'add', this.presentNext); } }, setFadeOut: function() { setTimeout(this.fadeOut.bind(this), 1500); }, fadeOut: function() { this.$el.fadeOut(this.presentNext.bind(this)); }, }))(); Whisper.notify = function(str) { queue.add({message: str}); } })();