Advertisement
Guest User

Untitled

a guest
Aug 24th, 2012
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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.         });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement