YUI.add("poller",function(D){var R,M="poller",I=D.Lang.isObject,K=D.Lang.isString,N=D.Lang.isNumber,H=D.Lang.isBoolean,J="interval",F="url",S="queryParams",O="headers",B="timeout",E="pauseInactive",L="polling",Q="start",A="stop",P="request",C="response",G="modified";R=function(T){R.superclass.constructor.apply(this,arguments);};D.mix(R,{NAME:M,ATTRS:{interval:{value:10000,validator:N},url:{value:null,validator:K},queryParams:{value:null,validator:K},headers:{value:null,validator:I},timeout:{value:5000,set:function(U){var T=this.get(J);return(U<=T)?U:T;},validator:N},pauseInactive:{value:false,validator:H},polling:{value:false,readOnly:true}}});D.extend(R,D.Base,{_poller:null,_modifiedDate:null,_etag:null,_paused:false,_focusHandle:null,_blurHandle:null,initializer:function(T){this.after("intervalChange",this._afterIntervalChange);this.after("urlChange",this._afterUrlChange);this.after("headersChange",this._afterHeadersChange);this.after("pauseInactiveChange",this._afterPauseInactiveChange);this.publish(Q);this.publish(A);this.publish(P);this.publish(C);this.publish(G);if(this.get(E)){this._enablePauseInactive();}},destructor:function(){this.stop();this._disablePauseInactive();},start:function(){this._clearPause();this._startPolling();this._set(L,true);return this;},stop:function(){this._clearPause();this._stopPolling();this._set(L,false);return this;},pause:function(T){this.stop();if(N(T)){this._paused=D.later(T,this,this.start);}return this;},_startPolling:function(){if(!this._poller){this.fire(Q);this.sendRequest();this._poller=D.later(this.get(J),this,this.sendRequest,null,true);}},_stopPolling:function(){if(this._poller){this._poller.cancel();this._poller=null;this.fire(A);}},_clearPause:function(){if(this._paused){this._paused.cancel();this._paused=false;}},sendRequest:function(){var U,V,T;V=this.get(O);if(this._etag){V=D.merge(V,{"If-None-Match":this._etag});}else{if(this._modifiedDate){V=D.merge(V,{"If-Modified-Since":this._modifiedDate});}}U={method:"GET",data:this.get(S),headers:V,on:{complete:this._handleResponse,success:this._handleModified},context:this,timeout:this.get(B)};T=D.io(this.get(F),U);this.fire(P,T);return this;},_handleResponse:function(V,U,T){this.fire(C,V,U,T);},_handleModified:function(V,U,T){this._etag=U.getResponseHeader("Etag");this._modifiedDate=U.getResponseHeader("Last-Modified");this.fire(G,V,U,T);},_enablePauseInactive:function(){this._focusHandle=D.on("focus",this._handleFocus,window,this);this._blurHandle=D.on("blur",this._handleBlur,window,this);},_disablePauseInactive:function(){this._focusHandle.detach();this._blurHandle.detach();},_handleFocus:function(T){if(this.get(L)&&D.Node.getDOMNode(T.target)===document){this._startPolling();}},_handleBlur:function(T){if(this.get(L)&&D.Node.getDOMNode(T.target)===document){this._stopPolling();}},_afterIntervalChange:function(T){if(this.get(L)){this._stopPolling();this._startPolling();}},_afterUrlChange:function(T){this._etag=null;this._modifiedDate=null;if(this.get(L)){this.sendRequest();}},_afterHeadersChange:function(T){this._etag=null;this._modifiedDate=null;if(this.get(L)){this.sendRequest();}},_afterPauseInactiveChange:function(T){if(T.newVal===true){this._enablePauseInactive();}else{this._disablePauseInactive();}}});D.Poller=R;},"@VERSION@",{requires:["io-base","base"]});
