Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (function($,sr){
- // debouncing function from John Hann
- // http://unscriptable.com/index.php/2009/03/20/debouncing-javascript-methods/
- var debounce = function (func, threshold, execAsap) {
- var timeout;
- return function debounced () {
- var obj = this, args = arguments;
- function delayed () {
- if (!execAsap)
- func.apply(obj, args);
- timeout = null;
- };
- if (timeout)
- clearTimeout(timeout);
- else if (execAsap)
- func.apply(obj, args);
- timeout = setTimeout(delayed, threshold || 25);
- };
- }
- // smartresize
- jQuery.fn[sr] = function(fn){ return fn ? this.bind('resize', debounce(fn)) : this.trigger(sr); };
- })(jQuery,'smartresize');
- // errors
- var log = console.log, warn = console.warn;
- var error = {
- console: function(error){
- warn('error: ' + error.type);
- },
- ui: function(){
- return false;
- }
- }
- // events
- var _event = {
- _resizes: [],
- register: function(type,exec,cb){
- switch(type){
- case 'resize':
- this._resizes.push(exec); if(cb)cb();
- break;
- default:
- return false;
- break;
- }
- },
- fire: function(type){
- switch(type){
- case "resize":
- for(var i in this._resizes){
- this._resizes[i]();
- }
- break;
- default:
- return false;
- break;
- }
- }
- }
- // globals
- var _var = {
- window: { h: 0, w: 0 }
- }
- // main app
- var _main = {
- init: function(){
- log('main init');
- _event.register('resize',function(){
- log('I fired');
- });
- _event.register('resize',function(){
- log('I fired too');
- });
- }
- }
- $(function() {
- // dfd for init
- function initResize(){
- return $.Deferred(function( dfd ){
- $(window).smartresize(function(e) {
- _var.window.h = e.target.innerHeight; _var.window.w = e.target.innerWidth;
- _event.fire('resize');
- }).trigger('resize');
- log('resize init');
- }).promise();
- }
- $.when( initResize() ).then(_main.init());
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement