1 /*global $, window, document, BytePushers*/
  2 (function (window, document, BytePushers) {
  3     'use strict';
  4     BytePushers = BytePushers || {};
  5     BytePushers.DOMUtility = BytePushers.namespace("software.bytepushers.utils.DOMUtility");
  6     BytePushers.DOMUtility.addListener = null;
  7     BytePushers.DOMUtility.removeListener = null;
  8     BytePushers.DOMUtility.querySelector = null;
  9     BytePushers.DOMUtility.querySelectorAll = null;
 10     BytePushers.DOMUtility.filterMetaData = function (data) {
 11         data = data.replace(/<meta\s[\w\W]*>/gi, "");
 12         return data;
 13     };
 14     // the implementation
 15     if (typeof window.addEventListener === 'function') {
 16         BytePushers.DOMUtility.addListener = function (el, type, fn) {
 17             el.addEventListener(type, fn, false);
 18         };
 19         BytePushers.DOMUtility.removeListener = function (el, type, fn) {
 20             el.removeEventListener(type, fn, false);
 21         };
 22     } else if (typeof document.attachEvent === 'function') { // IE
 23         BytePushers.DOMUtility.addListener = function (el, type, fn) {
 24             el.attachEvent('on' + type, fn);
 25         };
 26         BytePushers.DOMUtility.removeListener = function (el, type, fn) {
 27             el.detachEvent('on' + type, fn);
 28         };
 29     } else { // older browsers
 30         BytePushers.DOMUtility.addListener = function (el, type, fn) {
 31             el['on' + type] = fn;
 32         };
 33         BytePushers.DOMUtility.removeListener = function (el, type) {
 34             el['on' + type] = null;
 35         };
 36     }
 37     if (typeof document.querySelector === "function") {
 38         BytePushers.DOMUtility.querySelector = function (selector) {
 39             return document.querySelector(selector);
 40         };
 41     } else if (typeof document.getElementsByClassName === "function") {
 42         BytePushers.DOMUtility.querySelector = function (selector) {
 43             return document.getElementsByClassName(selector);
 44         };
 45     } else if (typeof $ === "function") {
 46         BytePushers.DOMUtility.querySelector = function (selector) {
 47             return $(selector);
 48         };
 49     } else {
 50         throw ("document.querySelector() method is not supported by your browser.  Please contact the administrator for this app.");
 51     }
 52     if (typeof document.querySelectorAll === "function") {
 53         BytePushers.DOMUtility.querySelectorAll = function (selector) {
 54             return document.querySelectorAll(selector);
 55         };
 56     } else if (typeof document.getElementsByClassName === "function") {
 57         BytePushers.DOMUtility.querySelectorAll = function (selector) {
 58             return document.getElementsByClassName(selector);
 59         };
 60     } else if (typeof $ === "function") {
 61         BytePushers.DOMUtility.querySelector = function (selector) {
 62             return $(selector);
 63         };
 64     } else {
 65         throw ("document.querySelectorAll() method is not supported by your browser.  Please contact the administrator for this app.");
 66     }
 67 }(window, document, BytePushers));