                                     }
                                     else
                                     {
-                                        // element is part of another group, stop (no recursive search)
+                                        // switch to new group and hunt for selected item
+                                        tg1 = tg2;
                                         i = j;
-                                        break;
+                                        // element is part of another group, stop if selected
+                                        if (tg2.selected)
+                                            break;
+                                        else
+                                            foundAnotherGroup = true;
                                     }
                                 }
                                 else

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

                    
                    if (tg1 != groupElementToFocus)
                    {
                        var foundAnotherGroup:Boolean = false;
                        // cycle the entire focusable candidates array forward or backward,
                        // wrapping around boundaries, searching for our focus candidate
                        j = i;
