/*! (c) 2012 Uzi Kilon, Splunk Inc. Backbone Poller 0.2.8 https://github.com/uzikilon/backbone-poller Backbone Poller may be freely distributed under the MIT license. */ !function(a,b){"use strict";"function"==typeof define&&define.amd?define(["underscore","backbone"],b):a.Backbone.Poller=b(a._,a.Backbone)}(this,function(a,b){"use strict";function c(b){return a.find(j,function(a){return a.model===b})}function d(a,b){this.model=a,this.set(b)}function e(b){if(g(b)){var c=a.extend({},b.options,{success:function(a,c){b.trigger("success",a,c),f(b)},error:function(a,c){b.stop({silent:!0}),b.trigger("error",a,c)}});b.trigger("fetch",b.model),b.xhr=b.model.fetch(c)}}function f(b){g(b)&&(b.timeoutId=a.delay(e,b.options.delay,b))}function g(a){return a.options.active?a.options.condition(a.model)!==!0?(a.stop({silent:!0}),a.trigger("complete",a.model),!1):!0:!1}var h={delay:1e3,condition:function(){return!0}},i=["start","stop","fetch","success","error","complete"],j=[],k={get:function(a,b){var e=c(a);return e?e.set(b):(e=new d(a,b),j.push(e)),b&&b.autostart===!0&&e.start({silent:!0}),e},size:function(){return j.length},reset:function(){for(;j.length;)j.pop().stop()}};return a.extend(d.prototype,b.Events,{set:function(c){return this.options=a.extend({},h,c||{}),this.options.flush&&this.off(),a.each(i,function(b){var c=this.options[b];a.isFunction(c)&&(this.off(b,c,this),this.on(b,c,this))},this),this.model instanceof b.Model&&this.model.on("destroy",this.stop,this),this.stop({silent:!0})},start:function(a){return this.active()||(a&&a.silent||this.trigger("start",this.model),this.options.active=!0,this.options.delayed?f(this):e(this)),this},stop:function(a){return a&&a.silent||this.trigger("stop",this.model),this.options.active=!1,this.xhr&&this.xhr.abort&&this.xhr.abort(),this.xhr=null,clearTimeout(this.timeoutId),this.timeoutId=null,this},active:function(){return this.options.active===!0}}),k.prototype=d.prototype,k});