diff --git a/js/emotemodule.js b/js/emotemodule.js
index 8dbcec4b..8ed2e9e0 100644
--- a/js/emotemodule.js
+++ b/js/emotemodule.js
@@ -6,11 +6,57 @@ var observer;
mutations.forEach(function(mutation) {
for(var i = 0 ; i < mutation.addedNodes.length ; ++i) {
var next = mutation.addedNodes.item(i);
- console.log(next);
+ if(next) {
+ var nodes = getNodes(next);
+ for(var node in nodes) {
+ injectEmote(nodes[node]);
+ }
+ }
}
});
});
- obsever.observe(document, {childList: true, subtree: true});
+ observer.observe(document, {childList: true, subtree: true});
})();
+
+function getNodes(node) {
+ var next;
+ var nodes = [];
+
+ var treeWalker = document.createTreeWalker(node, NodeFilter.SHOW_TEXT, null, false);
+
+ while(next = treeWalker.nextNode()) {
+ nodes.push(next);
+ }
+
+ return nodes;
+}
+
+function injectEmote(node) {
+
+ if(typeof emotesTwitch === 'undefined') return;
+
+ if(!node.parentElement) return;
+
+ var parent = node.parentElement;
+ if(parent.tagName != "SPAN") return;
+
+ var parentInnerHTML = parent.innerHTML;
+ var words = parentInnerHTML.split(" ");
+
+ if(!words) return;
+
+ words.some(function(word) {
+ if (emotesTwitch.hasOwnProperty(word)) {
+ parentInnerHTML = parentInnerHTML.replace(word, "<\/img>");
+ } else if(typeof emotesFfz !== 'undefined') {
+ if(emotesFfz.hasOwnProperty(word)) {
+ parentInnerHTML = parentInnerHTML.replace(word, "<\/img>");
+ }
+ }
+ });
+
+ parent.innerHTML = parentInnerHTML;
+
+}