You think that's bad? Try putting UITextures with their own panel into another panel that has clipping that also has to clip the UItexture. I aged 5 years the day I made that.

There's an implied hierarchy in NGUI that you need to understand, like ArenMook says.
1) Within a UIPanel, within the same atlas the "depth" of the widget determines which is on op.
2) Within a UIPanel in different atlases, the whole atlas will be either ontop of or below all widgets from the other atlas. The widget with the lowest (can be negative) z-position is put on top, and all widgets from that atlas are on top as well.
If depth or z-position in those instances are the same, there's undefined behavior, ie. it may be different in editor and final build, aka, don't ever do that.
3) In two different UIpanels, from the same atlas, the z-position of the panel counts first and within the individual panels widget depth counts.
So, if you want to force a grouping of widget from atlas A under a widget from atlas B under a widget from atlas A (ABA), you have to group it in panels like:
UIpanel1 with z = 0: AB
UIPanel2 with Z = -1: A
or
UIPanel1, z=0: A
UIPanel2, z=-1: BA
If you wanna get into even further shenannigans to put 3D models in your menu or something, you can mix in multiple cameras with their own unity layer, group by that as well. But then you are getting into
Serious ShitTM.
