Not resetting after loop

Hi,
I have a program that triggers 5 led flashes when a button is pushed. I have it working but it only works once. That is if I push the button a second time after it has finished flashing it does nothing. What am I missing?

thanks

const int SwitchPIN1 = 7;
const int LightRelay1 = 2;
int count = 0;      //var to hold the loop counter number
int interval1 = 500;         // how long between intervals
boolean SwitchPINState = LOW;
boolean ledState = LOW;
long StartTime = 0;          // long to hold system time from millis()

void setup() {

  pinMode (SwitchPIN1, INPUT);
  pinMode (LightRelay1, OUTPUT);
  Serial.begin(9600);

}

void loop() {

  SwitchPINState = digitalRead (SwitchPIN1);                 // Read switch position

  while (SwitchPINState == HIGH && count < 10) {

    if ( millis() - StartTime > interval1) {                 // half a second has passed,change ledstate
      ledState = !ledState;                                  // toggles the ledState between true/false
      digitalWrite(LightRelay1, ledState);                   // make the led change on/off
      StartTime = millis();
      count++;                                                // Increment loop counter
      Serial.print (count);


    }
  }

  SwitchPINState = LOW;

} // End void Loop

You never set count back to 0 so once it is 10 it stays there so you never enter the while loop.