Moved directElementChildrenByTagName (and className) to util so it can
be used by any style of element object, e.g. hint.container()

Change-Id: I542e5c9e92783858865ca265415a57103c7483dd
diff --git a/dev/js/src/menu.js b/dev/js/src/menu.js
index 86a8105..794d517 100644
--- a/dev/js/src/menu.js
+++ b/dev/js/src/menu.js
@@ -972,24 +972,6 @@
         item.element(),
         e.children[this._notItemElements]
       );
-    },
-
-    /**
-     * A Method for generating an array of nodes, that are direct descendants of the menus
-     * element node, using a tag tagName as a parameter. Supposed to be used by the specification only.
-     * @param {String} tagName The tag the children are looked for by
-     * @returns An array of children nodes with tag tagName
-     */
-    directElementChildrenByTagName : function (tagName) {
-      const tagElementsCollection=this._el.getElementsByTagName(tagName);
-      //var tagElements = Array.from(tagElementsCollection);
-      //var tagElements = [...tagElementsCollection];
-      //This one has the best compatability:
-      var tagElements = Array.prototype.slice.call(tagElementsCollection);
-      const t = this;
-      //filter by actually being direct child node
-      tagElements = tagElements.filter(element => element.parentNode === t._el);
-      return tagElements;
     }
   };
 });
diff --git a/dev/js/src/util.js b/dev/js/src/util.js
index c13ba3d..42edf44 100644
--- a/dev/js/src/util.js
+++ b/dev/js/src/util.js
@@ -166,3 +166,39 @@
 
   return KorAP;
 });
+
+/**
+ * A Method for generating an array of nodes, that are direct descendants of the passed
+ * element node, using a tag tagName as a parameter. Supposed to be used by the specification only.
+ * @param {HTMLNode} element The HTMLNode / element object whose children we are fetching
+ * @param {String} tagName The tag the children are looked for by
+ * @returns An array of children nodes with tag tagName
+ */
+function directElementChildrenByTagName (element, tagName) {
+  const tagElementsCollection=element.getElementsByTagName(tagName);
+  //var tagElements = Array.from(tagElementsCollection);
+  //var tagElements = [...tagElementsCollection];
+  //This one has the best compatability:
+  var tagElements = Array.prototype.slice.call(tagElementsCollection);
+  //filter by actually being direct child node
+  tagElements = tagElements.filter(subElement => subElement.parentNode === element);
+  return tagElements;
+};
+
+/**
+ * A Method for generating an array of nodes, that are direct descendants of the passed
+ * element node, using a class className as a parameter. Supposed to be used by the specification only.
+ * @param {HTMLNode} element The HTMLNode / element object whose children we are fetching
+ * @param {String} className The class the children are looked for by
+ * @returns An array of children nodes with class className
+ */
+ function directElementChildrenByClassName (element, className) {
+  const classElementsCollection=element.getElementsByTagName(className);
+  //var classElements = Array.from(classElementsCollection);
+  //var classElements = [...classElementsCollection];
+  //This one has the best compatability:
+  var classElements = Array.prototype.slice.call(classElementsCollection);
+  //filter by actually being direct child node
+  classElements = classElements.filter(subElement => subElement.parentNode === element);
+  return classElements;
+};
\ No newline at end of file