Hi Michael,
When you map an object, TestComplete maps all its parent objects. This is needed to make the search faster.
You said that ids of your page's elements change. I'm not a YUI guru, but maybe you can use wildcards (* and ?) in mapping settings to mask the parts that change?
Another possible solution is to assign a persistent id to the needed button and then obtain this button in your tests by using the Page.NativeWebObject.Find method: Page.NativeWebObject.Find("id", "ID_of_your_button", "INPUT").
For information on searching for web page elements, see Finding Objects on Web Pages.
Also, the following section provides information on some specific mapping approaches. Maybe, it will help: http://smartbear.com/support/viewarticle/12451/.