Pastebin launched a little side project called VERYVIRAL.com, check it out ;-) Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Aug 24th, 2012  |  syntax: JavaScript  |  size: 2.14 KB  |  views: 5  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
This paste has a previous version, view the difference. Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. (function($,sr){
  2.  
  3.   // debouncing function from John Hann
  4.   // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
  5.  
  6.   var debounce = function (func, threshold, execAsap) {
  7.       var timeout;
  8.  
  9.       return function debounced () {
  10.           var obj = this, args = arguments;
  11.           function delayed () {
  12.               if (!execAsap)
  13.                   func.apply(obj, args);
  14.               timeout = null;
  15.           };
  16.  
  17.           if (timeout)
  18.               clearTimeout(timeout);
  19.           else if (execAsap)
  20.               func.apply(obj, args);
  21.  
  22.           timeout = setTimeout(delayed, threshold || 25);
  23.       };
  24.   }
  25.         // smartresize
  26.         jQuery.fn[sr] = function(fn){  return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
  27.  
  28. })(jQuery,'smartresize');
  29.  
  30.                 // errors
  31.                 var log = console.log, warn = console.warn;
  32.                 var error = {
  33.                         console: function(error){
  34.                                 warn('error: ' + error.type);
  35.                         },
  36.                         ui: function(){
  37.                                 return false;
  38.                         }
  39.                 }
  40.  
  41.                 // events
  42.                 var _event = {
  43.                         _resizes: [],
  44.                         register: function(type,exec,cb){
  45.                                 switch(type){
  46.                                         case 'resize':
  47.                                                 this._resizes.push(exec); if(cb)cb();
  48.                                                 break;
  49.                                         default:
  50.                                                 return false;
  51.                                                 break;
  52.                                 }
  53.                         },
  54.                         fire: function(type){
  55.                                 switch(type){
  56.                                         case "resize":
  57.                                                 for(var i in this._resizes){
  58.                                                         this._resizes[i]();
  59.                                                 }
  60.                                                 break;
  61.                                         default:
  62.                                                 return false;
  63.                                                 break;
  64.                                 }
  65.                         }
  66.                 }
  67.  
  68.                 // globals
  69.                 var _var = {
  70.                         window: { h: 0, w: 0 }
  71.                 }
  72.  
  73.                 // main app
  74.                 var _main = {
  75.                         init: function(){
  76.                                 log('main init');
  77.                                 _event.register('resize',function(){
  78.                                         log('I fired');
  79.                                 });
  80.                                 _event.register('resize',function(){
  81.                                         log('I fired too');
  82.                                 });
  83.                         }
  84.                 }
  85.  
  86.                 $(function() {
  87.                         // dfd for init
  88.                         function initResize(){
  89.                                 return $.Deferred(function( dfd ){
  90.                                         $(window).smartresize(function(e) {
  91.                                                 _var.window.h = e.target.innerHeight; _var.window.w = e.target.innerWidth;
  92.                                                 _event.fire('resize');
  93.                                         }).trigger('resize');
  94.                                         log('resize init');
  95.                                 }).promise();
  96.                         }
  97.  
  98.                         $.when( initResize() ).then(_main.init());
  99.  
  100.                 });