Need a 10 second timer on green Led

Hi
First time to ask a question. Hope any one can help me. I thank you beforehand.

I have a program and works fine.
Function
1 press button . Result Led green ON
2 press same button Result Leds green & yellow OFF
3 Press same button Result Led yellow ON
4 Press same Button Result Leds green & yellow OFF

Then just loop in this manner

Now would like to make a 10 second timer on each Led so when in ON state they will switch OFF after 10 second. I tried with delay but did not work.

See program underneath
// Sunday 02 06 2018
// First attempt to 2 WAY and OFF Latch Switch

#define button 5
#define greenLED 6
#define yellowLED 7

int state = 0;
int old = 0;
int buttonPoll = 0;

void setup(){
pinMode(button,INPUT);
pinMode(greenLED,OUTPUT);
pinMode(yellowLED,OUTPUT);

digitalWrite (greenLED, LOW);
digitalWrite (yellowLED, LOW);

}

void loop()
{
buttonPoll = digitalRead (button);
if ( buttonPoll == 1 ) {
delay (50) ;
buttonPoll = digitalRead (button);
if ( buttonPoll == 0 )
{
state = old + 1;
}}
else {
delay (100);
}

switch (state) {
case 1:
digitalWrite (greenLED, HIGH);
digitalWrite (yellowLED, LOW);
old = state;
break;

case 2:
digitalWrite (greenLED, LOW);
digitalWrite (yellowLED, LOW);
old = state;
break;

case 3:
digitalWrite (greenLED, LOW);
digitalWrite (yellowLED, HIGH);
old = state;
break;
default:
digitalWrite (greenLED, LOW);
digitalWrite (yellowLED, LOW);
old = 0;
break;
}
}

You need to use millis() for timing rather than delay() so that the program does not become stalled. Look at Using millis() for timing. A beginners guide, Several things at the same time and look at the BlinkWithoutDelay example in the IDE.