/*! odometer
* ver 0.4.8
*
*
* */
(function() {
var a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z, A, B, C, D, E, F, G = [].slice;
q = '', n = '' + q + "", d = '8' + n + "", g = '', c = "(,ddd).dd", h = /^\(?([^)]*)\)?(?:(.)(d+))?$/, i = 30, f = 2e3, a = 20, j = 2, e = .5, k = 1e3 / i, b = 1e3 / a, o = "transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", y = document.createElement("div").style, p = null != y.transition || null != y.webkitTransition || null != y.mozTransition || null != y.oTransition, w = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame, l = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver, s = function(a) {
var b;
return b = document.createElement("div"), b.innerHTML = a, b.children[0]
}, v = function(a, b) {
return a.className = a.className.replace(new RegExp("(^| )" + b.split(" ").join("|") + "( |$)", "gi"), " ")
}, r = function(a, b) {
return v(a, b), a.className += " " + b
}, z = function(a, b) {
var c;
return null != document.createEvent ? (c = document.createEvent("HTMLEvents"), c.initEvent(b, !0, !0), a.dispatchEvent(c)) : void 0
}, u = function() {
var a, b;
return null != (a = null != (b = window.performance) && "function" == typeof b.now ? b.now() : void 0) ? a : +new Date
}, x = function(a, b) {
return null == b && (b = 0), b ? (a *= Math.pow(10, b), a += .5, a = Math.floor(a), a /= Math.pow(10, b)) : Math.round(a)
}, A = function(a) {
return 0 > a ? Math.ceil(a) : Math.floor(a)
}, t = function(a) {
return a - x(a)
}, C = !1, (B = function() {
var a, b, c, d, e;
if (!C && null != window.jQuery) {
for (C = !0, d = ["html", "text"], e = [], b = 0, c = d.length; c > b; b++) a = d[b], e.push(function(a) {
var b;
return b = window.jQuery.fn[a], window.jQuery.fn[a] = function(a) {
var c;
return null == a || null == (null != (c = this[0]) ? c.odometer : void 0) ? b.apply(this, arguments) : this[0].odometer.update(a)
}
}(a));
return e
}
})(), setTimeout(B, 0), m = function() {
function a(b) {
var c, d, e, g, h, i, l, m, n, o, p = this;
if (this.options = b, this.el = this.options.el, null != this.el.odometer) return this.el.odometer;
this.el.odometer = this, m = a.options;
for (d in m) g = m[d], null == this.options[d] && (this.options[d] = g);
null == (h = this.options).duration && (h.duration = f), this.MAX_VALUES = this.options.duration / k / j | 0, this.resetFormat(), this.value = this.cleanValue(null != (n = this.options.value) ? n : ""), this.renderInside(), this.render();
try {
for (o = ["innerHTML", "innerText", "textContent"], i = 0, l = o.length; l > i; i++) e = o[i], null != this.el[e] && ! function(a) {
return Object.defineProperty(p.el, a, {
get: function() {
var b;
return "innerHTML" === a ? p.inside.outerHTML : null != (b = p.inside.innerText) ? b : p.inside.textContent
},
set: function(a) {
return p.update(a)
}
})
}(e)
} catch (q) {
c = q, this.watchForMutations()
}
}
return a.prototype.renderInside = function() {
return this.inside = document.createElement("div"), this.inside.className = "odometer-inside", this.el.innerHTML = "", this.el.appendChild(this.inside)
}, a.prototype.watchForMutations = function() {
var a, b = this;
if (null != l) try {
return null == this.observer && (this.observer = new l(function(a) {
var c;
return c = b.el.innerText, b.renderInside(), b.render(b.value), b.update(c)
})), this.watchMutations = !0, this.startWatchingMutations()
} catch (c) {
a = c
}
}, a.prototype.startWatchingMutations = function() {
return this.watchMutations ? this.observer.observe(this.el, {
childList: !0
}) : void 0
}, a.prototype.stopWatchingMutations = function() {
var a;
return null != (a = this.observer) ? a.disconnect() : void 0
}, a.prototype.cleanValue = function(a) {
var b;
return "string" == typeof a && (a = a.replace(null != (b = this.format.radix) ? b : ".", ""), a = a.replace(/[.,]/g, ""), a = a.replace("", "."), a = parseFloat(a, 10) || 0), x(a, this.format.precision)
}, a.prototype.bindTransitionEnd = function() {
var a, b, c, d, e, f, g = this;
if (!this.transitionEndBound) {
for (this.transitionEndBound = !0, b = !1, e = o.split(" "), f = [], c = 0, d = e.length; d > c; c++) a = e[c], f.push(this.el.addEventListener(a, function() {
return b ? !0 : (b = !0, setTimeout(function() {
return g.render(), b = !1, z(g.el, "odometerdone")
}, 0), !0)
}, !1));
return f
}
}, a.prototype.resetFormat = function() {
var a, b, d, e, f, g, i, j;
if (a = null != (i = this.options.format) ? i : c, a || (a = "d"), d = h.exec(a), !d) throw new Error("Odometer: Unparsable digit format");
return j = d.slice(1, 4), g = j[0], f = j[1], b = j[2], e = (null != b ? b.length : void 0) || 0, this.format = {
repeating: g,
radix: f,
precision: e
}
}, a.prototype.render = function(a) {
var b, c, d, e, f, g, h;
for (null == a && (a = this.value), this.stopWatchingMutations(), this.resetFormat(), this.inside.innerHTML = "", f = this.options.theme, b = this.el.className.split(" "), e = [], g = 0, h = b.length; h > g; g++) c = b[g], c.length && ((d = /^odometer-theme-(.+)$/.exec(c)) ? f = d[1] : /^odometer(-|$)/.test(c) || e.push(c));
return e.push("odometer"), p || e.push("odometer-no-transitions"), f ? e.push("odometer-theme-" + f) : e.push("odometer-auto-theme"), this.el.className = e.join(" "), this.ribbons = {}, this.formatDigits(a), this.startWatchingMutations()
}, a.prototype.formatDigits = function(a) {
var b, c, d, e, f, g, h, i, j, k;
if (this.digits = [], this.options.formatFunction)
for (d = this.options.formatFunction(a), j = d.split("").reverse(), f = 0, h = j.length; h > f; f++) c = j[f], c.match(/0-9/) ? (b = this.renderDigit(), b.querySelector(".odometer-value").innerHTML = c, this.digits.push(b), this.insertDigit(b)) : this.addSpacer(c);
else
for (e = !this.format.precision || !t(a) || !1, k = a.toString().split("").reverse(), g = 0, i = k.length; i > g; g++) b = k[g], "." === b && (e = !0), this.addDigit(b, e)
}, a.prototype.update = function(a) {
var b, c = this;
return a = this.cleanValue(a), (b = a - this.value) ? (v(this.el, "odometer-animating-up odometer-animating-down odometer-animating"), b > 0 ? r(this.el, "odometer-animating-up") : r(this.el, "odometer-animating-down"), this.stopWatchingMutations(), this.animate(a), this.startWatchingMutations(), setTimeout(function() {
return c.el.offsetHeight, r(c.el, "odometer-animating")
}, 0), this.value = a) : void 0
}, a.prototype.renderDigit = function() {
return s(d)
}, a.prototype.insertDigit = function(a, b) {
return null != b ? this.inside.insertBefore(a, b) : this.inside.children.length ? this.inside.insertBefore(a, this.inside.children[0]) : this.inside.appendChild(a)
}, a.prototype.addSpacer = function(a, b, c) {
var d;
return d = s(g), d.innerHTML = a, c && r(d, c), this.insertDigit(d, b)
}, a.prototype.addDigit = function(a, b) {
var c, d, e, f;
if (null == b && (b = !0), "-" === a) return this.addSpacer(a, null, "odometer-negation-mark");
if ("." === a) return this.addSpacer(null != (f = this.format.radix) ? f : ".", null, "odometer-radix-mark");
if (b)
for (e = !1;;) {
if (!this.format.repeating.length) {
if (e) throw new Error("Bad odometer format without digits");
this.resetFormat(), e = !0
}
if (c = this.format.repeating[this.format.repeating.length - 1], this.format.repeating = this.format.repeating.substring(0, this.format.repeating.length - 1), "d" === c) break;
this.addSpacer(c)
}
return d = this.renderDigit(), d.querySelector(".odometer-value").innerHTML = a, this.digits.push(d), this.insertDigit(d)
}, a.prototype.animate = function(a) {
return p && "count" !== this.options.animation ? this.animateSlide(a) : this.animateCount(a)
}, a.prototype.animateCount = function(a) {
var c, d, e, f, g, h = this;
if (d = +a - this.value) return f = e = u(), c = this.value, (g = function() {
var i, j, k;
return u() - f > h.options.duration ? (h.value = a, h.render(), void z(h.el, "odometerdone")) : (i = u() - e, i > b && (e = u(), k = i / h.options.duration, j = d * k, c += j, h.render(Math.round(c))), null != w ? w(g) : setTimeout(g, b))
})()
}, a.prototype.getDigitCount = function() {
var a, b, c, d, e, f;
for (d = 1 <= arguments.length ? G.call(arguments, 0) : [], a = e = 0, f = d.length; f > e; a = ++e) c = d[a], d[a] = Math.abs(c);
return b = Math.max.apply(Math, d), Math.ceil(Math.log(b + 1) / Math.log(10))
}, a.prototype.getFractionalDigitCount = function() {
var a, b, c, d, e, f, g;
for (e = 1 <= arguments.length ? G.call(arguments, 0) : [], b = /^\-?\d*\.(\d*?)0*$/, a = f = 0, g = e.length; g > f; a = ++f) d = e[a], e[a] = d.toString(), c = b.exec(e[a]), null == c ? e[a] = 0 : e[a] = c[1].length;
return Math.max.apply(Math, e)
}, a.prototype.resetDigits = function() {
return this.digits = [], this.ribbons = [], this.inside.innerHTML = "", this.resetFormat()
}, a.prototype.animateSlide = function(a) {
var b, c, d, f, g, h, i, j, k, l, m, n, o, p, q, s, t, u, v, w, x, y, z, B, C, D, E;
if (s = this.value, j = this.getFractionalDigitCount(s, a), j && (a *= Math.pow(10, j), s *= Math.pow(10, j)), d = a - s) {
for (this.bindTransitionEnd(), f = this.getDigitCount(s, a), g = [], b = 0, m = v = 0; f >= 0 ? f > v : v > f; m = f >= 0 ? ++v : --v) {
if (t = A(s / Math.pow(10, f - m - 1)), i = A(a / Math.pow(10, f - m - 1)), h = i - t, Math.abs(h) > this.MAX_VALUES) {
for (l = [], n = h / (this.MAX_VALUES + this.MAX_VALUES * b * e), c = t; h > 0 && i > c || 0 > h && c > i;) l.push(Math.round(c)), c += n;
l[l.length - 1] !== i && l.push(i), b++
} else l = function() {
E = [];
for (var a = t; i >= t ? i >= a : a >= i; i >= t ? a++ : a--) E.push(a);
return E
}.apply(this);
for (m = w = 0, y = l.length; y > w; m = ++w) k = l[m], l[m] = Math.abs(k % 10);
g.push(l)
}
for (this.resetDigits(), D = g.reverse(), m = x = 0, z = D.length; z > x; m = ++x)
for (l = D[m], this.digits[m] || this.addDigit(" ", m >= j), null == (u = this.ribbons)[m] && (u[m] = this.digits[m].querySelector(".odometer-ribbon-inner")), this.ribbons[m].innerHTML = "", 0 > d && (l = l.reverse()), o = C = 0, B = l.length; B > C; o = ++C) k = l[o], q = document.createElement("div"), q.className = "odometer-value", q.innerHTML = k, this.ribbons[m].appendChild(q), o === l.length - 1 && r(q, "odometer-last-value"), 0 === o && r(q, "odometer-first-value");
return 0 > t && this.addDigit("-"), p = this.inside.querySelector(".odometer-radix-mark"), null != p && p.parent.removeChild(p), j ? this.addSpacer(this.format.radix, this.digits[j - 1], "odometer-radix-mark") : void 0
}
}, a
}(), m.options = null != (E = window.odometerOptions) ? E : {}, setTimeout(function() {
var a, b, c, d, e;
if (window.odometerOptions) {
d = window.odometerOptions, e = [];
for (a in d) b = d[a], e.push(null != (c = m.options)[a] ? (c = m.options)[a] : c[a] = b);
return e
}
}, 0), m.init = function() {
var a, b, c, d, e, f;
if (null != document.querySelectorAll) {
for (b = document.querySelectorAll(m.options.selector || ".odometer"), f = [], c = 0, d = b.length; d > c; c++) a = b[c], f.push(a.odometer = new m({
el: a,
value: null != (e = a.innerText) ? e : a.textContent
}));
return f
}
}, null != (null != (F = document.documentElement) ? F.doScroll : void 0) && null != document.createEventObject ? (D = document.onreadystatechange, document.onreadystatechange = function() {
return "complete" === document.readyState && m.options.auto !== !1 && m.init(), null != D ? D.apply(this, arguments) : void 0
}) : document.addEventListener("DOMContentLoaded", function() {
return m.options.auto !== !1 ? m.init() : void 0
}, !1), "function" == typeof define && define.amd ? define([], function() {
return m
}) : "undefined" != typeof exports && null !== exports ? module.exports = m : window.Odometer = m
}).call(this);