Файл: templates/Default/js/jquery.graph.js
Строк: 1313
<?php
/* Javascript plotting library for jQuery, v. 0.7.
*
* Released under the MIT license by IOLA, December 2007.
*
*/ (function (b) {
b.color = {};
b.color.make = function (d, e, g, f) {
var c = {};
c.r = d || 0;
c.g = e || 0;
c.b = g || 0;
c.a = f != null ? f : 1;
c.add = function (h, j) {
for (var k = 0; k < h.length; ++k) {
c[h.charAt(k)] += j
}
return c.normalize()
};
c.scale = function (h, j) {
for (var k = 0; k < h.length; ++k) {
c[h.charAt(k)] *= j
}
return c.normalize()
};
c.toString = function () {
if (c.a >= 1) {
return "rgb(" + [c.r, c.g, c.b].join(",") + ")"
} else {
return "rgba(" + [c.r, c.g, c.b, c.a].join(",") + ")"
}
};
c.normalize = function () {
function h(k, j, l) {
return j < k ? k : (j > l ? l : j)
}
c.r = h(0, parseInt(c.r), 255);
c.g = h(0, parseInt(c.g), 255);
c.b = h(0, parseInt(c.b), 255);
c.a = h(0, c.a, 0.7);
return c
};
c.clone = function () {
return b.color.make(c.r, c.b, c.g, c.a)
};
return c.normalize()
};
b.color.extract = function (d, e) {
var c;
do {
c = d.css(e).toLowerCase();
if (c != "" && c != "transparent") {
break
}
d = d.parent()
} while (!b.nodeName(d.get(0), "body"));
if (c == "rgba(0, 0, 0, 0)") {
c = "transparent"
}
return b.color.parse(c)
};
b.color.parse = function (c) {
var d, f = b.color.make;
if (d = /rgb(s*([0-9]{1,3})s*,s*([0-9]{1,3})s*,s*([0-9]{1,3})s*)/.exec(c)) {
return f(parseInt(d[1], 10), parseInt(d[2], 10), parseInt(d[3], 10))
}
if (d = /rgba(s*([0-9]{1,3})s*,s*([0-9]{1,3})s*,s*([0-9]{1,3})s*,s*([0-9]+(?:.[0-9]+)?)s*)/.exec(c)) {
return f(parseInt(d[1], 10), parseInt(d[2], 10), parseInt(d[3], 10), parseFloat(d[4]))
}
if (d = /rgb(s*([0-9]+(?:.[0-9]+)?)%s*,s*([0-9]+(?:.[0-9]+)?)%s*,s*([0-9]+(?:.[0-9]+)?)%s*)/.exec(c)) {
return f(parseFloat(d[1]) * 2.55, parseFloat(d[2]) * 2.55, parseFloat(d[3]) * 2.55)
}
if (d = /rgba(s*([0-9]+(?:.[0-9]+)?)%s*,s*([0-9]+(?:.[0-9]+)?)%s*,s*([0-9]+(?:.[0-9]+)?)%s*,s*([0-9]+(?:.[0-9]+)?)s*)/.exec(c)) {
return f(parseFloat(d[1]) * 2.55, parseFloat(d[2]) * 2.55, parseFloat(d[3]) * 2.55, parseFloat(d[4]))
}
if (d = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c)) {
return f(parseInt(d[1], 16), parseInt(d[2], 16), parseInt(d[3], 16))
}
if (d = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c)) {
return f(parseInt(d[1] + d[1], 16), parseInt(d[2] + d[2], 16), parseInt(d[3] + d[3], 16))
}
var e = b.trim(c).toLowerCase();
if (e == "transparent") {
return f(255, 255, 255, 0)
} else {
d = a[e] || [0, 0, 0];
return f(d[0], d[1], d[2])
}
};
var a = {
aqua: [0, 255, 255],
azure: [240, 255, 255],
beige: [245, 245, 220],
black: [0, 0, 0],
blue: [0, 0, 255],
brown: [165, 42, 42],
cyan: [0, 255, 255],
darkblue: [0, 0, 139],
darkcyan: [0, 139, 139],
darkgrey: [169, 169, 169],
darkgreen: [0, 100, 0],
darkkhaki: [189, 183, 107],
darkmagenta: [139, 0, 139],
darkolivegreen: [85, 107, 47],
darkorange: [255, 140, 0],
darkorchid: [153, 50, 204],
darkred: [139, 0, 0],
darksalmon: [233, 150, 122],
darkviolet: [148, 0, 211],
fuchsia: [255, 0, 255],
gold: [255, 215, 0],
green: [0, 128, 0],
indigo: [75, 0, 130],
khaki: [240, 230, 140],
lightblue: [173, 216, 230],
lightcyan: [224, 255, 255],
lightgreen: [144, 238, 144],
lightgrey: [211, 211, 211],
lightpink: [255, 182, 193],
lightyellow: [255, 255, 224],
lime: [0, 255, 0],
magenta: [255, 0, 255],
maroon: [128, 0, 0],
navy: [0, 0, 128],
olive: [128, 128, 0],
orange: [255, 165, 0],
pink: [255, 192, 203],
purple: [128, 0, 128],
violet: [128, 0, 128],
red: [255, 0, 0],
silver: [192, 192, 192],
white: [255, 255, 255],
yellow: [255, 255, 0]
}
})(jQuery);
(function (c) {
function b(av, ai, J, af) {
var Q = [],
O = {
colors: ["#edc240", "#afd8f8", "#cb4b4b", "#4da74d", "#9440ed"],
legend: {
show: true,
noColumns: 1,
labelFormatter: null,
labelBoxBorderColor: "#ccc",
container: null,
position: "ne",
margin: 5,
backgroundColor: null,
backgroundOpacity: 0.85
},
xaxis: {
show: null,
position: "bottom",
mode: null,
color: null,
tickColor: null,
transform: null,
inverseTransform: null,
min: null,
max: null,
autoscaleMargin: null,
ticks: null,
tickFormatter: null,
labelWidth: null,
labelHeight: null,
reserveSpace: null,
tickLength: null,
alignTicksWithAxis: null,
tickDecimals: null,
tickSize: null,
minTickSize: null,
monthNames: null,
timeformat: null,
twelveHourClock: false
},
yaxis: {
autoscaleMargin: 0.02,
position: "left"
},
xaxes: [],
yaxes: [],
series: {
points: {
show: false,
radius: 3,
lineWidth: 2,
fill: true,
fillColor: "#ffffff",
symbol: "circle"
},
lines: {
lineWidth: 2,
fill: false,
fillColor: null,
steps: false
},
bars: {
show: false,
lineWidth: 2,
barWidth: 1,
fill: true,
fillColor: null,
align: "left",
horizontal: false
},
shadowSize: 3
},
grid: {
show: true,
aboveData: false,
color: "#545454",
backgroundColor: null,
borderColor: null,
tickColor: null,
labelMargin: 5,
axisMargin: 8,
borderWidth: 2,
minBorderMargin: null,
markings: null,
markingsColor: "#f4f4f4",
markingsLineWidth: 2,
clickable: false,
hoverable: false,
autoHighlight: true,
mouseActiveRadius: 10
},
hooks: {}
}, az = null,
ad = null,
y = null,
H = null,
A = null,
p = [],
aw = [],
q = {
left: 0,
right: 0,
top: 0,
bottom: 0
}, G = 0,
I = 0,
h = 0,
w = 0,
ak = {
processOptions: [],
processRawData: [],
processDatapoints: [],
drawSeries: [],
draw: [],
bindEvents: [],
drawOverlay: [],
shutdown: []
}, aq = this;
aq.setData = aj;
aq.setupGrid = t;
aq.draw = W;
aq.getPlaceholder = function () {
return av
};
aq.getCanvas = function () {
return az
};
aq.getPlotOffset = function () {
return q
};
aq.width = function () {
return h
};
aq.height = function () {
return w
};
aq.offset = function () {
var aB = y.offset();
aB.left += q.left;
aB.top += q.top;
return aB
};
aq.getData = function () {
return Q
};
aq.getAxes = function () {
var aC = {}, aB;
c.each(p.concat(aw), function (aD, aE) {
if (aE) {
aC[aE.direction + (aE.n != 1 ? aE.n : "") + "axis"] = aE
}
});
return aC
};
aq.getXAxes = function () {
return p
};
aq.getYAxes = function () {
return aw
};
aq.c2p = C;
aq.p2c = ar;
aq.getOptions = function () {
return O
};
aq.highlight = x;
aq.unhighlight = T;
aq.triggerRedrawOverlay = f;
aq.pointOffset = function (aB) {
return {
left: parseInt(p[aA(aB, "x") - 1].p2c(+aB.x) + q.left),
top: parseInt(aw[aA(aB, "y") - 1].p2c(+aB.y) + q.top)
}
};
aq.shutdown = ag;
aq.resize = function () {
B();
g(az);
g(ad)
};
aq.hooks = ak;
F(aq);
Z(J);
X();
aj(ai);
t();
W();
ah();
function an(aD, aB) {
aB = [aq].concat(aB);
for (var aC = 0; aC < aD.length; ++aC) {
aD[aC].apply(this, aB)
}
}
function F() {
for (var aB = 0; aB < af.length; ++aB) {
var aC = af[aB];
aC.init(aq);
if (aC.options) {
c.extend(true, O, aC.options)
}
}
}
function Z(aC) {
var aB;
c.extend(true, O, aC);
if (O.xaxis.color == null) {
O.xaxis.color = O.grid.color
}
if (O.yaxis.color == null) {
O.yaxis.color = O.grid.color
}
if (O.xaxis.tickColor == null) {
O.xaxis.tickColor = O.grid.tickColor
}
if (O.yaxis.tickColor == null) {
O.yaxis.tickColor = O.grid.tickColor
}
if (O.grid.borderColor == null) {
O.grid.borderColor = O.grid.color
}
if (O.grid.tickColor == null) {
O.grid.tickColor = c.color.parse(O.grid.color).scale("a", 0.22).toString()
}
for (aB = 0; aB < Math.max(1, O.xaxes.length); ++aB) {
O.xaxes[aB] = c.extend(true, {}, O.xaxis, O.xaxes[aB])
}
for (aB = 0; aB < Math.max(1, O.yaxes.length); ++aB) {
O.yaxes[aB] = c.extend(true, {}, O.yaxis, O.yaxes[aB])
}
if (O.xaxis.noTicks && O.xaxis.ticks == null) {
O.xaxis.ticks = O.xaxis.noTicks
}
if (O.yaxis.noTicks && O.yaxis.ticks == null) {
O.yaxis.ticks = O.yaxis.noTicks
}
if (O.x2axis) {
O.xaxes[1] = c.extend(true, {}, O.xaxis, O.x2axis);
O.xaxes[1].position = "top"
}
if (O.y2axis) {
O.yaxes[1] = c.extend(true, {}, O.yaxis, O.y2axis);
O.yaxes[1].position = "right"
}
if (O.grid.coloredAreas) {
O.grid.markings = O.grid.coloredAreas
}
if (O.grid.coloredAreasColor) {
O.grid.markingsColor = O.grid.coloredAreasColor
}
if (O.lines) {
c.extend(true, O.series.lines, O.lines)
}
if (O.points) {
c.extend(true, O.series.points, O.points)
}
if (O.bars) {
c.extend(true, O.series.bars, O.bars)
}
if (O.shadowSize != null) {
O.series.shadowSize = O.shadowSize
}
for (aB = 0; aB < O.xaxes.length; ++aB) {
V(p, aB + 1).options = O.xaxes[aB]
}
for (aB = 0; aB < O.yaxes.length; ++aB) {
V(aw, aB + 1).options = O.yaxes[aB]
}
for (var aD in ak) {
if (O.hooks[aD] && O.hooks[aD].length) {
ak[aD] = ak[aD].concat(O.hooks[aD])
}
}
an(ak.processOptions, [O])
}
function aj(aB) {
Q = Y(aB);
ax();
z()
}
function Y(aE) {
var aC = [];
for (var aB = 0; aB < aE.length; ++aB) {
var aD = c.extend(true, {}, O.series);
if (aE[aB].data != null) {
aD.data = aE[aB].data;
delete aE[aB].data;
c.extend(true, aD, aE[aB]);
aE[aB].data = aD.data
} else {
aD.data = aE[aB]
}
aC.push(aD)
}
return aC
}
function aA(aC, aD) {
var aB = aC[aD + "axis"];
if (typeof aB == "object") {
aB = aB.n
}
if (typeof aB != "number") {
aB = 1
}
return aB
}
function m() {
return c.grep(p.concat(aw), function (aB) {
return aB
})
}
function C(aE) {
var aC = {}, aB, aD;
for (aB = 0; aB < p.length; ++aB) {
aD = p[aB];
if (aD && aD.used) {
aC["x" + aD.n] = aD.c2p(aE.left)
}
}
for (aB = 0; aB < aw.length; ++aB) {
aD = aw[aB];
if (aD && aD.used) {
aC["y" + aD.n] = aD.c2p(aE.top)
}
}
if (aC.x1 !== undefined) {
aC.x = aC.x1
}
if (aC.y1 !== undefined) {
aC.y = aC.y1
}
return aC
}
function ar(aF) {
var aD = {}, aC, aE, aB;
for (aC = 0; aC < p.length; ++aC) {
aE = p[aC];
if (aE && aE.used) {
aB = "x" + aE.n;
if (aF[aB] == null && aE.n == 1) {
aB = "x"
}
if (aF[aB] != null) {
aD.left = aE.p2c(aF[aB]);
break
}
}
}
for (aC = 0; aC < aw.length; ++aC) {
aE = aw[aC];
if (aE && aE.used) {
aB = "y" + aE.n;
if (aF[aB] == null && aE.n == 1) {
aB = "y"
}
if (aF[aB] != null) {
aD.top = aE.p2c(aF[aB]);
break
}
}
}
return aD
}
function V(aC, aB) {
if (!aC[aB - 1]) {
aC[aB - 1] = {
n: aB,
direction: aC == p ? "x" : "y",
options: c.extend(true, {}, aC == p ? O.xaxis : O.yaxis)
}
}
return aC[aB - 1]
}
function ax() {
var aG;
var aM = Q.length,
aB = [],
aE = [];
for (aG = 0; aG < Q.length; ++aG) {
var aJ = Q[aG].color;
if (aJ != null) {
--aM;
if (typeof aJ == "number") {
aE.push(aJ)
} else {
aB.push(c.color.parse(Q[aG].color))
}
}
}
for (aG = 0; aG < aE.length; ++aG) {
aM = Math.max(aM, aE[aG] + 1)
}
var aC = [],
aF = 0;
aG = 0;
while (aC.length < aM) {
var aI;
if (O.colors.length == aG) {
aI = c.color.make(100, 100, 100)
} else {
aI = c.color.parse(O.colors[aG])
}
var aD = aF % 2 == 1 ? -1 : 1;
aI.scale("rgb", 1 + aD * Math.ceil(aF / 2) * 0.2);
aC.push(aI);
++aG;
if (aG >= O.colors.length) {
aG = 0;
++aF
}
}
var aH = 0,
aN;
for (aG = 0; aG < Q.length; ++aG) {
aN = Q[aG];
if (aN.color == null) {
aN.color = aC[aH].toString();
++aH
} else {
if (typeof aN.color == "number") {
aN.color = aC[aN.color].toString()
}
}
if (aN.lines.show == null) {
var aL, aK = true;
for (aL in aN) {
if (aN[aL] && aN[aL].show) {
aK = false;
break
}
}
if (aK) {
aN.lines.show = true
}
}
aN.xaxis = V(p, aA(aN, "x"));
aN.yaxis = V(aw, aA(aN, "y"))
}
}
function z() {
var aO = Number.POSITIVE_INFINITY,
aI = Number.NEGATIVE_INFINITY,
aB = Number.MAX_VALUE,
aU, aS, aR, aN, aD, aJ, aT, aP, aH, aG, aC, a0, aX, aL;
function aF(a3, a2, a1) {
if (a2 < a3.datamin && a2 != -aB) {
a3.datamin = a2
}
if (a1 > a3.datamax && a1 != aB) {
a3.datamax = a1
}
}
c.each(m(), function (a1, a2) {
a2.datamin = aO;
a2.datamax = aI;
a2.used = false
});
for (aU = 0; aU < Q.length; ++aU) {
aJ = Q[aU];
aJ.datapoints = {
points: []
};
an(ak.processRawData, [aJ, aJ.data, aJ.datapoints])
}
for (aU = 0; aU < Q.length; ++aU) {
aJ = Q[aU];
var aZ = aJ.data,
aW = aJ.datapoints.format;
if (!aW) {
aW = [];
aW.push({
x: true,
number: true,
required: true
});
aW.push({
y: true,
number: true,
required: true
});
if (aJ.bars.show || (aJ.lines.show && aJ.lines.fill)) {
aW.push({
y: true,
number: true,
required: false,
defaultValue: 0
});
if (aJ.bars.horizontal) {
delete aW[aW.length - 1].y;
aW[aW.length - 1].x = true
}
}
aJ.datapoints.format = aW
}
if (aJ.datapoints.pointsize != null) {
continue
}
aJ.datapoints.pointsize = aW.length;
aP = aJ.datapoints.pointsize;
aT = aJ.datapoints.points;
insertSteps = aJ.lines.show && aJ.lines.steps;
aJ.xaxis.used = aJ.yaxis.used = true;
for (aS = aR = 0; aS < aZ.length; ++aS, aR += aP) {
aL = aZ[aS];
var aE = aL == null;
if (!aE) {
for (aN = 0; aN < aP; ++aN) {
a0 = aL[aN];
aX = aW[aN];
if (aX) {
if (aX.number && a0 != null) {
a0 = +a0;
if (isNaN(a0)) {
a0 = null
} else {
if (a0 == Infinity) {
a0 = aB
} else {
if (a0 == -Infinity) {
a0 = -aB
}
}
}
}
if (a0 == null) {
if (aX.required) {
aE = true
}
if (aX.defaultValue != null) {
a0 = aX.defaultValue
}
}
}
aT[aR + aN] = a0
}
}
if (aE) {
for (aN = 0; aN < aP; ++aN) {
a0 = aT[aR + aN];
if (a0 != null) {
aX = aW[aN];
if (aX.x) {
aF(aJ.xaxis, a0, a0)
}
if (aX.y) {
aF(aJ.yaxis, a0, a0)
}
}
aT[aR + aN] = null
}
} else {
if (insertSteps && aR > 0 && aT[aR - aP] != null && aT[aR - aP] != aT[aR] && aT[aR - aP + 1] != aT[aR + 1]) {
for (aN = 0; aN < aP; ++aN) {
aT[aR + aP + aN] = aT[aR + aN]
}
aT[aR + 1] = aT[aR - aP + 1];
aR += aP
}
}
}
}
for (aU = 0; aU < Q.length; ++aU) {
aJ = Q[aU];
an(ak.processDatapoints, [aJ, aJ.datapoints])
}
for (aU = 0; aU < Q.length; ++aU) {
aJ = Q[aU];
aT = aJ.datapoints.points, aP = aJ.datapoints.pointsize;
var aK = aO,
aQ = aO,
aM = aI,
aV = aI;
for (aS = 0; aS < aT.length; aS += aP) {
if (aT[aS] == null) {
continue
}
for (aN = 0; aN < aP; ++aN) {
a0 = aT[aS + aN];
aX = aW[aN];
if (!aX || a0 == aB || a0 == -aB) {
continue
}
if (aX.x) {
if (a0 < aK) {
aK = a0
}
if (a0 > aM) {
aM = a0
}
}
if (aX.y) {
if (a0 < aQ) {
aQ = a0
}
if (a0 > aV) {
aV = a0
}
}
}
}
if (aJ.bars.show) {
var aY = aJ.bars.align == "left" ? 0 : -aJ.bars.barWidth / 2;
if (aJ.bars.horizontal) {
aQ += aY;
aV += aY + aJ.bars.barWidth
} else {
aK += aY;
aM += aY + aJ.bars.barWidth
}
}
aF(aJ.xaxis, aK, aM);
aF(aJ.yaxis, aQ, aV)
}
c.each(m(), function (a1, a2) {
if (a2.datamin == aO) {
a2.datamin = null
}
if (a2.datamax == aI) {
a2.datamax = null
}
})
}
function j(aB, aC) {
var aD = document.createElement("canvas");
aD.className = aC;
aD.width = G;
aD.height = I;
if (!aB) {
c(aD).css({
position: "absolute",
left: 0,
top: 0
})
}
c(aD).appendTo(av);
if (!aD.getContext) {
aD = window.G_vmlCanvasManager.initElement(aD)
}
aD.getContext("2d").save();
return aD
}
function B() {
G = av.width();
I = av.height();
if (G <= 0 || I <= 0) {
throw "Invalid dimensions for plot, width = " + G + ", height = " + I
}
}
function g(aC) {
if (aC.width != G) {
aC.width = G
}
if (aC.height != I) {
aC.height = I
}
var aB = aC.getContext("2d");
aB.restore();
aB.save()
}
function X() {
var aC, aB = av.children("canvas.base"),
aD = av.children("canvas.overlay");
if (aB.length == 0 || aD == 0) {
av.html("");
av.css({
padding: 0
});
if (av.css("position") == "static") {
av.css("position", "relative")
}
B();
az = j(true, "base");
ad = j(false, "overlay");
aC = false
} else {
az = aB.get(0);
ad = aD.get(0);
aC = true
}
H = az.getContext("2d");
A = ad.getContext("2d");
y = c([ad, az]);
if (aC) {
av.data("plot").shutdown();
aq.resize();
A.clearRect(0, 0, G, I);
y.unbind();
av.children().not([az, ad]).remove()
}
av.data("plot", aq)
}
function ah() {
if (O.grid.hoverable) {
y.mousemove(aa);
y.mouseleave(l)
}
if (O.grid.clickable) {
y.click(R)
}
an(ak.bindEvents, [y])
}
function ag() {
if (M) {
clearTimeout(M)
}
y.unbind("mousemove", aa);
y.unbind("mouseleave", l);
y.unbind("click", R);
an(ak.shutdown, [y])
}
function r(aG) {
function aC(aH) {
return aH
}
var aF, aB, aD = aG.options.transform || aC,
aE = aG.options.inverseTransform;
if (aG.direction == "x") {
aF = aG.scale = h / Math.abs(aD(aG.max) - aD(aG.min));
aB = Math.min(aD(aG.max), aD(aG.min))
} else {
aF = aG.scale = w / Math.abs(aD(aG.max) - aD(aG.min));
aF = -aF;
aB = Math.max(aD(aG.max), aD(aG.min))
}
if (aD == aC) {
aG.p2c = function (aH) {
return (aH - aB) * aF
}
} else {
aG.p2c = function (aH) {
return (aD(aH) - aB) * aF
}
}
if (!aE) {
aG.c2p = function (aH) {
return aB + aH / aF
}
} else {
aG.c2p = function (aH) {
return aE(aB + aH / aF)
}
}
}
function L(aD) {
var aB = aD.options,
aF, aJ = aD.ticks || [],
aI = [],
aE, aK = aB.labelWidth,
aG = aB.labelHeight,
aC;
function aH(aM, aL) {
return c('<div style="position:absolute;top:-10000px;' + aL + 'font-size:smaller"><div class="' + aD.direction + "Axis " + aD.direction + aD.n + 'Axis">' + aM.join("") + "</div></div>").appendTo(av)
}
if (aD.direction == "x") {
if (aK == null) {
aK = Math.floor(G / (aJ.length > 0 ? aJ.length : 1))
}
if (aG == null) {
aI = [];
for (aF = 0; aF < aJ.length; ++aF) {
aE = aJ[aF].label;
if (aE) {
aI.push('<div class="tickLabel" style="float:left;width:' + aK + 'px">' + aE + "</div>")
}
}
if (aI.length > 0) {
aI.push('<div style="clear:left"></div>');
aC = aH(aI, "width:10000px;");
aG = aC.height();
aC.remove()
}
}
} else {
if (aK == null || aG == null) {
for (aF = 0; aF < aJ.length; ++aF) {
aE = aJ[aF].label;
if (aE) {
aI.push('<div class="tickLabel">' + aE + "</div>")
}
}
if (aI.length > 0) {
aC = aH(aI, "");
if (aK == null) {
aK = aC.children().width()
}
if (aG == null) {
aG = aC.find("div.tickLabel").height()
}
aC.remove()
}
}
}
if (aK == null) {
aK = 0
}
if (aG == null) {
aG = 0
}
aD.labelWidth = aK;
aD.labelHeight = aG
}
function au(aD) {
var aC = aD.labelWidth,
aL = aD.labelHeight,
aH = aD.options.position,
aF = aD.options.tickLength,
aG = O.grid.axisMargin,
aJ = O.grid.labelMargin,
aK = aD.direction == "x" ? p : aw,
aE;
var aB = c.grep(aK, function (aN) {
return aN && aN.options.position == aH && aN.reserveSpace
});
if (c.inArray(aD, aB) == aB.length - 1) {
aG = 0
}
if (aF == null) {
aF = "full"
}
var aI = c.grep(aK, function (aN) {
return aN && aN.reserveSpace
});
var aM = c.inArray(aD, aI) == 0;
if (!aM && aF == "full") {
aF = 5
}
if (!isNaN(+aF)) {
aJ += +aF
}
if (aD.direction == "x") {
aL += aJ;
if (aH == "bottom") {
q.bottom += aL + aG;
aD.box = {
top: I - q.bottom,
height: aL
}
} else {
aD.box = {
top: q.top + aG,
height: aL
};
q.top += aL + aG
}
} else {
aC += aJ;
if (aH == "left") {
aD.box = {
left: q.left + aG,
width: aC
};
q.left += aC + aG
} else {
q.right += aC + aG;
aD.box = {
left: G - q.right,
width: aC
}
}
}
aD.position = aH;
aD.tickLength = aF;
aD.box.padding = aJ;
aD.innermost = aM
}
function U(aB) {
if (aB.direction == "x") {
aB.box.left = q.left;
aB.box.width = h
} else {
aB.box.top = q.top;
aB.box.height = w
}
}
function t() {
var aC, aE = m();
c.each(aE, function (aF, aG) {
aG.show = aG.options.show;
if (aG.show == null) {
aG.show = aG.used
}
aG.reserveSpace = aG.show || aG.options.reserveSpace;
n(aG)
});
allocatedAxes = c.grep(aE, function (aF) {
return aF.reserveSpace
});
q.left = q.right = q.top = q.bottom = 0;
if (O.grid.show) {
c.each(allocatedAxes, function (aF, aG) {
S(aG);
P(aG);
ap(aG, aG.ticks);
L(aG)
});
for (aC = allocatedAxes.length - 1; aC >= 0; --aC) {
au(allocatedAxes[aC])
}
var aD = O.grid.minBorderMargin;
if (aD == null) {
aD = 0;
for (aC = 0; aC < Q.length; ++aC) {
aD = Math.max(aD, Q[aC].points.radius + Q[aC].points.lineWidth / 2)
}
}
for (var aB in q) {
q[aB] += O.grid.borderWidth;
q[aB] = Math.max(aD, q[aB])
}
}
h = G - q.left - q.right;
w = I - q.bottom - q.top;
c.each(aE, function (aF, aG) {
r(aG)
});
if (O.grid.show) {
c.each(allocatedAxes, function (aF, aG) {
U(aG)
});
k()
}
o()
}
function n(aE) {
var aF = aE.options,
aD = +(aF.min != null ? aF.min : aE.datamin),
aB = +(aF.max != null ? aF.max : aE.datamax),
aH = aB - aD;
if (aH == 0) {
var aC = aB == 0 ? 1 : 0.01;
if (aF.min == null) {
aD -= aC
}
if (aF.max == null || aF.min != null) {
aB += aC
}
} else {
var aG = aF.autoscaleMargin;
if (aG != null) {
if (aF.min == null) {
aD -= aH * aG;
if (aD < 0 && aE.datamin != null && aE.datamin >= 0) {
aD = 0
}
}
if (aF.max == null) {
aB += aH * aG;
if (aB > 0 && aE.datamax != null && aE.datamax <= 0) {
aB = 0
}
}
}
}
aE.min = aD;
aE.max = aB
}
function S(aG) {
var aM = aG.options;
var aH;
if (typeof aM.ticks == "number" && aM.ticks > 0) {
aH = aM.ticks
} else {
aH = 0.3 * Math.sqrt(aG.direction == "x" ? G : I)
}
var aT = (aG.max - aG.min) / aH,
aO, aB, aN, aR, aS, aQ, aI;
if (aM.mode == "time") {
var aJ = {
second: 1000,
minute: 60 * 1000,
hour: 60 * 60 * 1000,
day: 24 * 60 * 60 * 1000,
month: 30 * 24 * 60 * 60 * 1000,
year: 365.2425 * 24 * 60 * 60 * 1000
};
var aK = [
[1, "second"],
[2, "second"],
[5, "second"],
[10, "second"],
[30, "second"],
[1, "minute"],
[2, "minute"],
[5, "minute"],
[10, "minute"],
[30, "minute"],
[1, "hour"],
[2, "hour"],
[4, "hour"],
[8, "hour"],
[12, "hour"],
[1, "day"],
[2, "day"],
[3, "day"],
[0.25, "month"],
[0.5, "month"],
[1, "month"],
[2, "month"],
[3, "month"],
[6, "month"],
[1, "year"]
];
var aC = 0;
if (aM.minTickSize != null) {
if (typeof aM.tickSize == "number") {
aC = aM.tickSize
} else {
aC = aM.minTickSize[0] * aJ[aM.minTickSize[1]]
}
}
for (var aS = 0; aS < aK.length - 1; ++aS) {
if (aT < (aK[aS][0] * aJ[aK[aS][1]] + aK[aS + 1][0] * aJ[aK[aS + 1][1]]) / 2 && aK[aS][0] * aJ[aK[aS][1]] >= aC) {
break
}
}
aO = aK[aS][0];
aN = aK[aS][1];
if (aN == "year") {
aQ = Math.pow(10, Math.floor(Math.log(aT / aJ.year) / Math.LN10));
aI = (aT / aJ.year) / aQ;
if (aI < 1.5) {
aO = 1
} else {
if (aI < 3) {
aO = 2
} else {
if (aI < 7.5) {
aO = 5
} else {
aO = 10
}
}
}
aO *= aQ
}
aG.tickSize = aM.tickSize || [aO, aN];
aB = function (aX) {
var a2 = [],
a0 = aX.tickSize[0],
a3 = aX.tickSize[1],
a1 = new Date(aX.min);
var aW = a0 * aJ[a3];
if (a3 == "second") {
a1.setUTCSeconds(a(a1.getUTCSeconds(), a0))
}
if (a3 == "minute") {
a1.setUTCMinutes(a(a1.getUTCMinutes(), a0))
}
if (a3 == "hour") {
a1.setUTCHours(a(a1.getUTCHours(), a0))
}
if (a3 == "month") {
a1.setUTCMonth(a(a1.getUTCMonth(), a0))
}
if (a3 == "year") {
a1.setUTCFullYear(a(a1.getUTCFullYear(), a0))
}
a1.setUTCMilliseconds(0);
if (aW >= aJ.minute) {
a1.setUTCSeconds(0)
}
if (aW >= aJ.hour) {
a1.setUTCMinutes(0)
}
if (aW >= aJ.day) {
a1.setUTCHours(0)
}
if (aW >= aJ.day * 4) {
a1.setUTCDate(1)
}
if (aW >= aJ.year) {
a1.setUTCMonth(0)
}
var a5 = 0,
a4 = Number.NaN,
aY;
do {
aY = a4;
a4 = a1.getTime();
a2.push(a4);
if (a3 == "month") {
if (a0 < 1) {
a1.setUTCDate(1);
var aV = a1.getTime();
a1.setUTCMonth(a1.getUTCMonth() + 1);
var aZ = a1.getTime();
a1.setTime(a4 + a5 * aJ.hour + (aZ - aV) * a0);
a5 = a1.getUTCHours();
a1.setUTCHours(0)
} else {
a1.setUTCMonth(a1.getUTCMonth() + a0)
}
} else {
if (a3 == "year") {
a1.setUTCFullYear(a1.getUTCFullYear() + a0)
} else {
a1.setTime(a4 + aW)
}
}
} while (a4 < aX.max && a4 != aY);
return a2
};
aR = function (aV, aY) {
var a0 = new Date(aV);
if (aM.timeformat != null) {
return c.plot.formatDate(a0, aM.timeformat, aM.monthNames)
}
var aW = aY.tickSize[0] * aJ[aY.tickSize[1]];
var aX = aY.max - aY.min;
var aZ = (aM.twelveHourClock) ? " %p" : "";
if (aW < aJ.minute) {
fmt = "%h:%M:%S" + aZ
} else {
if (aW < aJ.day) {
if (aX < 2 * aJ.day) {
fmt = "%h:%M" + aZ
} else {
fmt = "%b %d %h:%M" + aZ
}
} else {
if (aW < aJ.month) {
fmt = "%b %d"
} else {
if (aW < aJ.year) {
if (aX < aJ.year) {
fmt = "%b"
} else {
fmt = "%b %y"
}
} else {
fmt = "%y"
}
}
}
}
return c.plot.formatDate(a0, fmt, aM.monthNames)
}
} else {
var aU = aM.tickDecimals;
var aP = -Math.floor(Math.log(aT) / Math.LN10);
if (aU != null && aP > aU) {
aP = aU
}
aQ = Math.pow(10, -aP);
aI = aT / aQ;
if (aI < 1.5) {
aO = 1
} else {
if (aI < 3) {
aO = 2;
if (aI > 2.25 && (aU == null || aP + 1 <= aU)) {
aO = 2.5;
++aP
}
} else {
if (aI < 7.5) {
aO = 5
} else {
aO = 10
}
}
}
aO *= aQ;
if (aM.minTickSize != null && aO < aM.minTickSize) {
aO = aM.minTickSize
}
aG.tickDecimals = Math.max(0, aU != null ? aU : aP);
aG.tickSize = aM.tickSize || aO;
aB = function (aX) {
var aZ = [];
var a0 = a(aX.min, aX.tickSize),
aW = 0,
aV = Number.NaN,
aY;
do {
aY = aV;
aV = a0 + aW * aX.tickSize;
aZ.push(aV);++aW
} while (aV < aX.max && aV != aY);
return aZ
};
aR = function (aV, aW) {
return aV.toFixed(aW.tickDecimals)
}
}
if (aM.alignTicksWithAxis != null) {
var aF = (aG.direction == "x" ? p : aw)[aM.alignTicksWithAxis - 1];
if (aF && aF.used && aF != aG) {
var aL = aB(aG);
if (aL.length > 0) {
if (aM.min == null) {
aG.min = Math.min(aG.min, aL[0])
}
if (aM.max == null && aL.length > 1) {
aG.max = Math.max(aG.max, aL[aL.length - 1])
}
}
aB = function (aX) {
var aY = [],
aV, aW;
for (aW = 0; aW < aF.ticks.length; ++aW) {
aV = (aF.ticks[aW].v - aF.min) / (aF.max - aF.min);
aV = aX.min + aV * (aX.max - aX.min);
aY.push(aV)
}
return aY
};
if (aG.mode != "time" && aM.tickDecimals == null) {
var aE = Math.max(0, -Math.floor(Math.log(aT) / Math.LN10) + 1),
aD = aB(aG);
if (!(aD.length > 1 && /..*0$/.test((aD[1] - aD[0]).toFixed(aE)))) {
aG.tickDecimals = aE
}
}
}
}
aG.tickGenerator = aB;
if (c.isFunction(aM.tickFormatter)) {
aG.tickFormatter = function (aV, aW) {
return "" + aM.tickFormatter(aV, aW)
}
} else {
aG.tickFormatter = aR
}
}
function P(aF) {
var aH = aF.options.ticks,
aG = [];
if (aH == null || (typeof aH == "number" && aH > 0)) {
aG = aF.tickGenerator(aF)
} else {
if (aH) {
if (c.isFunction(aH)) {
aG = aH({
min: aF.min,
max: aF.max
})
} else {
aG = aH
}
}
}
var aE, aB;
aF.ticks = [];
for (aE = 0; aE < aG.length; ++aE) {
var aC = null;
var aD = aG[aE];
if (typeof aD == "object") {
aB = +aD[0];
if (aD.length > 1) {
aC = aD[1]
}
} else {
aB = +aD
}
if (aC == null) {
aC = aF.tickFormatter(aB, aF)
}
if (!isNaN(aB)) {
aF.ticks.push({
v: aB,
label: aC
})
}
}
}
function ap(aB, aC) {
if (aB.options.autoscaleMargin && aC.length > 0) {
if (aB.options.min == null) {
aB.min = Math.min(aB.min, aC[0].v)
}
if (aB.options.max == null && aC.length > 1) {
aB.max = Math.max(aB.max, aC[aC.length - 1].v)
}
}
}
function W() {
H.clearRect(0, 0, G, I);
var aC = O.grid;
if (aC.show && aC.backgroundColor) {
N()
}
if (aC.show && !aC.aboveData) {
ac()
}
for (var aB = 0; aB < Q.length; ++aB) {
an(ak.drawSeries, [H, Q[aB]]);
d(Q[aB])
}
an(ak.draw, [H]);
if (aC.show && aC.aboveData) {
ac()
}
}
function D(aB, aI) {
var aE, aH, aG, aD, aF = m();
for (i = 0; i < aF.length; ++i) {
aE = aF[i];
if (aE.direction == aI) {
aD = aI + aE.n + "axis";
if (!aB[aD] && aE.n == 1) {
aD = aI + "axis"
}
if (aB[aD]) {
aH = aB[aD].from;
aG = aB[aD].to;
break
}
}
}
if (!aB[aD]) {
aE = aI == "x" ? p[0] : aw[0];
aH = aB[aI + "1"];
aG = aB[aI + "2"]
}
if (aH != null && aG != null && aH > aG) {
var aC = aH;
aH = aG;
aG = aC
}
return {
from: aH,
to: aG,
axis: aE
}
}
function N() {
H.save();
H.translate(q.left, q.top);
H.fillStyle = am(O.grid.backgroundColor, w, 0, "rgba(255, 255, 255, 0)");
H.fillRect(0, 0, h, w);
H.restore()
}
function ac() {
var aF;
H.save();
H.translate(q.left, q.top);
var aH = O.grid.markings;
if (aH) {
if (c.isFunction(aH)) {
var aK = aq.getAxes();
aK.xmin = aK.xaxis.min;
aK.xmax = aK.xaxis.max;
aK.ymin = aK.yaxis.min;
aK.ymax = aK.yaxis.max;
aH = aH(aK)
}
for (aF = 0; aF < aH.length; ++aF) {
var aD = aH[aF],
aC = D(aD, "x"),
aI = D(aD, "y");
if (aC.from == null) {
aC.from = aC.axis.min
}
if (aC.to == null) {
aC.to = aC.axis.max
}
if (aI.from == null) {
aI.from = aI.axis.min
}
if (aI.to == null) {
aI.to = aI.axis.max
}
if (aC.to < aC.axis.min || aC.from > aC.axis.max || aI.to < aI.axis.min || aI.from > aI.axis.max) {
continue
}
aC.from = Math.max(aC.from, aC.axis.min);
aC.to = Math.min(aC.to, aC.axis.max);
aI.from = Math.max(aI.from, aI.axis.min);
aI.to = Math.min(aI.to, aI.axis.max);
if (aC.from == aC.to && aI.from == aI.to) {
continue
}
aC.from = aC.axis.p2c(aC.from);
aC.to = aC.axis.p2c(aC.to);
aI.from = aI.axis.p2c(aI.from);
aI.to = aI.axis.p2c(aI.to);
if (aC.from == aC.to || aI.from == aI.to) {
H.beginPath();
H.strokeStyle = aD.color || O.grid.markingsColor;
H.lineWidth = aD.lineWidth || O.grid.markingsLineWidth;
H.moveTo(aC.from, aI.from);
H.lineTo(aC.to, aI.to);
H.stroke()
} else {
H.fillStyle = aD.color || O.grid.markingsColor;
H.fillRect(aC.from, aI.to, aC.to - aC.from, aI.from - aI.to)
}
}
}
var aK = m(),
aM = O.grid.borderWidth;
for (var aE = 0; aE < aK.length; ++aE) {
var aB = aK[aE],
aG = aB.box,
aQ = aB.tickLength,
aN, aL, aP, aJ;
if (!aB.show || aB.ticks.length == 0) {
continue
}
H.strokeStyle = aB.options.tickColor || c.color.parse(aB.options.color).scale("a", 0.22).toString();
H.lineWidth = 1;
if (aB.direction == "x") {
aN = 0;
if (aQ == "full") {
aL = (aB.position == "top" ? 0 : w)
} else {
aL = aG.top - q.top + (aB.position == "top" ? aG.height : 0)
}
} else {
aL = 0;
if (aQ == "full") {
aN = (aB.position == "left" ? 0 : h)
} else {
aN = aG.left - q.left + (aB.position == "left" ? aG.width : 0)
}
}
if (!aB.innermost) {
H.beginPath();
aP = aJ = 0;
if (aB.direction == "x") {
aP = h
} else {
aJ = w
}
if (H.lineWidth == 1) {
aN = Math.floor(aN) + 0.5;
aL = Math.floor(aL) + 0.5
}
H.moveTo(aN, aL);
H.lineTo(aN + aP, aL + aJ);
H.stroke()
}
H.beginPath();
for (aF = 0; aF < aB.ticks.length; ++aF) {
var aO = aB.ticks[aF].v;
aP = aJ = 0;
if (aO < aB.min || aO > aB.max || (aQ == "full" && aM > 0 && (aO == aB.min || aO == aB.max))) {
continue
}
if (aB.direction == "x") {
aN = aB.p2c(aO);
aJ = aQ == "full" ? -w : aQ;
if (aB.position == "top") {
aJ = -aJ
}
} else {
aL = aB.p2c(aO);
aP = aQ == "full" ? -h : aQ;
if (aB.position == "left") {
aP = -aP
}
}
if (H.lineWidth == 1) {
if (aB.direction == "x") {
aN = Math.floor(aN) + 0.5
} else {
aL = Math.floor(aL) + 0.5
}
}
H.moveTo(aN, aL);
H.lineTo(aN + aP, aL + aJ)
}
H.stroke()
}
if (aM) {
H.lineWidth = aM;
H.strokeStyle = O.grid.borderColor;
H.strokeRect(-aM / 2, -aM / 2, h + aM, w + aM)
}
H.restore()
}
function k() {
av.find(".tickLabels").remove();
var aG = ['<div class="tickLabels" style="font-size:smaller">'];
var aJ = m();
for (var aD = 0; aD < aJ.length; ++aD) {
var aC = aJ[aD],
aF = aC.box;
if (!aC.show) {
continue
}
aG.push('<div class="' + aC.direction + "Axis " + aC.direction + aC.n + 'Axis">');
for (var aE = 0; aE < aC.ticks.length; ++aE) {
var aH = aC.ticks[aE];
if (!aH.label || aH.v < aC.min || aH.v > aC.max) {
continue
}
var aK = {}, aI;
if (aC.direction == "x") {
aI = "center";
aK.left = Math.round(q.left + aC.p2c(aH.v) - aC.labelWidth / 2);
if (aC.position == "bottom") {
aK.top = aF.top + aF.padding
} else {
aK.bottom = I - (aF.top + aF.height - aF.padding)
}
} else {
aK.top = Math.round(q.top + aC.p2c(aH.v) - aC.labelHeight / 2);
if (aC.position == "left") {
aK.right = G - (aF.left + aF.width - aF.padding);
aI = "right"
} else {
aK.left = aF.left + aF.padding;
aI = "left"
}
}
aK.width = aC.labelWidth;
var aB = ["position:absolute", "text-align:" + aI];
for (var aL in aK) {
aB.push(aL + ":" + aK[aL] + "px")
}
var check_sp = aH.label.split('.0');
if(check_sp[1] == '0')
aG.push('<div class="tickLabel" style="' + aB.join(";") + ';color:'+O.xaxis.color+'">' + aH.label.replace('.00', '') + " " + $('#tek_month').val() + "</div>")
else
aG.push('<div class="tickLabel" style="' + aB.join(";") + ';color:'+O.xaxis.color+'">' + aH.label.replace('.0', '') + "</div>")
}
aG.push("</div>")
}
aG.push("</div>");
av.append(aG.join(""))
}
function d(aB) {
if (aB.lines.show) {
at(aB)
}
if (aB.bars.show) {
e(aB)
}
if (aB.points.show) {
ao(aB)
}
}
function at(aE) {
function aD(aP, aQ, aI, aU, aT) {
var aV = aP.points,
aJ = aP.pointsize,
aN = null,
aM = null;
H.beginPath();
for (var aO = aJ; aO < aV.length; aO += aJ) {
var aL = aV[aO - aJ],
aS = aV[aO - aJ + 1],
aK = aV[aO],
aR = aV[aO + 1];
if (aL == null || aK == null) {
continue
}
if (aS <= aR && aS < aT.min) {
if (aR < aT.min) {
continue
}
aL = (aT.min - aS) / (aR - aS) * (aK - aL) + aL;
aS = aT.min
} else {
if (aR <= aS && aR < aT.min) {
if (aS < aT.min) {
continue
}
aK = (aT.min - aS) / (aR - aS) * (aK - aL) + aL;
aR = aT.min
}
}
if (aS >= aR && aS > aT.max) {
if (aR > aT.max) {
continue
}
aL = (aT.max - aS) / (aR - aS) * (aK - aL) + aL;
aS = aT.max
} else {
if (aR >= aS && aR > aT.max) {
if (aS > aT.max) {
continue
}
aK = (aT.max - aS) / (aR - aS) * (aK - aL) + aL;
aR = aT.max
}
}
if (aL <= aK && aL < aU.min) {
if (aK < aU.min) {
continue
}
aS = (aU.min - aL) / (aK - aL) * (aR - aS) + aS;
aL = aU.min
} else {
if (aK <= aL && aK < aU.min) {
if (aL < aU.min) {
continue
}
aR = (aU.min - aL) / (aK - aL) * (aR - aS) + aS;
aK = aU.min
}
}
if (aL >= aK && aL > aU.max) {
if (aK > aU.max) {
continue
}
aS = (aU.max - aL) / (aK - aL) * (aR - aS) + aS;
aL = aU.max
} else {
if (aK >= aL && aK > aU.max) {
if (aL > aU.max) {
continue
}
aR = (aU.max - aL) / (aK - aL) * (aR - aS) + aS;
aK = aU.max
}
}
if (aL != aN || aS != aM) {
H.moveTo(aU.p2c(aL) + aQ, aT.p2c(aS) + aI)
}
aN = aK;
aM = aR;
H.lineTo(aU.p2c(aK) + aQ, aT.p2c(aR) + aI)
}
H.stroke()
}
function aF(aI, aQ, aP) {
var aW = aI.points,
aV = aI.pointsize,
aN = Math.min(Math.max(0, aP.min), aP.max),
aX = 0,
aU, aT = false,
aM = 1,
aL = 0,
aR = 0;
while (true) {
if (aV > 0 && aX > aW.length + aV) {
break
}
aX += aV;
var aZ = aW[aX - aV],
aK = aW[aX - aV + aM],
aY = aW[aX],
aJ = aW[aX + aM];
if (aT) {
if (aV > 0 && aZ != null && aY == null) {
aR = aX;
aV = -aV;
aM = 2;
continue
}
if (aV < 0 && aX == aL + aV) {
H.fill();
aT = false;
aV = -aV;
aM = 1;
aX = aL = aR + aV;
continue
}
}
if (aZ == null || aY == null) {
continue
}
if (aZ <= aY && aZ < aQ.min) {
if (aY < aQ.min) {
continue
}
aK = (aQ.min - aZ) / (aY - aZ) * (aJ - aK) + aK;
aZ = aQ.min
} else {
if (aY <= aZ && aY < aQ.min) {
if (aZ < aQ.min) {
continue
}
aJ = (aQ.min - aZ) / (aY - aZ) * (aJ - aK) + aK;
aY = aQ.min
}
}
if (aZ >= aY && aZ > aQ.max) {
if (aY > aQ.max) {
continue
}
aK = (aQ.max - aZ) / (aY - aZ) * (aJ - aK) + aK;
aZ = aQ.max
} else {
if (aY >= aZ && aY > aQ.max) {
if (aZ > aQ.max) {
continue
}
aJ = (aQ.max - aZ) / (aY - aZ) * (aJ - aK) + aK;
aY = aQ.max
}
}
if (!aT) {
H.beginPath();
H.moveTo(aQ.p2c(aZ), aP.p2c(aN));
aT = true
}
if (aK >= aP.max && aJ >= aP.max) {
H.lineTo(aQ.p2c(aZ), aP.p2c(aP.max));
H.lineTo(aQ.p2c(aY), aP.p2c(aP.max));
continue
} else {
if (aK <= aP.min && aJ <= aP.min) {
H.lineTo(aQ.p2c(aZ), aP.p2c(aP.min));
H.lineTo(aQ.p2c(aY), aP.p2c(aP.min));
continue
}
}
var aO = aZ,
aS = aY;
if (aK <= aJ && aK < aP.min && aJ >= aP.min) {
aZ = (aP.min - aK) / (aJ - aK) * (aY - aZ) + aZ;
aK = aP.min
} else {
if (aJ <= aK && aJ < aP.min && aK >= aP.min) {
aY = (aP.min - aK) / (aJ - aK) * (aY - aZ) + aZ;
aJ = aP.min
}
}
if (aK >= aJ && aK > aP.max && aJ <= aP.max) {
aZ = (aP.max - aK) / (aJ - aK) * (aY - aZ) + aZ;
aK = aP.max
} else {
if (aJ >= aK && aJ > aP.max && aK <= aP.max) {
aY = (aP.max - aK) / (aJ - aK) * (aY - aZ) + aZ;
aJ = aP.max
}
}
if (aZ != aO) {
H.lineTo(aQ.p2c(aO), aP.p2c(aK))
}
H.lineTo(aQ.p2c(aZ), aP.p2c(aK));
H.lineTo(aQ.p2c(aY), aP.p2c(aJ));
if (aY != aS) {
H.lineTo(aQ.p2c(aY), aP.p2c(aJ));
H.lineTo(aQ.p2c(aS), aP.p2c(aJ))
}
}
}
H.save();
H.translate(q.left, q.top);
H.lineJoin = "round";
var aG = aE.lines.lineWidth,
aB = aE.shadowSize;
if (aG > 0 && aB > 0) {
H.lineWidth = aB;
H.strokeStyle = "rgba(0,0,0,0.1)";
var aH = Math.PI / 18;
aD(aE.datapoints, Math.sin(aH) * (aG / 2 + aB / 2), Math.cos(aH) * (aG / 2 + aB / 2), aE.xaxis, aE.yaxis);
H.lineWidth = aB / 2;
aD(aE.datapoints, Math.sin(aH) * (aG / 2 + aB / 4), Math.cos(aH) * (aG / 2 + aB / 4), aE.xaxis, aE.yaxis)
}
H.lineWidth = aG;
H.strokeStyle = aE.color;
var aC = ae(aE.lines, aE.color, 0, w);
if (aC) {
H.fillStyle = aC;
aF(aE.datapoints, aE.xaxis, aE.yaxis)
}
if (aG > 0) {
aD(aE.datapoints, 0, 0, aE.xaxis, aE.yaxis)
}
H.restore()
}
function ao(aE) {
function aH(aN, aM, aU, aK, aS, aT, aQ, aJ) {
var aR = aN.points,
aI = aN.pointsize;
for (var aL = 0; aL < aR.length; aL += aI) {
var aP = aR[aL],
aO = aR[aL + 1];
if (aP == null || aP < aT.min || aP > aT.max || aO < aQ.min || aO > aQ.max) {
continue
}
H.beginPath();
aP = aT.p2c(aP);
aO = aQ.p2c(aO) + aK;
if (aJ == "circle") {
H.arc(aP, aO, aM, 0, aS ? Math.PI : Math.PI * 2, false)
} else {
aJ(H, aP, aO, aM, aS)
}
H.closePath();
if (aU) {
H.fillStyle = aU;
H.fill()
}
H.stroke()
}
}
H.save();
H.translate(q.left, q.top);
var aG = aE.points.lineWidth,
aC = aE.shadowSize,
aB = aE.points.radius,
aF = aE.points.symbol;
if (aG > 0 && aC > 0) {
var aD = aC / 2;
H.lineWidth = aD;
H.strokeStyle = "rgba(0,0,0,0.1)";
aH(aE.datapoints, aB, null, aD + aD / 2, true, aE.xaxis, aE.yaxis, aF);
H.strokeStyle = "rgba(0,0,0,0.2)";
aH(aE.datapoints, aB, null, aD / 2, true, aE.xaxis, aE.yaxis, aF)
}
H.lineWidth = aG;
H.strokeStyle = aE.color;
aH(aE.datapoints, aB, ae(aE.points, aE.color), 0, false, aE.xaxis, aE.yaxis, aF);
H.restore()
}
function E(aN, aM, aV, aI, aQ, aF, aD, aL, aK, aU, aR, aC) {
var aE, aT, aJ, aP, aG, aB, aO, aH, aS;
if (aR) {
aH = aB = aO = true;
aG = false;
aE = aV;
aT = aN;
aP = aM + aI;
aJ = aM + aQ;
if (aT < aE) {
aS = aT;
aT = aE;
aE = aS;
aG = true;
aB = false
}
} else {
aG = aB = aO = true;
aH = false;
aE = aN + aI;
aT = aN + aQ;
aJ = aV;
aP = aM;
if (aP < aJ) {
aS = aP;
aP = aJ;
aJ = aS;
aH = true;
aO = false
}
}
if (aT < aL.min || aE > aL.max || aP < aK.min || aJ > aK.max) {
return
}
if (aE < aL.min) {
aE = aL.min;
aG = false
}
if (aT > aL.max) {
aT = aL.max;
aB = false
}
if (aJ < aK.min) {
aJ = aK.min;
aH = false
}
if (aP > aK.max) {
aP = aK.max;
aO = false
}
aE = aL.p2c(aE);
aJ = aK.p2c(aJ);
aT = aL.p2c(aT);
aP = aK.p2c(aP);
if (aD) {
aU.beginPath();
aU.moveTo(aE, aJ);
aU.lineTo(aE, aP);
aU.lineTo(aT, aP);
aU.lineTo(aT, aJ);
aU.fillStyle = aD(aJ, aP);
aU.fill()
}
if (aC > 0 && (aG || aB || aO || aH)) {
aU.beginPath();
aU.moveTo(aE, aJ + aF);
if (aG) {
aU.lineTo(aE, aP + aF)
} else {
aU.moveTo(aE, aP + aF)
}
if (aO) {
aU.lineTo(aT, aP + aF)
} else {
aU.moveTo(aT, aP + aF)
}
if (aB) {
aU.lineTo(aT, aJ + aF)
} else {
aU.moveTo(aT, aJ + aF)
}
if (aH) {
aU.lineTo(aE, aJ + aF)
} else {
aU.moveTo(aE, aJ + aF)
}
aU.stroke()
}
}
function e(aD) {
function aC(aJ, aI, aL, aG, aK, aN, aM) {
var aO = aJ.points,
aF = aJ.pointsize;
for (var aH = 0; aH < aO.length; aH += aF) {
if (aO[aH] == null) {
continue
}
E(aO[aH], aO[aH + 1], aO[aH + 2], aI, aL, aG, aK, aN, aM, H, aD.bars.horizontal, aD.bars.lineWidth)
}
}
H.save();
H.translate(q.left, q.top);
H.lineWidth = aD.bars.lineWidth;
H.strokeStyle = aD.color;
var aB = aD.bars.align == "left" ? 0 : -aD.bars.barWidth / 2;
var aE = aD.bars.fill ? function (aF, aG) {
return ae(aD.bars, aD.color, aF, aG)
} : null;
aC(aD.datapoints, aB, aB + aD.bars.barWidth, 0, aE, aD.xaxis, aD.yaxis);
H.restore()
}
function ae(aD, aB, aC, aF) {
var aE = aD.fill;
if (!aE) {
return null
}
if (aD.fillColor) {
return am(aD.fillColor, aC, aF, aB)
}
var aG = c.color.parse(aB);
aG.a = typeof aE == "number" ? aE : 0.4;
aG.normalize();
return aG.toString()
}
function o() {
av.find(".legend").remove();
if (!O.legend.show) {
return
}
var aH = [],
aF = false,
aN = O.legend.labelFormatter,
aM, aJ;
for (var aE = 0; aE < Q.length; ++aE) {
aM = Q[aE];
aJ = aM.label;
if (!aJ) {
continue
}
if (aE % O.legend.noColumns == 0) {
if (aF) {
aH.push("</tr>")
}
aH.push("<tr>");
aF = true
}
if (aN) {
aJ = aN(aJ, aM)
}
aH.push('<td class="legendColorBox"><div style="border:1px solid ' + O.legend.labelBoxBorderColor + ';padding:1px"><div style="width:4px;height:0;border:5px solid ' + aM.color + ';overflow:hidden"></div></div></td><td class="legendLabel">' + aJ + "</td>")
}
if (aF) {
aH.push("</tr>")
}
if (aH.length == 0) {
return
}
var aL = '<table style="font-size:smaller;color:' + O.grid.color + '">' + aH.join("") + "</table>";
if (O.legend.container != null) {
c(O.legend.container).html(aL)
} else {
var aI = "",
aC = O.legend.position,
aD = O.legend.margin;
if (aD[0] == null) {
aD = [aD, aD]
}
if (aC.charAt(0) == "n") {
aI += "top:" + (aD[1] + q.top) + "px;"
} else {
if (aC.charAt(0) == "s") {
aI += "bottom:" + (aD[1] + q.bottom) + "px;"
}
}
if (aC.charAt(1) == "e") {
aI += "right:" + (aD[0] + q.right) + "px;"
} else {
if (aC.charAt(1) == "w") {
aI += "left:" + (aD[0] + q.left) + "px;"
}
}
var aK = c('<div class="legend">' + aL.replace('style="', 'style="position:absolute;' + aI + ";") + "</div>").appendTo(av);
if (O.legend.backgroundOpacity != 0) {
var aG = O.legend.backgroundColor;
if (aG == null) {
aG = O.grid.backgroundColor;
if (aG && typeof aG == "string") {
aG = c.color.parse(aG)
} else {
aG = c.color.extract(aK, "background-color")
}
aG.a = 1;
aG = aG.toString()
}
var aB = aK.children();
c('<div style="position:absolute;width:' + aB.width() + "px;height:" + aB.height() + "px;" + aI + "background-color:" + aG + ';"> </div>').prependTo(aK).css("opacity", O.legend.backgroundOpacity)
}
}
}
var ab = [],
M = null;
function K(aI, aG, aD) {
var aO = O.grid.mouseActiveRadius,
a0 = aO * aO + 1,
aY = null,
aR = false,
aW, aU;
for (aW = Q.length - 1; aW >= 0; --aW) {
if (!aD(Q[aW])) {
continue
}
var aP = Q[aW],
aH = aP.xaxis,
aF = aP.yaxis,
aV = aP.datapoints.points,
aT = aP.datapoints.pointsize,
aQ = aH.c2p(aI),
aN = aF.c2p(aG),
aC = aO / aH.scale,
aB = aO / aF.scale;
if (aH.options.inverseTransform) {
aC = Number.MAX_VALUE
}
if (aF.options.inverseTransform) {
aB = Number.MAX_VALUE
}
if (aP.lines.show || aP.points.show) {
for (aU = 0; aU < aV.length; aU += aT) {
var aK = aV[aU],
aJ = aV[aU + 1];
if (aK == null) {
continue
}
if (aK - aQ > aC || aK - aQ < -aC || aJ - aN > aB || aJ - aN < -aB) {
continue
}
var aM = Math.abs(aH.p2c(aK) - aI),
aL = Math.abs(aF.p2c(aJ) - aG),
aS = aM * aM + aL * aL;
if (aS < a0) {
a0 = aS;
aY = [aW, aU / aT]
}
}
}
if (aP.bars.show && !aY) {
var aE = aP.bars.align == "left" ? 0 : -aP.bars.barWidth / 2,
aX = aE + aP.bars.barWidth;
for (aU = 0; aU < aV.length; aU += aT) {
var aK = aV[aU],
aJ = aV[aU + 1],
aZ = aV[aU + 2];
if (aK == null) {
continue
}
if (Q[aW].bars.horizontal ? (aQ <= Math.max(aZ, aK) && aQ >= Math.min(aZ, aK) && aN >= aJ + aE && aN <= aJ + aX) : (aQ >= aK + aE && aQ <= aK + aX && aN >= Math.min(aZ, aJ) && aN <= Math.max(aZ, aJ))) {
aY = [aW, aU / aT]
}
}
}
}
if (aY) {
aW = aY[0];
aU = aY[1];
aT = Q[aW].datapoints.pointsize;
return {
datapoint: Q[aW].datapoints.points.slice(aU * aT, (aU + 1) * aT),
dataIndex: aU,
series: Q[aW],
seriesIndex: aW
}
}
return null
}
function aa(aB) {
if (O.grid.hoverable) {
u("plothover", aB, function (aC) {
return aC.hoverable != false
})
}
}
function l(aB) {
if (O.grid.hoverable) {
u("plothover", aB, function (aC) {
return false
})
}
}
function R(aB) {
u("plotclick", aB, function (aC) {
return aC.clickable != false
})
}
function u(aC, aB, aD) {
var aE = y.offset(),
aH = aB.pageX - aE.left - q.left,
aF = aB.pageY - aE.top - q.top,
aJ = C({
left: aH,
top: aF
});
aJ.pageX = aB.pageX;
aJ.pageY = aB.pageY;
var aK = K(aH, aF, aD);
if (aK) {
aK.pageX = parseInt(aK.series.xaxis.p2c(aK.datapoint[0]) + aE.left + q.left);
aK.pageY = parseInt(aK.series.yaxis.p2c(aK.datapoint[1]) + aE.top + q.top)
}
if (O.grid.autoHighlight) {
for (var aG = 0; aG < ab.length; ++aG) {
var aI = ab[aG];
if (aI.auto == aC && !(aK && aI.series == aK.series && aI.point[0] == aK.datapoint[0] && aI.point[1] == aK.datapoint[1])) {
T(aI.series, aI.point)
}
}
if (aK) {
x(aK.series, aK.datapoint, aC)
}
}
av.trigger(aC, [aJ, aK])
}
function f() {
if (!M) {
M = setTimeout(s, 30)
}
}
function s() {
M = null;
A.save();
A.clearRect(0, 0, G, I);
A.translate(q.left, q.top);
var aC, aB;
for (aC = 0; aC < ab.length; ++aC) {
aB = ab[aC];
if (aB.series.bars.show) {
v(aB.series, aB.point)
} else {
ay(aB.series, aB.point)
}
}
A.restore();
an(ak.drawOverlay, [A])
}
function x(aD, aB, aF) {
if (typeof aD == "number") {
aD = Q[aD]
}
if (typeof aB == "number") {
var aE = aD.datapoints.pointsize;
aB = aD.datapoints.points.slice(aE * aB, aE * (aB + 1))
}
var aC = al(aD, aB);
if (aC == -1) {
ab.push({
series: aD,
point: aB,
auto: aF
});
f()
} else {
if (!aF) {
ab[aC].auto = false
}
}
}
function T(aD, aB) {
if (aD == null && aB == null) {
ab = [];
f()
}
if (typeof aD == "number") {
aD = Q[aD]
}
if (typeof aB == "number") {
aB = aD.data[aB]
}
var aC = al(aD, aB);
if (aC != -1) {
ab.splice(aC, 1);
f()
}
}
function al(aD, aE) {
for (var aB = 0; aB < ab.length; ++aB) {
var aC = ab[aB];
if (aC.series == aD && aC.point[0] == aE[0] && aC.point[1] == aE[1]) {
return aB
}
}
return -1
}
function ay(aE, aD) {
var aC = aD[0],
aI = aD[1],
aH = aE.xaxis,
aG = aE.yaxis;
if (aC < aH.min || aC > aH.max || aI < aG.min || aI > aG.max) {
return
}
var aF = aE.points.radius + aE.points.lineWidth / 2;
A.lineWidth = aF;
A.strokeStyle = c.color.parse(aE.color).scale("a", 0.5).toString();
var aB = 1.5 * aF,
aC = aH.p2c(aC),
aI = aG.p2c(aI);
A.beginPath();
if (aE.points.symbol == "circle") {
A.arc(aC, aI, aB, 0, 2 * Math.PI, false)
} else {
aE.points.symbol(A, aC, aI, aB, false)
}
A.closePath();
A.stroke()
}
function v(aE, aB) {
A.lineWidth = aE.bars.lineWidth;
A.strokeStyle = c.color.parse(aE.color).scale("a", 0.5).toString();
var aD = c.color.parse(aE.color).scale("a", 0.5).toString();
var aC = aE.bars.align == "left" ? 0 : -aE.bars.barWidth / 2;
E(aB[0], aB[1], aB[2] || 0, aC, aC + aE.bars.barWidth, 0, function () {
return aD
}, aE.xaxis, aE.yaxis, A, aE.bars.horizontal, aE.bars.lineWidth)
}
function am(aJ, aB, aH, aC) {
if (typeof aJ == "string") {
return aJ
} else {
var aI = H.createLinearGradient(0, aH, 0, aB);
for (var aE = 0, aD = aJ.colors.length; aE < aD; ++aE) {
var aF = aJ.colors[aE];
if (typeof aF != "string") {
var aG = c.color.parse(aC);
if (aF.brightness != null) {
aG = aG.scale("rgb", aF.brightness)
}
if (aF.opacity != null) {
aG.a *= aF.opacity
}
aF = aG.toString()
}
aI.addColorStop(aE / (aD - 1), aF)
}
return aI
}
}
}
c.plot = function (g, e, d) {
var f = new b(c(g), e, d, c.plot.plugins);
return f
};
c.plot.version = "0.7";
c.plot.plugins = [];
c.plot.formatDate = function (l, f, h) {
var o = function (d) {
d = "" + d;
return d.length == 1 ? "0" + d : d
};
var e = [];
var p = false,
j = false;
var n = l.getUTCHours();
var k = n < 12;
if (h == null) {
h = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"]
}
if (f.search(/%p|%P/) != -1) {
if (n > 12) {
n = n - 12
} else {
if (n == 0) {
n = 12
}
}
}
for (var g = 0; g < f.length; ++g) {
var m = f.charAt(g);
if (p) {
switch (m) {
case "h":
m = "" + n;
break;
case "H":
m = o(n);
break;
case "M":
m = o(l.getUTCMinutes());
break;
case "S":
m = o(l.getUTCSeconds());
break;
case "d":
m = "" + l.getUTCDate();
break;
case "m":
m = "" + (l.getUTCMonth() + 1);
break;
case "y":
m = "" + l.getUTCFullYear();
break;
case "b":
m = "" + h[l.getUTCMonth()];
break;
case "p":
m = (k) ? ("am") : ("pm");
break;
case "P":
m = (k) ? ("AM") : ("PM");
break;
case "0":
m = "";
j = true;
break
}
if (m && j) {
m = o(m);
j = false
}
e.push(m);
if (!j) {
p = false
}
} else {
if (m == "%") {
p = true
} else {
e.push(m)
}
}
}
return e.join("")
};
function a(e, d) {
return d * Math.floor(e / d)
}
})(jQuery);
?>