millis() related question on a 16x2 RGB LCD screen

  int iTime = millis()/1000;

The millis() function returns an unsigned long value, which can be up to 4,294,967,295. Even after dividing by 1000, the maximum possible value will be 4,294,967, which you will have a very hard time fitting in an int.

    int ledPins[] = {9,10,11};
    int i=0;
    for( i=0; i<=2; i++){
      pinMode(ledPins[i], OUTPUT);
    }

Why is this array local to setup()? It you are setting the pin mode to output, presumably you want to write to those pins in some other function.

Creating an array, declaring an (oversize) index variable, and using three lines (should be 4) of code for a for loop, to eliminate the need to copy/paste the pinMode() call three times hardly seems efficient. Especially since you are using names globally for the pins, and now have to change two places if you want to use another pin number for one of the LEDs.

      if(millis() == refresh){

Hitting an exact value when calling millis() is a miracle that should not be relied on.