                 m = childTargets.length;
                 for (j = 0; j < m; j++)
                 {
-                    if (childTargets[j] != null) // Don't include null targets
+                    // Don't include null or duplicate targets
+                    if (child.targets[j] != null && 
+                        resultsArray.indexOf(child.targets[j]) < 0)
+                    {
                         resultsArray.push(childTargets[j]);
+                    }
                 }
             }   
             else if (child.targets != null)

                m = child.targets.length;
                for (j = 0; j < m; j++)
                {
                    if (child.targets[j] != null) // Don't include null targets
                        resultsArray.push(child.targets[j]);
                }
            }
        }

        n = targets.length;
        for (i = 0; i < n; i++)
        {
            // Don't include null or duplicate targets
            if (targets[i] != null && 
                resultsArray.indexOf(targets[i]) < 0)
            {
                resultsArray.push(targets[i]);
            }
        }
        
        return resultsArray;
