equation-admin-template
Version:
Booststrap 4 admin template made by equation
1,260 lines • 366 kB
JavaScript
(function() {
var d;
window.AmCharts ? d = window.AmCharts : (d = {}, window.AmCharts = d, d.themes = {}, d.maps = {}, d.inheriting = {}, d.charts = [], d.onReadyArray = [], d.useUTC = !1, d.updateRate = 60, d.uid = 0, d.lang = {}, d.translations = {}, d.mapTranslations = {}, d.windows = {}, d.initHandlers = [], d.amString = "am", d.pmString = "pm");
d.Class = function(a) {
var b = function() {
arguments[0] !== d.inheriting && (this.events = {}, this.construct.apply(this, arguments))
};
a.inherits ? (b.prototype = new a.inherits(d.inheriting), b.base = a.inherits.prototype, delete a.inherits) : (b.prototype.createEvents = function() {
for (var a = 0; a < arguments.length; a++) this.events[arguments[a]] = []
}, b.prototype.listenTo = function(a, b, c) {
this.removeListener(a, b, c);
a.events[b].push({
handler: c,
scope: this
})
}, b.prototype.addListener = function(a, b, c) {
this.removeListener(this, a, b);
a && this.events[a] && this.events[a].push({
handler: b,
scope: c
})
}, b.prototype.removeListener = function(a, b, c) {
if (a && a.events && (a = a.events[b]))
for (b = a.length - 1; 0 <= b; b--) a[b].handler === c && a.splice(b, 1)
}, b.prototype.fire = function(a) {
for (var b = this.events[a.type], c = 0; c < b.length; c++) {
var d = b[c];
d.handler.call(d.scope, a)
}
});
for (var c in a) b.prototype[c] = a[c];
return b
};
d.addChart = function(a) {
window.requestAnimationFrame ? d.animationRequested || (d.animationRequested = !0, window.requestAnimationFrame(d.update)) : d.updateInt || (d.updateInt = setInterval(function() {
d.update()
}, Math.round(1E3 / d.updateRate)));
d.charts.push(a)
};
d.removeChart = function(a) {
for (var b = d.charts, c = b.length - 1; 0 <= c; c--) b[c] == a && b.splice(c, 1);
0 === b.length && (d.requestAnimation && (window.cancelAnimationFrame(d.requestAnimation), d.animationRequested = !1), d.updateInt && (clearInterval(d.updateInt), d.updateInt = NaN))
};
d.isModern = !0;
d.getIEVersion = function() {
var a = 0,
b, c;
"Microsoft Internet Explorer" == navigator.appName && (b = navigator.userAgent, c = /MSIE ([0-9]{1,}[.0-9]{0,})/, null !== c.exec(b) && (a = parseFloat(RegExp.$1)));
return a
};
d.applyLang = function(a, b) {
var c = d.translations;
b.dayNames = d.extend({}, d.dayNames);
b.shortDayNames = d.extend({}, d.shortDayNames);
b.monthNames = d.extend({}, d.monthNames);
b.shortMonthNames = d.extend({}, d.shortMonthNames);
b.amString = "am";
b.pmString = "pm";
c && (c = c[a]) && (d.lang = c, b.langObj = c, c.monthNames && (b.dayNames = d.extend({}, c.dayNames), b.shortDayNames = d.extend({}, c.shortDayNames), b.monthNames = d.extend({}, c.monthNames), b.shortMonthNames = d.extend({}, c.shortMonthNames)), c.am && (b.amString = c.am), c.pm && (b.pmString = c.pm));
d.amString = b.amString;
d.pmString = b.pmString
};
d.IEversion = d.getIEVersion();
9 > d.IEversion && 0 < d.IEversion && (d.isModern = !1, d.isIE = !0);
d.dx = 0;
d.dy = 0;
if (document.addEventListener || window.opera) d.isNN = !0, d.isIE = !1, d.dx = .5, d.dy = .5;
document.attachEvent && (d.isNN = !1, d.isIE = !0, d.isModern || (d.dx = 0, d.dy = 0));
window.chrome && (d.chrome = !0);
d.handleMouseUp = function(a) {
for (var b = d.charts, c = 0; c < b.length; c++) {
var e = b[c];
e && e.handleReleaseOutside && e.handleReleaseOutside(a)
}
};
d.handleMouseMove = function(a) {
for (var b = d.charts, c = 0; c < b.length; c++) {
var e = b[c];
e && e.handleMouseMove && e.handleMouseMove(a)
}
};
d.handleWheel = function(a) {
for (var b = d.charts, c = 0; c < b.length; c++) {
var e = b[c];
if (e && e.mouseIsOver) {
(e.mouseWheelScrollEnabled || e.mouseWheelZoomEnabled) && e.handleWheel && e.handleWheel(a);
break
}
}
};
d.resetMouseOver = function() {
for (var a = d.charts, b = 0; b < a.length; b++) {
var c = a[b];
c && (c.mouseIsOver = !1)
}
};
d.ready = function(a) {
d.onReadyArray.push(a)
};
d.handleLoad = function() {
d.isReady = !0;
for (var a = d.onReadyArray, b = 0; b < a.length; b++) {
var c = a[b];
isNaN(d.processDelay) ? c() : setTimeout(c, d.processDelay * b)
}
};
d.addInitHandler = function(a, b) {
d.initHandlers.push({
method: a,
types: b
})
};
d.callInitHandler = function(a) {
var b = d.initHandlers;
if (d.initHandlers)
for (var c = 0; c < b.length; c++) {
var e = b[c];
e.types ? d.isInArray(e.types, a.type) && e.method(a) : e.method(a)
}
};
d.getUniqueId = function() {
d.uid++;
return "AmChartsEl-" + d.uid
};
d.isNN && (document.addEventListener("mousemove", d.handleMouseMove), document.addEventListener("mouseup", d.handleMouseUp, !0), window.addEventListener("load", d.handleLoad, !0), window.addEventListener("DOMMouseScroll", d.handleWheel, !0), document.addEventListener("mousewheel", d.handleWheel, !0));
d.isIE && (document.attachEvent("onmousemove", d.handleMouseMove), document.attachEvent("onmouseup", d.handleMouseUp), window.attachEvent("onload", d.handleLoad), document.attachEvent("onmousewheel", d.handleWheel));
d.clear = function() {
var a = d.charts;
if (a)
for (var b = a.length - 1; 0 <= b; b--) a[b].clear();
d.updateInt && clearInterval(d.updateInt);
d.requestAnimation && window.cancelAnimationFrame(d.requestAnimation);
d.charts = [];
d.isNN && (document.removeEventListener("mousemove", d.handleMouseMove, !0), document.removeEventListener("mouseup", d.handleMouseUp, !0), window.removeEventListener("load", d.handleLoad, !0), window.removeEventListener("DOMMouseScroll", d.handleWheel, !0), document.removeEventListener("mousewheel", d.handleWheel, !0));
d.isIE && (document.detachEvent("onmousemove", d.handleMouseMove), document.detachEvent("onmouseup", d.handleMouseUp), window.detachEvent("onload", d.handleLoad))
};
d.makeChart = function(a, b, c) {
var e = b.type,
h = b.theme;
d.isString(h) && (h = d.themes[h], b.theme = h);
var f;
switch (e) {
case "serial":
f = new d.AmSerialChart(h);
break;
case "xy":
f = new d.AmXYChart(h);
break;
case "pie":
f = new d.AmPieChart(h);
break;
case "radar":
f = new d.AmRadarChart(h);
break;
case "gauge":
f = new d.AmAngularGauge(h);
break;
case "funnel":
f = new d.AmFunnelChart(h);
break;
case "map":
f = new d.AmMap(h);
break;
case "stock":
f = new d.AmStockChart(h);
break;
case "gantt":
f = new d.AmGanttChart(h)
}
d.extend(f, b);
d.isReady ? isNaN(c) ? f.write(a) : setTimeout(function() {
d.realWrite(f, a)
}, c) : d.ready(function() {
isNaN(c) ? f.write(a) : setTimeout(function() {
d.realWrite(f, a)
}, c)
});
return f
};
d.realWrite = function(a, b) {
a.write(b)
};
d.updateCount = 0;
d.validateAt = Math.round(d.updateRate / 10);
d.update = function() {
var a = d.charts;
d.updateCount++;
var b = !1;
d.updateCount == d.validateAt && (b = !0, d.updateCount = 0);
if (a)
for (var c = a.length - 1; 0 <= c; c--) a[c].update && a[c].update(), b && (a[c].autoResize ? a[c].validateSize && a[c].validateSize() : a[c].premeasure && a[c].premeasure());
window.requestAnimationFrame && (d.requestAnimation = window.requestAnimationFrame(d.update))
};
d.bezierX = 3;
d.bezierY = 6;
"complete" == document.readyState && d.handleLoad()
})();
(function() {
var d = window.AmCharts;
d.toBoolean = function(a, b) {
if (void 0 === a) return b;
switch (String(a).toLowerCase()) {
case "true":
case "yes":
case "1":
return !0;
case "false":
case "no":
case "0":
case null:
return !1;
default:
return !!a
}
};
d.removeFromArray = function(a, b) {
var c;
if (void 0 !== b && void 0 !== a)
for (c = a.length - 1; 0 <= c; c--) a[c] == b && a.splice(c, 1)
};
d.getPath = function() {
var a = document.getElementsByTagName("script");
if (a)
for (var b = 0; b < a.length; b++) {
var c = a[b].src;
if (-1 !== c.search(/\/(amcharts|ammap)\.js/)) return c.replace(/\/(amcharts|ammap)\.js.*/, "/")
}
};
d.normalizeUrl = function(a) {
return "" !== a && -1 === a.search(/\/$/) ? a + "/" : a
};
d.isAbsolute = function(a) {
return 0 === a.search(/^http[s]?:|^\//)
};
d.isInArray = function(a, b) {
for (var c = 0; c < a.length; c++)
if (a[c] == b) return !0;
return !1
};
d.getDecimals = function(a) {
var b = 0;
isNaN(a) || (a = String(a), -1 != a.indexOf("e-") ? b = Number(a.split("-")[1]) : -1 != a.indexOf(".") && (b = a.split(".")[1].length));
return b
};
d.wordwrap = function(a, b, c, e) {
var h, f, g, k;
a += "";
if (1 > b) return a;
h = -1;
for (a = (k = a.split(/\r\n|\n|\r/)).length; ++h < a; k[h] += g) {
g = k[h];
for (k[h] = ""; g.length > b; k[h] += d.trim(g.slice(0, f)) + ((g = g.slice(f)).length ? c : "")) f = 2 == e || (f = g.slice(0, b + 1).match(/\S*(\s)?$/))[1] ? b : f.input.length - f[0].length || 1 == e && b || f.input.length + (f = g.slice(b).match(/^\S*/))[0].length;
g = d.trim(g)
}
return k.join(c)
};
d.trim = function(a) {
return a.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, "")
};
d.wrappedText = function(a, b, c, e, h, f, g, k) {
var l = d.text(a, b, c, e, h, f, g);
if (l) {
var m = l.getBBox();
if (m.width > k) {
var n = "\n";
d.isModern || (n = "<br>");
k = Math.floor(k / (m.width /
b.length));
2 < k && (k -= 2);
b = d.wordwrap(b, k, n, !0);
l.remove();
l = d.text(a, b, c, e, h, f, g)
}
}
return l
};
d.getStyle = function(a, b) {
var c = "";
if (document.defaultView && document.defaultView.getComputedStyle) try {
c = document.defaultView.getComputedStyle(a, "").getPropertyValue(b)
} catch (e) {} else a.currentStyle && (b = b.replace(/\-(\w)/g, function(a, b) {
return b.toUpperCase()
}), c = a.currentStyle[b]);
return c
};
d.removePx = function(a) {
if (void 0 !== a) return Number(a.substring(0, a.length - 2))
};
d.getURL = function(a, b) {
if (a)
if ("_self" != b && b)
if ("_top" == b && window.top) window.top.location.href = a;
else if ("_parent" == b && window.parent) window.parent.location.href = a;
else if ("_blank" == b) window.open(a);
else {
var c = document.getElementsByName(b)[0];
c ? c.src = a : (c = d.windows[b]) ? c.opener && !c.opener.closed ? c.location.href = a : d.windows[b] = window.open(a) : d.windows[b] = window.open(a)
} else window.location.href = a
};
d.ifArray = function(a) {
return a && "object" == typeof a && 0 < a.length ? !0 : !1
};
d.callMethod = function(a, b) {
var c;
for (c = 0; c < b.length; c++) {
var e = b[c];
if (e) {
if (e[a]) e[a]();
var d = e.length;
if (0 < d) {
var f;
for (f = 0; f < d; f++) {
var g = e[f];
if (g && g[a]) g[a]()
}
}
}
}
};
d.toNumber = function(a) {
return "number" == typeof a ? a : Number(String(a).replace(/[^0-9\-.]+/g, ""))
};
d.toColor = function(a) {
if ("" !== a && void 0 !== a)
if (-1 != a.indexOf(",")) {
a = a.split(",");
var b;
for (b = 0; b < a.length; b++) {
var c = a[b].substring(a[b].length - 6, a[b].length);
a[b] = "#" + c
}
} else a = a.substring(a.length - 6, a.length), a = "#" + a;
return a
};
d.toCoordinate = function(a, b, c) {
var e;
void 0 !== a && (a = String(a), c && c < b && (b = c), e = Number(a), -1 != a.indexOf("!") && (e = b - Number(a.substr(1))), -1 != a.indexOf("%") && (e = b * Number(a.substr(0, a.length - 1)) / 100));
return e
};
d.fitToBounds = function(a, b, c) {
a < b && (a = b);
a > c && (a = c);
return a
};
d.isDefined = function(a) {
return void 0 === a ? !1 : !0
};
d.stripNumbers = function(a) {
return a.replace(/[0-9]+/g, "")
};
d.roundTo = function(a, b) {
if (0 > b) return a;
var c = Math.pow(10, b);
return Math.round(a * c) / c
};
d.toFixed = function(a, b) {
var c = String(Math.round(a * Math.pow(10, b)));
if (0 < b) {
var e = c.length;
if (e < b) {
var d;
for (d = 0; d < b - e; d++) c = "0" + c
}
e = c.substring(0,
c.length - b);
"" === e && (e = 0);
return e + "." + c.substring(c.length - b, c.length)
}
return String(c)
};
d.formatDuration = function(a, b, c, e, h, f) {
var g = d.intervals,
k = f.decimalSeparator;
if (a >= g[b].contains) {
var l = a - Math.floor(a / g[b].contains) * g[b].contains;
"ss" == b ? (l = d.formatNumber(l, f), 1 == l.split(k)[0].length && (l = "0" + l)) : l = d.roundTo(l, f.precision);
("mm" == b || "hh" == b) && 10 > l && (l = "0" + l);
c = l + "" + e[b] + "" + c;
a = Math.floor(a / g[b].contains);
b = g[b].nextInterval;
return d.formatDuration(a, b, c, e, h, f)
}
"ss" == b && (a = d.formatNumber(a, f), 1 == a.split(k)[0].length && (a = "0" + a));
("mm" == b || "hh" == b) && 10 > a && (a = "0" + a);
c = a + "" + e[b] + "" + c;
if (g[h].count > g[b].count)
for (a = g[b].count; a < g[h].count; a++) b = g[b].nextInterval, "ss" == b || "mm" == b || "hh" == b ? c = "00" + e[b] + "" + c : "DD" == b && (c = "0" + e[b] + "" + c);
":" == c.charAt(c.length - 1) && (c = c.substring(0, c.length - 1));
return c
};
d.formatNumber = function(a, b, c, e, h) {
a = d.roundTo(a, b.precision);
isNaN(c) && (c = b.precision);
var f = b.decimalSeparator;
b = b.thousandsSeparator;
var g;
g = 0 > a ? "-" : "";
a = Math.abs(a);
var k = String(a),
l = !1; - 1 != k.indexOf("e") && (l = !0);
0 <= c && !l && (k = d.toFixed(a, c));
var m = "";
if (l) m = k;
else {
var k = k.split("."),
l = String(k[0]),
n;
for (n = l.length; 0 <= n; n -= 3) m = n != l.length ? 0 !== n ? l.substring(n - 3, n) + b + m : l.substring(n - 3, n) + m : l.substring(n - 3, n);
void 0 !== k[1] && (m = m + f + k[1]);
void 0 !== c && 0 < c && "0" != m && (m = d.addZeroes(m, f, c))
}
m = g + m;
"" === g && !0 === e && 0 !== a && (m = "+" + m);
!0 === h && (m += "%");
return m
};
d.addZeroes = function(a, b, c) {
a = a.split(b);
void 0 === a[1] && 0 < c && (a[1] = "0");
return a[1].length < c ? (a[1] += "0", d.addZeroes(a[0] + b + a[1], b, c)) : void 0 !== a[1] ? a[0] + b + a[1] : a[0]
};
d.scientificToNormal = function(a) {
var b;
a = String(a).split("e");
var c;
if ("-" == a[1].substr(0, 1)) {
b = "0.";
for (c = 0; c < Math.abs(Number(a[1])) - 1; c++) b += "0";
b += a[0].split(".").join("")
} else {
var e = 0;
b = a[0].split(".");
b[1] && (e = b[1].length);
b = a[0].split(".").join("");
for (c = 0; c < Math.abs(Number(a[1])) - e; c++) b += "0"
}
return b
};
d.toScientific = function(a, b) {
if (0 === a) return "0";
var c = Math.floor(Math.log(Math.abs(a)) * Math.LOG10E),
e = String(e).split(".").join(b);
return String(e) + "e" + c
};
d.randomColor = function() {
return "#" + ("00000" + (16777216 * Math.random() << 0).toString(16)).substr(-6)
};
d.hitTest = function(a, b, c) {
var e = !1,
h = a.x,
f = a.x + a.width,
g = a.y,
k = a.y + a.height,
l = d.isInRectangle;
e || (e = l(h, g, b));
e || (e = l(h, k, b));
e || (e = l(f, g, b));
e || (e = l(f, k, b));
e || !0 === c || (e = d.hitTest(b, a, !0));
return e
};
d.isInRectangle = function(a, b, c) {
return a >= c.x - 5 && a <= c.x + c.width + 5 && b >= c.y - 5 && b <= c.y + c.height + 5 ? !0 : !1
};
d.isPercents = function(a) {
if (-1 != String(a).indexOf("%")) return !0
};
d.formatValue = function(a, b, c, e, h, f, g, k) {
if (b) {
void 0 === h && (h = "");
var l;
for (l = 0; l < c.length; l++) {
var m = c[l],
n = b[m];
void 0 !== n && (n = f ? d.addPrefix(n, k, g, e) : d.formatNumber(n, e), a = a.replace(new RegExp("\\[\\[" + h + "" + m + "\\]\\]", "g"), n))
}
}
return a
};
d.formatDataContextValue = function(a, b) {
if (a) {
var c = a.match(/\[\[.*?\]\]/g),
e;
for (e = 0; e < c.length; e++) {
var d = c[e],
d = d.substr(2, d.length - 4);
void 0 !== b[d] && (a = a.replace(new RegExp("\\[\\[" + d + "\\]\\]", "g"), b[d]))
}
}
return a
};
d.massReplace = function(a, b) {
for (var c in b)
if (b.hasOwnProperty(c)) {
var e = b[c];
void 0 === e && (e = "");
a = a.replace(c, e)
}
return a
};
d.cleanFromEmpty = function(a) {
return a.replace(/\[\[[^\]]*\]\]/g, "")
};
d.addPrefix = function(a, b, c, e, h) {
var f = d.formatNumber(a, e),
g = "",
k, l, m;
if (0 === a) return "0";
0 > a && (g = "-");
a = Math.abs(a);
if (1 < a)
for (k = b.length - 1; - 1 < k; k--) {
if (a >= b[k].number && (l = a / b[k].number, m = Number(e.precision), 1 > m && (m = 1), c = d.roundTo(l, m), m = d.formatNumber(c, {
precision: -1,
decimalSeparator: e.decimalSeparator,
thousandsSeparator: e.thousandsSeparator
}), !h || l == c)) {
f = g + "" + m + "" + b[k].prefix;
break
}
} else
for (k = 0; k < c.length; k++)
if (a <= c[k].number) {
l = a / c[k].number;
m = Math.abs(Math.floor(Math.log(l) * Math.LOG10E));
l = d.roundTo(l, m);
f = g + "" + l + "" + c[k].prefix;
break
}
return f
};
d.remove = function(a) {
a && a.remove()
};
d.getEffect = function(a) {
">" == a && (a = "easeOutSine");
"<" == a && (a = "easeInSine");
"elastic" == a && (a = "easeOutElastic");
return a
};
d.getObjById = function(a, b) {
var c, e;
for (e = 0; e < a.length; e++) {
var d = a[e];
if (d.id == b) {
c = d;
break
}
}
return c
};
d.applyTheme = function(a, b, c) {
b || (b = d.theme);
try {
b = JSON.parse(JSON.stringify(b))
} catch (e) {}
b && b[c] && d.extend(a, b[c])
};
d.isString = function(a) {
return "string" == typeof a ? !0 : !1
};
d.extend = function(a, b, c) {
var e;
a || (a = {});
for (e in b) c ? a.hasOwnProperty(e) || (a[e] = b[e]) : a[e] = b[e];
return a
};
d.copyProperties = function(a, b) {
for (var c in a) a.hasOwnProperty(c) && "events" != c && void 0 !== a[c] && "function" != typeof a[c] && "cname" != c && (b[c] = a[c])
};
d.processObject = function(a, b, c, e) {
if (!1 === a instanceof b && (a = e ? d.extend(new b(c), a) : d.extend(a, new b(c), !0), a.listeners))
for (var h in a.listeners) b = a.listeners[h], a.addListener(b.event, b.method);
return a
};
d.fixNewLines = function(a) {
var b = RegExp("\\n", "g");
a && (a = a.replace(b, "<br />"));
return a
};
d.fixBrakes = function(a) {
if (d.isModern) {
var b = RegExp("<br>", "g");
a && (a = a.replace(b, "\n"))
} else a = d.fixNewLines(a);
return a
};
d.deleteObject = function(a, b) {
if (a) {
if (void 0 === b || null === b) b = 20;
if (0 !== b)
if ("[object Array]" === Object.prototype.toString.call(a))
for (var c = 0; c < a.length; c++) d.deleteObject(a[c], b - 1), a[c] = null;
else if (a && !a.tagName) try {
for (c in a.theme = null, a) a[c] && ("object" == typeof a[c] && d.deleteObject(a[c], b - 1), "function" != typeof a[c] && (a[c] = null))
} catch (e) {}
}
};
d.bounce = function(a, b, c, e, d) {
return (b /= d) < 1 / 2.75 ? 7.5625 * e * b * b + c : b < 2 / 2.75 ? e * (7.5625 * (b -= 1.5 / 2.75) * b + .75) + c : b < 2.5 / 2.75 ? e * (7.5625 * (b -= 2.25 / 2.75) * b + .9375) + c : e * (7.5625 * (b -= 2.625 / 2.75) * b + .984375) + c
};
d.easeInOutQuad = function(a, b, c, e, d) {
b /= d / 2;
if (1 > b) return e / 2 * b * b + c;
b--;
return -e / 2 * (b * (b - 2) - 1) + c
};
d.easeInSine = function(a, b, c, e, d) {
return -e * Math.cos(b / d * (Math.PI / 2)) + e + c
};
d.easeOutSine = function(a, b, c, e, d) {
return e * Math.sin(b / d * (Math.PI / 2)) + c
};
d.easeOutElastic = function(a, b, c, e, d) {
a = 1.70158;
var f = 0,
g = e;
if (0 === b) return c;
if (1 == (b /= d)) return c + e;
f || (f = .3 * d);
g < Math.abs(e) ? (g = e, a = f / 4) : a = f / (2 * Math.PI) * Math.asin(e / g);
return g * Math.pow(2, -10 * b) * Math.sin(2 * (b * d - a) * Math.PI / f) + e + c
};
d.fixStepE = function(a) {
a = a.toExponential(0).split("e");
var b = Number(a[1]);
9 == Number(a[0]) && b++;
return d.generateNumber(1, b)
};
d.generateNumber = function(a, b) {
var c = "",
e;
e = 0 > b ? Math.abs(b) - 1 : Math.abs(b);
var d;
for (d = 0; d < e; d++) c += "0";
return 0 > b ? Number("0." + c + String(a)) : Number(String(a) + c)
};
d.setCN = function(a, b, c, e) {
if (a.addClassNames && b && (b = b.node) && c) {
var d = b.getAttribute("class");
a = a.classNamePrefix + "-";
e && (a = "");
d ? b.setAttribute("class", d + " " + a + c) : b.setAttribute("class", a + c)
}
};
d.removeCN = function(a, b, c) {
b && (b = b.node) && c && (b = b.classList) && b.remove(a.classNamePrefix + "-" + c)
};
d.parseDefs = function(a, b) {
for (var c in a) {
var e = typeof a[c];
if (0 < a[c].length && "object" == e)
for (var h = 0; h < a[c].length; h++) e = document.createElementNS(d.SVG_NS, c), b.appendChild(e), d.parseDefs(a[c][h], e);
else "object" == e ? (e = document.createElementNS(d.SVG_NS, c), b.appendChild(e), d.parseDefs(a[c], e)) : b.setAttribute(c, a[c])
}
}
})();
(function() {
var d = window.AmCharts;
d.AxisBase = d.Class({
construct: function(a) {
this.createEvents("clickItem", "rollOverItem", "rollOutItem");
this.titleDY = this.y = this.x = this.dy = this.dx = 0;
this.axisThickness = 1;
this.axisColor = "#000000";
this.axisAlpha = 1;
this.gridCount = this.tickLength = 5;
this.gridAlpha = .15;
this.gridThickness = 1;
this.gridColor = "#000000";
this.dashLength = 0;
this.labelFrequency = 1;
this.showLastLabel = this.showFirstLabel = !0;
this.fillColor = "#FFFFFF";
this.fillAlpha = 0;
this.labelsEnabled = !0;
this.labelRotation = 0;
this.autoGridCount = !0;
this.offset = 0;
this.guides = [];
this.visible = !0;
this.counter = 0;
this.guides = [];
this.ignoreAxisWidth = this.inside = !1;
this.minHorizontalGap = 75;
this.minVerticalGap = 35;
this.titleBold = !0;
this.minorGridEnabled = !1;
this.minorGridAlpha = .07;
this.autoWrap = !1;
this.titleAlign = "middle";
this.labelOffset = 0;
this.bcn = "axis-";
this.centerLabels = !1;
this.firstDayOfWeek = 1;
this.centerLabelOnFullPeriod = this.markPeriodChange = this.boldPeriodBeginning = !0;
this.periods = [{
period: "fff",
count: 1
}, {
period: "fff",
count: 5
}, {
period: "fff",
count: 10
}, {
period: "fff",
count: 50
}, {
period: "fff",
count: 100
}, {
period: "fff",
count: 500
}, {
period: "ss",
count: 1
}, {
period: "ss",
count: 5
}, {
period: "ss",
count: 10
}, {
period: "ss",
count: 30
}, {
period: "mm",
count: 1
}, {
period: "mm",
count: 5
}, {
period: "mm",
count: 10
}, {
period: "mm",
count: 30
}, {
period: "hh",
count: 1
}, {
period: "hh",
count: 3
}, {
period: "hh",
count: 6
}, {
period: "hh",
count: 12
}, {
period: "DD",
count: 1
}, {
period: "DD",
count: 2
}, {
period: "DD",
count: 3
}, {
period: "DD",
count: 4
}, {
period: "DD",
count: 5
}, {
period: "WW",
count: 1
}, {
period: "MM",
count: 1
}, {
period: "MM",
count: 2
}, {
period: "MM",
count: 3
}, {
period: "MM",
count: 6
}, {
period: "YYYY",
count: 1
}, {
period: "YYYY",
count: 2
}, {
period: "YYYY",
count: 5
}, {
period: "YYYY",
count: 10
}, {
period: "YYYY",
count: 50
}, {
period: "YYYY",
count: 100
}];
this.dateFormats = [{
period: "fff",
format: "NN:SS.QQQ"
}, {
period: "ss",
format: "JJ:NN:SS"
}, {
period: "mm",
format: "JJ:NN"
}, {
period: "hh",
format: "JJ:NN"
}, {
period: "DD",
format: "MMM DD"
}, {
period: "WW",
format: "MMM DD"
}, {
period: "MM",
format: "MMM"
}, {
period: "YYYY",
format: "YYYY"
}];
this.nextPeriod = {
fff: "ss",
ss: "mm",
mm: "hh",
hh: "DD",
DD: "MM",
MM: "YYYY"
};
d.applyTheme(this, a, "AxisBase")
},
zoom: function(a, b) {
this.start = a;
this.end = b;
this.dataChanged = !0;
this.draw()
},
fixAxisPosition: function() {
var a = this.position;
"H" == this.orientation ? ("left" == a && (a = "bottom"), "right" == a && (a = "top")) : ("bottom" == a && (a = "left"), "top" == a && (a = "right"));
this.position = a
},
init: function() {
this.createBalloon()
},
draw: function() {
var a = this.chart;
this.prevBY = this.prevBX = NaN;
this.allLabels = [];
this.counter = 0;
this.destroy();
this.fixAxisPosition();
this.setBalloonBounds();
this.labels = [];
var b = a.container,
c = b.set();
a.gridSet.push(c);
this.set = c;
b = b.set();
a.axesLabelsSet.push(b);
this.labelsSet = b;
this.axisLine = new this.axisRenderer(this);
this.autoGridCount ? ("V" == this.orientation ? (a = this.height / this.minVerticalGap, 3 > a && (a = 3)) : a = this.width / this.minHorizontalGap, this.gridCountR = Math.max(a, 1)) : this.gridCountR = this.gridCount;
this.axisWidth = this.axisLine.axisWidth;
this.addTitle()
},
setOrientation: function(a) {
this.orientation = a ? "H" : "V"
},
addTitle: function() {
var a = this.title;
this.titleLabel = null;
if (a) {
var b = this.chart,
c = this.titleColor;
void 0 === c && (c = b.color);
var e = this.titleFontSize;
isNaN(e) && (e = b.fontSize + 1);
a = d.text(b.container, a, c, b.fontFamily, e, this.titleAlign, this.titleBold);
d.setCN(b, a, this.bcn + "title");
this.titleLabel = a
}
},
positionTitle: function() {
var a = this.titleLabel;
if (a) {
var b, c, e = this.labelsSet,
h = {};
0 < e.length() ? h = e.getBBox() : (h.x = 0, h.y = 0, h.width = this.width, h.height = this.height, d.VML && (h.y += this.y, h.x += this.x));
e.push(a);
var e = h.x,
f = h.y;
d.VML && (f -= this.y, e -= this.x);
var g = h.width,
h = h.height,
k = this.width,
l = this.height,
m = 0,
n = a.getBBox().height / 2,
q = this.inside,
p = this.titleAlign;
switch (this.position) {
case "top":
b = "left" == p ? -1 : "right" == p ? k : k / 2;
c = f - 10 - n;
break;
case "bottom":
b = "left" == p ? -1 : "right" == p ? k : k / 2;
c = f + h + 10 + n;
break;
case "left":
b = e - 10 - n;
q && (b -= 5);
m = -90;
c = ("left" == p ? l + 1 : "right" == p ? -1 : l / 2) + this.titleDY;
break;
case "right":
b = e + g + 10 + n, q && (b += 7), c = ("left" == p ? l + 2 : "right" == p ? -2 : l / 2) + this.titleDY, m = -90
}
this.marginsChanged ? (a.translate(b, c), this.tx = b, this.ty = c) : a.translate(this.tx, this.ty);
this.marginsChanged = !1;
isNaN(this.titleRotation) || (m = this.titleRotation);
0 !== m && a.rotate(m)
}
},
pushAxisItem: function(a, b) {
var c = this,
e = a.graphics();
0 < e.length() && (b ? c.labelsSet.push(e) : c.set.push(e));
if (e = a.getLabel()) c.labelsSet.push(e), e.click(function(b) {
c.handleMouse(b, a, "clickItem")
}).touchend(function(b) {
c.handleMouse(b, a, "clickItem")
}).mouseover(function(b) {
c.handleMouse(b, a, "rollOverItem")
}).mouseout(function(b) {
c.handleMouse(b, a, "rollOutItem")
})
},
handleMouse: function(a, b, c) {
this.fire({
type: c,
value: b.value,
serialDataItem: b.serialDataItem,
axis: this,
target: b.label,
chart: this.chart,
event: a
})
},
addGuide: function(a) {
for (var b = this.guides, c = !1, e = b.length, h = 0; h < b.length; h++) b[h] == a && (c = !0, e = h);
a = d.processObject(a, d.Guide, this.theme);
a.id || (a.id = "guideAuto" + e + "_" + (new Date).getTime());
c || b.push(a)
},
removeGuide: function(a) {
var b = this.guides,
c;
for (c = 0; c < b.length; c++) b[c] == a && b.splice(c, 1)
},
handleGuideOver: function(a) {
clearTimeout(this.chart.hoverInt);
var b = a.graphics.getBBox(),
c = this.x + b.x + b.width / 2,
b = this.y + b.y + b.height / 2,
e = a.fillColor;
void 0 === e && (e = a.lineColor);
this.chart.showBalloon(a.balloonText, e, !0, c, b)
},
handleGuideOut: function() {
this.chart.hideBalloon()
},
addEventListeners: function(a, b) {
var c = this;
a.mouseover(function() {
c.handleGuideOver(b)
});
a.touchstart(function() {
c.handleGuideOver(b)
});
a.mouseout(function() {
c.handleGuideOut(b)
})
},
getBBox: function() {
var a;
this.labelsSet && (a = this.labelsSet.getBBox());
a ? d.VML || (a = {
x: a.x + this.x,
y: a.y + this.y,
width: a.width,
height: a.height
}) : a = {
x: 0,
y: 0,
width: 0,
height: 0
};
return a
},
destroy: function() {
d.remove(this.set);
d.remove(this.labelsSet);
var a = this.axisLine;
a && d.remove(a.axisSet);
d.remove(this.grid0)
},
chooseMinorFrequency: function(a) {
for (var b = 10; 0 < b; b--)
if (a / b == Math.round(a / b)) return a / b
},
parseDatesDraw: function() {
var a, b = this.chart,
c = this.showFirstLabel,
e = this.showLastLabel,
h, f = "",
g = d.extractPeriod(this.minPeriod),
k = d.getPeriodDuration(g.period, g.count),
l, m, n, q, p, t = this.firstDayOfWeek,
r = this.boldPeriodBeginning;
a = this.minorGridEnabled;
var w, y = this.gridAlpha,
x, u = this.choosePeriod(0),
A = u.period,
u = u.count,
z = d.getPeriodDuration(A, u);
z < k && (A = g.period, u = g.count, z = k);
g = A;
"WW" == g && (g = "DD");
this.stepWidth = this.getStepWidth(this.timeDifference);
var B = Math.ceil(this.timeDifference / z) + 5,
D = l = d.resetDateToMin(new Date(this.startTime - z), A, u, t).getTime();
if (g == A && 1 == u && this.centerLabelOnFullPeriod || this.autoWrap || this.centerLabels) n = z * this.stepWidth, this.autoWrap && !this.centerLabels && (n = -n);
this.cellWidth = k * this.stepWidth;
q = Math.round(l / z);
k = -1;
q / 2 == Math.round(q / 2) && (k = -2, l -= z);
q = this.firstTime;
var C = 0,
K = 0;
a && 1 < u && (w = this.chooseMinorFrequency(u), x = d.getPeriodDuration(A, w), "DD" == A && (x += d.getPeriodDuration("hh")), "fff" == A && (x = 1));
if (0 < this.gridCountR)
for (B - 5 - k > this.autoRotateCount && !isNaN(this.autoRotateAngle) && (this.labelRotationR = this.autoRotateAngle), a = k; a <= B; a++) {
p = q + z * (a + Math.floor((D - q) / z)) - C;
"DD" == A && (p += 36E5);
p = d.resetDateToMin(new Date(p), A, u, t).getTime();
"MM" == A && (h = (p - l) / z, 1.5 <= (p - l) / z && (p = p - (h - 1) * z + d.getPeriodDuration("DD",
3), p = d.resetDateToMin(new Date(p), A, 1).getTime(), C += z));
h = (p - this.startTime) * this.stepWidth;
if ("radar" == b.type) {
if (h = this.axisWidth - h, 0 > h || h > this.axisWidth) continue
} else this.rotate ? "date" == this.type && "middle" == this.gridPosition && (K = -z * this.stepWidth / 2) : "date" == this.type && (h = this.axisWidth - h);
f = !1;
this.nextPeriod[g] && (f = this.checkPeriodChange(this.nextPeriod[g], 1, p, l, g));
l = !1;
f && this.markPeriodChange ? (f = this.dateFormatsObject[this.nextPeriod[g]], this.twoLineMode && (f = this.dateFormatsObject[g] + "\n" +
f, f = d.fixBrakes(f)), l = !0) : f = this.dateFormatsObject[g];
r || (l = !1);
this.currentDateFormat = f;
f = d.formatDate(new Date(p), f, b);
if (a == k && !c || a == B && !e) f = " ";
this.labelFunction && (f = this.labelFunction(f, new Date(p), this, A, u, m).toString());
this.boldLabels && (l = !0);
m = new this.axisItemRenderer(this, h, f, !1, n, K, !1, l);
this.pushAxisItem(m);
m = l = p;
if (!isNaN(w))
for (h = 1; h < u; h += w) this.gridAlpha = this.minorGridAlpha, f = p + x * h, f = d.resetDateToMin(new Date(f), A, w, t).getTime(), f = new this.axisItemRenderer(this, (f - this.startTime) * this.stepWidth, void 0, void 0, void 0, void 0, void 0, void 0, void 0, !0), this.pushAxisItem(f);
this.gridAlpha = y
}
},
choosePeriod: function(a) {
var b = d.getPeriodDuration(this.periods[a].period, this.periods[a].count),
c = this.periods;
return this.timeDifference < b && 0 < a ? c[a - 1] : Math.ceil(this.timeDifference / b) <= this.gridCountR ? c[a] : a + 1 < c.length ? this.choosePeriod(a + 1) : c[a]
},
getStepWidth: function(a) {
var b;
this.startOnAxis ? (b = this.axisWidth / (a - 1), 1 == a && (b = this.axisWidth)) : b = this.axisWidth / a;
return b
},
timeZoom: function(a, b) {
this.startTime = a;
this.endTime = b
},
minDuration: function() {
var a = d.extractPeriod(this.minPeriod);
return d.getPeriodDuration(a.period, a.count)
},
checkPeriodChange: function(a, b, c, e, h) {
c = new Date(c);
var f = new Date(e),
g = this.firstDayOfWeek;
e = b;
"DD" == a && (b = 1);
c = d.resetDateToMin(c, a, b, g).getTime();
b = d.resetDateToMin(f, a, b, g).getTime();
return "DD" == a && "hh" != h && c - b < d.getPeriodDuration(a, e) - d.getPeriodDuration("hh", 1) ? !1 : c != b ? !0 : !1
},
generateDFObject: function() {
this.dateFormatsObject = {};
var a;
for (a = 0; a < this.dateFormats.length; a++) {
var b = this.dateFormats[a];
this.dateFormatsObject[b.period] = b.format
}
},
hideBalloon: function() {
this.balloon && this.balloon.hide && this.balloon.hide();
this.prevBY = this.prevBX = NaN
},
formatBalloonText: function(a) {
return a
},
showBalloon: function(a, b, c, e) {
var d = this.offset;
switch (this.position) {
case "bottom":
b = this.height + d;
break;
case "top":
b = -d;
break;
case "left":
a = -d;
break;
case "right":
a = this.width + d
}
c || (c = this.currentDateFormat);
if ("V" == this.orientation) {
if (0 > b || b > this.height) return;
if (isNaN(b)) {
this.hideBalloon();
return
}
b = this.adjustBalloonCoordinate(b, e);
e = this.coordinateToValue(b)
} else {
if (0 > a || a > this.width) return;
if (isNaN(a)) {
this.hideBalloon();
return
}
a = this.adjustBalloonCoordinate(a, e);
e = this.coordinateToValue(a)
}
var f;
if (d = this.chart.chartCursor) f = d.index;
if (this.balloon && void 0 !== e && this.balloon.enabled) {
if (this.balloonTextFunction) {
if ("date" == this.type || !0 === this.parseDates) e = new Date(e);
e = this.balloonTextFunction(e)
} else this.balloonText ? e = this.formatBalloonText(this.balloonText, f, c) : isNaN(e) || (e = this.formatValue(e, c));
if (a != this.prevBX || b != this.prevBY) this.balloon.setPosition(a, b), this.prevBX = a, this.prevBY = b, e && this.balloon.showBalloon(e)
}
},
adjustBalloonCoordinate: function(a) {
return a
},
createBalloon: function() {
var a = this.chart,
b = a.chartCursor;
b && (b = b.cursorPosition, "mouse" != b && (this.stickBalloonToCategory = !0), "start" == b && (this.stickBalloonToStart = !0), "ValueAxis" == this.cname && (this.stickBalloonToCategory = !1));
this.balloon && (this.balloon.destroy && this.balloon.destroy(), d.extend(this.balloon, a.balloon, !0))
},
setBalloonBounds: function() {
var a = this.balloon;
if (a) {
var b = this.chart;
a.cornerRadius = 0;
a.shadowAlpha = 0;
a.borderThickness = 1;
a.borderAlpha = 1;
a.adjustBorderColor = !1;
a.showBullet = !1;
this.balloon = a;
a.chart = b;
a.mainSet = b.plotBalloonsSet;
a.pointerWidth = this.tickLength;
if (this.parseDates || "date" == this.type) a.pointerWidth = 0;
a.className = this.id;
b = "V";
"V" == this.orientation && (b = "H");
this.stickBalloonToCategory || (a.animationDuration = 0);
var c, e, d, f, g = this.inside,
k = this.width,
l = this.height;
switch (this.position) {
case "bottom":
c = 0;
e = k;
g ? (d = 0, f = l) : (d = l, f = l + 1E3);
break;
case "top":
c = 0;
e = k;
g ? (d = 0, f = l) : (d = -1E3, f = 0);
break;
case "left":
d = 0;
f = l;
g ? (c = 0, e = k) : (c = -1E3, e = 0);
break;
case "right":
d = 0, f = l, g ? (c = 0, e = k) : (c = k, e = k + 1E3)
}
a.drop || (a.pointerOrientation = b);
a.setBounds(c, d, e, f)
}
}
})
})();
(function() {
var d = window.AmCharts;
d.ValueAxis = d.Class({
inherits: d.AxisBase,
construct: function(a) {
this.cname = "ValueAxis";
this.createEvents("axisChanged", "logarithmicAxisFailed", "axisZoomed", "axisIntZoomed");
d.ValueAxis.base.construct.call(this, a);
this.dataChanged = !0;
this.stackType = "none";
this.position = "left";
this.unitPosition = "right";
this.includeAllValues = this.recalculateToPercents = this.includeHidden = this.includeGuidesInMinMax = this.integersOnly = !1;
this.durationUnits = {
DD: "d. ",
hh: ":",
mm: ":",
ss: ""
};
this.scrollbar = !1;
this.baseValue = 0;
this.radarCategoriesEnabled = !0;
this.axisFrequency = 1;
this.gridType = "polygons";
this.useScientificNotation = !1;
this.axisTitleOffset = 10;
this.pointPosition = "axis";
this.minMaxMultiplier = 1;
this.logGridLimit = 2;
this.totalTextOffset = this.treatZeroAs = 0;
this.minPeriod = "ss";
this.relativeStart = 0;
this.relativeEnd = 1;
d.applyTheme(this, a, this.cname)
},
updateData: function() {
0 >= this.gridCountR && (this.gridCountR = 1);
this.totals = [];
this.data = this.chart.chartData;
var a = this.chart;
"xy" != a.type && (this.stackGraphs("smoothedLine"), this.stackGraphs("line"), this.stackGraphs("column"), this.stackGraphs("step"));
this.recalculateToPercents && this.recalculate();
this.synchronizationMultiplier && this.synchronizeWith ? (d.isString(this.synchronizeWith) && (this.synchronizeWith = a.getValueAxisById(this.synchronizeWith)), this.synchronizeWith && (this.synchronizeWithAxis(this.synchronizeWith), this.foundGraphs = !0)) : (this.foundGraphs = !1, this.getMinMax(), 0 === this.start && this.end == this.data.length - 1 && isNaN(this.minZoom) && isNaN(this.maxZoom) && (this.fullMin = this.min, this.fullMax = this.max, "date" != this.type && this.strictMinMax && (isNaN(this.minimum) || (this.fullMin = this.minimum), isNaN(this.maximum) || (this.fullMax = this.maximum)), this.logarithmic && (this.fullMin = this.logMin, 0 === this.fullMin && (this.fullMin = this.treatZeroAs)), "date" == this.type && (this.minimumDate ||