/*
	Copyright (c) 2004-2008, The Dojo Foundation All Rights Reserved.
	Available via Academic Free License >= 2.1 OR the modified BSD license.
	see: http://dojotoolkit.org/license for details
*/


if(!dojo._hasResource["dojox.timing.Streamer"]){dojo._hasResource["dojox.timing.Streamer"]=true;dojo.provide("dojox.timing.Streamer");dojo.require("dojox.timing._base");dojox.timing.Streamer=function(_1,_2,_3,_4,_5){var _6=this;var _7=[];this.interval=_3||1000;this.minimumSize=_4||10;this.inputFunction=_1||function(q){};this.outputFunction=_2||function(_9){};var _a=new dojox.timing.Timer(this.interval);var _b=function(){_6.onTick(_6);if(_7.length<_6.minimumSize){_6.inputFunction(_7);}var _c=_7.shift();while(typeof (_c)=="undefined"&&_7.length>0){_c=_7.shift();}if(typeof (_c)=="undefined"){_6.stop();return;}_6.outputFunction(_c);};this.setInterval=function(ms){this.interval=ms;_a.setInterval(ms);};this.onTick=function(_e){};this.start=function(){if(typeof (this.inputFunction)=="function"&&typeof (this.outputFunction)=="function"){_a.start();return;}throw new Error("You cannot start a Streamer without an input and an output function.");};this.onStart=function(){};this.stop=function(){_a.stop();};this.onStop=function(){};_a.onTick=this.tick;_a.onStart=this.onStart;_a.onStop=this.onStop;if(_5){_7.concat(_5);}};}