Designing Cheerlights Code Help

I think i almost have this code working however, the fatetocolour unction requires and int, byte, byte, int
and when i call it i and calling a string that holds the name of the correct corresponding byte variable however when i try to compile it says i am calling it with int, string, string, int :S

/*
 * CheerLights.pde 
 *
 */
 

//RGB LED pins
int ledAnalogOne[] = {3, 5, 6}; //the three pins of the first analog LED 3 = redPin, 5 = greenPin, 6 = bluePin
//These pins must be PWM
int ledAnalogTwo[] = {9, 10, 11}; //the three pins of the second analog LED 9 = redPin, 10 = greenPin, 11 = bluePin
//These pins must be PWM

const byte ORANGE[] = {83, 4, 0};
const byte YELLOW[] = {255, 255, 0};
const byte GREEN[] = {0, 255, 0};
const byte BLUE[] = {0, 0, 255};
const byte INDIGO[] = {4, 0, 19};
const byte VIOLET[] = {23, 0, 22};
const byte CYAN[] = {0, 255, 255};
const byte MAGENTA[] = {255, 0, 255};
const byte WHITE[] = {255, 255, 255};
const byte BLACK[] = {0, 0, 0};
const byte PINK[] = {158, 4, 79};
String LastColour;
String CurrentColour;

void setup() {
 // sb = HughesyShiftBrite(10,11,12,13);
  //sb.sendColour(0,0,0);
  Serial.begin(9600);
    for(int i = 0; i < 3; i++){
    pinMode(ledAnalogOne[i], OUTPUT);
    //Set the three LED pins as outputs
    pinMode(ledAnalogTwo[i], OUTPUT);
    //Set the three LED pins as outputs
  }
  setColor(ledAnalogOne, BLACK);
  //Turn off led 1
  setColor(ledAnalogTwo, BLACK);
  //Turn off led 2

}


void loop() {

  int input = Serial.read();
  
  switch (input) {
  case 48:
  CurrentColour = "PINK";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(255,0,0); // red 0
    break;
  case 49:
  CurrentColour = "GREEN";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(0,1000,0); // green 1
    break;
  case 50:
  CurrentColour = "BLUE";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(0,0,1000); // blue 2
    break;
  case 51:
  CurrentColour = "CYAN";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(0,1000,700); // cyan 3
    break;
  case 52:
  CurrentColour = "WHITE";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(900,900,900); // white 4
    break;
  case 53:
  CurrentColour = "INDIGO";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(900,600,700); // warmwhite 5
    break;
  case 54:
  CurrentColour = "PURPLE";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(300,200,1000); // purple 6
    break;
  case 55:
  CurrentColour = "MAGENTA";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(700,0,1000); // magenta 7
    break;
  case 56:
  CurrentColour = "YELLOW";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(900,1000,0); // yellow 8
    break;
  case 57:
  CurrentColour = "ORANGE";
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(1000,500,0); // orange 9
    break;
  }

}
/* Sets the color of the LED to any RGB Value
led - (int array of three values defining the LEDs pins (led[0] = redPin, led[1] = greenPin, led[2] = bluePin))
color - (byte array of three values defing an RGB color to display (color[0] = new Red value, color[1] = new Green value, color[2] = new Red value*/
void setColor(int* led, byte* color){
  for(int i = 0; i < 3; i++){
    //iterate through each of the three pins (red green blue)
    analogWrite(led[i], 255 - color[i]);
  //set the analog output value of each pin to the input value (ie led[0] (red pin) to 255- color[0] (red input color)
  //we use 255 - the value because our RGB LED is common anode, this means a color is full on when we output analogWrite(pin, 0)
  //and off when we output analogWrite(pin, 255).
  }
}

/* A version of setColor that takes a predefined color 
(neccesary to allow const int pre-defined colors */
void setColor(int* led, const byte* color){
  byte tempByte[] = {color[0], color[1], color[2]};
  setColor(led, tempByte);
}

/* Fades the LED from a start color to an end color at fadeSpeed
led - (int array of three values defining the LEDs pins (led[0] = redPin, led[1] = greenPin, led[2] = bluePin))
startColor - (byte array of three values defing the start RGB color (startColor[0] = start Red value, startColor[1] = start Green value, startColor[2] = start Red value
endColor - (byte array of three values defing the finished RGB color (endColor[0] = end Red value, endColor[1] = end Green value, endColor[2] = end Red value
fadeSpeed - this is the delay in milliseconds between steps, defines the speed of the fade*/
void fadeToColor(int* led, byte* startColor, byte* endColor, int fadeSpeed){
  int changeRed = endColor[0] - startColor[0];
  //the difference in the two colors for the red channel
  int changeGreen = endColor[1] - startColor[1];
  //the difference in the two colors for the green channel
  int changeBlue = endColor[2] - startColor[2];
  //the difference in the two colors for the blue channel
  int steps = max(abs(changeRed),max(abs(changeGreen), abs(changeBlue)));
  //make the number of change steps the maximum channel change
  for(int i = 0 ; i < steps; i++){
    //iterate for the channel with the maximum change
    byte newRed = startColor[0] + (i * changeRed / steps);
    //the newRed intensity dependant on the start intensity and the change determined above
    byte newGreen = startColor[1] + (i * changeGreen / steps);
    //the newGreen intensity
    byte newBlue = startColor[2] + (i * changeBlue / steps);
    //the newBlue intensity
    byte newColor[] = {newRed, newGreen, newBlue};
    //Define an RGB color array for the new color
    setColor(led, newColor);
    //Set the LED to the calculated value
    delay(fadeSpeed);
    //Delay fadeSpeed milliseconds before going on to the next color
  }
  setColor(led, endColor);
  //The LED should be at the endColor but set to endColor to avoid rounding errors
}


/* A version of fadeToColor that takes predefined colors (necessary to allow const int pre-defined colors */
void fadeToColor(int* led, const byte* startColor, const byte* endColor, int fadeSpeed){
  byte tempByte1[] = {startColor[0], startColor[1], startColor[2]};
  byte tempByte2[] = {endColor[0], endColor[1], endColor[2]};
  fadeToColor(led, tempByte1, tempByte2, fadeSpeed);
}

I think i almost have this code working

Sorry to disappoint you.
You can't use the name of an array as a string (or a String) at run-time; the run-time code has had all that information compiled out.

const byte* CurrentColour;
const byte* LastColour;
...
...
case '0':
  CurrentColour = PINK;
  fadeToColor(ledAnalogOne, LastColour, CurrentColour, 10); 
    //sb.sendColour(255,0,0); // red 0
    break;

is more like what you should be trying to do.

Also:

case 48:

Isn't case '0': much easier to read?

void fadeToColor(int* led, const byte* startColor, const byte* endColor, int fadeSpeed){
  byte tempByte1[] = {startColor[0], startColor[1], startColor[2]};
  byte tempByte2[] = {endColor[0], endColor[1], endColor[2]};
  fadeToColor(led, tempByte1, tempByte2, fadeSpeed);
}

Isn't that recursive?
Edit: No, it is isn't on a second reading. It is, however, pretty redundant.

You'll have to sort out the PURPLE/VIOLET confusion yourself.