Help request for using & understanding FADE control

So I’m having fun using the IR remote making different patterns for Christmas lights.
I found some code for creating a fading effect although the actual link calls it breathing.
When I added this function, the time lag has become excessively long.
Could someone help with explaining what might be causing such a long wait time ?
When I push the remote buttons for JUMP3 or JUMP7, they both work well and switch nicely but after pushing FADE3, I might as well power down and restart.

any and all comments welcomed

#include "IRremote.h"
#include <Adafruit_NeoPixel.h>
#define PIN 6

Adafruit_NeoPixel strip = Adafruit_NeoPixel(150, PIN, NEO_GRB + NEO_KHZ800);

int a = 3;
int c = 0;
int d = 5;
int m = 0;
int receiver = 3;
const unsigned long RedLEDinterval = 700;
const unsigned long OrangeLEDinterval = 700;
unsigned long RedLEDtimer;
unsigned long OrangeLEDtimer;
unsigned long GreenLEDtimer;
unsigned long BlueLEDtimer;

IRrecv irrecv(receiver);  
decode_results results;  

void setup()  
{
  Serial.begin(9600);
  irrecv.enableIRIn();
  RedLEDtimer = millis (); 
  OrangeLEDtimer = millis (); 

  Serial.println("IR Receiver Raw Data + Button Decode Test");
}

void loop()  
{
  if (irrecv.decode(&results)) 
  {
    irrecv.resume(); 
  } 
  switch(results.value)
  {

  case 0xFF20DF: 
    Serial.println("JUMP 3");
    JUMP3();
    break;
  case 0xFFA05F: 
    Serial.println("JUMP 7");
    JUMP7();
    break;
  case 0xFF609F: 
    Serial.println("FADE 3");
    FADE3 ();
    break;
  default:
    Serial.println("Waiting");
  }
  delay(d*50); 
}


void JUMP3()
{
  if ( (millis () - RedLEDtimer) >= RedLEDinterval) 
    toggleRedLED ();  
}


void JUMP7()
{
  if ( (millis () - OrangeLEDtimer) >= OrangeLEDinterval) 
    toggleOrangeLED ();  
}


void toggleRedLED ()
{
  strip.begin();
  strip.show();
  int a = 3;

  for (int c = 1; c < 150; c = c + a)  
    strip.setPixelColor(c, 0, 100, 0);
  strip.show();
  GreenLEDtimer = millis ();
  delay(d*10);

  for (int c = 2; c < 150; c = c + a) 
    strip.setPixelColor(c, 0, 0, 100);
  strip.show();
  BlueLEDtimer = millis ();
  delay(d*10);

  for (int c = 1; c < 150; c = c + a) 
    strip.setPixelColor(c, 100, 0, 0);
  strip.show();
  RedLEDtimer = millis ();
  delay(d*10);

  for (int c = 2; c < 150; c = c + a) 
    strip.setPixelColor(c, 0, 100, 0);
  strip.show();
  GreenLEDtimer = millis ();
  delay(d*10);

  for (int c = 0; c < 150; c = c + a)  
    strip.setPixelColor(c, 0, 0, 100);
  strip.show();
  BlueLEDtimer = millis ();
  delay(d*10);

  for (int c = 2; c < 150; c = c + a) 
    strip.setPixelColor(c, 100, 0, 0);
  strip.show();
  RedLEDtimer = millis ();
  delay(d*10);

  for (int c = 0; c < 150; c = c + a)
    strip.setPixelColor(c, 0, 100, 0);
  strip.show();
  GreenLEDtimer = millis ();
  delay(d*10);

  for (int c = 1; c < 150; c = c + a)
    strip.setPixelColor(c, 0, 0, 100);
  strip.show();
  BlueLEDtimer = millis ();
  delay(d*10);

}



void FADE3 ()
{
  int TOTAL_LEDS = 150;
  float MaximumBrightness = 150;
  float SpeedFactor = 0.10; 
  for (int m = 0; m < 100; m++)
  {
    float intensity = MaximumBrightness /2.0 * (1.0 + sin(SpeedFactor * m));
    strip.setBrightness(intensity);
    for (int ledNumber=0; ledNumber<TOTAL_LEDS; ledNumber++)
      strip.begin();
    strip.show();
    int a = 3;

    for (int c = 1; c < 150; c = c + a)  
      strip.setPixelColor(c, 0, 100, 0);
    strip.show();
    GreenLEDtimer = millis ();
    delay(d*10);

    for (int c = 2; c < 150; c = c + a) 
      strip.setPixelColor(c, 0, 0, 100);
    strip.show();
    BlueLEDtimer = millis ();
    delay(d*10);

    for (int c = 1; c < 150; c = c + a) 
      strip.setPixelColor(c, 100, 0, 0);
    strip.show();
    RedLEDtimer = millis ();
    delay(d*10);

    for (int c = 2; c < 150; c = c + a) 
      strip.setPixelColor(c, 0, 100, 0);
    strip.show();
    GreenLEDtimer = millis ();
    delay(d*10);

    for (int c = 0; c < 150; c = c + a)  
      strip.setPixelColor(c, 0, 0, 100);
    strip.show();
    BlueLEDtimer = millis ();
    delay(d*10);

    for (int c = 2; c < 150; c = c + a) 
      strip.setPixelColor(c, 100, 0, 0);
    strip.show();
    RedLEDtimer = millis ();
    delay(d*10);

    for (int c = 0; c < 150; c = c + a)  
      strip.setPixelColor(c, 0, 100, 0);
    strip.show();
    GreenLEDtimer = millis ();
    delay(d*10);

    for (int c = 1; c < 150; c = c + a) 
      strip.setPixelColor(c, 0, 0, 100);
    strip.show();
    BlueLEDtimer = millis ();
    delay(d*10);
  }
}

/*

http://forums.adafruit.com/viewtopic.php?f=47&t=41143#p249333

Re: NEOPIXEL brightness control

by justinw3115 on Fri Feb 07, 2014 3:19 pm
I am fairly new to programming, arduino, and neopixels. I wanted a similar effect. I have a good friend, who is a programmer help me out. This is the code he wrote, and here is a video of what it did. http://www.youtube.com/watch?v=BYrzIdlkVjc

void loop() {
//Written by: Jason Yandell

int TOTAL_LEDS = 60;
float MaximumBrightness = 255;
float SpeedFactor = 0.008; // I don't actually know what would look good
float StepDelay = 5; // ms for a step delay on the lights

// Make the lights breathe
for (int i = 0; i < 65535; i++) {
// Intensity will go from 10 - MaximumBrightness in a "breathing" manner
float intensity = MaximumBrightness /2.0 * (1.0 + sin(SpeedFactor * i));
strip.setBrightness(intensity);
// Now set every LED to that color
for (int ledNumber=0; ledNumber<TOTAL_LEDS; ledNumber++) {
strip.setPixelColor(ledNumber, 0, 0, 255);
}

strip.show();
//Wait a bit before continuing to breathe
delay(StepDelay);

}
}
*/

It's pointless to try to debug code that uses millis() and delay(). Pick ONE method and stick with it.

    float intensity = MaximumBrightness /2.0 * (1.0 + sin(SpeedFactor * m));

sin() takes a value in radians. One would expect this loop to iterate such that the argument to sin() ranged from 0 to pi or 0 to 2pi. Iterating so that the values range from 0 to 10 doesn't make sense.