Changing texture coordinates in GUI

I want to implement GUI elements with usage of texture atlas, is it possible to notify unity take textures from texture atlas?

Now, to have a highlighted button, i have to provide 3 different textures to GUIStyle: one for normal, one for hover, one for active. Is it possible to combine all this in one single texture?

And one more: How to draw an animated sequence of frames over standard unity GUI?

PS Not using array of separate textures, i need one texture for all frames of sequence. And either, not using GetPixel/SetPixel, i am going to have a 10 such images at one screen and lots of other gui elements :) And not using sprite manager :)

try Graphics.DrawTexture()