Starting and stopping led sequence with IR remote

I have been playing around trying to make a working traffic light that I can turn on and off with a remote. This is one of my first projects so probably made a mess of what I have done. Here is what I have got so far Traffic lights - Pastebin.com that makes the sequence work once when I push the play button on the remote, But I would like to make it so that sequence loops till I press a different button on the remote. Can anyone help me with how to do that please?

I, for one, am not going to download your code from some external site. If you post your code as described in the forum guidelines more members will see it.

Ok thanks, I haven't posted on here before and most forums prefer you to use pastebin than just post long sections of code

#include <IRremote.h>  
int RECV_PIN =6;     
int redPin = 9;     
int amberPin = 10;        
int greenPin = 11;   
IRrecv irrecv(RECV_PIN);     
decode_results results;     
void setup(){     
 Serial.begin(9600);     
 irrecv.enableIRIn();     
 pinMode(redPin, OUTPUT);     
 pinMode(greenPin, OUTPUT);     
 pinMode(amberPin, OUTPUT); 
}     
void loop(){   
   if (irrecv.decode(&results)){     
int value = results.value;     
Serial.println(value);          
       switch(value){     
         case 16712445: //Keypad button "Play"       
         //run light sequence    
         digitalWrite(greenPin, HIGH);     
         digitalWrite(amberPin,LOW);     
         digitalWrite(redPin, LOW);   
        delay(1000); 
         digitalWrite(greenPin, HIGH);     
         digitalWrite(amberPin,HIGH);     
         digitalWrite(redPin, LOW);
        delay(1000); 
         digitalWrite(greenPin, LOW);     
         digitalWrite(amberPin,HIGH);     
         digitalWrite(redPin, LOW);
        delay(500); 
         digitalWrite(greenPin, LOW);     
         digitalWrite(amberPin,LOW);     
         digitalWrite(redPin, HIGH);
        delay(5000);  
         digitalWrite(greenPin, LOW);     
         digitalWrite(amberPin,LOW);     
         digitalWrite(redPin, HIGH);   
        delay(1000); 
         digitalWrite(greenPin, LOW);     
         digitalWrite(amberPin,HIGH);     
         digitalWrite(redPin, HIGH);
        delay(1000); 
         digitalWrite(greenPin, LOW);     
         digitalWrite(amberPin,HIGH);     
         digitalWrite(redPin, LOW);
        delay(500); 
         digitalWrite(greenPin, HIGH);     
         digitalWrite(amberPin,LOW);     
         digitalWrite(redPin, LOW);
         }
    irrecv.resume(); // Receives the next value from the button you press
  }
  delay(10);
  }

Posting code in code tags lets everyone see it.

Many members view the forum on cell phones or tablets that do not have the IDE or a convenient way to view .ino files. Others are leery of downloading code from those ad ridden "pastebin" sites.

Using the IDE autoformat tool (ctrl-t or Tools, Auto Format) to indent the code in a standard manner, before posting the code, enhances the code readability.

#include <IRremote.h>
int RECV_PIN = 6;
int redPin = 9;
int amberPin = 10;
int greenPin = 11;
IRrecv irrecv(RECV_PIN);
decode_results results;

void setup()
{
   Serial.begin(9600);
   irrecv.enableIRIn();
   pinMode(redPin, OUTPUT);
   pinMode(greenPin, OUTPUT);
   pinMode(amberPin, OUTPUT);
}

void loop()
{
   if (irrecv.decode(&results))
   {
      int value = results.value;
      Serial.println(value);
      switch (value)
      {
         case 16712445: //Keypad button "Play"
            //run light sequence
            digitalWrite(greenPin, HIGH);
            digitalWrite(amberPin, LOW);
            digitalWrite(redPin, LOW);
            delay(1000);
            digitalWrite(greenPin, HIGH);
            digitalWrite(amberPin, HIGH);
            digitalWrite(redPin, LOW);
            delay(1000);
            digitalWrite(greenPin, LOW);
            digitalWrite(amberPin, HIGH);
            digitalWrite(redPin, LOW);
            delay(500);
            digitalWrite(greenPin, LOW);
            digitalWrite(amberPin, LOW);
            digitalWrite(redPin, HIGH);
            delay(5000);
            digitalWrite(greenPin, LOW);
            digitalWrite(amberPin, LOW);
            digitalWrite(redPin, HIGH);
            delay(1000);
            digitalWrite(greenPin, LOW);
            digitalWrite(amberPin, HIGH);
            digitalWrite(redPin, HIGH);
            delay(1000);
            digitalWrite(greenPin, LOW);
            digitalWrite(amberPin, HIGH);
            digitalWrite(redPin, LOW);
            delay(500);
            digitalWrite(greenPin, HIGH);
            digitalWrite(amberPin, LOW);
            digitalWrite(redPin, LOW);
      }
      irrecv.resume(); // Receives the next value from the button you press
   }
   delay(10);
}

Cut your switch block out and move it down to the very end of loop, outside your if block.

I don't have the opportunity to post a lot right now but if I was doing it I would use a simple state machine to control the light sequence and use millis() instead of delays. This way you can immediately stop the sequence no matter where you are in it.

Here are a couple of helpful links:

State Machine
BlinkWithoutDelay