/cody/learning-zone/website-templates/relax-interior-free-bootstrap-responsive-website-template/js/wow.js
(function() {  var MutationObserver, Util, WeakMap,    __bind = function(fn, me){ return function(){ return fn.apply(me, arguments); }; },    __indexOf = [].indexOf || function(item) { for (var i = 0, l = this.length; i < l; i++) { if (i in this && this[i] === item) return i; } return -1; };
  Util = (function() {    function Util() {}
    Util.prototype.extend = function(custom, defaults) {      var key, value;      for (key in defaults) {        value = defaults[key];        if (custom[key] == null) {          custom[key] = value;        }      }      return custom;    };
    Util.prototype.isMobile = function(agent) {      return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(agent);    };
    return Util;
  })();
  WeakMap = this.WeakMap || this.MozWeakMap || (WeakMap = (function() {    function WeakMap() {      this.keys = [];      this.values = [];    }
    WeakMap.prototype.get = function(key) {      var i, item, _i, _len, _ref;      _ref = this.keys;      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {        item = _ref[i];        if (item === key) {          return this.values[i];        }      }    };
    WeakMap.prototype.set = function(key, value) {      var i, item, _i, _len, _ref;      _ref = this.keys;      for (i = _i = 0, _len = _ref.length; _i < _len; i = ++_i) {        item = _ref[i];        if (item === key) {          this.values[i] = value;          return;        }      }      this.keys.push(key);      return this.values.push(value);    };
    return WeakMap;
  })());
  MutationObserver = this.MutationObserver || this.WebkitMutationObserver || this.MozMutationObserver || (MutationObserver = (function() {    function MutationObserver() {      console.warn('MutationObserver is not supported by your browser.');      console.warn('WOW.js cannot detect dom mutations, please call .sync() after loading new content.');    }
    MutationObserver.notSupported = true;
    MutationObserver.prototype.observe = function() {};
    return MutationObserver;
  })());
  this.WOW = (function() {    WOW.prototype.defaults = {      boxClass: 'wow',      animateClass: 'animated',      offset: 0,      mobile: true,      live: true    };
    function WOW(options) {      if (options == null) {        options = {};      }      this.scrollCallback = __bind(this.scrollCallback, this);      this.scrollHandler = __bind(this.scrollHandler, this);      this.start = __bind(this.start, this);      this.scrolled = true;      this.config = this.util().extend(options, this.defaults);      this.animationNameCache = new WeakMap();    }
    WOW.prototype.init = function() {      var _ref;      this.element = window.document.documentElement;      if ((_ref = document.readyState) === "interactive" || _ref === "complete") {        this.start();      } else {        document.addEventListener('DOMContentLoaded', this.start);      }      return this.finished = [];    };
    WOW.prototype.start = function() {      var box, _i, _len, _ref;      this.stopped = false;      this.boxes = (function() {        var _i, _len, _ref, _results;        _ref = this.element.getElementsByClassName(this.config.boxClass);        _results = [];        for (_i = 0, _len = _ref.length; _i < _len; _i++) {          box = _ref[_i];          _results.push(box);        }        return _results;      }).call(this);      this.all = (function() {        var _i, _len, _ref, _results;        _ref = this.boxes;        _results = [];        for (_i = 0, _len = _ref.length; _i < _len; _i++) {          box = _ref[_i];          _results.push(box);        }        return _results;      }).call(this);      if (this.boxes.length) {        if (this.disabled()) {          this.resetStyle();        } else {          _ref = this.boxes;          for (_i = 0, _len = _ref.length; _i < _len; _i++) {            box = _ref[_i];            this.applyStyle(box, true);          }          window.addEventListener('scroll', this.scrollHandler, false);          window.addEventListener('resize', this.scrollHandler, false);          this.interval = setInterval(this.scrollCallback, 50);        }      }      if (this.config.live) {        return new MutationObserver((function(_this) {          return function(records) {            var node, record, _j, _len1, _results;            _results = [];            for (_j = 0, _len1 = records.length; _j < _len1; _j++) {              record = records[_j];              _results.push((function() {                var _k, _len2, _ref1, _results1;                _ref1 = record.addedNodes || [];                _results1 = [];                for (_k = 0, _len2 = _ref1.length; _k < _len2; _k++) {                  node = _ref1[_k];                  _results1.push(this.doSync(node));                }                return _results1;              }).call(_this));            }            return _results;          };        })(this)).observe(document.body, {          childList: true,          subtree: true        });      }    };
    WOW.prototype.stop = function() {      this.stopped = true;      window.removeEventListener('scroll', this.scrollHandler, false);      window.removeEventListener('resize', this.scrollHandler, false);      if (this.interval != null) {        return clearInterval(this.interval);      }    };
    WOW.prototype.sync = function(element) {      if (MutationObserver.notSupported) {        return this.doSync(this.element);      }    };
    WOW.prototype.doSync = function(element) {      var box, _i, _len, _ref, _results;      if (!this.stopped) {        if (element == null) {          element = this.element;        }        if (element.nodeType !== 1) {          return;        }        element = element.parentNode || element;        _ref = element.getElementsByClassName(this.config.boxClass);        _results = [];        for (_i = 0, _len = _ref.length; _i < _len; _i++) {          box = _ref[_i];          if (__indexOf.call(this.all, box) < 0) {            this.applyStyle(box, true);            this.boxes.push(box);            this.all.push(box);            _results.push(this.scrolled = true);          } else {            _results.push(void 0);          }        }        return _results;      }    };
    WOW.prototype.show = function(box) {      this.applyStyle(box);      return box.className = "" + box.className + " " + this.config.animateClass;    };
    WOW.prototype.applyStyle = function(box, hidden) {      var delay, duration, iteration;      duration = box.getAttribute('data-wow-duration');      delay = box.getAttribute('data-wow-delay');      iteration = box.getAttribute('data-wow-iteration');      return this.animate((function(_this) {        return function() {          return _this.customStyle(box, hidden, duration, delay, iteration);        };      })(this));    };
    WOW.prototype.animate = (function() {      if ('requestAnimationFrame' in window) {        return function(callback) {          return window.requestAnimationFrame(callback);        };      } else {        return function(callback) {          return callback();        };      }    })();
    WOW.prototype.resetStyle = function() {      var box, _i, _len, _ref, _results;      _ref = this.boxes;      _results = [];      for (_i = 0, _len = _ref.length; _i < _len; _i++) {        box = _ref[_i];        _results.push(box.setAttribute('style', 'visibility: visible;'));      }      return _results;    };
    WOW.prototype.customStyle = function(box, hidden, duration, delay, iteration) {      if (hidden) {        this.cacheAnimationName(box);      }      box.style.visibility = hidden ? 'hidden' : 'visible';      if (duration) {        this.vendorSet(box.style, {          animationDuration: duration        });      }      if (delay) {        this.vendorSet(box.style, {          animationDelay: delay        });      }      if (iteration) {        this.vendorSet(box.style, {          animationIterationCount: iteration        });      }      this.vendorSet(box.style, {        animationName: hidden ? 'none' : this.cachedAnimationName(box)      });      return box;    };
    WOW.prototype.vendors = ["moz", "webkit"];
    WOW.prototype.vendorSet = function(elem, properties) {      var name, value, vendor, _results;      _results = [];      for (name in properties) {        value = properties[name];        elem["" + name] = value;        _results.push((function() {          var _i, _len, _ref, _results1;          _ref = this.vendors;          _results1 = [];          for (_i = 0, _len = _ref.length; _i < _len; _i++) {            vendor = _ref[_i];            _results1.push(elem["" + vendor + (name.charAt(0).toUpperCase()) + (name.substr(1))] = value);          }          return _results1;        }).call(this));      }      return _results;    };
    WOW.prototype.vendorCSS = function(elem, property) {      var result, style, vendor, _i, _len, _ref;      style = window.getComputedStyle(elem);      result = style.getPropertyCSSValue(property);      _ref = this.vendors;      for (_i = 0, _len = _ref.length; _i < _len; _i++) {        vendor = _ref[_i];        result = result || style.getPropertyCSSValue("-" + vendor + "-" + property);      }      return result;    };
    WOW.prototype.animationName = function(box) {      var animationName;      try {        animationName = this.vendorCSS(box, 'animation-name').cssText;      } catch (_error) {        animationName = window.getComputedStyle(box).getPropertyValue('animation-name');      }      if (animationName === 'none') {        return '';      } else {        return animationName;      }    };
    WOW.prototype.cacheAnimationName = function(box) {      return this.animationNameCache.set(box, this.animationName(box));    };
    WOW.prototype.cachedAnimationName = function(box) {      return this.animationNameCache.get(box);    };
    WOW.prototype.scrollHandler = function() {      return this.scrolled = true;    };
    WOW.prototype.scrollCallback = function() {      var box;      if (this.scrolled) {        this.scrolled = false;        this.boxes = (function() {          var _i, _len, _ref, _results;          _ref = this.boxes;          _results = [];          for (_i = 0, _len = _ref.length; _i < _len; _i++) {            box = _ref[_i];            if (!(box)) {              continue;            }            if (this.isVisible(box)) {              this.show(box);              continue;            }            _results.push(box);          }          return _results;        }).call(this);        if (!(this.boxes.length || this.config.live)) {          return this.stop();        }      }    };
    WOW.prototype.offsetTop = function(element) {      var top;      while (element.offsetTop === void 0) {        element = element.parentNode;      }      top = element.offsetTop;      while (element = element.offsetParent) {        top += element.offsetTop;      }      return top;    };
    WOW.prototype.isVisible = function(box) {      var bottom, offset, top, viewBottom, viewTop;      offset = box.getAttribute('data-wow-offset') || this.config.offset;      viewTop = window.pageYOffset;      viewBottom = viewTop + Math.min(this.element.clientHeight, innerHeight) - offset;      top = this.offsetTop(box);      bottom = top + box.clientHeight;      return top <= viewBottom && bottom >= viewTop;    };
    WOW.prototype.util = function() {      return this._util != null ? this._util : this._util = new Util();    };
    WOW.prototype.disabled = function() {      return !this.config.mobile && this.util().isMobile(navigator.userAgent);    };
    return WOW;
  })();
}).call(this);