package {
   import flash.display.Sprite;
   import flash.events.TimerEvent;
   import flash.utils.Timer;

   [SWF(width="330", height="330", backgroundColor="#FFFFFF", frameRate="20")]
   public class DiscoGrid extends Sprite
   {
      private var radius:int = 16;
      private var padding:int = 5;
      private var gridSize:int = 10;
      private var timer:Timer;
      private var foregroundSprite:Sprite;
      private var framesPerSecond:int = 8;
      
      public function DiscoGrid()
      {         
         graphics.clear();
         var bg:Sprite = background();
         this.addChild(bg);

         var delay:Number = 1000 / framesPerSecond
         timer = new Timer(delay);
         timer.addEventListener(TimerEvent.TIMER, onTimerTick);
         timer.start();
      }

      private function onTimerTick(event:TimerEvent):void
      {
         if(foregroundSprite) { removeChild(foregroundSprite); }
         foregroundSprite = foreground();
         addChild(foregroundSprite);
      }
      
      private function foreground():Sprite
      {
         var sprite:Sprite = new Sprite();
         var qty:int = 0;
         for(var i:int = 0; i < gridSize; i++)
         {
            for(var j:int = 0; j < gridSize; j++)
            {
                  qty++;
                  var ball:Ball = new Ball(Math.random() * radius * 1.2);
                  ball.x = radius+padding+(i*radius*2);
                  ball.y = radius+padding+(j*radius*2);
                  ball.draw();
                  sprite.addChild(ball);
            }
         }
         return sprite;
      }
            
      private function background():Sprite
      {
         var sprite:Sprite = new Sprite();
         sprite.graphics.beginFill(0xFFFFFF);
         var dim:int = gridSize * (2*radius) + (2*padding);
         sprite.graphics.drawRect(0, 0, dim, dim);
         sprite.graphics.endFill();
         return sprite;
      }
      
      
      
   }
}