After you beat 7 gyms go to Goldenrode city and go into the radeo tower. Beat the radio tower and some one will give you a rainbow wing.
Chat with our AI personalities
Talk to an old man in pewter city.
You get the rainbow wing from the radio tower director after you get rid of team rocket. (Same thing in soul silver).
In navel Rock
the fog badge and the rainbow wing
you have to defeat team rocket in goldenrod city and get the rainbow wing from the director