Count the number of SEQUENTIAL button pushes, turn LED on for N x DELAY

Greets!

I am trying to accomplish the following:

  1. Arduino counts sequential button pushes
    (Second push needs to happen inside a time interval of 1000ms or less after the first push to get counted)
  2. Turns LED on immediately after the first push, and holds it on for the the time that equals the number of sequential pushes multiplied by 1000ms
  3. Ideally, any push that happens during the time LED is on, should get added to the count
  4. Turns LED off, clears push count

I have tried messing with the StateChangeDetection example:

This example code is in the public domain.

 http://arduino.cc/en/Tutorial/ButtonStateChange

 */

// this constant won't change:
const int  buttonPin = 2;    // the pin that the pushbutton is attached to
const int ledPin = 13;       // the pin that the LED is attached to

// Variables will change:
int buttonPushCounter = 0;   // counter for the number of button presses
int buttonState = 0;         // current state of the button
int lastButtonState = 0;     // previous state of the button

void setup() {
  // initialize the button pin as a input:
  pinMode(buttonPin, INPUT);
  // initialize the LED as an output:
  pinMode(ledPin, OUTPUT);
  // initialize serial communication:
  Serial.begin(9600);
}


void loop() {
  // read the pushbutton input pin:
  buttonState = digitalRead(buttonPin);

  // compare the buttonState to its previous state
  if (buttonState != lastButtonState) {
    // if the state has changed, increment the counter
    if (buttonState == HIGH) {
      // if the current state is HIGH then the button
      // wend from off to on:
      buttonPushCounter++;
      Serial.println("on");
      Serial.print("number of button pushes:  ");
      Serial.println(buttonPushCounter);
    }
    else {
      // if the current state is LOW then the button
      // wend from on to off:
      Serial.println("off");
    }
    // Delay a little bit to avoid bouncing
    delay(50);
  }
  // save the current state as the last state,
  //for next time through the loop
  lastButtonState = buttonState;


  // turns on the LED every four button pushes by
  // checking the modulo of the button push counter.
  // the modulo function gives you the remainder of
  // the division of two numbers:
/*  if (buttonPushCounter % 4 == 0) {
    digitalWrite(ledPin, HIGH);*/
  if (buttonState == HIGH) {
    // turn LED on:
    digitalWrite(ledPin, HIGH);
    delay(1000 * buttonPushCounter);
    //buttonPushCounter = 0;

  } else {
    digitalWrite(ledPin, LOW);
  }

}

I added the delay multiplied by buttonPushCounter, it does work but it doesn't reset the counter at the end of the function, adding the pushButtonCounter = 0 didn't help much, it resets the counter after every push.
Since I am not a programmer I don't know better, but I do know that this is the wrong way to tackle this problem.

There should be a simple solution here (for someone who knows what he is doing), any help would be appreciated! Thanks!

Read, understand and learn the principle used in the 'Blink Without Delay' example in the IDE. It's also in the Tutorial pages of this site.