RGB LED STRIP programming question

thanks for the reply john. unfortunately your code didnt really work. if you push the button, nothing really happens. if you hold down the button, the first led changes random colors then nothing happens. i tried to add the fastspi_led.show; in the for loop but it didnt help. i think i understand what you were trying to do, have the first led light up when the button is pressed then have that led "move" in the for loop.

i messed around with my code a bit and tried to use a switch case where case 0: is leds off and case: 1 is the leds chasing down. i ran into a problem when trying to put an if statement before the switch case which would have the button control the variable for the switch. i tired to use an if without brackets before my switch but it doesnt get declared when the button is pressed.
here is my switch code. notice the comments at the beginning of the loop. let me know what you think.

#include <FastSPI_LED.h>

//GREEN pin13
//RED pin11
#define NUM_LEDS 96

struct CRGB { 
  unsigned char r; 
  unsigned char g; 
  unsigned char b; 
};

struct CRGB *leds;

#define PIN 4

void setup() {
  pinMode(5, INPUT);
  FastSPI_LED.setLeds(NUM_LEDS);
  FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2801);
  FastSPI_LED.setDataRate(3);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_LPD6803);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_HL1606);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_595);
  //FastSPI_LED.setChipset(CFastSPI_LED::SPI_WS2801);

  FastSPI_LED.setPin(PIN);

  FastSPI_LED.init();
  FastSPI_LED.start();

  leds = (struct CRGB*)FastSPI_LED.getRGBData(); 
  memset(leds, 0, NUM_LEDS * 3);
}

void loop() { 
int j=0;  //declare switch variable as 0
int button = analogRead(5);   //if button is pressed my switch variable
    if(button > 1000) int j=1;  //should change to 1 but it doesnt
       switch(j) {        //when running the sketch, variable stays 0 and button doesnt change it.
                      //i could put everything after the if statement in brackets but,
                      //the switch doesnt work the way i want it to- i have to wait for
                   //it to run through all the leds before the button works again. 
                   //i thought if the button could declare the variable then the switch
                   //could work each time i press the button, regardless whether or not 
                   //the loop has run through all the leds.
          case 0:
               for(int i=0; i<NUM_LEDS; i++){    
               leds[i].r = 0;
               leds[i].g = 0;
               leds[i].b = 0;
               FastSPI_LED.show();
               delay(30);
               }          break;
           
          case 1:
               for(int i=0; i<NUM_LEDS; i++){
               leds[i].r = 255;
               leds[i].g = 255;
               leds[i].b = 255;
               FastSPI_LED.show();
               delay(30); 
               leds[i].r = 0;
               leds[i].g = 0;
               leds[i].b = 0;
               FastSPI_LED.show();
               delay(30);
               }          break;
      }
  }