function pinger() {
	if ( typeof( pinger._initialized ) == "undefined" ) {
		
		this.pingTimer;

		this.idle = true;

		this.lastActivity = 0;
		this.inactivePing = 10; // seconds
		this.activePing = 2.5; // seconds
		this.idleTime = 30; // seconds
		this.stopTime = 60; // minutes

		pinger.prototype.build = function() {
			this._ping = new YAHOO.util.CustomEvent( "ping" );
			this.pingTimer = setInterval( this.ping, this.activePing * 1000 );
		}

		pinger.prototype.ping = function() {
			dash_loader.pinger._ping.fire();
			dash_loader.pinger.checkIdle();
		}

		pinger.prototype.checkIdle = function() {
			     
			var idleStamp = getTime() - ( this.idleTime * 1000 );
			var stopStamp = getTime() - ( this.stopTime * 60 * 1000 );

			if ( this.lastActivity < stopStamp ) {
				this._ping.unsubscribeAll();
			} else if ( this.lastActivity < idleStamp ) {
				if ( !this.idle ) {
					this.idle = true;
					clearInterval( this.pingTimer );
					this.pingTimer = setInterval( this.ping, this.inactivePing * 1000 ); // begin to ping
				}
			} else {
				if ( this.idle ) {
					this.idle = false;
					clearInterval( this.pingTimer );
					this.pingTimer = setInterval( this.ping, this.activePing * 1000 ); // begin to ping
				}
			}

		}

		pinger.prototype.updateActivity = function() {
			this.lastActivity = getTime();
		}

		pinger._initialized = true;
	} // end if undefined

} // end pinger
