diff --git a/core/modules/utils.dom.js b/core/modules/utils.dom.js
new file mode 100644
index 000000000..dd83c5041
--- /dev/null
+++ b/core/modules/utils.dom.js
@@ -0,0 +1,78 @@
+/*\
+title: $:/core/modules/utils.dom.js
+type: application/javascript
+module-type: utils
+
+Various static DOM-related utility functions.
+
+\*/
+(function(){
+
+/*jslint node: true, browser: true */
+/*global $tw: false */
+"use strict";
+
+/*
+Determines whether element 'a' contains element 'b'
+Code thanks to John Resig, http://ejohn.org/blog/comparing-document-position/
+*/
+exports.domContains = function(a,b) {
+ return a.contains ?
+ a != b && a.contains(b) :
+ !!(a.compareDocumentPosition(b) & 16);
+};
+
+exports.hasClass = function(el,className) {
+ return el.className.split(" ").indexOf(className) !== -1;
+};
+
+exports.addClass = function(el,className) {
+ var c = el.className.split(" ");
+ if(c.indexOf(className) === -1) {
+ c.push(className);
+ }
+ el.className = c.join(" ");
+};
+
+exports.removeClass = function(el,className) {
+ var c = el.className.split(" "),
+ p = c.indexOf(className);
+ if(p !== -1) {
+ c.splice(p,1);
+ el.className = c.join(" ");
+ }
+};
+
+exports.toggleClass = function(el,className,status) {
+ if(status === undefined) {
+ status = !exports.hasClass(el,className);
+ }
+ if(status) {
+ exports.addClass(el,className);
+ } else {
+ exports.removeClass(el,className);
+ }
+};
+
+exports.applyStyleSheet = function(id,css) {
+ var el = document.getElementById(id);
+ if(document.createStyleSheet) { // Older versions of IE
+ if(el) {
+ el.parentNode.removeChild(el);
+ }
+ document.getElementsByTagName("head")[0].insertAdjacentHTML("beforeEnd",
+ ' '); // fails without
+ } else { // Modern browsers
+ if(el) {
+ el.replaceChild(document.createTextNode(css), el.firstChild);
+ } else {
+ el = document.createElement("style");
+ el.type = "text/css";
+ el.id = id;
+ el.appendChild(document.createTextNode(css));
+ document.getElementsByTagName("head")[0].appendChild(el);
+ }
+ }
+};
+
+})();
diff --git a/core/modules/utils.js b/core/modules/utils.js
index ca9a2de87..f740bbf79 100644
--- a/core/modules/utils.js
+++ b/core/modules/utils.js
@@ -236,69 +236,6 @@ exports.nextTick = function(fn) {
}
};
-/*
-Determines whether element 'a' contains element 'b'
-Code thanks to John Resig, http://ejohn.org/blog/comparing-document-position/
-*/
-exports.domContains = function(a,b) {
- return a.contains ?
- a != b && a.contains(b) :
- !!(a.compareDocumentPosition(b) & 16);
-};
-
-exports.hasClass = function(el,className) {
- return el.className.split(" ").indexOf(className) !== -1;
-};
-
-exports.addClass = function(el,className) {
- var c = el.className.split(" ");
- if(c.indexOf(className) === -1) {
- c.push(className);
- }
- el.className = c.join(" ");
-};
-
-exports.removeClass = function(el,className) {
- var c = el.className.split(" "),
- p = c.indexOf(className);
- if(p !== -1) {
- c.splice(p,1);
- el.className = c.join(" ");
- }
-};
-
-exports.toggleClass = function(el,className,status) {
- if(status === undefined) {
- status = !exports.hasClass(el,className);
- }
- if(status) {
- exports.addClass(el,className);
- } else {
- exports.removeClass(el,className);
- }
-};
-
-exports.applyStyleSheet = function(id,css) {
- var el = document.getElementById(id);
- if(document.createStyleSheet) { // Older versions of IE
- if(el) {
- el.parentNode.removeChild(el);
- }
- document.getElementsByTagName("head")[0].insertAdjacentHTML("beforeEnd",
- ' '); // fails without
- } else { // Modern browsers
- if(el) {
- el.replaceChild(document.createTextNode(css), el.firstChild);
- } else {
- el = document.createElement("style");
- el.type = "text/css";
- el.id = id;
- el.appendChild(document.createTextNode(css));
- document.getElementsByTagName("head")[0].appendChild(el);
- }
- }
-};
-
/*
Convert a hyphenated CSS property name into a camel case one
*/