return TIME1;
What do you want this to do? You declared the function was going to return an integer but you're trying to return an array of integers. The variable TIME1 actually contains a pointer to the first element in the array so you could declare the function as int * TimeState().
But TIME1 is global. Any function can read and modify it. You don't need to return it at all. Declare the function as void type.
if ((unsigned long)(currentMillis - previousMillisCase1 >= Case1))
You have the brackets the wrong way around. You're taking the boolean result of the >= and casting it to an unsigned long before the if() converts it back to a boolean. This should compile just fine without the type cast.