                             obj = focusableCandidates[j];
                             if (isEnabledAndVisible(obj))
                             {
-                                if (obj is IFocusManagerGroup)
+                                if (foundAnotherGroup)
+                                {
+                                    // we're now just trying to find a selected member of this group
+                                    if (obj is IFocusManagerGroup)
+                                    {
+                                        tg2 = IFocusManagerGroup(obj);
+                                        if (tg2.groupName == tg1.groupName && tg2["document"] == tg1["document"])
+                                        {
+                                            if (tg2.selected)
+                                            {
+                                                i = j;
+                                                break;
+                                            }
+                                        }
+                                    }
+                                }
+                                else if (obj is IFocusManagerGroup)
                                 {
                                     tg2 = IFocusManagerGroup(obj);
-                                    if (tg2.groupName == tg1.groupName)
+                                    if (tg2.groupName == tg1.groupName && tg2["document"] == tg1["document"])
                                     {
                                         if (tg2 == groupElementToFocus)
                                         {

                                    }
                                    else
                                    {
                                        // element is part of another group, stop (no recursive search)
                                        i = j;
                                        break;
                                    }
                                }
                                else

                        if (obj is IFocusManagerGroup)
                        {
                            tg2 = IFocusManagerGroup(obj);
                            if (tg2.groupName == tg1.groupName && isEnabledAndVisible(obj) &&
                                tg2["document"] == tg1["document"])
                            {
                                if (tg2.selected) 
                                {
