Please guide a beginner! Different LED actions controlled by a button.

Hello! I am a very beginner with the arduino IDE and exploring tutorials, but can't find the reference for a function like this.

I have a button attached to the digital port 3 and i'm trying to control LED (13) with it based on conditions of a lad state and press duration.

Basicly on Arduino Nano power on LED state is LOW, with the one short press LED turn's on for a 3 sec and then gets back off, with long (3sec) press turns on until the next short press that will turn it off again!

I will be really thankful for any advice on it.

Always show us your ‘current’ compete sketch.
Use CTRL T to format the sketch.
Please use code tags. Use the </> icon in the posting menu.

[code] Paste sketch here. [/code]

Show us a good schematic of your circuit.
Show us a good image of your wiring.

I am attaching what i have on the moment, but to be true i am not sure my thoughts are running in the right direction.
My current code state is:

int LED1 = 13;
int button = 3;

boolean LED1State = false;

long buttonTimer = 0;
long longPressTime = 500;

boolean buttonActive = false;
boolean longPressActive = false;

void setup() {

  pinMode(LED1, OUTPUT);
  pinMode(button, INPUT);

}

void loop() {

  if (digitalRead(button) == HIGH) {

    if (buttonActive == false) {

      buttonActive = true;
      buttonTimer = millis();

    }

    if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) {

// KEEP LED ON AND WAIT FOR THE ACTION TO TURN OFF

    }

  } else {

    if (buttonActive == true) {

      if (longPressActive == true) {

        longPressActive = false;

      } else {

// KEEP LED ON FOR 3SEC

      }

      buttonActive = false;

    }

  }

}

My wiring schematic is same as in official button tutorials, except the detail that my button is on digital pin #3

See the 2 notes I put in your code:

int LED1 = 13;
int button = 3;

boolean LED1State = false;

long buttonTimer = 0;
long longPressTime = 500;

boolean buttonActive = false;
boolean longPressActive = false;

void setup() {

  pinMode(LED1, OUTPUT);
  pinMode(button, INPUT);

}

void loop() {

  if (digitalRead(button) == HIGH) {

    if (buttonActive == false) {

      buttonActive = true;
      buttonTimer = millis();

    }

    if ((millis() - buttonTimer > longPressTime) && (longPressActive == false)) {

// KEEP LED ON AND WAIT FOR THE ACTION TO TURN OFF            No statement in this if( )

    }

  } else {

    if (buttonActive == true) {

      if (longPressActive == true) {

        longPressActive = false;

      } else {

// KEEP LED ON FOR 3SEC                                       No statement in this else

      }

      buttonActive = false;

    }

  }

}