View difference between Paste ID: iTEUz5zK and
SHOW: | | - or go back to the newest paste.
1-
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
		});