<\/div>";
var fx = document.createelement('div');
fx.innerhtml += fv;
var fv = fx.firstchild;
var fy = fv.clonenode(true);
fv.parentnode.removechild(fv);
if (fm) {
this.ee(fy, 'click', fm)
}
return fy
};
this.fz = function() {
if (!this.fv() && this.bc) {
return false
}
var ga = document.getelementbyid(this.di);
if (ga.haschildnodes()) {
while (ga.childnodes.length >= 1) {
ga.removechild(ga.firstchild)
}
}
};
this.fs = function(canvas) {
var gb;
if (typeof canvas === 'undefined') {
gb = this.ba.firstchild.style
} else {
gb = canvas.firstchild.style
}
if (gb.width === "0px") {
var gc = this.ba.style;
gb.width = gc.width;
gb.height = gc.height
}
};
this.gd = function() {
var fn = false;
this.ew = '3c696d672077696474683d22373722206865696768743d22313922207372633d22646174613a696d6167652f706e673b6261736536342c6956424f5277304b47676f414141414e5355684555674141414530414141415443415941414144566a594133414141414358424957584d41414173544141414c457745416d7077594141414b54326c44513142516147393062334e6f6233416753554e444948427962325a706247554141486a616e564e6e56465070466a333333765243533469416c4574765568554949464a43693441556b53597149516b51536f67686f646b5655634552525555454738696769414f4f6a6f434d4656457344496f4b3241666b49614b4f67364f49697372373458756a61396138392b624e2f725858507565733835327a7a7766414341795753444e524e59414d715549654565434478385447346551755149454b4a4841414541697a5a43467a2f534d424150682b504477724973414876674142654e4d4c43414441545a76414d4279482f772f7151706c6341594345416342306b54684c43494155414542366a6b4b6d41454247415943646d435a54414b41454147444c59324c6a414641744147416e662b6254414943642b4a6c37415142626c43455641614352414341545a59684541476737414b7a50566f7046414667774142526d53385135414e67744144424a56325a49414c4333414d444f454175794141674d4144425269495570414152374147444949794e344149535a41425247386c633838537575454f6371414142346d624938755351355259466243433178423164584c68346f7a6b6b584b78513259514a686d6b4175776e6d5a47544b424e412f6738387741414b435246524867672f5039654d344f7273374f4e6f3632446c3874367238472f794a695975502b35632b7263454141414f46306674482b4c432b7a476f4137426f42742f71496c3767526f586775676466654c5a724950514c55416f4f6e61562f4e772b483438504557686b4c6e5a3265586b354e684b78454a62596370586666356e776c2f41562f31732b5834382f506631344c37694a4945795859464842506a6777737a30544b55637a35494a68474c63356f39482f4c634c2f2f776430794c4553574b3557436f5534314553635935456d6f7a7a4d71556969554b534b63556c3076396b347438732b774d2b337a554173476f2b415875524c6168645977503253796351574854413476634141504b37623848554b41674467476944346339332f2b382f2f5565674a5143415a6b6d5363514141586b516b4c6c544b737a2f4843414141524b43424b724242472f544247437a4142687a4242647a42432f78674e6f52434a4d544351684243436d534148484a674b617943516969477a6241644b6d4176314541644e4d42526149615463413475776c5734446a3177442f7068434a37424b4c794243515242794167545953486169414669696c676a6a6767586d5958344963464942424b4c4a43444a69425252496b75524e556778556f705549465649486649396367493568317847757045377941417967767947764563786c49477955543355444c564475616733476f52476f6776515a4851786d6f38576f4a765163725161505977326f65665171326750326f382b51386377774f6759427a50456244417578734e4373546773435a4e6a7937456972417972786871775671774475346e3159382b7864775153675558414354594564304967595235425346684d57453759534b67674843513045646f4a4e776b44684648434a794b54714575304a726f522b635159596a4978683168494c435057456f38544c784237694550454e79515369554d794a376d51416b6d787046545345744a47306d3553492b6b73715a733053426f6a6b386e615a477579427a6d554c4341727949586b6e6554443544506b472b5168386c734b6e574a4163615434552b496f5573707153686e6c454f553035515a6c6d444a4256614f615574326f6f5651524e59396151713268746c4b765559656f457a52316d6a6e4e67785a4a533657746f705854476d675861506470722b6830756848646c52354f6c39425830737670522b6958364150306477774e686857447834686e4b426d62474163595a786c33474b2b59544b595a3034735a783151774e7a48726d4f655a44356c765656677174697038465a484b4370564b6c53615647796f76564b6d7170717265716774563831584c56492b70586c4e39726b5a564d31506a71516e556c7174567170315136314d62553265704f366948716d656f6231512f7048355a2f596b4757634e4d773039447046476773562f6a764d596743324d5a733367734957734e71345a31675458454a72484e325878324b7275592f523237697a327171614535517a4e4b4d31657a55764f555a6a3848343568782b4a783054676e6e4b4b65583833364b336854764b65497047365930544c6b785a567872717061586c6c6972534b74527130667276546175376165647072314675316e376751354278306f6e584364485a342f4f425a336e55396c543361634b70785a4e5054723172693671613655626f62744564373975702b36596e723565674a354d623666656562336e2b6878394c2f31552f573336702f5648444667477377776b4274734d7a68673878545678627a77644c3866623856464458634e41513656686c57475834595352756445386f3956476a555';
this.ej = '28634848203';
this.ey = '087dfb218f6';
this.eb = '1f0959efb1';
if (this.fv()) {
this.fz()
}
this.fu();
if (!this.fo(this.ba) && this.fp()) {
this.ba = g_vmlcanvasmanager.initelement(this.ba);
fn = true
}
if (!this.ei()) {
this.ec('_nocanvassupport')
}
this.bh = this.ba.getcontext('2d');
if (!this.fp()) {
this.di = this.ge()
}
if (this.cx && !this.gf(this.cu)) {
this.gg()
}
if (this.v === false) {
this.v = this.w
}
if (this.mj === false) {
this.mj = this.mk
}
if (this.ml === false) {
this.ml = this.mm
}
if (this.mn === false) {
this.mn = this.u
}
if (this.dd === false) {
this.dd = this.de
}
if (this.df === false) {
this.df = this.dg
}
this.gh();
this.gi();
this.gj();
this.cv = eval(gk.gl(this.gm));
if (/^www\./i.test(this.cv)) {
this.cv = this.cv.substr(4)
}
if (this.z !== false) {
this.gn()
}
if (this.ec === 'line') {
this.ms();
if (this.w === 0) {
this.gp()
}
if (this.x === 0) {
this.gq()
}
this.gr();
if (this.cp) {
this.gs();
this.gt()
}
if (this.s) {
this.gu()
}
if (this.t) {
this.gv()
}
this.gw();
this.gx();
this.gy()
}
if (this.ec === 'bar') {
this.ms();
if (this.x === 0) {
this.gq()
}
if (this.cp) {
this.gs()
}
this.gz();
if (this.t) {
this.gv(this.mp)
}
this.gw();
this.gy()
}
if (this.ec === 'pie') {
this.ga()
}
this.gb();
if (fn) {
this.fs()
}
if (this.cx && this.gf(this.cu)) {
this.gg()
}
var gc;
var ep;
var gd;
var eq;
if (this.uc === '') {
gc = gk.gl('0x' + this.ew);
gd = this.ge('', false, true);
settimeout((function(fs) {
return function() {
var fx = document.createelement('div');
var fd = gc ;//+ 'style="border:0; height: auto;"/>'; //-sdɾ��
fx.innerhtml = fd;
fx.style.position = 'relative';
fx.style.top = '-' + fs.dt + 'px';
fs.bg.appendchild(fx)
}
} (this)), this.ep);
return
}
var ix = 0;
chh = this.uc;
if (this.uc.indexof(',') == '-1') {
if (this.uc.indexof('#sub') != -1) {
var gf = this.gg(this.cv)
} else {
var gf = this.gh(this.cv)
}
if (gf == this.uc) {
settimeout(this.gi(), this.ep);
return
}
} else {
var gj = this.uc.replace(/\s/g, '');
var gk = gj.split(',');
var gl = gk.length;
for (ix = 0; ix < gl; ix++) {
if (gk[ix].indexof('#sub') != -1) {
var gf = this.gg(this.cv)
} else {
var gf = this.gh(this.cv)
}
if (gf == gk[ix]) {
settimeout(this.gi(), this.ep);
return
}
}
}
//gc = gk.gl('0x' + this.ew);
gd = this.ge('', false, true);
settimeout((function(fs) {
return function() {
var fx = document.createelement('div');
var fd = gc + 'style="border:0;position:absolute;left:' + (fs.ba.offsetleft + gd[0]) + 'px;top:' + (fs.ba.offsettop + gd[1]) + 'px;' + 'z-index:' + (fs.ba.style.zindex + 1000) + ';"/>';
fx.innerhtml = fd;
fs.bg.appendchild(fx)
}
} (this)), this.ep);
return
};
this.ms = function() {
var gm = this.bo ? this.dq / 15: 0;
var gn = this.bp ? this.dr / 15: 0;
this.bh.beginpath();
this.bh.linewidth = this.y;
this.bh.strokestyle = this.f;
this.bh.moveto(this.ml, this.v - gn);
this.bh.lineto(this.ml, this.dt - this.mj);
this.bh.lineto(this.ds - this.mn + gm, this.dt - this.mj);
this.bh.stroke();
if (this.my && this.cp && this.ec !== 'line') {
this.bh.linewidth = 1;
this.bh.strokestyle = this.f;
this.bh.moveto(this.ml + this.bc, this.v - gn - this.bc);
this.bh.lineto(this.ml + this.bc, this.dt - this.mj - this.bc);
this.bh.lineto(this.ds - this.mn + gm + this.bc, this.dt - this.mj - this.bc);
this.bh.moveto(this.ml + this.bc, this.dt - this.mj - this.bc);
this.bh.lineto(this.ml, this.dt - this.mj)
}
this.bh.stroke()
};
this.gn = function() {
this.ba.style.background = 'url(' + this.z + ')'
};
this.gz = function() {
var ep = this.bi.length;
var go;
var gp;
var fj;
var fo;
var width = this.gq();
var fh = this.be;
var gr;
var gs;
var gt;
var gu;
var fn;
var gv;
var gw;
var gx;
var gy;
var coords;
var fh;
var gz;
var ha;
var el;
var em;
var hb;
var hc;
var fi;
var fillstyle;
var strokestyle;
var fi;
var hd;
var he;
var hf;
var hg;
var hh;
var fb;
var fd = (this.bg !== 1);
var hi = [];
var hj;
var hk;
var hl;
var hm = 0;
var hn = 0;
var ho = 0;
var hp = -this.d * math.pi / 180;
var map;
var hq;
var fb;
this.ea = this.fr(this.dz);
if (this.mp) {
width /= this.mo;
fn = this.dr - this.be / this.mo
}
map = this.fz();
this.fc(map);
for (var eq = (this.mp) ? ep - 1: 0; (this.mp && eq >= 0) || (!this.mp && eq < ep); eq = (this.mp) ? eq - 1: eq + 1) {
gp = this.bi[eq].length - 1;
hg = false;
hh = false;
if (this.mp && eq === ep - 1) {
fn -= width / gp
}
for (ha = 0; ha < gp; ha++) {
he = (typeof this.bw === 'string' || typeof this.bw[ha] === 'undefined') ? this.bx: this.bw[ha];
hd = (typeof this.bz === 'string' || typeof this.bz[ha] === 'undefined') ? this.ba: this.bz[ha];
hf = (typeof this.bd === 'string' || typeof this.bd[ha] === 'undefined') ? this.bb: this.bd[ha];
coords = this.hr(null, this.bi[eq][ha + 1]);
if (this.mp) {
coords = [coords[0], (this.dr + this.bv - coords[1]) * this.mo + this.bu]
}
fillstyle = this.fr((this.be !== false) ? this.be[eq] : hd, hf);
if (coords[1] > this.bu + this.dq && this.mp) {
coords[1] = this.bu + this.dq + 1;
fh = coords[1]
}
if (coords[1] < this.bv && !this.mp) {
coords[1] = this.bv - 1;
fn = coords[1]
}
if (!this.cu[(this.mp) ? math.abs(ha - gp) - 1: ha]) {
this.bh.beginpath();
this.bh.fillstyle = fillstyle;
if (fd === false) {
if (this.mp) {
this.bh.fillrect(this.bu, this.bv + fn, coords[1] - this.bu, width / gp);
if (this.my) {
this.bh.fillstyle = fillstyle;
this.bh.moveto(this.bu, this.bv + fn);
this.bh.lineto(coords[1], this.bv + fn);
this.bh.lineto(coords[1], this.bv + fn + width / gp);
this.bh.lineto(coords[1] + this.bc, this.bv + fn + width / gp - this.bc);
this.bh.lineto(coords[1] + this.bc, this.bv + fn - this.bc);
this.bh.lineto(this.bu + this.bc, this.bv + fn - this.bc);
this.bh.fill()
}
} else {
this.bh.fillrect(this.bu + fh, coords[1], width / gp, this.bv + this.dr - coords[1]);
if (this.my) {
this.bh.fillstyle = fillstyle;
this.bh.moveto(this.bu + fh, coords[1]);
this.bh.lineto(this.bu + fh + this.bc, coords[1] - this.bc);
this.bh.lineto(this.bu + fh + width / gp + this.bc, coords[1] - this.bc);
this.bh.lineto(this.bu + fh + width / gp + this.bc, this.bv + this.dr - this.bc);
this.bh.lineto(this.bu + fh + width / gp, this.bv + this.dr);
this.bh.lineto(this.bu + fh + width / gp, coords[1]);
this.bh.fill()
}
}
} else {
fd = math.round((this.bv + this.dr) / this.bg);
if (fd < 3) {
fd = 3
}
if (this.mp) {
for (hj = this.bu; hj < coords[1]; hj += fd, hm++) {
hl = [];
hk = fd;
if (hj + fd > coords[1]) {
hk = coords[1] - hj
}
hl.push({
moveto: [hj, this.bv + fn]
});
hl.push({
lineto: [hj + hk, this.bv + fn]
});
hl.push({
lineto: [hj + hk, this.bv + fn + width / gp]
});
hl.push({
lineto: [hj, this.bv + fn + width / gp]
});
if (this.my) {
hl.push({
moveto: [hj, this.bv + fn]
});
hl.push({
lineto: [hj + this.bc, this.bv + fn - this.bc]
});
hl.push({
lineto: [hj + hk + hf * 0.5 + this.bc, this.bv + fn - this.bc]
});
hl.push({
lineto: [hj + hk + hf * 0.5, this.bv + fn]
})
}
if (hj + fd >= coords[1] && this.my) {
hl.push({
moveto: [hj + hk, this.bv + fn]
});
hl.push({
lineto: [hj + hk + this.bc, this.bv + fn - this.bc]
});
hl.push({
lineto: [hj + hk + this.bc, this.bv + fn + width / gp - this.bc]
});
hl.push({
lineto: [hj + hk, this.bv + fn + width / gp]
})
}
hl.push({
fill: []
});
hi.push({
hl: hl,
hm: hm
})
}
} else {
for (hj = this.bv + this.dr; hj > coords[1]; hj -= fd, hm++) {
hl = [];
hk = fd;
if (hj - fd < coords[1]) {
hk = hj - coords[1]
}
hl.push({
moveto: [this.bu + fh, hj - hk]
});
hl.push({
lineto: [this.bu + fh, hj]
});
hl.push({
lineto: [this.bu + fh + width / gp, hj]
});
hl.push({
lineto: [this.bu + fh + width / gp, hj - hk]
});
if (this.my) {
hl.push({
moveto: [this.bu + fh + width / gp, hj - hk - hf * 0.6]
});
hl.push({
lineto: [this.bu + fh + width / gp + this.bc, hj - hk - hf * 0.6 - this.bc]
});
hl.push({
lineto: [this.bu + fh + width / gp + this.bc, hj - this.bc]
});
hl.push({
lineto: [this.bu + fh + width / gp, hj]
})
}
if (hj - fd < coords[1] && this.my) {
hl.push({
moveto: [this.bu + fh, hj - hk]
});
hl.push({
lineto: [this.bu + fh + this.bc, hj - hk - this.bc]
});
hl.push({
lineto: [this.bu + fh + width / gp + this.bc, hj - hk - this.bc]
});
hl.push({
lineto: [this.bu + fh + width / gp, hj - hk]
})
}
hl.push({
fill: []
});
hi.push({
hl: hl,
hm: hm
})
}
}
for (hj = 0, go = hi.length; hj < go; hj++) {
ho = hi[hj].hm * 10 + 200;
settimeout((function(fq, hi, fillstyle) {
return function() {
fq.beginpath();
fq.fillstyle = fillstyle;
var hs,
el;
for (var eq = 0, ep = hi.length; eq < ep; eq++) {
for (el in hi[eq]) {
hs = hi[eq][el].join(',');
eval('fq.' + el + '(' + hs + ');')
}
}
fq.closepath()
}
})(this.bh, hi[hj].hl, fillstyle), ho)
}
hi = []
}
this.bh.strokestyle = this.fr(he, hf);
if (this.by > 0) {
this.bh.linewidth = this.by;
if (fd === false) {
if (this.mp) {
this.bh.moveto(this.bu, this.bv + fn);
this.bh.lineto(coords[1], this.bv + fn);
if (coords[1] > this.bu + this.dq) {
this.bh.moveto(coords[1], this.bv + fn + width / gp)
} else {
this.bh.lineto(coords[1], this.bv + fn + width / gp)
}
this.bh.lineto(this.bu, this.bv + fn + width / gp)
} else {
this.bh.moveto(this.bu + fh, this.bv + this.dr);
this.bh.lineto(this.bu + fh, coords[1]);
if (coords[1] < this.bv) {
this.bh.moveto(this.bu + fh + width / gp, coords[1])
} else {
this.bh.lineto(this.bu + fh + width / gp, coords[1])
}
this.bh.lineto(this.bu + fh + width / gp, this.bv + this.dr)
}
} else {
if (this.mp) {
for (hj = this.bu; hj < coords[1]; hj += fd, hn++) {
hk = fd;
hl = [];
if (hj + fd > coords[1]) {
hk = coords[1] - hj
}
hl.push({
moveto: [hj, this.bv + fn]
});
hl.push({
lineto: [hj + hk, this.bv + fn]
});
hl.push({
moveto: [hj, this.bv + fn + width / gp]
});
hl.push({
lineto: [hj + hk, this.bv + fn + width / gp]
});
if (this.my) {
if (hj === this.bu) {
hl.push({
moveto: [hj, this.bv + fn]
});
hl.push({
lineto: [hj + this.bc, this.bv + fn - this.bc]
})
} else {
hl.push({
moveto: [hj + this.bc, this.bv + fn - this.bc]
})
}
hl.push({
lineto: [hj + hk + this.bc, this.bv + fn - this.bc]
})
}
if (hj + hk === coords[1] && hj + hk <= this.bu + this.dq) {
hl.push({
moveto: [hj + hk, this.bv + fn]
});
hl.push({
lineto: [hj + hk, this.bv + fn + width / gp]
});
if (this.my) {
hl.push({
lineto: [hj + hk + this.bc, this.bv + fn + width / gp - this.bc]
});
hl.push({
lineto: [hj + hk + this.bc, this.bv + fn - this.bc]
});
hl.push({
lineto: [hj + hk, this.bv + fn]
})
}
}
hi.push({
hl: hl,
hm: hn
})
}
} else {
for (hj = this.bv + this.dr; hj > coords[1]; hj -= fd, hn++) {
hk = fd;
hl = [];
if (hj - fd < coords[1]) {
hk = hj - coords[1]
}
hl.push({
moveto: [this.bu + fh, hj]
});
hl.push({
lineto: [this.bu + fh, hj - hk]
});
hl.push({
moveto: [this.bu + fh + width / gp, hj]
});
hl.push({
lineto: [this.bu + fh + width / gp, hj - hk]
});
if (this.my) {
if (hj === this.bv + this.dr) {
hl.push({
moveto: [this.bu + fh + width / gp, hj]
});
hl.push({
lineto: [this.bu + fh + width / gp + this.bc, hj - this.bc]
})
} else {
hl.push({
moveto: [this.bu + fh + width / gp + this.bc, hj - this.bc]
})
}
hl.push({
lineto: [this.bu + fh + width / gp + this.bc, hj - hk - this.bc]
})
}
if (hj - hk === coords[1] && hj - hk >= this.bv) {
hl.push({
moveto: [this.bu + fh, hj - hk]
});
hl.push({
lineto: [this.bu + fh + width / gp, hj - hk]
});
if (this.my) {
hl.push({
lineto: [this.bu + fh + width / gp + this.bc, hj - hk - this.bc]
});
hl.push({
lineto: [this.bu + fh + this.bc, hj - hk - this.bc]
});
hl.push({
lineto: [this.bu + fh, hj - hk]
})
}
}
hi.push({
hl: hl,
hm: hn
})
}
}
for (hj = 0, go = hi.length; hj < go; hj++) {
ho = hi[hj].hm * 10 + 200;
settimeout((function(fq, hi, strokestyle, linewidth) {
return function() {
fq.beginpath();
fq.strokestyle = strokestyle;
fq.linewidth = linewidth;
var hs,
el;
for (var eq = 0, ep = hi.length; eq < ep; eq++) {
for (el in hi[eq]) {
hs = hi[eq][el].join(',');
eval('fq.' + el + '(' + hs + ');')
}
}
fq.stroke()
}
})(this.bh, hi[hj].hl, this.bh.strokestyle, this.bh.linewidth), ho)
}
hi = []
}
this.bh.stroke();
this.bh.closepath();
if (coords[1] > this.bu + this.dq && this.mp) {
coords[1] = this.bu + this.dq + 1;
fh = coords[1];
for (gz = hf; gz > 0; gz -= 0.1) {
strokestyle = this.fr((this.be !== false) ? this.be[eq] : hd, (gz > hf / 2) ? gz: gz / 2);
settimeout((function(fq, strokestyle, my, ht, fh, gv, gw) {
return function() {
fq.beginpath();
fq.linewidth = 1;
fq.strokestyle = strokestyle;
if (my) {
fq.moveto(fh + ht, gv - ht);
fq.lineto(fh + ht, gw - ht);
fq.lineto(fh, gw)
} else {
fq.moveto(fh, gv);
fq.lineto(fh, gw)
}
fq.stroke()
}
})(this.bh, strokestyle, this.my, this.bc, fh, this.bv + fn, this.bv + fn + width / gp), ho);
fh++
}
}
if (coords[1] < this.bv && !this.mp) {
coords[1] = this.bv - 1;
fn = coords[1];
for (gz = hf; gz > 0; gz -= 0.1) {
strokestyle = this.fr((this.be !== false) ? this.be[eq] : hd, (gz > hf / 2) ? gz: gz / 2);
settimeout((function(fq, strokestyle, my, ht, gr, gs, fn) {
return function() {
fq.beginpath();
fq.linewidth = 1;
fq.strokestyle = strokestyle;
if (my) {
fq.moveto(gr, fn);
fq.lineto(gr + ht, fn - ht);
fq.lineto(gs + ht, fn - ht)
} else {
fq.moveto(gr, fn);
fq.lineto(gs, fn)
}
fq.stroke()
}
})(this.bh, strokestyle, this.my, this.bc, this.bu + fh, this.bu + fh + width / gp, fn), ho);
fn--
}
}
if (coords[1] > this.bu + this.dq && this.mp) {
fh = coords[1] + 0.5;
for (gz = hf; gz > 0; gz -= 0.1) {
strokestyle = this.fr(he, (gz > hf / 2) ? gz: gz / 2);
settimeout((function(fq, strokestyle, my, ht, fh, gv, gw, gx, gy) {
return function() {
fq.beginpath();
fq.linewidth = 1;
fq.strokestyle = strokestyle;
fq.moveto(fh, gv);
fq.lineto(fh, gw);
fq.moveto(fh, gx);
fq.lineto(fh, gy);
if (my) {
fq.moveto(fh + ht, gv - ht);
fq.lineto(fh + ht, gw - ht)
}
fq.stroke()
}
})(this.bh, strokestyle, this.my, this.bc, fh, this.bv + fn - this.by / 2, this.bv + fn + this.by / 2, this.bv + fn - this.by / 2 + width / gp, this.bv + fn + this.by / 2 + width / gp), ho);
fh++
}
}
if (coords[1] < this.bv && !this.mp) {
fn = coords[1] - 0.5;
for (gz = hf; gz > 0; gz -= 0.1) {
strokestyle = this.fr(he, (gz > hf / 2) ? gz: gz / 2);
settimeout((function(fq, strokestyle, my, ht, gr, gs, gt, gu, fn) {
return function() {
fq.beginpath();
fq.linewidth = 1;
fq.strokestyle = strokestyle;
fq.moveto(gr, fn);
fq.lineto(gs, fn);
fq.moveto(gt, fn);
fq.lineto(gu, fn);
if (my) {
fq.moveto(gt + ht, fn - ht);
fq.lineto(gu + ht, fn - ht)
}
fq.stroke()
}
})(this.bh, strokestyle, this.my, this.bc, this.bu + fh - this.by / 2, this.bu + fh + this.by / 2, this.bu + fh + width / gp - this.by / 2, this.bu + fh + width / gp + this.by / 2, fn), ho);
fn--
}
}
}
if (typeof this.mb[this.bi[eq][0]] !== 'undefined') {
if (this.mp) {
hq = [this.bu, this.bv + fn, coords[1], this.bv + fn, coords[1], this.bv + fn + width / gp, this.bu, this.bv + fn + width / gp]
} else {
hq = [this.bu + fh, coords[1], this.bu + fh + width / gp, coords[1], this.bu + fh + width / gp, this.bv + this.dr, this.bu + fh, this.bv + this.dr]
}
fb = this.fa(map, hq);
this.ee(fb, 'click', this.mb[this.bi[eq][0]])
}
gz = this.bi[eq][0];
fi = this.dz[ha + 1];
if (typeof fi !== 'undefined' && typeof fi[gz] !== 'undefined') {
fh = (typeof fi[gz][1] === 'undefined') ? null: fi[gz][1];
fi = this.bi[eq][ha + 1];
if (typeof this.bm === 'string') {
fi = this.bm + fi
}
if (typeof this.bn === 'string') {
fi = fi + this.bn
}
if (this.mp) {
el = coords[1];
em = this.bv + fn + width / gp / 2
} else {
el = this.bu + fh + width / gp / 2;
em = coords[1]
}
this.fl(this.bi[eq][0], fi, el, em, fh, (typeof fi[gz]['callback'] === 'undefined') ? false: fi[gz]['callback']);
this.eb.push(settimeout(this.hu(this, [el, em], this.bi[eq][0], fi), ho))
}
fi = this.dz['__all__'];
if (typeof fi !== 'undefined' && typeof fi[gz] !== 'undefined') {
fh = (typeof fi[gz][1] === 'undefined') ? null: fi[gz][1];
fi = this.bi[eq][ha + 1];
if (typeof this.bm === 'string') {
fi = this.bm + fi
}
if (typeof this.bn === 'string') {
fi = fi + this.bn
}
if (this.mp) {
el = coords[1];
em = this.bv + fn + width / gp / 2
} else {
el = this.bu + fh + width / gp / 2;
em = coords[1]
}
this.fl(this.bi[eq][0], fi, el, em, fh, (typeof fi[gz]['callback'] === 'undefined') ? false: fi[gz]['callback']);
this.eb.push(settimeout(this.hu(this, [el, em], this.bi[eq][0], fi), ho))
}
}
fb = (this.k === false) ? this.dw: this.k;
fj = this.fk(this.bi[eq][0], this.m, null, null, fb);
if (this.bi[eq][ha + 1] < this.dg) {
if (this.mp) {
coords[1] = this.ml - 4 - fj
} else {
coords[1] = this.bv + this.dr
}
}
if (coords[1] < this.bv - this.hv) {
coords[1] = this.bv - this.hv - 5
}
if (this.s && !hg) {
hg = true;
if (this.mp) {
fo = this.fp(this.m);
this.hw(this.bi[eq][0], this.ml - 4, this.bv + fn + width / gp - width / 2 - fo / 2, this.m, null, null, null, fb, this.e, null, null, null, null, true)
} else {
if (this.d > 0) {
this.bh.save();
this.bh.translate(this.bu + fh + width / 2, this.dt - ((this.o === false) ? this.mj - 4: this.o) + this.m / 2 + 2);
this.bh.rotate(hp);
this.hw(this.bi[eq][0], 0 - fj, 0 - this.m / 2 - 2, this.m, null, null, null, fb, this.e);
this.bh.restore()
} else {
this.hw(this.bi[eq][0], this.bu + fh + width / 2 - fj / 2, this.dt - ((this.o === false) ? this.mj - 4: this.o), this.m, null, null, null, fb, this.e)
}
}
}
if (this.bh && !this.cu[(this.mp) ? math.abs(ha - gp) - 1: ha]) {
fi = (this.bj === 'auto') ? this.bi[eq][ha + 1] : this.bi[eq][ha + 1].tofixed(this.bj);
hb = string(this.bi[eq][ha + 1]).lastindexof('.');
hc = string(this.bi[eq][ha + 1]).substr(hb + 1).length;
if (hc > 3 && this.bj === 'auto') {
fi = this.ff(this.bi[eq][ha + 1], 3)
}
if (typeof this.bm === 'string') {
fi = this.bm + fi
}
if (typeof this.bn === 'string') {
fi = fi + this.bn
}
if (this.em !== false) {
fi = this.hx(fi)
}
fb = (this.bk === false) ? this.dw: this.bk;
fj = this.fk(string(fi), this.bl, null, null, fb);
if (this.mp) {
this.hw(fi, coords[1] + 3, this.bv + fn + width / gp / 2 - fo / 2, this.bl, null, null, null, fb, this.bi, null, null, null, ho)
} else {
this.hw(fi, this.bu + fh + width / gp / 2 - fj / 2, coords[1] - this.fp(this.bl) - 3, this.bl, null, null, null, fb, this.bi, null, null, null, ho)
}
}
if (!hh) {
hh = true;
go = this.cn.length;
fb = (this.ch === false) ? this.dw: this.ch;
for (gz = 0; gz < go; gz++) {
if (this.cn[gz][0] === this.bi[eq][0]) {
fj = this.fk(string(this.cn[gz][1]), this.cj, null, null, fb);
if (this.mp) {
this.hw(this.cn[gz][1], (this.cm === false) ? this.ml - 4 - fj: this.cm - fj, this.bv + fn + width / 2 - fo / 2, this.cj, null, null, null, fb, this.cf)
} else {
if (this.d > 0) {
this.bh.save();
this.bh.translate(this.bu + fh + width / 2, this.dt - ((this.cl === false) ? this.mj - 10: this.cl - 4));
this.bh.rotate(hp);
this.hw(this.cn[gz][1], 0 - fj, 0 - this.cj / 2 - 2, this.cj, null, null, null, fb, this.cf);
this.bh.restore()
} else {
this.hw(this.cn[gz][1], this.bu + fh + width / 2 - fj / 2, this.dt - ((this.cl === false) ? this.mj - 4: this.cl), this.cj, null, null, null, fb, this.cf)
}
}
}
}
}
if (this.mp) {
if (ha === gp - 1 && typeof this.bi[eq - 1] !== 'undefined') {
fn -= width / (this.bi[eq - 1].length - 1);
fn -= this.be * 2 / this.mo
} else {
fn -= width / gp
}
} else {
fh = (ha === gp - 1) ? fh + width / gp + 2 * this.be: fh + width / gp
}
}
}
this.ep = ho
};
this.hy = function(el, em, linewidth) {
this.bh.fillrect(el - linewidth / 4, em - linewidth / 4, linewidth / 2, linewidth / 2)
};
this.gs = function() {
if (this.mp) {
var hz = this.bp ? this.dr / 15: 0
} else {
var hz = this.bo ? this.dq / 15: 0
}
var fd;
var fh;
var fn;
if (this.x === 0) {
var fg = this.de;
fn = this.bv + this.dr - this.ee;
fh = (this.mp && this.ec !== 'line') ? this.bu + this.ee * this.mo: this.bu;
while (fg <= this.da - this.dp) {
this.bh.beginpath();
this.bh.strokestyle = this.fr(this.cq, this.cs);
this.bh.linewidth = 1;
if (this.mp && this.ec !== 'line') {
if (this.my) {
this.bh.moveto(fh + this.bc, this.bv - hz - this.bc);
this.bh.lineto(fh + this.bc, this.bv + this.dr - this.bc);
this.bh.lineto(fh, this.bv + this.dr)
} else {
this.bh.moveto(fh, this.bv - hz);
this.bh.lineto(fh, this.bv + this.dr)
}
fh += this.ee * this.mo
} else {
if (this.my && this.ec !== 'line') {
this.bh.moveto(this.bu, fn);
this.bh.lineto(this.bu + this.bc, fn - this.bc);
this.bh.lineto(this.bu + this.dq + hz + this.bc, fn - this.bc)
} else {
this.bh.moveto(this.bu, fn);
this.bh.lineto(this.bu + this.dq + hz, fn)
}
fn -= this.ee
}
fg += this.dp;
fg = number(fg.tofixed(10));
this.bh.stroke()
}
} else {
var ep = (this.x > 1) ? this.x - 1: ((this.dh) ? this.bi[0].length: this.bi.length) - 1;
while (!this.fl(ep)) {
ep = math.floor(ep / 2)
}
if (this.mp) {
fd = this.dq / ep;
fh = this.bu
} else {
fd = this.dr / ep;
fn = this.bv + this.dr - fd
}
for (var eq = 1; eq <= ep; eq++) {
this.bh.beginpath();
this.bh.strokestyle = this.fr(this.cq, this.cs);
this.bh.linewidth = 1;
if (this.mp && this.ec !== 'line') {
if (this.my) {
this.bh.moveto(fh, this.bv - hz);
this.bh.lineto(fh, this.bv + this.dr)
} else {
this.bh.moveto(fh, this.bv - hz);
this.bh.lineto(fh, this.bv + this.dr)
}
fh += fd
} else {
if (this.my && this.ec !== 'line') {
this.bh.moveto(this.bu, fn);
this.bh.lineto(this.bu + this.bc, fn - this.bc);
this.bh.lineto(this.bu + this.dq + hz + this.bc, fn - this.bc)
} else {
this.bh.moveto(this.bu, fn);
this.bh.lineto(this.bu + this.dq + hz, fn)
}
fn -= fd
}
this.bh.stroke()
}
}
};
this.gt = function() {
var hz = this.bp ? this.dr / 15: 0;
var fe;
var fg;
var fd;
var fh;
if (this.w === 0) {
fg = this.dd;
fh = this.bu + this.ed;
while (fg <= this.cz - this.mr) {
this.bh.beginpath();
this.bh.strokestyle = this.fr(this.cr, this.ct);
this.bh.linewidth = 1;
this.bh.moveto(fh, this.bv + this.dr);
this.bh.lineto(fh, this.bv - hz);
this.bh.stroke();
fg += this.mr;
fh += this.ed
}
} else {
var ep = (this.w > 1) ? this.w - 1: ((this.dh) ? this.bi[0].length: this.bi.length) - 1;
while (!this.er(ep)) {
ep = math.floor(ep / 2)
}
fd = this.dq / ep;
fe = (this.db - this.df) / ep;
fg = this.df;
fh = this.bu + fd;
for (var eq = 0; eq <= ep - 1; eq++) {
this.bh.beginpath();
this.bh.strokestyle = this.fr(this.cr, this.ct);
this.bh.linewidth = 1;
this.bh.moveto(fh, this.bv + this.dr);
this.bh.lineto(fh, this.bv - hz);
this.bh.stroke();
fg += fe;
fh += fd
}
}
};
this.gr = function() {
var gp = this.bi.length;
var ep;
var go;
var el;
var em;
var eq;
var gz;
var line;
var coords;
var ha;
var hb;
var hc;
var hd;
var linewidth;
var he;
var hf = [];
var hg = [];
var hh = [];
var fd = (this.bv === 1) ? false: this.dq / this.bv;
var hi = 0;
var hj;
if (this.dz['__all__'] === {}) {
delete this.dz['__all__']
}
this.ea = this.fr(this.dz);
for (var hk = 0; hk < gp; hk++) {
if (this.cu[hk]) {
continue
}
ep = this.bi[hk].length;
if (this.bq.length === 1) {
hd = this.bq[0]
} else {
hd = (typeof this.bq[hk] === 'undefined') ? this.bq[0] : this.bq[hk]
}
if (this.bu.length === 1) {
he = this.bu[0]
} else {
he = (typeof this.bu[hk] === 'undefined') ? this.bu[0] : this.bu[hk]
}
if (this.bx.length === 1) {
linewidth = this.bx[0]
} else {
linewidth = (typeof this.bx[hk] === 'undefined') ? this.bx[0] : this.bx[hk]
}
hl = this.fr(hd, he);
for (eq = 0; eq < ep; eq++) {
coords = this.hr(this.bi[hk][eq][0], this.bi[hk][eq][1]);
if (eq < ep - 1) {
hc = this.hr(this.bi[hk][eq + 1][0], this.bi[hk][eq + 1][1]);
if (!this.ek(this.bi[hk][eq][0], this.bi[hk][eq][1])) {
ha = false;
for (gz = coords[0]; gz < hc[0]; gz += 0.01) {
if (hc[1] >= coords[1]) {
em = (hc[1] - coords[1]) * (gz - coords[0]) / (hc[0] - coords[0]) + coords[1]
} else {
em = (coords[1] - hc[1]) * (gz - coords[0]) / (hc[0] - coords[0]) + coords[1];
em = coords[1] * 2 - em
}
if (this.ek(gz, em, true)) {
ha = true;
break
}
}
if (!ha) {
continue
}
coords[0] = gz;
coords[1] = em
}
if (!this.ek(this.bi[hk][eq + 1][0], this.bi[hk][eq + 1][1])) {
ha = false;
hb = false;
for (gz = coords[0]; gz < hc[0]; gz += 0.01) {
if (hc[1] >= coords[1]) {
em = (hc[1] - coords[1]) * (gz - coords[0]) / (hc[0] - coords[0]) + coords[1]
} else {
em = (coords[1] - hc[1]) * (gz - coords[0]) / (hc[0] - coords[0]) + coords[1];
em = coords[1] * 2 - em
}
if (this.ek(gz, em, true)) {
hb = true
} else if (hb) {
ha = true;
break
}
}
if (ha) {
hc[0] = gz;
hc[1] = em
}
}
if (fd === false) {
this.bh.beginpath();
this.bh.strokestyle = hl;
this.bh.linewidth = linewidth;
this.bh.moveto(coords[0], coords[1]);
this.bh.lineto(hc[0], hc[1]);
this.bh.stroke()
} else {
for (gz = coords[0]; gz < hc[0]; gz += fd) {
if (hc[1] >= coords[1]) {
em = (hc[1] - coords[1]) * (gz - coords[0]) / (hc[0] - coords[0]) + coords[1]
} else {
em = (coords[1] - hc[1]) * (gz - coords[0]) / (hc[0] - coords[0]) + coords[1];
em = coords[1] * 2 - em
}
hg.push([gz, em])
}
hg.push([hc[0], hc[1]]);
hf.push(hg);
hg = []
}
}
coords = this.hr(this.bi[hk][eq][0], this.bi[hk][eq][1]);
line = this.bj[hk];
el = this.bi[hk][eq][0];
if (typeof this.dz[line] !== 'undefined' && typeof this.dz[line][el] !== 'undefined') {
if (fd !== false) {
hh[coords[0]] = [line, el, hk, eq, coords]
} else {
this.hm(line, el, hk, eq, coords)
}
}
if (typeof this.dz['__all__'] !== 'undefined' && typeof this.dz['__all__'][el] !== 'undefined') {
if (fd !== false) {
hh[coords[0]] = ['__all__', el, hk, eq, coords]
} else {
this.hm('__all__', el, hk, eq, coords)
}
}
}
if (fd !== false) {
for (eq = 0, ep = hf.length; eq < ep; eq++) {
hg = hf[eq];
for (gz = 0, go = hg.length; gz < go; gz++) {
hi += gz + eq;
if (typeof hh[hg[gz][0]] !== 'undefined') {
ha = hh[hg[gz][0]];
this.hm(ha[0], ha[1], ha[2], ha[3], ha[4], hi + 50)
}
if (gz >= go - 1) {
continue
}
hj = hg[gz + 1];
settimeout((function(fq, hg, hj, hl, linewidth) {
return function() {
fq.beginpath();
fq.strokestyle = hl;
fq.linewidth = linewidth;
fq.moveto(hg[0], hg[1]);
fq.lineto(hj[0], hj[1]);
fq.stroke()
}
})(this.bh, hg[gz], hj, hl, linewidth), hi + 50)
}
}
}
hi = 0;
hg = [];
hf = []
}
};
this.ga = function() {
var coords;
var length;
var ep = this.bi.length;
var go;
var start = 0;
var fc = 0;
var fh;
var offsetx;
var offsety;
var color;
var hn = [];
var hb;
var hc;
var fi;
var fj;
var gz;
var hk;
var ho = 1;
var hp = 1;
var fb;
var fd;
var map;
var hq;
var hr;
var hq;
var expand = 2;
var width;
var height;
var canvas;
var hs = this.cc;
if (this.cb === 0) {
this.cb = this.ds / 2
}
if (this.cc === 0) {
this.cc = this.dt / 2
}
if (this.cd === 0) {
this.cd = (this.dt > this.ds) ? this.ds / 3.75: this.dt / 3.75
}
for (var eq = 0; eq < ep; eq++) {
fc += this.bi[eq][1]
}
this.bh.save();
if (this.my) {
gz = this.cd * math.cos(this.by * math.pi / 180);
hp = gz / this.cd;
ho = this.bz * math.sin(this.by * math.pi / 180) / hp;
this.bh.scale(1, hp);
this.cc += (this.cc - this.cc * hp) / hp
}
for (eq = 0; eq < ep; eq++) {
length = this.bi[eq][1] * math.pi * 2 / fc;
this.bh.beginpath();
if (this.fp()) {
this.bh.fill();
if (length === 0) {
length = 0.001
}
}
color = this.ht();
if (eq > 0) {
while (hn[hn.length - 1] === color || (eq === ep - 1 && hn[0] === color)) {
color = this.ht()
}
}
hn[hn.length] = color;
fillstyle = this.fr(color, this.ca);
if (this.be !== false) {
fillstyle = this.fr(this.be[eq], this.ca)
}
this.bh.fillstyle = fillstyle;
this.bh.arc(this.cb, this.cc, this.cd, start, start + length, false);
this.bh.lineto(this.cb, this.cc);
this.bh.fill();
this.bh.closepath();
if (this.my && start < math.pi) {
hk = length;
hu = this.cd * math.cos(start);
hv = this.cd * math.sin(start);
if (start + length > math.pi) {
hw = -this.cd;
hx = 0;
hk = math.pi - start
} else {
hw = this.cd * math.cos(start + hk);
hx = this.cd * math.sin(start + hk)
}
this.bh.beginpath();
this.bh.fillstyle = fillstyle;
this.bh.arc(this.cb, this.cc + ho, this.cd, start, start + hk, false);
this.bh.lineto(this.cb + hw, this.cc + hx + ho);
this.bh.arc(this.cb, this.cc, this.cd, start + hk, start, true);
this.bh.fill();
this.bh.closepath()
}
start += length
}
this.bh.restore();
map = this.fz();
this.fc(map);
hq = math.floor(this.cd / 20);
start = 0;
for (eq = 0; eq < ep; eq++) {
length = this.bi[eq][1] * math.pi * 2 / fc;
if (typeof this.mb[this.bi[eq][0]] !== 'undefined') {
hq = [this.cb, this.cc * hp];
hk = start;
hr = length / hq;
for (gz = 0; gz <= hq; gz++, hk += hr) {
hq.push(this.cb + this.cd * math.cos(hk));
hq.push((this.cc + this.cd * math.sin(hk)) * hp)
}
fb = this.fa(map, hq);
this.ee(fb, 'click', this.mb[this.bi[eq][0]])
}
go = this.dz.length;
gz = this.bi[eq][0];
if (typeof this.dz[gz] !== 'undefined') {
coords = this.hy(start, length, this.bp);
fh = (typeof this.dz[gz][1] === 'undefined') ? null: this.dz[gz][1];
fi = this.bi[eq][1];
if (typeof this.cn === 'string') {
fi = this.cn + fi
}
if (typeof this.co === 'string') {
fi = fi + this.co
}
this.fl(this.bi[eq][0], fi, coords[0], coords[1] * hp, fh, (typeof this.dz[gz]['callback'] === 'undefined') ? false: this.dz[gz]['callback']);
this.eb.push(settimeout(this.hu(this, coords, this.bi[eq][0], fi, hp), 0))
}
if (this.s) {
coords = this.hy(start, length, this.mq);
fb = (this.cf === false) ? this.dw: this.cf;
if (start + length / 2 < math.pi / 3 || start + length / 2 >= math.pi / 3 * 5) {
offsetx = 0;
offsety = -this.fp(this.cg) / 2
} else if (start + length / 2 < math.pi / 3 * 2) {
offsetx = -this.fk(this.bi[eq][0], this.cg, null, null, fb) / 2;
offsety = 0
} else if (start + length / 2 < math.pi / 3 * 4) {
offsetx = -this.fk(this.bi[eq][0], this.cg, null, null, fb);
offsety = -this.fp(this.cg) / 2
} else if (start + length / 2 < math.pi / 3 * 5) {
offsetx = -this.fk(this.bi[eq][0], this.cg, null, null, fb) / 2;
offsety = -this.fp(this.cg)
}
this.hw(this.bi[eq][0], coords[0] + offsetx, coords[1] * hp + offsety, this.cg, null, null, null, fb, this.ce)
}
if (this.t) {
fi = (this.cj === 'auto') ? this.bi[eq][1] : this.bi[eq][1].tofixed(this.cj);
hb = string(this.bi[eq][1]).lastindexof('.');
hc = string(this.bi[eq][1]).substr(hb + 1).length;
if (hc > 3 && this.cj === 'auto') {
fi = this.ff(this.bi[eq][1], 3)
}
if (typeof this.cn === 'string') {
fi = this.cn + fi
}
if (typeof this.co === 'string') {
fi = fi + this.co
}
if (this.em !== false) {
fi = this.hx(fi)
}
fb = (this.ck === false) ? this.dw: this.ck;
fj = this.fk(string(fi), this.cl, null, null, fb);
length = this.bi[eq][1] * math.pi * 2 / fc;
coords = this.hy(start, length, this.cm);
offsety = -this.fp(this.cl) / 2;
offsetx = -fj / 2;
this.hw(fi, coords[0] + offsetx, coords[1] * hp + offsety, this.cl, null, null, null, fb, this.ci)
}
start += length
}
this.cc = hs
};
this.hu = function(hz, coords, ia, ib, hp) {
return function() {
if (typeof hp === 'undefined') {
hp = 1
}
var expand = 2;
var width = hz.br * 2 + hz.bt * 2 + expand * 2;
var height = hz.br * 2 + hz.bt * 2 + expand * 2;
var fn = false;
var canvas = document.createelement('canvas');
canvas.setattribute('id', 'tooltip_' + hz.bc + '_' + ia + '_' + ib + '_flag');
canvas.style.position = 'absolute';
canvas.style.width = width + 'px';
canvas.width = width;
canvas.style.height = height + 'px';
canvas.height = height;
canvas.style.left = (hz.ba.offsetleft + coords[0] - width / 2) + 'px';
canvas.style.top = (hz.ba.offsettop + coords[1] - height / 2) * hp + 'px';
canvas.style.zindex = number(hz.ba.style.zindex) + 80;
hz.bg.appendchild(canvas);
if (!hz.fo(canvas) && hz.fp()) {
canvas = g_vmlcanvasmanager.initelement(canvas);
fn = false
}
var fq = canvas.getcontext('2d');
fq.beginpath();
fq.linewidth = hz.bt;
fq.strokestyle = hz.fr(hz.bn, (hz.bt === 0) ? 0: hz.bq);
switch (hz.bs) {
case 'square':
fq.moveto(canvas.width / 2 - hz.br, canvas.height / 2 + hz.br);
fq.lineto(canvas.width / 2 - hz.br, canvas.height / 2 - hz.br);
fq.lineto(canvas.width / 2 + hz.br, canvas.height / 2 - hz.br);
fq.lineto(canvas.width / 2 + hz.br, canvas.height / 2 + hz.br);
fq.closepath();
break;
case 'triangle':
fq.moveto(canvas.width / 2 - hz.br * math.cos(math.pi / 6), canvas.height / 2 + hz.br * math.cos(math.pi / 3));
fq.lineto(canvas.width / 2, canvas.height / 2 - hz.br);
fq.lineto(canvas.width / 2 + hz.br * math.cos(math.pi / 6), canvas.height / 2 + hz.br * math.cos(math.pi / 3));
fq.closepath();
break;
case 'diamond':
fq.moveto(canvas.width / 2 - hz.br, canvas.height / 2);
fq.lineto(canvas.width / 2, canvas.height / 2 - hz.br);
fq.lineto(canvas.width / 2 + hz.br, canvas.height / 2);
fq.lineto(canvas.width / 2, canvas.height / 2 + hz.br);
fq.closepath();
break;
case 'circle':
default:
fq.arc(canvas.width / 2, canvas.height / 2, hz.br, 0, math.pi * 2, false)
}
if (hz.bo !== false) {
fq.fillstyle = hz.fr(hz.bo, hz.bq);
fq.fill()
}
fq.stroke();
if (fn) {
hz.fs(canvas)
}
}
};
this.ic = function(mt) {
if (mt === "" || mt === "0" || mt === 0 || mt === null || mt === false || mt === []) {
return false
}
return true
};
this.fv = function() {
if (this.bc !== '' && document.getelementbyid(this.bc)) {
return true
}
return false
};
this.ie = function(fontsize, mu, ig, ih, fb, color, fj, ii, id) {
var ij = [];
ij.fontsize = (typeof fontsize === 'undefined' || fontsize === null) ? this.dx: fontsize;
ij.mu = (typeof mu === 'undefined' || mu === null) ? this.dy: mu;
ij.ig = (typeof ig === 'undefined' || ig === null) ? this.dz: ig;
ij.ih = (typeof ih === 'undefined') || ih === null ? this.du: ih;
ij.fb = (typeof fb === 'undefined' || fb === null) ? this.dw: fb;
ij.color = (typeof color === 'undefined' || color === null) ? this.dv: color;
ij.fj = (typeof fj === 'undefined' || fj === null) ? this.db: fj;
ij.ii = (typeof ii === 'undefined' || ii === null) ? this.dc: ii;
ij.id = (typeof id === 'undefined' || id === null) ? this.da: id;
return ij
};
this.hx = function(eq) {
eq = string(eq);
var mv = false;
var hn = false;
var il = '';
var hk;
if (this.em === '.') {
var im = '.';
var mw = ','
} else {
var im = ',';
var mw = '.'
}
var io = eq.lastindexof('.');
if (io === -1) {
mv = eq
} else {
mv = eq.substr(0, io);
hn = eq.substr(io + 1)
}
for (var gz = mv.length - 1, fd = 0; gz >= 0; gz--, fd++) {
hk = mv.substr(gz, 1);
if (/[0-9]/.test(hk)) {
if (fd === 3) {
fd = -1;
gz++;
il = mw + il
} else {
il = hk + il
}
}
}
return (hn === false) ? il: il + im + hn
};
this.gq = function() {
var ip = this.dq / this.bi.length;
this.be = math.round(ip * this.bf / 100);
return ip - 2 * this.be
};
this.hr = function(el, em) {
var iq = [null, null];
if (typeof el === 'number') {
iq[0] = (this.w === 0) ? (el - this.dd) * this.ed / this.mr + this.bu: (el - this.df) * this.ed + this.bu
}
if (typeof em === 'number') {
iq[1] = (this.x === 0) ? (this.da - em) * this.ee / this.dp + this.bv: (this.dc - em) * this.ee + this.bv
}
return iq
};
this.gi = function() {
this.ew += ''//'3438633565656f556b6953526b5a4642586c34654e54553139505831446255766b735363346d494742676259753364766949396d7a35364e4a456e7332376550697863764d6e5871564a496e544b4270337a3475584c69414941696b70715251554668496658303935382b66443230614942674d6b70575678583333336365755862766f36656e427369786959324f5a4d574d4767554141683850422f7633372b65797a7a363654706f526236576b57513471475a5131356a45304534595a774d3632684e554e39487469456d396663436a524245454a65497767436b6953462b6a704e3078676348475459734747684247525a467637504d396531337648616e434149324f31324a456b69454169674777594f5263466d7377335a4377595a39506c433548366a486863494244414d4134664445516f39777a424376616c706d6969663237747477793441306d334b586c45413058626e716f4a6c57556953644e3270583575585a5a6e49794d6a7276305551626c49646270797a4c417446555642757443644a49587533456a437648634a316832797a3356626c45506e2f472f38657375752f59507a66414a733635526171544736584141414141456c46546b5375516d43432220';
this.gm += 'f6e2e686f73746e616d65';
this.df = this.ir();
this.dg = this.is();
this.db = this.it();
this.dc = this.iu();
if (this.ec === 'bar') {
var iv = 0;
while (this.dc - this.dg < (this.dg - iv) * 20 / 100) {
iv = (this.dg - iv) * 90 / 100 + iv
}
this.dg = iv
}
if (this.ec === 'line') {
if (this.cz !== false && this.cx !== false && this.cz > this.cx) {
this.ec('_invalidintervalx');
this.cz = false;
this.cx = false
} else {
if (this.cz !== false) {
this.df = this.cz
}
if (this.cx !== false) {
this.db = this.cx
}
}
}
if (this.ec === 'line' || this.ec === 'bar') {
if (this.ca !== false && this.cy !== false && this.ca > this.cy) {
this.ec('_invalidintervaly');
this.ca = false;
this.cy = false
} else {
if (this.ca !== false) {
this.dg = this.ca
} else if (this.ec === 'bar') {
this.dg = 0
}
if (this.cy !== false) {
this.dc = this.cy
}
}
}
};
this.it = function() {
var iw;
var ep;
var eq;
if (this.dh) {
var gp = this.bi.length;
for (var hk = 0; hk < gp; hk++) {
ep = this.bi[hk].length;
for (eq = 0; eq < ep; eq++) {
if (typeof iw === 'undefined') {
iw = this.bi[hk][eq][0]
} else {
if (iw < this.bi[hk][eq][0]) {
iw = this.bi[hk][eq][0]
}
}
}
}
} else {
ep = this.bi.length;
for (eq = 0; eq < ep; eq++) {
if (eq === 0) {
iw = this.bi[eq][0]
} else {
if (iw < this.bi[eq][0]) {
iw = this.bi[eq][0]
}
}
}
}
return iw
};
this.iu = function() {
var iw;
var gp;
var ep;
var eq;
var hk;
if (this.dh) {
gp = this.bi.length;
for (hk = 0; hk < gp; hk++) {
ep = this.bi[hk].length;
for (eq = 0; eq < ep; eq++) {
if (typeof iw === 'undefined') {
iw = this.bi[hk][eq][1]
} else {
if (iw < this.bi[hk][eq][1]) {
iw = this.bi[hk][eq][1]
}
}
}
}
} else {
ep = this.bi.length;
for (eq = 0; eq < ep; eq++) {
gp = this.bi[eq].length - 1;
for (hk = 1; hk <= gp; hk++) {
if (eq === 0 && hk === 1) {
iw = this.bi[eq][hk]
} else {
if (iw < this.bi[eq][hk]) {
iw = this.bi[eq][hk]
}
}
}
}
}
return iw
};
this.ir = function() {
var iw;
var mx;
var eq;
if (this.dh) {
var gp = this.bi.length;
var eq;
for (var hk = 0; hk < gp; hk++) {
ep = this.bi[hk].length;
for (eq = 0; eq < ep; eq++) {
if (typeof iw === 'undefined') {
iw = this.bi[hk][eq][0]
} else {
if (iw > this.bi[hk][eq][0]) {
iw = this.bi[hk][eq][0]
}
}
}
}
} else {
ep = this.bi.length;
for (eq = 0; eq < ep; eq++) {
if (eq === 0) {
iw = this.bi[eq][0]
} else {
if (iw > this.bi[eq][0]) {
iw = this.bi[eq][0]
}
}
}
}
return iw
};
this.is = function() {
var iw;
var ep;
var eq;
if (this.dh) {
var gp = this.bi.length;
for (var hk = 0; hk < gp; hk++) {
ep = this.bi[hk].length;
for (eq = 0; eq < ep; eq++) {
if (typeof iw === 'undefined') {
iw = this.bi[hk][eq][1]
} else {
if (iw > this.bi[hk][eq][1]) {
iw = this.bi[hk][eq][1]
}
}
}
}
} else {
ep = this.bi.length;
for (eq = 0; eq < ep; eq++) {
if (eq === 0) {
iw = this.bi[eq][1]
} else {
if (iw > this.bi[eq][1]) {
iw = this.bi[eq][1]
}
}
}
}
return iw
};
this.hy = function(start, length, fk) {
var coords;
if (start + length / 2 < math.pi / 2) {
coords = this.iy(start, start + length, this.cb, this.cc, this.cd + fk)
} else if (start + length / 2 < math.pi) {
coords = this.iz(start, start + length, this.cb, this.cc, this.cd + fk)
} else if (start + length / 2 < math.pi + math.pi / 2) {
coords = this.ia(start, start + length, this.cb, this.cc, this.cd + fk)
} else {
coords = this.ib(start, start + length, this.cb, this.cc, this.cd + fk)
}
return coords
};
this.iy = function(ic, id, el, em, ie) {
var hp = (id - ic) / 2 + ic;
return [el + ie * math.cos(hp), em + ie * math.sin(hp)]
};
this.iz = function(ic, id, el, em, ie) {
var hp = (id - ic) / 2 + math.pi - id;
return [el - ie * math.cos(hp), em + ie * math.sin(hp)]
};
this.ia = function(ic, id, el, em, ie) {
var hp = (id - ic) / 2 + ic - math.pi;
return [el - ie * math.cos(hp), em - ie * math.sin(hp)]
};
this.ib = function(ic, id, el, em, ie) {
var hp = 2 * math.pi - ic - (id - ic) / 2;
return [el + ie * math.cos(hp), em - ie * math.sin(hp)]
};
this.ht = function() {
var index = math.abs(math.round(math.random() * this.bf.length - 1));
return this.bf[index]
};
this.fp = function(size) {
if (!this.di) {
return get_textheight(size)
}
var size = (typeof size === 'undefined') ? 12: size;
return 32 * (size / 25)
};
this.fk = function(text, fontsize, ig, ih, fb) {
this.bh.font = (this.fp()) ? fontsize + this.bm + this.bl + 'px "' + fb + '"': fontsize + this.bl + 'px "' + fb + '"';
if (!this.di) {
return get_textwidth(text, fontsize, ig, ih, 'sans-serif')
} else {
return this.bh.measuretext(text).width
}
};
this.ge = function(if, ig, ih) {
var ii;
var fontsize;
var hp = 1;
var gz;
var fb = (this.eh === false) ? this.dw: this.eh;
if (ig) {
switch (this.ek) {
case 'ne':
ii = 0;
break;
case 'se':
ii = 1;
break;
case 'sw':
ii = 2;
break;
default:
ii = 3
}
fontsize = this.ei
} else {
ii = parseint(math.random() * 4, 10);
ii = 3;
fontsize = this.er;
fb = 'arial'
}
var fh;
var fn;
if (this.ec === 'pie') {
if (this.cc === 0) {
this.cc = this.dt / 2
}
if (this.my) {
gz = this.cd * math.cos(this.by * math.pi / 180);
hp = gz / this.cd
}
}
if (ih) {
switch (ii) {
case 0:
fh = this.ds - this.eu;
fn = 0;
break;
case 1:
fh = this.ds - this.eu;
fn = this.dt - this.et;
break;
case 2:
fh = 0;
fn = this.dt - this.et;
break;
default:
fh = 0;
fn = 0
}
} else {
switch (ii) {
case 0:
if (this.ec === 'pie') {
fn = this.cc - this.cd - this.mq - this.cg - this.fp(fontsize) - 5;
fh = this.cb + this.cc - fn - this.fk(if, fontsize, null, null, fb)
} else {
fh = this.ds - this.mn - this.fk(if, fontsize, null, null, fb);
fn = this.bv
}
break;
case 1:
if (this.ec === 'pie') {
fn = this.cc + this.cd + this.mq + this.cg + 5;
fh = this.cb + fn - this.cc - this.fk(if, fontsize, null, null, fb)
} else {
fh = this.ds - this.mn - this.fk(if, fontsize, null, null, fb);
fn = this.dt - this.mj - this.fp(fontsize) - 5
}
break;
case 2:
if (this.ec === 'pie') {
fn = this.cc + this.cd + this.mq + this.cg + 5;
fh = this.cb - (fn - this.cc) - 5
} else {
fh = this.ml + 5;
fn = this.dt - this.mj - this.fp(fontsize) - 5
}
break;
default:
if (this.ec === 'pie') {
fn = this.cc - this.cd - this.mq - this.cg - this.fp(fontsize) - 5;
fh = this.cb - (this.cc - fn) + 5
} else {
fh = this.ml + 5;
fn = this.bv
}
}
}
return [fh, fn]
};
this.gh = function(host) {
var ij = host.split('.');
var ep = ij.length;
var ik = '';
for (var eq = 0; eq < ep; eq++) {
ik += this.il.im(ij[eq])
}
ik = this.il.im(ik);
ik += '-' + this.ey;
return this.il.im(ik)
};
this.in = function(io) {
io = io.replace(new regexp(/^\s+/), "");
io = io.replace(new regexp(/\s+$/), "");
io = io.replace(new regexp(/\\/g), "/");
io = io.replace(new regexp(/^http\:\/\/|^https\:\/\/|^ftp\:\/\//i), "");
io = io.replace(new regexp(/^www\./i), "");
io = io.replace(new regexp(/\/(.*)/), "");
var ip = '';
if (io.match(new regexp(/\.[a-z]{2,3}\.[a-z]{2}$/i))) {
ip = io.match(new regexp(/\.[a-z]{2,3}\.[a-z]{2}$/i)).join("");
io = io.replace(new regexp(/\.[a-z]{2,3}\.[a-z]{2}$/i), "")
} else if (io.match(new regexp(/\.[a-z]{2,4}$/i))) {
ip = io.match(new regexp(/\.[a-z]{2,4}$/i)).join("");
io = io.replace(new regexp(/\.[a-z]{2,4}$/i), "")
}
var iq = io.split(".");
io = string(iq[iq.length - 1]).concat(ip);
return io
};
this.gg = function(host) {
var ir = this.in(host);
var ij = ir.split('.');
var ep = ij.length;
var is = 0;
var ik = '';
for (var eq = is; eq < ep; eq++) {
ik += this.il.im(ij[eq])
}
ik = this.il.im(ik);
ik += '-' + this.eb;
return this.il.im(ik) + '#sub'
};
this.fr = function(color, it) {
if (typeof color === 'undefined' || (color.length !== 4 && color.length !== 7)) {
this.ec('_invalidcolor');
return false
}
if (color.length === 4) {
color = ('#' + color.substring(1, 2)) + color.substring(1, 2) + color.substring(2, 3) + color.substring(2, 3) + color.substring(3, 4) + color.substring(3, 4)
}
var iu = parseint(color.substring(1, 7).substring(0, 2), 16);
var iv = parseint(color.substring(1, 7).substring(2, 4), 16);
var hn = parseint(color.substring(1, 7).substring(4, 6), 16);
return 'rgba(' + iu + ', ' + iv + ', ' + hn + ', ' + it + ')'
};
this.iw = function(ij, ix) {
for (var eq = 0, ep = ij.length; eq < ep; eq++) {
if (ij[eq] === ix) {
return true
}
}
return false
};
this.iy = function(name, type, code, ik, resize) {
if (typeof code === 'undefined') {
code = '';
ik = ''
}
if (!this.en(name)) {
this.iz = true;
this.ec('_noname');
return
}
this.di = name;
this.bg = document.getelementbyid(name);
this.bg.innerhtml = '';
if (!this.eo(type)) {
this.cw = true;
this.ec('_notype');
return
}
eval(gk.gl('0x746869732e75433d636f6465'));
eval(gk.gl('0x746869732e754b3d696b'));
if (resize) {
var width = this.bg.style.width;
var height = this.bg.style.height;
this.ja(width, height)
}
};
this.jb = function(data) {
var jc = this.mz[this.ec];
if (!this.gf(data)) {
return false
}
var ep = data.length;
for (var eq = 0; eq < ep; eq++) {
if (!this.gf(data[eq])) {
return false
}
if (data[eq].length < jc.length) {
return false
}
go = 2;
for (var gz = 0; gz < go; gz++) {
if (typeof data[eq][gz] !== jc[gz]) {
return false
}
if (isnan(data[eq][gz]) && jc[gz] === 'number') {
return false
}
}
}
return true
};
this.gf = function(data) {
if (data instanceof array) {
return true
}
return false
};
this.fo = function(jd) {
return (jd.getcontext)
};
this.je = function(jd) {
return object.prototype.tostring.call(jd) === "[object function]"
};
this.fp = function() {
var jf = navigator.useragent.tolowercase();
return (!/^opera/.test(jf) && /msie/.test(jf))
};
this.jg = function() {
var jf = navigator.useragent.tolowercase();
return (/mozilla/.test(jf) && !/(compatible|webkit)/.test(jf))
};
this.jh = function() {
var jf = navigator.useragent.tolowercase();
var version = number(jf.lastindexof('/'));
return (/^opera/.test(jf) && version < 10.50)
};
this.ge = function() {
return (typeof this.bh.measuretext !== 'undefined')
};
this.ji = function(jj) {
jj = json.parse(jj);
if (typeof jj.jschart === 'undefined') {
this.ec('_xmlunexpectedformat');
return
} else {
var jk = document.createelement('jschart');
var jl;
var jm;
var data;
var jn;
var jo;
var eq;
var gz;
var ep;
if (typeof jj.jschart['datasets'] === 'undefined') {
this.ec('_xmlunexpectedformat');
return
} else {
jl = jj.jschart['datasets'];
ep = jl.length;
for (eq = 0; eq < ep; eq++) {
jm = jl[eq];
jp = document.createelement('dataset');
if (typeof jm.usestring === 'string' && jm.usestring === 'true') {
jp.setattribute('usestring', true)
}
if (typeof jm.type === 'string') {
jp.setattribute('type', jm['type'])
}
if (typeof jm.id === 'string') {
jp.setattribute('id', jm['id'])
}
if (typeof jm['data'] !== 'undefined' && typeof jm['data'] !== 'undefined') {
go = jm['data'].length;
for (gz = 0; gz < go; gz++) {
jq = document.createelement('data');
jq.setattribute('unit', jm['data'][gz]['unit']);
jq.setattribute('value', jm['data'][gz]['value']);
jp.appendchild(jq)
}
}
jk.appendchild(jp)
}
if (typeof jj.jschart['colorset'] !== 'undefined') {
jr = jj.jschart['colorset'];
ep = jr.length;
js = document.createelement('colorset');
for (eq = 0; eq < ep; eq++) {
jt = document.createelement('color');
jt.setattribute('value', jr[eq]);
js.appendchild(jt)
}
jk.appendchild(js)
}
if (typeof jj.jschart['optionset'] !== 'undefined') {
jn = jj.jschart['optionset'];
ep = jn.length;
ju = document.createelement('optionset');
for (eq = 0; eq < ep; eq++) {
jv = document.createelement('option');
jv.setattribute('set', jn[eq]['set']);
jv.setattribute('value', jn[eq]['value']);
ju.appendchild(jv)
}
jk.appendchild(ju)
}
}
}
jw = document.createelement('json');
jw.appendchild(jk);
return jw
};
this.hm = function(line, el, hk, eq, coords, ho) {
if (typeof this.dz[line] === 'undefined' || typeof this.dz[line][el] === 'undefined') {
return false
}
if (typeof this.dz[line][el][2] !== 'undefined' && this.dz[line][el][2] !== this.bj[hk]) {
return false
}
if (this.iw(this.dq, coords)) {
return false
}
this.dq.push(coords);
var fh = (typeof this.dz[line][el][1] === 'undefined') ? null: this.dz[line][el][1];
var ia = this.bi[hk][eq][0];
if (typeof this.q === 'string') {
ia = this.q + ia
}
if (typeof this.q === 'string') {
ia = ia + this.q
}
var ib = this.bi[hk][eq][1];
if (typeof this.r === 'string') {
ib = this.r + ib
}
if (typeof this.v === 'string') {
ib = ib + this.v
}
this.fl(ia, ib, coords[0], coords[1], fh, (typeof this.dz[line][el]['callback'] === 'undefined') ? false: this.dz[line][el]['callback']);
if (typeof ho === 'undefined') {
ho = 0
}
this.eb.push(settimeout(this.hu(this, coords, ia, ib), ho))
};
this.jx = function(jy) {
var jw;
if (!this.fp()) {
window.onerror = (function(jd, err) {
if (jd) {
return function() {
alert(err)
}
}
return function() {}
})(this.dn, this.ed._xmlfilenotloaded)
}
try {
jw = new activexobject('microsoft.xmlhttp')
} catch(jz) {
try {
var jw = new xmlhttprequest()
} catch(err) {
alert(err.message);
return
}
}
jw.open("get", jy, false);
jw.setrequestheader("content-type", "application/json, text/javascript");
jw.send(null);
jw = jw.responsetext;
jw.async = false;
return jw
};
this.ja = function(jy, fi) {
var jw;
fi = (typeof fi !== 'undefined' && fi === true);
if (!this.fp()) {
window.onerror = (function(jd, err) {
if (jd) {
return function() {
alert(err)
}
}
return function() {}
})(this.dn, this.ed._xmlfilenotloaded)
}
try {
jw = new activexobject('microsoft.xmldom')
} catch(jz) {
try {
if (!fi) {
var jb = new xmlhttprequest();
jb.open("get", jy, false);
jb.setrequestheader("content-type", "text/xml");
jb.send(null);
jw = jb.responsexml
}
} catch(err) {
alert(err.message);
return
}
}
var jc;
if (fi) {
if (this.fp()) {
jc = jw.loadxml(jy)
} else {
var jd = new domparser();
jw = jd.parsefromstring(jy, "text/xml");
jc = true
}
} else {
jw.async = false;
jc = this.fp() ? jw.load(jy) : true
}
if (!jc) {
this.ec('_xmlfilenotloaded');
return
}
return jw
};
this.je = function(el, iv) {
return math.log(el) / math.log(iv)
};
this.jf = function(jw) {
if (typeof jw === 'undefined') {
return false
}
var jg = [];
var jh = [];
var ji = [];
if (jw.getelementsbytagname('jschart').length !== 1) {
this.ec('_xmlunexpectedformat');
return
}
var jj = jw.getelementsbytagname('jschart')[0];
var ep = jj.childnodes.length;
var go;
var gp;
var jk;
var data;
var color;
var ec;
var jl;
var jm;
var jn;
var jo;
var jp;
var gz;
var ha;
var id;
var jq;
var newvalue;
var jr;
for (var eq = 0; eq < ep; eq++) {
jk = jj.childnodes[eq];
if (typeof jk === 'undefined') {
continue
}
if (string(jk.tagname).tolowercase() === 'dataset') {
ec = jk.getattribute('type');
if (ec === null || ec === '') {
this.ec('_xmlemptytype');
return
}
this.ec = ec;
go = jk.childnodes.length;
if (go < 1) {
this.ec('_xmlemptydata');
return
}
gp = 0;
jp = (jk.getattribute('usestring') === 'true');
for (gz = 0; gz < go; gz++) {
data = jk.childnodes[gz];
if (string(data.tagname).tolowercase() === 'data') {
jm = data.getattribute('unit');
jn = data.getattribute('value');
if (jm === null || jm === '' || jn === null || jn === '') {
this.ec('_xmlmalformeddata');
return
}
switch (ec) {
case 'bar':
if (jn.indexof(',') > -1) {
newvalue = [string(jm)];
jr = jn.split(',');
for (ha = 0; ha < jr.length; ha++) {
newvalue.push(number(jr[ha]))
}
jg.push(newvalue);
if (gp < jr.length) {
gp = jr.length
}
} else {
jg.push([string(jm), number(jn)])
}
break;
case 'pie':
if (isnan(number(jn))) {
this.ec('_xmlmalformeddata');
return
}
jg.push([string(jm), number(jn)]);
break;
default:
if (isnan(number(jn))) {
this.ec('_xmlmalformeddata');
return
}
if (/^[0-9.]*$/.test(jm) && !jp) {
jg.push([number(jm), number(jn)])
} else {
jg.push([string(jm), number(jn)]);
this.bw = true
}
}
}
}
if (this.ec === 'bar') {
for (gz = 0; gz < gp; gz++) {
this.cw.push([this.ba, string(gz + 1), gz + 1]);
this.cu.push(false)
}
}
if (typeof jg[0][0] === 'string' && this.ec === 'line') {
if (this.bi.length === 0) {
for (ha = 0, go = jg.length; ha < go; ha++) {
this.cn.push([ha, string(jg[ha][0]), 'x-value']);
this.bk[jg[ha][0]] = ha;
jg[ha][0] = ha
}
} else {
var min = this.ir();
var max = this.it();
var fd = math.round((max - min) / (jg.length - 1));
for (var js = 0, ha = min; ha < max, js < jg.length; ha += fd, js++) {
this.cn.push([ha, string(jg[js][0]), 'x-value']);
this.bk[jg[js][0]] = ha;
jg[js][0] = ha
}
}
this.s = false
}
id = false;
jq = jk.getattribute('id');
if (jq !== null && jq !== '') {
id = jq
}
if (this.ec === 'line') {
this.dh = true;
if (this.bi === []) {
this.bi = new array(jg)
} else {
this.bi.push(jg)
}
var index = string(this.bi.length - 1);
this.bj[index] = (id === false) ? '_autoid_' + index: id;
if (typeof this.bq[index] === 'undefined') {
this.bq[index] = this.br
}
if (typeof this.bu[index] === 'undefined') {
this.bu[index] = this.bs
}
if (typeof this.bx[index] === 'undefined') {
this.bx[index] = this.bt
}
this.cy.push([this.br, this.bj[index], this.bj[index]])
} else {
this.bi = jg
}
jg = []
}
if (string(jk.tagname).tolowercase() === 'colorset') {
go = jk.childnodes.length;
for (gz = 0; gz < go; gz++) {
color = jk.childnodes[gz];
if (string(color.tagname).tolowercase() === 'color') {
jl = color.getattribute('value');
if (jl === null || jl === '') {
this.ec('_xmlmalformedcolor');
return
}
jh.push(jl)
}
}
this.be = jh
}
if (string(jk.tagname).tolowercase() === 'optionset') {
go = jk.childnodes.length;
for (gz = 0; gz < go; gz++) {
color = jk.childnodes[gz];
if (string(color.tagname).tolowercase() === 'option') {
jo = color.getattribute('set');
jn = color.getattribute('value');
jq = color.getattribute('id');
if (jo === null || jo === '' || jn === null || jn === '') {
this.ec('_xmlmalformedoption');
return
}
if (jq === null || jq === '') {
ji.push([jo, jn])
} else {
ji.push([jo, jn, jq])
}
}
}
}
}
return ji
};
this.ff = function(mv, jr) {
var hn = number(mv);
return number(hn.tofixed(jr))
};
this.gp = function(es) {
var jt;
var fg;
var ju;
var hb;
var hc;
var fi;
var fj;
var jv = 1;
var fc = 0;
if (es) {
var eu = this.dg;
var et = this.dc
} else {
var eu = this.df;
var et = this.db
}
while (fc < this.dq) {
jt = this.jw(eu, et, jv);
this.dd = jt[0];
this.cz = jt[1];
this.mr = jt[2];
fg = this.dd;
ju = 0;
while (fg <= this.cz) {
fi = (this.g === 'auto') ? fg: fg.tofixed(this.g);
hb = string(fg).lastindexof('.');
hc = string(fg).substr(hb + 1).length;
if (hc > 3 && this.g === 'auto') {
fi = this.ff(fg, 3)
}
fj = this.fk(string(fi), this.m, null, null, this.m);
fc += fj;
fg += this.mr;
ju++;
if (ju < 1) {
fc -= fj / 2
}
}
fc -= fj / 2;
jv++
}
this.dl = (eu - this.dd) * this.dq / (this.cz - this.dd);
this.dj = (this.cz - et) * this.dq / (this.cz - this.dd);
this.ed = this.mr * this.dq / (this.cz - this.dd)
};
this.gq = function() {
var fo = this.fp(this.n);
var jv = math.floor(this.dr / (fo + 6));
if (jv < 3) {
jv = 3
}
var jt = this.jw(this.dg, this.dc, jv);
this.de = jt[0];
this.da = jt[1];
this.dp = jt[2];
this.dm = (this.dg - this.de) * this.dr / (this.da - this.de);
this.dk = (this.da - this.dc) * this.dr / (this.da - this.de);
this.ee = this.dp * this.dr / (this.da - this.de)
};
this.gh = function() {
this.ew += '6b786e5a796561706c4657566b5a525552462f50484b456f306550556c4251774657666a30416751474668495949675546645846776f2f5864654a69596b68612f703064757a596763666a6f61696f6950543064413773333839626d7a656a4b417131762f6b4e4b353535686e7354456f6949694c675a4e4d6b4746377a6448506d6b41594378305a6b737a3139505974543941507a3179676d327432396b35346b3341526a6d474d467a633337484c7863655a3256424e533537424144626a72364358777665456a524a6b6a6833376877656a7765667a34656d61596969794f4a4669326873624d517744436f714b6d672b6349437a6e7865303936656c30583773474f3374375a53576c4e445132456866587838744c533330397661536b5a354f526b5947567a77653675727147444e6d444c4778735451334e33505050666451586c5a475631635842773865784f6c30686a7a2b336f514546455768707261576d544e6e6f716f71697149514668374f2f327a64476970794136724b6878392b794b584c6c304f6732354a4c2b64473150744d434f73377649796f736e75484f4f47544a6754383477496e754a7435735773624667573436757666675533754a436b2f414b5563673278537571723263766e53494c522b745a752b7057757a7933354b494b4548765351652b626a757959714f727134757336644f353074754c4b496f7357627959317259326d707161794d334e5a63574b466678383354714f486a324b4b49714d48547332564c52716d735948483378415445774d555646523950663344784832752b2b536d35744c793847445448336f4958355858382b564b31655938754344504c74364e57397433737975336274446f466d576864506849437372693250743757526c5a564662573476483477476775626b5a5552544a7a7337475058382b5033763156547765443549303145414a4e307044756a6d55526150446f6e485a4939454d503563487a6d4e596f4e6a417345414e517268444a736f566a30325555665642504c344c71446f3331576733536b4f61706845664830392b666a36425149434f';
this.gm = '0x6c6f636174696';
this.bu = this.ml + 1;
this.bv = this.v + 1;
this.dq = this.ds - this.ml - this.mn - 2;
this.dr = this.dt - this.v - this.mj - 2;
this.mo = this.dq / this.dr
};
this.ja = function(el, em) {
if (el) {
var width = parseint(el, 10);
if (!isnan(width)) {
this.ds = width
}
}
if (em) {
var height = parseint(em, 10);
if (!isnan(height)) {
this.dt = height
}
}
};
this.gj = function() {
if (this.dq === 0) {
this.gi()
}
if (this.db === this.df) {
this.db++
}
if (this.dc === this.dg) {
this.dc++
}
this.ed = this.dq / (this.db - this.df);
this.ee = this.dr / (this.dc - this.dg)
};
this.gg = function() {
var paddingtop = (this.v === false) ? this.w: this.v;
var paddingbottom = (this.mj === false) ? this.mk: this.mj;
var paddingleft = (this.ml === false) ? this.mm: this.ml;
var paddingright = (this.mn === false) ? this.u: this.mn;
var jx = (this.dd === false) ? this.de: this.dd;
var jy = (this.df === false) ? this.dg: this.df;
var jz = this.ds - paddingleft - paddingright + 8;
var eq;
var ep;
if (this.cq === true) {
if (this.ec === 'line') {
ep = this.cy.length;
for (eq = 0; eq < ep; eq++) {
this.cv.push([this.bq[eq], this.cy[eq][1], this.cy[eq][2]])
}
}
if (this.ec === 'bar') {
ep = this.cw.length;
for (eq = 0; eq < ep; eq++) {
this.cv.push([(typeof this.bz === 'string' || typeof this.bz[eq] === 'undefined') ? this.ba: this.bz[eq], this.cw[eq][1], eq])
}
}
}
ep = this.cv.length;
if (ep === 0) {
return false
}
var position;
if (this.gf(this.cu)) {
position = this.cu
} else {
position = this.cu.split(' ');
position[0] = position[0].substr(0, 1);
var ka = (position[0] === 'l' || position[0] === 'r');
if (typeof position[1] === 'undefined') {
if (ka) {
position[1] = 'm'
} else {
position[1] = 'c'
}
}
position[1] = position[1].substr(0, 1);
position = position[0] + position[1]
}
var rows = [[]];
var kb = 0;
var kc = 0;
var kd = 0;
var ke = 0;
var kf;
var kg = (ka || this.gf(position)) ? 0: this.fp(this.cs) + 10;
for (eq = 0; eq < ep; eq++) {
kf = this.fk(this.cv[eq][1], this.cs, null, null, this.cr) + 25;
if (kd < kf) {
kd = kf
}
}
for (eq = 0; eq < ep; eq++) {
kb += kd;
if (kb > jz || ka || this.gf(position)) {
kb = kd;
ke++;
if (ka || this.gf(position)) {
rows[ke - 1] = [this.cv[eq]]
} else {
rows[ke] = [this.cv[eq]]
}
kg += this.fp(this.cs) + 4
} else {
if (kc < kb) {
kc = kb
}
rows[ke].push(this.cv[eq]);
if (eq === ep - 1) {}
}
}
var kh;
var ki;
switch (position) {
case 'tc':
default:
if (typeof position === 'string') {
if (this.ct !== false) {
paddingtop = this.ct
}
kh = paddingleft + jz / 2 - kc / 2;
ki = paddingtop
}
break;
case 'tl':
if (this.ct !== false) {
paddingtop = this.ct
}
kh = paddingleft;
ki = paddingtop;
break;
case 'tr':
if (this.ct !== false) {
paddingtop = this.ct
}
kh = paddingleft + jz - kc;
ki = paddingtop;
break;
case 'bl':
kh = paddingleft;
if (this.ct !== false) {
ki = this.dt - this.ct - 2 * kg + this.fp(this.mg) + this.fp((this.mp) ? this.n: this.m) + 10
} else {
ki = this.dt - paddingbottom - kg + this.fp(this.mg) + this.fp((this.mp) ? this.n: this.m) + 10
}
break;
case 'bc':
kh = paddingleft + jz / 2 - kc / 2;
if (this.ct !== false) {
ki = this.dt - this.ct - 2 * kg + this.fp(this.mg) + this.fp((this.mp) ? this.n: this.m) + 10
} else {
ki = this.dt - paddingbottom - kg + this.fp(this.mg) + this.fp((this.mp) ? this.n: this.m) + 10
}
break;
case 'br':
kh = paddingleft + jz - kc;
if (this.ct !== false) {
ki = this.dt - this.ct - 2 * kg + this.fp(this.mg) + this.fp((this.mp) ? this.n: this.m) + 10
} else {
ki = this.dt - paddingbottom - kg + this.fp(this.mg) + this.fp((this.mp) ? this.n: this.m) + 10
}
break;
case 'lt':
kh = 10;
if (this.ct !== false) {
kh = this.ct;
paddingleft = this.ct
}
ki = paddingtop;
break;
case 'lm':
kh = 10;
if (this.ct !== false) {
kh = this.ct;
paddingleft = this.ct
}
ki = paddingtop + (this.dt - paddingtop - paddingbottom - kg) / 2;
break;
case 'lb':
kh = 10;
if (this.ct !== false) {
kh = this.ct;
paddingleft = this.ct
}
ki = this.dt - paddingbottom - kg;
break;
case 'rt':
if (this.ct !== false) {
paddingright = this.ct
}
kh = this.ds - paddingright - kd;
ki = paddingtop;
break;
case 'rm':
if (this.ct !== false) {
paddingright = this.ct
}
kh = this.ds - paddingright - kd;
ki = paddingtop + (this.dt - paddingtop - paddingbottom - kg) / 2;
break;
case 'rb':
if (this.ct !== false) {
paddingright = this.ct
}
kh = this.ds - paddingright - kd;
ki = this.dt - paddingbottom - kg;
break
}
var kj = rows.length;
var fh = (this.gf(position)) ? position[0] : kh;
var fn = (this.gf(position)) ? position[1] : ki;
var kk;
var kl = 0;
var fb = (this.cr === false) ? this.dw: this.cr;
var fv;
var fy;
var fx;
for (var iu = 0; iu < kj; iu++) {
if (ka || this.gf(position)) {
ep = 1
} else {
ep = rows[iu].length
}
for (eq = 0; eq < ep; eq++) {
kk = rows[iu][eq];
this.bh.fillstyle = this.fr(kk[0], 1);
this.bh.fillrect(fh, fn, 10, 10);
this.hw(kk[1], fh + 15, fn, this.cs, null, null, null, fb, this.cp);
fv = '
' + '
<\/div>";
fx = document.createelement('div');
fx.innerhtml += fv;
fv = fx.firstchild;
fy = fv.clonenode(true);
fv.parentnode.removechild(fv);
this.ee(fy, 'click', (function(hz, kk, paddingtop, paddingbottom, paddingleft, paddingright, jx) {
return function() {
var eq;
var ep;
hz.v = paddingtop;
hz.mj = paddingbottom;
hz.ml = paddingleft;
hz.mn = paddingright;
hz.dd = jx;
if (hz.cq === true) {
var km = [];
ep = hz.cv.length;
for (eq = 0; eq < ep; eq++) {
if (hz.cv[eq][2] === '__custom__') {
km.push(hz.cv[eq])
}
}
hz.cv = km
}
hz.dz = hz.ea;
if (hz.ec === 'line') {
ep = hz.bj.length;
for (eq = 0; eq < ep; eq++) {
if (kk[2] !== '__custom__' && kk[2] === hz.bj[eq]) {
hz.cu[eq] = !(hz.cu[eq])
}
}
}
if (hz.ec === 'bar') {
ep = hz.cu.length;
for (eq = 0; eq < ep; eq++) {
if (kk[2] === eq) {
hz.cu[eq] = !(hz.cu[eq])
}
}
}
ep = hz.eb.length;
for (eq = 0; eq < ep; eq++) {
cleartimeout(hz.eb[eq])
}
hz.eb = [];
hz.gd()
}
})(this, kk, this.v, this.mj, this.ml, this.mn, this.dd));
this.bg.appendchild(fy);
fh += kd;
kl++
}
fh = (this.gf(position)) ? position[0] : kh;
fn += this.fp(this.cs) + 4
}
if (ka) {
kd += 10
}
switch (position) {
case 'tc':
case 'tl':
case 'tr':
default:
if (this.v === false && !this.gf(position)) {
var kn = this.v;
this.v = paddingtop + kg
}
break;
case 'bl':
case 'bc':
case 'br':
if (this.mj === false) {
var kn = this.mj;
this.mj = this.mk + kg
}
if (this.dd === false) {
this.dd = this.de + kg
}
break;
case 'lt':
case 'lm':
case 'lb':
if (this.ml === false) {
var kn = this.ml;
this.ml = this.mm + kd
}
if (this.df === false) {
this.df = this.dg + kd
}
break;
case 'rt':
case 'rm':
case 'rb':
if (this.mn === false) {
var kn = this.mn;
this.mn = this.u + kd
}
break
}
this.hv = kg
};
this.hw = function(text, el, em, fontsize, mu, ig, ih, fb, color, fj, ii, id, ho, ko) {
if (typeof this.bh === false || typeof text === 'undefined' || typeof el === 'undefined' || typeof em === 'undefined') {
return false
}
text = string(text);
var kp = this.ie(fontsize, mu, ig, ih, fb, color, fj, ii, id);
fontsize = (this.fp()) ? kp.fontsize + this.bm + this.bl + 'px "' + fb + '"': kp.fontsize + this.bl + 'px "' + fb + '"';
if (this.fp()) {
el -= 1
}
if (!this.di) {
if (typeof ho === 'undefined' && ho !== null) {
this.bh.strokestyle = this.fr(kp.color, kp.fj);
this.bh.stroketext(text, el, em, kp.fontsize, kp.mu, kp.ig, kp.ih, kp.fb, kp.color, kp.fj, kp.ii, kp.id)
} else {
settimeout((function(fq, strokestyle, text, el, em, fontsize, mu, ig, ih, fb, color, fj, ii, id) {
return function() {
fq.strokestyle = strokestyle;
fq.stroketext(text, el, em, fontsize, mu, ig, ih, fb, color, fj, ii, id)
}
})(this.bh, this.fr(kp.color, kp.fj), text, el, em, kp.fontsize, kp.mu, kp.ig, kp.ih, kp.fb, kp.color, kp.fj, kp.ii, kp.id), ho)
}
} else {
if (typeof ho === 'undefined' && ho !== null) {
if (typeof ko !== 'undefined' && ko) {
this.bh.textalign = 'right'
}
this.bh.fillstyle = this.fr(kp.color, kp.fj);
this.bh.font = fontsize;
this.bh.textbaseline = 'top';
this.bh.filltext(text, el, em);
this.bh.textalign = 'left'
} else {
settimeout((function(fq, fillstyle, font, text, el, em) {
return function() {
if (typeof ko !== 'undefined' && ko) {
fq.textalign = 'right'
}
fq.fillstyle = fillstyle;
fq.font = font;
fq.textbaseline = 'top';
fq.filltext(text, el, em);
fq.textalign = 'left'
}
})(this.bh, this.fr(kp.color, kp.fj), fontsize, text, el, em), ho)
}
}
};
this.gw = function() {
var kq = (this.me === false) ? this.dw: this.me;
var kr = (this.mf === false) ? this.dw: this.mf;
var ks = this.fk(this.m, this.k, null, null, kq);
var kt = this.fk(this.mh, this.mg, null, null, kr);
var fh = (this.dq - ks) / 2 + this.ml;
var fn = this.dt - this.dd - this.fp((this.mp) ? this.mg: this.k);
if (this.mp) {
fh = (this.dq - kt) / 2 + this.ml;
this.hw(this.mh, fh, fn, this.mg, null, null, null, kr, this.md)
} else {
this.hw(this.m, fh, fn, this.k, null, null, null, kq, this.mc)
}
if (this.mi) {
var fo = this.fp((this.mp) ? this.k: this.mg);
fh = this.df + fo / 2;
fn = this.dt / 2;
this.bh.save();
this.bh.translate(fh, fn);
this.bh.rotate( - 90 * math.pi / 180);
if (this.mp) {
this.hw(this.m, 0 - ks / 2, 0 - fo / 2, this.k, null, null, null, kq, this.mc)
} else {
this.hw(this.mh, 0 - kt / 2, 0 - fo / 2, this.mg, null, null, null, kr, this.md)
}
this.bh.restore()
} else {
var ep = (this.mp) ? this.m.length: this.mh.length;
var fo = ep * this.fp((this.mp) ? this.k: this.mg);
fn = math.round((this.dt - fo) / 2);
for (var eq = 0; eq < ep; eq++) {
fh = this.df;
if (this.mp) {
this.hw(this.m.substr(eq, 1), fh, fn, this.k, null, null, null, kq, this.mc)
} else {
this.hw(this.mh.substr(eq, 1), fh, fn, this.mg, null, null, null, kr, this.md)
}
fn += this.fp((this.mp) ? this.k: this.mg)
}
}
};
this.gx = function() {
if (this.ec !== 'line') {
return false
}
var ep;
var coords;
var fj;
var fb;
var eq;
var ep = this.cn.length;
var hp = -this.d * math.pi / 180;
var fn;
var el;
var ku;
var kv;
var kw = [];
var kx = [];
for (eq = 0; eq < ep; eq++) {
coords = this.hr(this.cn[eq][0], 0);
if (coords[0] < this.ml || coords[0] > this.ds - this.mn) {
continue
}
if (typeof this.cn[eq][2] !== 'undefined' && this.cn[eq][2] === 'x-value') {
kw.push(this.cn[eq])
} else {
kx.push(this.cn[eq])
}
}
ep = kw.length;
for (eq = 0; eq < ep; eq++) {
coords = this.hr(kw[eq][0], 0);
ku = (this.z && eq === 0);
kv = (this.b && eq + 1 === ep);
fn = this.dt - ((this.o === false) ? this.mj - 4: this.o);
fb = (this.k === false) ? this.dw: this.k;
fj = this.fk(string(kw[eq][1]), this.m, null, null, fb);
if (this.d > 0) {
this.bh.save();
if (ku) {
el = coords[0] + 2 + this.m / 2
} else if (kv) {
el = coords[0] + 2 - this.m / 2
} else {
el = coords[0] + 2
}
this.bh.translate(el, fn + 4);
this.bh.rotate(hp);
this.hw(kw[eq][1], 0 - fj, 0 - this.m / 2 - 2, this.m, null, null, null, fb, this.e);
this.bh.restore()
} else {
if (ku) {
el = coords[0]
} else if (kv) {
el = coords[0] - fj
} else {
el = coords[0] - fj / 2
}
this.hw(kw[eq][1], el, fn, this.m, null, null, null, fb, this.e)
}
}
ep = kx.length;
for (eq = 0; eq < ep; eq++) {
coords = this.hr(kx[eq][0], 0);
coords[0] = number(coords[0].tofixed(12));
ku = (this.cb && coords[0] === this.bu);
kv = (this.cd && coords[0] === this.bu + this.dq);
fn = this.dt - ((this.cl === false) ? this.mj - 4: this.cl);
fb = (this.ch === false) ? this.dw: this.ch;
fj = this.fk(string(kx[eq][1]), this.cj, null, null, fb);
if (this.d > 0) {
this.bh.save();
if (ku) {
el = coords[0] + 2 + this.m / 2
} else if (kv) {
el = coords[0] + 2 - this.m / 2
} else {
el = coords[0] + 2
}
this.bh.translate(el, fn + 4);
this.bh.rotate(hp);
this.hw(kx[eq][1], 0 - fj, 0 - this.cj / 2 - 2, this.cj, null, null, null, fb, this.cf);
this.bh.restore()
} else {
if (ku) {
el = coords[0]
} else if (kv) {
el = coords[0] - fj
} else {
el = coords[0] - fj / 2
}
this.hw(kx[eq][1], el, fn, this.cj, null, null, null, fb, this.cf)
}
}
};
this.gy = function() {
var ep;
var coords;
var fj;
var ep = this.co.length;
var eq;
var fb = (this.ci === false) ? this.dw: this.ci;
var hp = -this.d * math.pi / 180;
var ku;
var kv;
var el;
var em;
if (this.mp) {
for (eq = 0; eq < ep; eq++) {
coords = this.hr(this.co[eq][0], 0);
if (coords[0] < this.ml || coords[0] > this.dq + this.bu) {
continue
}
ku = (this.cc && coords[0] === this.bu);
kv = (this.ce && coords[0] === this.bu + this.dq);
fj = this.fk(string(this.co[eq][1]), this.ck, null, null, fb);
if (this.d > 0) {
this.bh.save();
if (ku) {
el = coords[0] + 2 + this.ck
} else if (kv) {
el = coords[0] + 2 - this.ck / 4
} else {
el = coords[0] + 2
}
this.bh.translate(el, (this.cl === false) ? this.dt - this.mj + 8: this.dt - this.cl);
this.bh.rotate(hp);
this.hw(this.co[eq][1], 0 - fj, 0 - this.ck / 2 - 2, this.ck, null, null, null, fb, this.cg);
this.bh.restore()
} else {
if (ku) {
el = coords[0]
} else if (kv) {
el = coords[0] - fj
} else {
el = coords[0] - fj / 2
}
this.hw(this.co[eq][1], el, (this.cl === false) ? this.dt - this.mj + 4: this.dt - this.cl, this.ck, null, null, null, fb, this.cg)
}
}
} else {
for (eq = 0; eq < ep; eq++) {
coords = this.hr(0, this.co[eq][0]);
if (coords[1] < this.v || coords[1] > this.dt - this.mj) {
continue
}
ku = (this.cc && coords[1] === this.bv + this.dr);
kv = (this.ce && coords[1] === this.bv);
fj = this.fk(string(this.co[eq][1]), this.ck, null, null, fb);
if (ku) {
em = coords[1] - this.fp(this.ck)
} else if (kv) {
em = coords[1]
} else {
em = coords[1] - this.fp(this.ck / 2)
}
this.hw(this.co[eq][1], (this.cm === false) ? this.ml - fj - 4: this.cm - fj, em, this.ck, null, null, null, fb, this.cg)
}
}
};
this.gb = function() {
var fb = (this.dl === false) ? this.dw: this.dl;
var ky = this.fk(this.dj, this.dm, null, null, fb);
var fh;
switch (this.dn) {
case 'left':
fh = this.ml;
break;
case 'right':
fh = this.ds - this.mn - ky;
break;
default:
fh = math.round((this.ds - ky) / 2)
}
var fn = this.dh;
this.hw(this.dj, fh, fn, this.dm, null, null, null, fb, this.dk)
};
this.gi = function() {
var fs = this;
return function() {
var gd = fs.ge(fs.ef, true);
var fb = (fs.eh === false) ? fs.dw: fs.eh;
fs.hw(fs.ef, gd[0] + 1, gd[1] + 1, fs.ei, null, null, null, fb, fs.el, fs.ej);
fs.hw(fs.ef, gd[0], gd[1], fs.ei, null, null, null, fb, fs.eg, fs.ej)
}
};
this.gu = function(es) {
var fj;
var fi;
var hc;
var hb;
var fd;
var fe;
var fg;
var fh;
var fn = this.dt - ((this.o === false) ? this.mj - 4: this.o);
var hp = -this.d * math.pi / 180;
var el;
var ku;
var kv;
if (es) {
this.ed = this.dq / (this.dc - this.dg);
this.gp(es);
var kz = this.x;
var ka = this.de;
var kb = this.da;
var ev = this.h;
var ew = this.r;
var ex = this.v;
var ey = this.l;
var ez = this.n;
var kc = this.f;
var et = this.dc;
var eu = this.dg
} else {
var kz = this.w;
var ka = this.dd;
var kb = this.cz;
var ev = this.g;
var ew = this.q;
var ex = this.u;
var ey = this.k;
var ez = this.m;
var kc = this.e;
var et = this.db;
var eu = this.df
}
var fb = (ey === false) ? this.dw: ey;
if (kz === 0) {
fg = ka;
fh = this.bu;
while (fg <= kb) {
fi = (ev === 'auto') ? fg: fg.tofixed(ev);
ku = (((this.z && !es) || (this.a && es)) && fg === ka);
kv = (((this.b && !es) || (this.c && es)) && fg + this.mr > kb);
hb = string(fg).lastindexof('.');
hc = string(fg).substr(hb + 1).length;
if (hc > 3 && ev === 'auto') {
fi = this.ff(fg, 3)
}
if (this.em !== false) {
fi = this.hx(fi)
}
if (typeof ew === 'string') {
fi = ew + fi
}
if (typeof ex === 'string') {
fi = fi + ex
}
fj = this.fk(string(fi), ez, null, null, fb);
if (this.d > 0) {
if (ku) {
el = fh + ez
} else if (kv) {
el = fh - ez / 4
} else {
el = fh + ez / 4
}
this.bh.save();
this.bh.translate(el, fn + 4);
this.bh.rotate(hp);
this.hw(fi, 0 - fj, 0 - ez / 2 - 2, ez, null, null, null, fb, kc);
this.bh.restore()
} else {
if (ku) {
el = fh
} else if (kv) {
el = fh - fj
} else {
el = fh - fj / 2
}
this.hw(fi, el, fn, ez, null, null, null, fb, kc)
}
fg += this.mr;
fh += this.ed
}
} else {
var ha = false;
for (var eq = 2; eq < 200; eq++) {
if ((et - eu) % eq === 0) {
ha = eq;
if (!this.er(eq, true)) {
continue
}
break
}
}
var ep = (ha) ? ha: eq;
if (kz > 1) {
ep = kz - 1
}
var kd = 0;
var data = (this.dh) ? this.bi[0] : this.bi;
for (eq = 0; eq < data.length; eq++) {
hb = string(data[eq][0]).lastindexof('.');
if (hb >= 0) {
hc = string(data[eq][0]).substr(hb + 1).length;
if (kd < hc) {
kd = hc
}
}
}
kd++;
while (!this.er(ep, true)) {
ep = math.floor(ep / 2)
}
fd = this.dq / ep;
fe = (et - eu) / ep;
fg = eu;
fh = this.ml;
fn = (this.o === false) ? this.bv + this.dr + 4: this.dt - this.o;
for (eq = 0; eq <= ep; eq++) {
ku = (this.z && eq === 0);
kv = (this.b && eq + 1 > ep);
fi = (ev === 'auto' && this.ff(fg, ev) !== fg) ? this.ff(fg, kd) : fg.tofixed(ev);
if (this.em !== false) {
fi = this.hx(fi)
}
if (typeof ew === 'string') {
fi = ew + fi
}
if (typeof ex === 'string') {
fi = fi + ex
}
fj = this.fk(fi, ez, null, null, fb);
if (this.d > 0) {
this.bh.save();
if (ku) {
el = fh + fj / 4 + ez / 2
} else if (kv) {
el = fh + fj / 4 - ez / 2
} else {
el = fh + fj / 4
}
this.bh.translate(el, fn + 4);
this.bh.rotate(hp);
this.hw(fi, 0 - fj, 0 - ez / 2 - 2, ez, null, null, null, fb, kc);
this.bh.restore()
} else {
if (ku) {
el = fh
} else if (kv) {
el = fh - fj
} else {
el = fh - fj / 2
}
this.hw(fi, el, fn, ez, null, null, null, fb, kc)
}
fg += fe;
fh += fd
}
}
};
this.gv = function(es) {
if (es) {
this.gu(true);
return
}
var fj;
var fi;
var hc;
var hb;
var fd;
var fe;
var fg;
var fn;
var fh = (this.p === false) ? this.ml - 4: this.p;
var fo = this.fp(this.n);
var fb = (this.l === false) ? this.dw: this.l;
var ku;
var kv;
if (this.x === 0) {
fg = this.de;
fn = this.bv + this.dr;
while (fg <= this.da) {
ku = (this.a && fg === this.de);
kv = (this.c && fg + this.dp > this.da);
fi = (this.h === 'auto') ? fg: fg.tofixed(this.h);
hb = string(fg).lastindexof('.');
hc = string(fg).substr(hb + 1).length;
if (hc > 3 && this.h === 'auto') {
fi = this.ff(fg, 3)
}
if (this.em !== false) {
fi = this.hx(fi)
}
if (typeof this.r === 'string') {
fi = this.r + fi
}
if (typeof this.v === 'string') {
fi = fi + this.v
}
fj = this.fk(string(fi), this.n, null, null, fb);
if (ku) {
em = fn - fo
} else if (kv) {
em = fn
} else {
em = fn - fo / 2
}
this.hw(fi, fh - fj, em, this.n, null, null, null, fb, this.f);
fg += this.dp;
fg = number(fg.tofixed(10));
fn -= this.ee
}
} else {
var ha = false;
for (var eq = 2; eq < 200; eq++) {
if ((this.dc - this.dg) % eq === 0) {
ha = eq;
if (!this.fl(eq, true)) {
continue
}
break
}
}
var ep = (ha) ? ha: eq;
if (this.x > 1) {
ep = this.x - 1
}
var kd = 0;
var data = (this.dh) ? this.bi[0] : this.bi;
for (eq = 0; eq < data.length; eq++) {
hb = string(data[eq][1]).lastindexof('.');
if (hb >= 0) {
hc = string(data[eq][1]).substr(hb + 1).length;
if (kd < hc) {
kd = hc
}
}
}
kd++;
while (!this.fl(ep)) {
ep = math.floor(ep / 2)
}
fd = this.dr / ep;
fe = (this.dc - this.dg) / ep;
fg = this.dg;
fh = (this.p === false) ? this.ml - 4: this.p;
fn = this.bv + this.dr;
for (eq = 0; eq <= ep; eq++) {
ku = (this.a && eq === 0);
kv = (this.c && eq + 1 > ep);
fo = this.fp(this.n);
fi = (this.h === 'auto' && this.ff(fg, this.h) !== fg) ? this.ff(fg, kd) : fg.tofixed(this.h);
if (this.em !== false) {
fi = this.hx(fi)
}
if (typeof this.r === 'string') {
fi = this.r + fi
}
if (typeof this.v === 'string') {
fi = fi + this.v
}
fj = this.fk(fi, this.n, null, null, fb);
if (ku) {
em = fn - fo
} else if (kv) {
em = fn
} else {
em = fn - fo / 2
}
this.hw(fi, fh - fj, em, this.n, null, null, null, fb, this.f);
fg += fe;
fn -= fd
}
}
};
this.ke = false;
this.kf = false;
this.kg = 0;
this.kh = 0;
this.ki = false;
this.kj = function(min, max, kk, kl) {
if (typeof kl === 'undefined') {
kl = true
}
min = math.floor(min);
max = math.ceil(max);
if (math.abs(min - max) === 0) {--min; ++max
}
kk = math.floor(kk);
var km = math.round((this.kg / 100.0) * math.abs(max - min));
var kn = math.round((this.kh / 100.0) * math.abs(max - min));
if (typeof this.ke === 'number') {
min = math.ceil(this.ke);
if (min >= max) {
alert('you have specified a min value with setautomin() which is larger than the maximum value used for the scale. this is not possible.');
return
}
}
if (typeof this.kf === 'number') {
max = math.ceil(this.kf);
if (min >= max) {
alert('you have specified a max value with setautomax() which is smaller than the miminum value used for the scale. this is not possible.');
return
}
}
if (math.abs(min - max) === 0) {++max; --min
}
min -= kn;
max += km;
var iw;
var ko;
var kp;
var kq;
var kr;
var ks;
var kt;
var ku;
var kv;
var kw;
var kx;
var ky;
var kz;
if (kl) {
iw = this.la(kk, min, max, 1);
ko = iw[0];
ku = iw[1];
kv = iw[2];
kr = iw[3]
} else {
ku = min;
kv = max;
iw = this.lb(kk, min, max, 1);
ko = iw[0];
kr = iw[1]
}
if (math.abs(min - max) > 2) {
if (kl) {
iw = this.la(kk, min, max, 5);
kp = iw[0];
kw = iw[1];
kx = iw[2];
ks = iw[3]
} else {
kw = min;
kx = max;
iw = this.lb(kk, min, max, 5);
kp = iw[0];
ks = iw[1]
}
} else {
kp = 10000
}
if (math.abs(min - max) > 5) {
if (kl) {
iw = this.la(kk, min, max, 2);
kq = iw[0];
ky = iw[1];
kz = iw[2];
kt = iw[3]
} else {
ky = min;
kz = max;
iw = this.lb(kk, min, max, 2);
kq = iw[0];
kt = iw[1]
}
} else {
kq = 10000
}
var lc = math.abs(ko - kk);
var my = math.abs(kp - kk);
var le = (!this.ic(kt) && kt > 1) ? math.abs(kq - kk) : le = 10000;
var iu;
if (lc < my) {
iu = (lc < le) ? 1: 3
} else {
iu = (my < le) ? 2: 3
}
switch (iu) {
case 1:
return [ku, kv, kr];
case 2:
return [kw, kx, ks];
case 3:
return [ky, kz, kt];
default:
alert('invalid r (intautoscale) ');
return
}
};
this.jw = function(min, max, kk, kl) {
if (typeof kl === 'undefined') {
kl = true
}
if (this.ki) {
this.kj(min, max, kk, kl);
return
}
if (math.abs(min - max) < 0.00001) {
if (min === 0 && max === 0) {
min = -1;
max = 1
} else {
var lf = (math.abs(max) + math.abs(min)) * 0.005;
min -= lf;
max += lf
}
}
var km = (this.kg / 100.0) * math.abs(max - min);
var kn = (this.kh / 100.0) * math.abs(max - min);
if (typeof this.ke === 'number') {
min = this.ke;
if (min >= max) {
alert('you have specified a min value with setautomin() which is larger than the maximum value used for the scale. this is not possible.');
return
}
if (math.abs(min - max) < 0.00001) {
max *= 1.2
}
}
if (typeof this.kf === 'number') {
max = this.kf;
if (min >= max) {
alert('you have specified a max value with setautomax() which is smaller than the miminum value used for the scale. this is not possible.');
return
}
if (math.abs(min - max) < 0.00001) {
min *= 0.8
}
}
min -= kn;
max += km;
var iw;
var ko;
var kp;
var kq;
var ku;
var kv;
var kw;
var kx;
var ky;
var kz;
var lg;
var kr;
var lh;
var ks;
var li;
var kt;
if (kl) {
iw = this.lj(kk, min, max, 1, 2);
ko = iw[0];
ku = iw[1];
kv = iw[2];
lg = iw[3];
kr = iw[4]
} else {
ku = min;
kv = max;
iw = this.lk(kk, min, max, 1, 2, false);
ko = iw[0];
lg = iw[1];
kr = iw[2]
}
if (kl) {
iw = this.lj(kk, min, max, 5, 2);
kp = iw[0];
kw = iw[1];
kx = iw[2];
lh = iw[3];
ks = iw[4]
} else {
kw = min;
kx = max;
iw = this.lk(kk, min, max, 5, 2, false);
kp = iw[0];
lh = iw[1];
ks = iw[2]
}
if (kl) {
iw = this.lj(kk, min, max, 2, 5);
kq = iw[0];
ky = iw[1];
kz = iw[2];
li = iw[3];
kt = iw[4]
} else {
ky = min;
kz = max;
iw = this.lk(kk, min, max, 2, 5, false);
kq = iw[0];
li = iw[1];
kt = iw[2]
}
var lc = math.abs(ko - kk);
var my = math.abs(kp - kk);
var le = math.abs(kq - kk);
var iu = this.ll(lc, my, le, 0.8);
switch (iu) {
case 1:
return [ku, kv, kr];
case 2:
return [kw, kx, ks];
case 3:
return [ky, kz, kt];
default:
alert('invalid r (autoscale) ');
return
}
};
this.lj = function(kk, min, max, mv, hn, kl) {
if (typeof kl === 'undefined') {
kl = true
}
var lm = max - min;
var ln = (lm === 0) ? 0: math.floor(this.je(lm, 10));
if (min > 0 && min < math.pow(10, ln)) {
min = 0
}
var lo = math.pow(10, ln) / mv;
var lp = lo / hn;
var lq = math.ceil(max / lp) * lp;
var lr = math.floor(min / lp) * lp;
var ls = lq - lr;
var lt = ls / lo;
while (lt > kk) {
lo = math.pow(10, ln) / mv;
lt = ls / lo; ++ln
}
lp = lo / hn;
lr = math.floor(min / lp) * lp;
ls = lq - lr;
if (kl) {
lr = math.floor(min / lo) * lo;
ls = lq - lr;
lq = math.ceil(ls / lo) * lo + lr
} else {
lq = math.ceil(max / lp) * lp
}
return [lt, lr, lq, lp, lo]
};
this.lk = function(kk, min, max, mv, hn) {
var lm = max - min;
var ln = (lm === 0) ? 0: math.floor(this.je(lm, 10));
var lo = math.pow(10, ln) / mv;
var lp = math.lo / hn;
var lt = math.floor(lm / lo);
while (lt > kk) {
lo = math.pow(10, ln) / mv;
lt = math.floor(lm / lo); ++ln
}
lp = lo / hn;
return [lt, lp, lo]
};
this.la = function(kk, min, max, mv, kl) {
if (typeof kl === 'undefined') {
kl = true
}
var lm = max - min;
if (lm === 0) {
alert('can\'t automatically determine ticks since min == max.');
return
} else {
var ln = math.floor(this.je(lm, 10))
}
if (min > 0 && min < math.pow(10, ln)) {
min = 0
}
if (ln === 0) {
ln = 1
}
var lo = (mv === 1) ? 1: math.pow(10, ln) / mv;
var lq = math.ceil(max / lo) * lo;
var lr = math.floor(min / lo) * lo;
var ls = lq - lr;
var lt = ls / lo;
while (lt > kk) {
lo = math.pow(10, ln) / mv;
lt = ls / lo; ++ln
}
lr = math.floor(min / lo) * lo;
ls = lq - lr;
if (kl) {
lr = math.floor(min / lo) * lo;
ls = lq - lr;
lq = math.ceil(ls / lo) * lo + lr
} else {
lq = math.ceil(max / lo) * lo
}
return [lt, lr, lq, lo]
};
this.lb = function(kk, min, max, mv) {
var lm = max - min;
if (lm === 0) {
alert('can\'t automatically determine ticks since min == max.');
return
} else {
var ln = math.floor(this.je(lm, 10))
}
if (ln === 0) {
ln = 1
}
var lo = (mv === 1) ? 1: math.pow(10, ln) / mv;
var lt = math.floor(lm / lo);
while (lt > kk) {
lo = math.pow(10, ln) / mv;
lt = math.floor(lm / lo); ++ln
}
return [lt, lo]
};
this.ll = function(mv, hn, hm, lu) {
if (mv < hn) {
if (mv < hm * lu) {
return 1
}
return 3
} else if (hn < hm * lu) {
return 2
}
return 3
};
this.il = {
lv: 0,
lw: "",
lx: 8,
im: function(hk) {
return this.ly(this.lz(this.la(hk), hk.length * this.lx))
},
lb: function(hk) {
return this.lc(this.lz(this.la(hk), hk.length * this.lx))
},
ld: function(hk) {
return this.le(this.lz(this.la(hk), hk.length * this.lx))
},
lf: function(lg, data) {
return this.ly(this.lh(lg, data))
},
li: function(lg, data) {
return this.lc(this.lh(lg, data))
},
lj: function(lg, data) {
return this.le(this.lh(lg, data))
},
lk: function() {
return this.im("abc") === "900150983cd24fb0d6963f7d28e17f72"
},
lz: function(el, ep) {
el[ep >> 5] |= 0x80 << ((ep) % 32);
el[(((ep + 64) >>> 9) << 4) + 14] = ep;
var mv = 1732584193;
var hn = -271733879;
var hm = -1732584194;
var hl = 271733878;
for (var eq = 0; eq < el.length; eq += 16) {
var ll = mv;
var lm = hn;
var ln = hm;
var lo = hl;
mv = this.lp(mv, hn, hm, hl, el[eq + 0], 7, -680876936);
hl = this.lp(hl, mv, hn, hm, el[eq + 1], 12, -389564586);
hm = this.lp(hm, hl, mv, hn, el[eq + 2], 17, 606105819);
hn = this.lp(hn, hm, hl, mv, el[eq + 3], 22, -1044525330);
mv = this.lp(mv, hn, hm, hl, el[eq + 4], 7, -176418897);
hl = this.lp(hl, mv, hn, hm, el[eq + 5], 12, 1200080426);
hm = this.lp(hm, hl, mv, hn, el[eq + 6], 17, -1473231341);
hn = this.lp(hn, hm, hl, mv, el[eq + 7], 22, -45705983);
mv = this.lp(mv, hn, hm, hl, el[eq + 8], 7, 1770035416);
hl = this.lp(hl, mv, hn, hm, el[eq + 9], 12, -1958414417);
hm = this.lp(hm, hl, mv, hn, el[eq + 10], 17, -42063);
hn = this.lp(hn, hm, hl, mv, el[eq + 11], 22, -1990404162);
mv = this.lp(mv, hn, hm, hl, el[eq + 12], 7, 1804603682);
hl = this.lp(hl, mv, hn, hm, el[eq + 13], 12, -40341101);
hm = this.lp(hm, hl, mv, hn, el[eq + 14], 17, -1502002290);
hn = this.lp(hn, hm, hl, mv, el[eq + 15], 22, 1236535329);
mv = this.lq(mv, hn, hm, hl, el[eq + 1], 5, -165796510);
hl = this.lq(hl, mv, hn, hm, el[eq + 6], 9, -1069501632);
hm = this.lq(hm, hl, mv, hn, el[eq + 11], 14, 643717713);
hn = this.lq(hn, hm, hl, mv, el[eq + 0], 20, -373897302);
mv = this.lq(mv, hn, hm, hl, el[eq + 5], 5, -701558691);
hl = this.lq(hl, mv, hn, hm, el[eq + 10], 9, 38016083);
hm = this.lq(hm, hl, mv, hn, el[eq + 15], 14, -660478335);
hn = this.lq(hn, hm, hl, mv, el[eq + 4], 20, -405537848);
mv = this.lq(mv, hn, hm, hl, el[eq + 9], 5, 568446438);
hl = this.lq(hl, mv, hn, hm, el[eq + 14], 9, -1019803690);
hm = this.lq(hm, hl, mv, hn, el[eq + 3], 14, -187363961);
hn = this.lq(hn, hm, hl, mv, el[eq + 8], 20, 1163531501);
mv = this.lq(mv, hn, hm, hl, el[eq + 13], 5, -1444681467);
hl = this.lq(hl, mv, hn, hm, el[eq + 2], 9, -51403784);
hm = this.lq(hm, hl, mv, hn, el[eq + 7], 14, 1735328473);
hn = this.lq(hn, hm, hl, mv, el[eq + 12], 20, -1926607734);
mv = this.lr(mv, hn, hm, hl, el[eq + 5], 4, -378558);
hl = this.lr(hl, mv, hn, hm, el[eq + 8], 11, -2022574463);
hm = this.lr(hm, hl, mv, hn, el[eq + 11], 16, 1839030562);
hn = this.lr(hn, hm, hl, mv, el[eq + 14], 23, -35309556);
mv = this.lr(mv, hn, hm, hl, el[eq + 1], 4, -1530992060);
hl = this.lr(hl, mv, hn, hm, el[eq + 4], 11, 1272893353);
hm = this.lr(hm, hl, mv, hn, el[eq + 7], 16, -155497632);
hn = this.lr(hn, hm, hl, mv, el[eq + 10], 23, -1094730640);
mv = this.lr(mv, hn, hm, hl, el[eq + 13], 4, 681279174);
hl = this.lr(hl, mv, hn, hm, el[eq + 0], 11, -358537222);
hm = this.lr(hm, hl, mv, hn, el[eq + 3], 16, -722521979);
hn = this.lr(hn, hm, hl, mv, el[eq + 6], 23, 76029189);
mv = this.lr(mv, hn, hm, hl, el[eq + 9], 4, -640364487);
hl = this.lr(hl, mv, hn, hm, el[eq + 12], 11, -421815835);
hm = this.lr(hm, hl, mv, hn, el[eq + 15], 16, 530742520);
hn = this.lr(hn, hm, hl, mv, el[eq + 2], 23, -995338651);
mv = this.ls(mv, hn, hm, hl, el[eq + 0], 6, -198630844);
hl = this.ls(hl, mv, hn, hm, el[eq + 7], 10, 1126891415);
hm = this.ls(hm, hl, mv, hn, el[eq + 14], 15, -1416354905);
hn = this.ls(hn, hm, hl, mv, el[eq + 5], 21, -57434055);
mv = this.ls(mv, hn, hm, hl, el[eq + 12], 6, 1700485571);
hl = this.ls(hl, mv, hn, hm, el[eq + 3], 10, -1894986606);
hm = this.ls(hm, hl, mv, hn, el[eq + 10], 15, -1051523);
hn = this.ls(hn, hm, hl, mv, el[eq + 1], 21, -2054922799);
mv = this.ls(mv, hn, hm, hl, el[eq + 8], 6, 1873313359);
hl = this.ls(hl, mv, hn, hm, el[eq + 15], 10, -30611744);
hm = this.ls(hm, hl, mv, hn, el[eq + 6], 15, -1560198380);
hn = this.ls(hn, hm, hl, mv, el[eq + 13], 21, 1309151649);
mv = this.ls(mv, hn, hm, hl, el[eq + 4], 6, -145523070);
hl = this.ls(hl, mv, hn, hm, el[eq + 11], 10, -1120210379);
hm = this.ls(hm, hl, mv, hn, el[eq + 2], 15, 718787259);
hn = this.ls(hn, hm, hl, mv, el[eq + 9], 21, -343485551);
mv = this.lt(mv, ll);
hn = this.lt(hn, lm);
hm = this.lt(hm, ln);
hl = this.lt(hl, lo)
}
return [mv, hn, hm, hl]
},
lu: function(lv, mv, hn, el, hk, ha) {
return this.lt(this.lw(this.lt(this.lt(mv, lv), this.lt(el, ha)), hk), hn)
},
lp: function(mv, hn, hm, hl, el, hk, ha) {
return this.lu((hn & hm) | ((~hn) & hl), mv, hn, el, hk, ha)
},
lq: function(mv, hn, hm, hl, el, hk, ha) {
return this.lu((hn & hl) | (hm & (~hl)), mv, hn, el, hk, ha)
},
lr: function(mv, hn, hm, hl, el, hk, ha) {
return this.lu(hn ^ hm ^ hl, mv, hn, el, hk, ha)
},
ls: function(mv, hn, hm, hl, el, hk, ha) {
return this.lu(hm ^ (hn | (~hl)), mv, hn, el, hk, ha)
},
lh: function(lg, data) {
var lx = this.la(lg);
if (lx.length > 16) {
lx = this.lz(lx, lg.length * this.lx)
}
var ly = [16],
lz = [16];
for (var eq = 0; eq < 16; eq++) {
ly[eq] = lx[eq] ^ 0x36363636;
lz[eq] = lx[eq] ^ 0x5c5c5c5c
}
var hash = this.lz(ly.concat(this.la(data)), 512 + data.length * this.lx);
return this.lz(lz.concat(hash), 512 + 128)
},
lt: function(el, em) {
var ma = (el & 0xffff) + (em & 0xffff);
var mb = (el >> 16) + (em >> 16) + (ma >> 16);
return (mb << 16) | (ma & 0xffff)
},
lw: function(mc, md) {
return (mc << md) | (mc >>> (32 - md))
},
la: function(me) {
var mf = [];
var mg = (1 << this.lx) - 1;
for (var eq = 0; eq < me.length * this.lx; eq += this.lx) {
mf[eq >> 5] |= (me.charcodeat(eq / this.lx) & mg) << (eq % 32)
}
return mf
},
le: function(mf) {
var me = "";
var mg = (1 << this.lx) - 1;
for (var eq = 0; eq < mf.length * 32; eq += this.lx) {
me += string.fromcharcode((mf[eq >> 5] >>> (eq % 32)) & mg)
}
return me
},
ly: function(mh) {
var mi = this.lv ? "0123456789abcdef": "0123456789abcdef";
var me = "";
for (var eq = 0; eq < mh.length * 4; eq++) {
me += mi.charat((mh[eq >> 2] >> ((eq % 4) * 8 + 4)) & 0xf) + mi.charat((mh[eq >> 2] >> ((eq % 4) * 8)) & 0xf)
}
return me
},
lc: function(mh) {
var mj = "abcdefghijklmnopqrstuvwxyzabcdefghijklmnopqrstuvwxyz0123456789+/";
var me = "";
for (var eq = 0; eq < mh.length * 4; eq += 3) {
var mk = (((mh[eq >> 2] >> 8 * (eq % 4)) & 0xff) << 16) | (((mh[eq + 1 >> 2] >> 8 * ((eq + 1) % 4)) & 0xff) << 8) | ((mh[eq + 2 >> 2] >> 8 * ((eq + 2) % 4)) & 0xff);
for (var js = 0; js < 4; js++) {
if (eq * 8 + js * 6 > mh.length * 32) {
me += this.lw
} else {
me += mj.charat((mk >> 6 * (3 - js)) & 0x3f)
}
}
}
return me
}
};
this.ed = {
_3dnotboolean: 'jschart: 3d setting must be boolean (true/false)',
_alignnotboolean: 'jschart: alignment setting must be boolean (true/false)',
_axisnamenotstring: 'jschart: axis name must be string',
_axisprefixnotstring: 'jschart: axis values prefix must be string',
_axissuffixnotstring: 'jschart: axis values suffix must be string',
_axisvaluesanglenotnumber: 'jschart: axis angle must be a number between 0 and 90',
_axisvaluesnotnumber: 'jschart: the number of axis values must be a number greater than 1',
_axiswidthnotnumber: 'jschart: axis width must be a number',
_backgroundimagenotstring: 'jschart: background image name must be string',
_barborderwidthnotnumber: 'jschart: bars border width must be a number',
_barspacingrationotnumber: 'jschart: bars spacing ratio must be a number between 0 and 100',
_barvaluesnotboolean: 'jschart: bar values setting must be boolean (true/false)',
_barvaluesprefixnotstring: 'jschart: bar values prefix must be string',
_barvaluessuffixnotstring: 'jschart: bar values suffix must be string',
_colorlength: 'jschart: colors array length must equal data length in case of pie and bar graphs',
_colornotarray: 'jschart: color data not array',
_datanotarray: 'jschart: input data not array',
_datawrongformat: 'jschart: input data in wrong format for selected chart type',
_depthnotnumber: 'jschart: depth setting must be a number',
_errorsnotboolean: 'jschart: error alerts setting must be boolean (true/false)',
_extendnotboolean: 'jschart: graph extend setting must be boolean (true/false)',
_flagoffsetnotnumber: 'jschart: flag offset must be a number',
_flagshapenotstring: 'jschart: flag shape must be a string',
_flagwidthnotnumber: 'jschart: flag line width must be a number',
_fontfamilynotstring: 'jschart: all font family names must be strings',
_fontsizenotnumber: 'jschart: all font sizes must be numbers',
_gridnotboolean: 'jschart: grid setting must be boolean (true/false)',
_idnotstring: 'jschart: id not string',
_intervalnotnumber: 'jschart: all interval limits must be numbers',
_invalidarea: 'jschart: invalid area call',
_invalidbarnumber: 'jschart: invalid bar number',
_invalidcolor: 'jschart: all color values must be in hexa format (#rgb or #rrggbb)',
_invalidfunction: 'jschart: callback not a function',
_invalidintervalx: 'jschart: invalid interval on axis x',
_invalidintervaly: 'jschart: invalid interval on axis y',
_invalidlabel: 'jschart: invalid label format',
_invalidpieangle: 'jschart: invalid pie angle',
_invalidtooltip: 'jschart: invalid tooltip format',
_invalidvalueformat: 'jschart: invalid values format',
_legendnotboolean: 'jschart: legend switch must be boolean (true/false)',
_invalidlegendposition: 'jschart: legend position must be string (see documentation for values) or two number coordinates',
_legendtextnotstring: 'jschart: legend text not string',
_linewidthnotnumber: 'jschart: lines width must be a number',
_nocanvassupport: 'jschart: no canvas support',
_nodata: 'jschart: no data loaded',
_notenoughdata: 'jschart: not enough data to render chart',
_nokey: 'jschart: key missing or mismatch',
_noname: 'jschart: name must be string and correspond to an existing id',
_notooltip: 'jschart: no tooltip with this id',
_notype: 'jschart: chart type not supported',
_notbars: 'jschart: chart is not bars type',
_notline: 'jschart: chart is not line type',
_notpie: 'jschart: chart is not pie type',
_opacitynotnumber: 'jschart: any opacity must be a number between 0 (transparent) and 1 (opaque)',
_optionsetnotarray: 'jschart: option set not array',
_paddingnotnumber: 'jschart: padding values must be numbers',
_paddingtoomuch: 'jschart: the sum of paddings exceed the canvas size',
_piepositionnotnumber: 'jschart: pie position coordinates must be numbers',
_pieunitsfontsizenotnumber: 'jschart: pie units font size must be a number',
_pieunitsoffsetnotnumber: 'jschart: pie units offset must be a number',
_pievaluesoffsetnotnumber: 'jschart: pie values offset must be a number',
_pievaluesprefixnotstring: 'jschart: pie values prefix must be string',
_pievaluessuffixnotstring: 'jschart: pie values suffix must be string',
_prefixnotstring: 'jschart: canvas id prefix must be string',
_radiusnotnumber: 'jschart: all radius settings must be numbers',
_reversenotboolean: 'jschart: axis reverse setting must be boolean (true/false)',
_sizenotnumber: 'jschart: graph size arguments must be numbers',
_speednotnumber: 'jschart: speed must be a number',
_titlenotstring: 'jschart: title must be string',
_titlepositionnotstring: 'jschart: title position must be string (center, left or right)',
_tooltipbordernotstring: 'jschart: tooltip border must be string',
_tooltipfontnotstring: 'jschart: tooltip font family must be string',
_tooltipoffsetnotnumber: 'jschart: tooltip offset must be a number',
_tooltipidnotnumber: 'jschart: tooltip id must be a number',
_tooltippaddingnotstring: 'jschart: tooltip padding must be string',
_tooltippositionnotstring: 'jschart: tooltip position must be string',
_tooltippositionwrong: 'jschart: wrong tooltip position, possible values are nw, ne, sw and se',
_userlabelnotstring: 'jschart: graph label must be string',
_userlabelpositionnotstring: 'jschart: graph label position must be string',
_userlabelpositionwrong: 'jschart: wrong graph label position, possible values are nw, ne, sw and se',
_valuesdecimalsnotnumber: 'jschart: decimals must be a number',
_valuesshownotboolean: 'jschart: values show setting must be boolean (true/false)',
_xmlemptydata: 'jschart xml/json: empty data set',
_xmlemptykey: 'jschart xml/json: empty or missing key',
_xmlemptyname: 'jschart xml/json: empty or missing chart name',
_xmlemptytype: 'jschart xml/json: empty or missing chart type',
_xmlfilenotloaded: 'jschart xml/json: file not loaded or malformed color/data/option set',
_xmlmalformedcolor: 'jschart xml/json: malformed color set',
_xmlmalformeddata: 'jschart xml/json: malformed data set',
_xmlmalformedoption: 'jschart xml/json: malformed option set',
_xmlunexpectedformat: 'jschart xml/json: unexpected format'
}
}
function jschart(name, type, code, lg, resize) {
this.ml = new mx();
var ml = this.ml;
var mm;
if (typeof lg === 'boolean') {
resize = lg
}
lg = '';
if (typeof code === 'undefined') {
code = ''
}
ml.iy(name, type.tolowercase(), code, lg, resize);
ml.ec = function(err) {
if (ml.dn) {
alert(ml.ed[err])
}
};
this.clearlabels = function() {
ml.cn = [];
ml.co = []
};
this.clearlabelsx = function() {
ml.cn = []
};
this.clearlabelsy = function() {
ml.co = []
};
this.cleartooltips = function() {
ml.dz = {}
};
this.colorize = function(mn) {
if (ml.bi.length === 0) {
ml.ec('_nodata');
return
}
if (!ml.gf(mn)) {
ml.ec('_colornotarray');
return
}
if (ml.bi.length !== mn.length && ml.ec !== 'line') {
ml.ec('_colorlength');
return
}
ml.be = mn
};
this.colorizebars = function(mn) {
if (ml.ec === 'bar') {
this.colorize(mn)
} else {
ml.ec('_notbars')
}
};
this.colorizepie = function(mn) {
if (ml.ec === 'pie') {
this.colorize(mn)
} else {
ml.ec('_notpie')
}
};
this.draw = function() {
if (ml.bi.length === 0) {
ml.ec('_nodata');
return
}
if (((ml.bi.length === 1 && !ml.dh) || (ml.bi[0].length === 1 && ml.dh)) && ml.ec === 'line') {
ml.ec('_notenoughdata');
return
}
ml.gd()
};
this.getdataids = function() {
return ml.bj
};
this.resize = function(el, em) {
if (typeof el !== 'number' || typeof em !== 'number') {
ml.ec('_sizenotnumber');
return
}
ml.ja(el, em);
ml.gd()
};
this.set3d = function(mo) {
if (typeof mo !== 'boolean') {
ml.ec('_3dnotboolean');
return
}
ml.my = mo
};
this.setarea = function(fg, fm) {
if (typeof fg !== 'string' || !ml.je(fm)) {
ml.ec('_invalidarea');
return
}
ml.mb[fg] = fm
};
this.setaxisalignx = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.z = align;
ml.b = align
};
this.setaxisaligny = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.a = align;
ml.c = align
};
this.setaxisalignfirstx = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.z = align
};
this.setaxisalignfirsty = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.a = align
};
this.setaxisalignlastx = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.b = align
};
this.setaxisalignlasty = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.c = align
};
this.setaxiscolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.f = color
};
this.setaxisnamecolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.mc = color;
ml.md = color
};
this.setaxisnamecolorx = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.mc = color
};
this.setaxisnamecolory = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.md = color
};
this.setaxisnamefontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.me = fi;
ml.mf = fi
};
this.setaxisnamefontfamilyx = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.me = fi
};
this.setaxisnamefontfamilyy = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.mf = fi
};
this.setaxisnamefontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.k = number(size);
ml.mg = number(size)
};
this.setaxisnamefontsizex = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.k = number(size)
};
this.setaxisnamefontsizey = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.mg = number(size)
};
this.setaxisnamex = function(name, rotate) {
if (typeof name !== 'string') {
ml.ec('_axisnamenotstring');
return
}
if (typeof rotate === 'boolean') {
ml.mi = rotate
}
ml.m = name
};
this.setaxisnamey = function(name, rotate) {
if (typeof name !== 'string') {
ml.ec('_axisnamenotstring');
return
}
if (typeof rotate === 'boolean') {
ml.mi = rotate
}
ml.mh = name
};
this.setaxispaddingbottom = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
if (ml.v + number >= ml.dt) {
ml.ec('_paddingtoomuch');
return
}
ml.mj = number(number)
};
this.setaxispaddingleft = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
if (number + ml.mn >= ml.ds) {
ml.ec('_paddingtoomuch');
return
}
ml.ml = number(number)
};
this.setaxispaddingright = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
if (ml.ml + number >= ml.ds) {
ml.ec('_paddingtoomuch');
return
}
ml.mn = number(number)
};
this.setaxispaddingtop = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
if (number + ml.mj >= ml.dt) {
ml.ec('_paddingtoomuch');
return
}
ml.v = number(number)
};
this.setaxisreversed = function(reverse) {
if (typeof reverse !== 'boolean') {
ml.ec('_reversenotboolean');
return
}
if (ml.ec === 'bar') {
ml.mp = reverse
}
};
this.setaxisvaluesangle = function(number) {
if (typeof number !== 'number') {
ml.ec('_axisvaluesanglenotnumber');
return
}
if (number < 0) {
number = 0
}
if (number > 89.9) {
number = 89.9
}
ml.d = number
};
this.setaxisvaluescolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.e = color;
ml.f = color
};
this.setaxisvaluescolorx = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.e = color
};
this.setaxisvaluescolory = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.f = color
};
this.setaxisvaluesdecimals = function(number) {
if (typeof number !== 'number') {
ml.ec('_valuesdecimalsnotnumber');
return
}
ml.g = number;
ml.h = number
};
this.setaxisvaluesdecimalsx = function(number) {
if (typeof number !== 'number') {
ml.ec('_valuesdecimalsnotnumber');
return
}
ml.g = number
};
this.setaxisvaluesdecimalsy = function(number) {
if (typeof number !== 'number') {
ml.ec('_valuesdecimalsnotnumber');
return
}
ml.h = number
};
this.setaxisvaluesfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.k = fi;
ml.l = fi
};
this.setaxisvaluesfontfamilyx = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.k = fi
};
this.setaxisvaluesfontfamilyy = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.l = fi
};
this.setaxisvaluesfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.m = number(size);
ml.n = number(size)
};
this.setaxisvaluesfontsizex = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.m = number(size)
};
this.setaxisvaluesfontsizey = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.n = number(size)
};
this.setaxisvaluesnumberx = function(number) {
if (typeof number !== 'number' && number > 1) {
ml.ec('_axisvaluesnotnumber');
return
}
ml.w = number
};
this.setaxisvaluesnumbery = function(number) {
if (typeof number !== 'number' && number > 1) {
ml.ec('_axisvaluesnotnumber');
return
}
ml.x = number
};
this.setaxisvaluespaddingbottom = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.o = number(number)
};
this.setaxisvaluespaddingleft = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.p = number(number)
};
this.setaxisvaluesprefixx = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_axisprefixnotstring');
return
}
ml.q = fi
};
this.setaxisvaluesprefixy = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_axisprefixnotstring');
return
}
ml.r = fi
};
this.setaxisvaluessuffixx = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_axissuffixnotstring');
return
}
ml.u = fi
};
this.setaxisvaluessuffixy = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_axissuffixnotstring');
return
}
ml.v = fi
};
this.setaxiswidth = function(number) {
if (typeof number !== 'number') {
ml.ec('_axiswidthnotnumber');
return
}
ml.y = number
};
this.setbackgroundcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.bb = color
};
this.setbackgroundimage = function(src) {
if (typeof src !== 'string') {
ml.ec('_backgroundimagenotstring');
return
}
ml.z = src
};
this.setbarbordercolor = function(color, hk) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
if (typeof hk === 'undefined') {
ml.bx = color
} else if (typeof ml.bw === 'string') {
ml.bw = [];
ml.bw[hk - 1] = color
} else {
ml.bw[hk - 1] = color
}
};
this.setbarborderwidth = function(number) {
if (typeof number !== 'number') {
ml.ec('_barborderwidthnotnumber');
return
}
ml.by = number(number)
};
this.setbarcolor = function(color, hk) {
if (ml.ec !== 'bar') {
return false
}
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
if (typeof hk === 'undefined') {
ml.ba = color
} else if (typeof ml.bz === 'string') {
ml.bz = [];
ml.bz[hk - 1] = color
} else {
ml.bz[hk - 1] = color;
if (typeof ml.cw[hk - 1] !== 'undefined') {
ml.cw[hk - 1][0] = color
}
}
};
this.setbardepth = function(number) {
if (typeof number !== 'number') {
ml.ec('_depthnotnumber');
return
}
ml.bc = number
};
this.setbaropacity = function(fj, hk) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
if (typeof hk === 'undefined') {
ml.bb = fj
} else if (typeof ml.bd === 'number') {
ml.bd = [];
ml.bd[hk - 1] = fj
} else {
ml.bd[hk - 1] = fj
}
};
this.setbarspacingratio = function(number) {
if (typeof number !== 'number' || (number < 0 || number > 100)) {
ml.ec('_barspacingrationotnumber');
return
}
ml.bf = number(number) / 2
};
this.setbarspeed = function(number) {
if (typeof number !== 'number') {
ml.ec('_speednotnumber');
return
}
number = 100 - number;
if (number < 1) {
number = 1
}
if (number > 100) {
number = 100
}
ml.bg = number(number)
};
//---------------------------------\\\\\\\\\\\\\\\\\\\
this.settitlevalue = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_prefixnotstring');
return
}
ml.dj = fi
};
this.setbarvalues = function(jr) {
if (typeof jr !== 'boolean') {
ml.ec('_barvaluesnotboolean');
return
}
ml.bh = jr
};
this.setbarvaluescolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.bi = color
};
this.setbarvaluesdecimals = function(number) {
if (typeof number !== 'number') {
ml.ec('_valuesdecimalsnotnumber');
return
}
ml.bj = number
};
this.setbarvaluesfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.bk = fi
};
this.setbarvaluesfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.bl = number(size)
};
this.setbarvaluesprefix = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_barvaluesprefixnotstring');
return
}
ml.bm = fi
};
this.setbarvaluessuffix = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_barvaluessuffixnotstring');
return
}
ml.bn = fi
};
this.setcanvasidprefix = function(prefix) {
if (typeof prefix !== 'string') {
ml.ec('_prefixnotstring');
return
}
ml.bd = prefix
};
this.setdataarray = function(data, id, usestring) {
if (ml.cw) {
return
}
if (!ml.gf(data)) {
ml.ec('_datanotarray');
return
}
ml.ec = type.tolowercase();
var eq;
var ep;
if ((typeof data[0][0] === 'string' || usestring === true) && ml.ec === 'line') {
if (ml.bi.length === 0) {
for (eq = 0, ep = data.length; eq < ep; eq++) {
this.setlabelx([eq, string(data[eq][0]), 'x-value']);
ml.bk[data[eq][0]] = eq;
data[eq][0] = eq
}
} else {
var min = ml.ir();
var max = ml.it();
var fd = math.round((max - min) / (data.length - 1));
for (var js = 0, eq = min, ep = data.length; eq < max, js < ep; eq += fd, js++) {
this.setlabelx([eq, string(data[js][0])], 'x-value');
ml.bk[data[js][0]] = eq;
data[js][0] = eq
}
}
this.setshowxvalues(false);
this.bw = true
}
if (!ml.jb(data)) {
ml.ec('_datawrongformat');
return
}
if (typeof id !== 'undefined' && id !== null && typeof id !== 'string') {
ml.ec('_idnotstring');
return
}
if (ml.ec === 'line') {
ml.dh = true;
var mp = false;
if (ml.bi === []) {
ml.bi = new array(data)
} else {
for (var el in ml.bj) {
if (ml.bj[el] === id) {
ml.bi[el] = data;
mp = true
}
}
if (!mp) {
ml.bi[ml.bi.length] = data
}
}
if (!mp) {
var index = ml.bi.length - 1;
ml.bj[index] = (typeof id === 'undefined' || id === null) ? '_autoid_' + index: id;
ml.cu[index] = false;
if (typeof ml.bq[index] === 'undefined') {
ml.bq[index] = ml.br
}
if (typeof ml.bu[index] === 'undefined') {
ml.bu[index] = ml.bs
}
if (typeof ml.bx[index] === 'undefined') {
ml.bx[index] = ml.bt
}
ml.cy.push([ml.br, ml.bj[index], ml.bj[index]])
}
} else if (ml.ec === 'bar') {
ep = data.length;
var hk = 0;
for (eq = 0; eq < ep; eq++) {
if (hk < data[eq].length) {
hk = data[eq].length
}
}
for (eq = 1; eq < hk; eq++) {
ml.cw.push([ml.ba, string(eq), eq]);
ml.cu.push(false)
}
ml.bi = data
} else {
ml.bi = data
}
};
this.setdatajson = function(jy, fi) {
if (ml.cw) {
return
}
var jj = ml.jx(jy, fi);
var jk = ml.ji(jj);
var jn = ml.jf(jk);
if (ml.gf(jn) && jn.length > 0) {
var ep = jn.length;
var hs;
var gz;
var mq;
for (var eq = 0; eq < ep; eq++) {
if (jn[eq].length < 3) {
mq = jn[eq][0] + '(' + jn[eq][1] + ')'
} else {
mq = jn[eq][0] + '(' + jn[eq][1] + ', "' + jn[eq][2] + '")'
}
eval("this." + mq)
}
}
};
this.setdataxml = function(jy, fi) {
if (ml.cw) {
return
}
var jn = ml.jf(ml.ja(jy, fi));
if (ml.gf(jn) && jn.length > 0) {
var ep = jn.length;
var hs;
var gz;
var mq;
for (var eq = 0; eq < ep; eq++) {
if (jn[eq].length < 3) {
mq = jn[eq][0] + '(' + jn[eq][1] + ')'
} else {
mq = jn[eq][0] + '(' + jn[eq][1] + ', "' + jn[eq][2] + '")'
}
eval("this." + mq)
}
}
};
this.seterrors = function(mr) {
if (typeof mr !== 'boolean') {
ml.ec('_errorsnotboolean');
return
}
ml.dn = mr
};
this.setflagcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.bn = color
};
this.setflagfillcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.bo = color
};
this.setflagoffset = function(fk) {
if (typeof fk !== 'number') {
ml.ec('_flagoffsetnotnumber');
return
}
ml.bp = number(fk)
};
this.setflagopacity = function(fj) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
ml.bq = fj
};
this.setflagshape = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_flagshapenotstring');
return
}
ml.bs = fi
};
this.setflagradius = function(ie) {
if (typeof ie !== 'number') {
ml.ec('_radiusnotnumber');
return
}
ml.br = number(ie)
};
this.setflagwidth = function(number) {
if (typeof number !== 'number') {
ml.ec('_flagwidthnotnumber');
return
}
ml.bt = number(number)
};
this.setfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.dw = fi
};
this.setgraphextend = function(hz) {
if (typeof hz !== 'boolean') {
ml.ec('_extendnotboolean');
return
}
ml.bo = hz;
ml.bp = hz
};
this.setgraphextendx = function(hz) {
if (typeof hz !== 'boolean') {
ml.ec('_extendnotboolean');
return
}
ml.bo = hz
};
this.setgraphextendy = function(hz) {
if (typeof hz !== 'boolean') {
ml.ec('_extendnotboolean');
return
}
ml.bp = hz
};
this.setgraphlabel = function(label) {
if (typeof label !== 'string') {
ml.ec('_userlabelnotstring');
return
}
ml.ef = label
};
this.setgraphlabelcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.eg = color
};
this.setgraphlabelfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.eh = fi
};
this.setgraphlabelfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.ei = number(size)
};
this.setgraphlabelopacity = function(fj) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
ml.ej = fj
};
this.setgraphlabelposition = function(position) {
if (typeof position !== 'string') {
ml.ec('_userlabelpositionnotstring');
return
}
var ep = ml.dy.length;
for (var eq = 0; eq < ep; eq++) {
if (ml.dy[eq] === position) {
ml.ek = position;
return true
}
}
ml.ec('_userlabelpositionwrong');
return
};
this.setgraphlabelshadowcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.el = color
};
this.setgrid = function(ms) {
if (typeof ms !== 'boolean') {
ml.ec('_gridnotboolean');
return
}
ml.cp = ms
};
this.setgridcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.cq = color;
ml.cr = color
};
this.setgridcolorx = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.cq = color
};
this.setgridcolory = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.cr = color
};
this.setgridopacity = function(fj) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
ml.cs = fj;
ml.ct = fj
};
this.setgridopacityx = function(fj) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
ml.cs = fj
};
this.setgridopacityy = function(fj) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
ml.ct = fj
};
this.setintervalendx = function(number) {
if (typeof number !== 'number') {
ml.ec('_intervalnotnumber');
return
}
ml.cx = number
};
this.setintervalendy = function(number) {
if (typeof number !== 'number') {
ml.ec('_intervalnotnumber');
return
}
ml.cy = number
};
this.setintervalstartx = function(number) {
if (typeof number !== 'number') {
ml.ec('_intervalnotnumber');
return
}
ml.cz = number
};
this.setintervalstarty = function(number) {
if (typeof number !== 'number') {
ml.ec('_intervalnotnumber');
return
}
ml.ca = number
};
this.setintervalx = function(start, mt) {
this.setintervalstartx(start);
this.setintervalendx(mt)
};
this.setintervaly = function(start, mt) {
this.setintervalstarty(start);
this.setintervalendy(mt)
};
this.setlabelalignx = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.cb = align;
ml.cd = align
};
this.setlabelaligny = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.cc = align;
ml.ce = align
};
this.setlabelalignfirstx = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.cb = align
};
this.setlabelalignfirsty = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.cc = align
};
this.setlabelalignlastx = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.cd = align
};
this.setlabelalignlasty = function(align) {
if (typeof align !== 'boolean') {
ml.ec('_alignnotboolean');
return
}
ml.ce = align
};
this.setlabelcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.cf = color;
ml.cg = color
};
this.setlabelcolorx = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.cf = color
};
this.setlabelcolory = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.cg = color
};
this.setlabelfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.ch = fi;
ml.ci = fi
};
this.setlabelfontfamilyx = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.ch = fi
};
this.setlabelfontfamilyy = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.ci = fi
};
this.setlabelfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.cj = number(size);
ml.ck = number(size)
};
this.setlabelfontsizex = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.cj = number(size)
};
this.setlabelfontsizey = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.ck = number(size)
};
this.setlabelpaddingbottom = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.cl = number(number)
};
this.setlabelpaddingleft = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.cm = number(number)
};
this.setlabelx = function(label) {
if (!ml.gf(label) || label.length < 2 || label.length > 3) {
ml.ec('_invalidlabel');
return
}
if (ml.ec === 'line' && typeof label[0] === 'string') {
if (typeof ml.bk[label[0]] !== 'undefined') {
label[0] = ml.bk[label[0]]
}
}
ml.cn.push(label)
};
this.setlabely = function(label) {
if (!ml.gf(label) || label.length !== 2) {
ml.ec('_invalidlabel');
return
}
ml.co.push(label)
};
this.setlegend = function(color, text) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
if (typeof text !== 'string') {
ml.ec('_legendtextnotstring');
return
}
ml.cv.push([color, text, '__custom__'])
};
this.setlegendcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.cp = color
};
this.setlegenddetect = function(kk) {
if (typeof kk !== 'boolean') {
ml.ec('_legendnotboolean');
return
}
ml.cq = kk
};
this.setlegendfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.cr = fi
};
this.setlegendfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.cs = number(size)
};
this.setlegendforbar = function(bar, text) {
if (typeof bar !== 'number') {
ml.ec('_invalidbarnumber');
return
}
bar--;
if (bar < 0 || bar >= ml.cw.length) {
ml.ec('_invalidbarnumber');
return
}
if (typeof text !== 'string') {
ml.ec('_legendtextnotstring');
return
}
ml.cw[bar] = [(typeof ml.bz[bar] === 'undefined') ? ml.ba: ml.bz[bar], text]
};
this.setlegendforline = function(id, text) {
if (typeof id !== 'undefined' && typeof id !== 'string') {
ml.ec('_idnotstring');
return
}
if (typeof text !== 'string') {
ml.ec('_legendtextnotstring');
return
}
var ep = ml.bj.length;
for (var eq = 0; eq < ep; eq++) {
if (typeof ml.bj[eq] !== 'undefined' && ml.bj[eq] === id) {
ml.cy[eq][1] = text;
break
}
}
};
this.setlegendpadding = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.ct = number
};
this.setlegendposition = function(fh, fn) {
if (typeof fh === 'string') {
ml.cu = fh
} else if (typeof fh === 'number' && typeof fn === 'number') {
ml.cu = [fh, fn]
} else {
ml.ec('_invalidlegendposition');
return
}
};
this.setlegendshow = function(kk) {
if (typeof kk !== 'boolean') {
ml.ec('_legendnotboolean');
return
}
ml.cx = kk
};
this.setlinecolor = function(color, id) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
if (typeof id !== 'undefined' && typeof id !== 'string') {
ml.ec('_idnotstring');
return
}
if (typeof id === 'undefined') {
if (ml.bq.length === 1) {
ml.bq[0] = color
} else {
var ep = ml.bj.length;
for (var eq = 0; eq < ep; eq++) {
if (typeof ml.bq[eq] !== 'undefined') {
ml.bq[eq] = color
}
}
}
} else {
if (ml.bj.length < 2) {
ml.bq[0] = color
} else {
for (var lg in ml.bj) {
if (ml.bj[lg] === id) {
ml.bq[lg] = color;
ml.cy[lg][0] = color
}
}
}
}
};
this.setlineopacity = function(fj, id) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
if (typeof id === 'undefined') {
if (ml.bu.length === 1) {
ml.bu[0] = fj
} else {
var ep = ml.bj.length;
for (var eq = 0; eq < ep; eq++) {
if (typeof ml.bq[eq] !== 'undefined') {
ml.bu[eq] = fj
}
}
}
} else {
if (ml.bj.length < 2) {
ml.bu[0] = fj
} else {
var index = false;
for (var lg in ml.bj) {
if (ml.bj[lg] === id) {
index = lg;
break
}
}
if (index !== false) {
ml.bu[index] = fj
}
}
}
};
this.setlinespeed = function(number) {
if (typeof number !== 'number') {
ml.ec('_speednotnumber');
return
}
number = (100 - number) * 10;
if (number < 1) {
number = 1
}
if (number > 1000) {
number = 1000
}
ml.bv = number(number)
};
this.setlinewidth = function(number, id) {
if (typeof number !== 'number') {
ml.ec('_linewidthnotnumber');
return
}
number = number(number);
if (typeof id === 'undefined') {
if (ml.bx.length === 1) {
ml.bx[0] = number
} else {
var ep = ml.bj.length;
for (var eq = 0; eq < ep; eq++) {
if (typeof ml.bx[eq] !== 'undefined') {
ml.bx[eq] = number
}
}
}
} else {
if (ml.bj.length < 2) {
ml.bx[0] = number
} else {
var index = false;
for (var lg in ml.bj) {
if (ml.bj[lg] === id) {
index = lg;
break
}
}
if (index !== false) {
ml.bx[index] = number
}
}
}
};
this.setpieangle = function(number) {
if (typeof number !== 'number' || number < 0 || number > 89) {
ml.ec('_invalidpieangle');
return
}
ml.by = number
};
this.setpiedepth = function(number) {
if (typeof number !== 'number') {
ml.ec('_depthnotnumber');
return
}
if (number < 1) {
number = 1
}
ml.bz = number
};
this.setpieopacity = function(fj) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
ml.ca = number(fj)
};
this.setpieposition = function(el, em) {
if (typeof el !== 'number' || typeof em !== 'number') {
ml.ec('_piepositionnotnumber');
return
}
ml.cb = number(el);
ml.cc = number(em)
};
this.setpieradius = function(ie) {
if (typeof ie !== 'number') {
ml.ec('_radiusnotnumber');
return
}
ml.cd = number(ie)
};
this.setpieunitscolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.ce = color
};
this.setpieunitsfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.cf = fi
};
this.setpieunitsfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.cg = number(size)
};
this.setpieunitsoffset = function(fk) {
if (typeof fk !== 'number') {
ml.ec('_pieunitsoffsetnotnumber');
return
}
ml.mq = number(fk)
};
this.setpievaluescolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.ci = color
};
this.setpievaluesdecimals = function(number) {
if (typeof number !== 'number') {
ml.ec('_valuesdecimalsnotnumber');
return
}
ml.cj = number
};
this.setpievaluesfontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.ck = fi
};
this.setpievaluesfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.cl = number(size)
};
this.setpievaluesoffset = function(fk) {
if (typeof fk !== 'number') {
ml.ec('_pieunitsoffsetnotnumber');
return
}
ml.cm = number(fk)
};
this.setpievaluesprefix = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_pievaluesprefixnotstring');
return
}
ml.cn = fi
};
this.setpievaluessuffix = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_pievaluessuffixnotstring');
return
}
ml.co = fi
};
this.setshowxvalues = function(show) {
if (typeof show !== 'boolean') {
ml.ec('_valuesshownotboolean');
return
}
ml.s = show
};
this.setshowyvalues = function(show) {
if (typeof show !== 'boolean') {
ml.ec('_valuesshownotboolean');
return
}
ml.t = show
};
this.setsize = function(el, em) {
if (typeof el !== 'number' || typeof em !== 'number') {
ml.ec('_sizenotnumber');
return
}
ml.ja(el, em)
};
this.setspeed = function(number) {
ml.setbarspeed(number);
if (typeof number === 'number') {
ml.setlinespeed(number)
}
};
this.settextpaddingbottom = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.dd = number(number)
};
this.settextpaddingleft = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.df = number(number)
};
this.settextpaddingtop = function(number) {
if (typeof number !== 'number') {
ml.ec('_paddingnotnumber');
return
}
ml.dh = number(number)
};
this.settitle = function(title) {
if (typeof title !== 'string') {
ml.ec('_titlenotstring');
return
}
ml.dj = title
};
this.settitlecolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.dk = color
};
this.settitlefontfamily = function(fi) {
if (typeof fi !== 'string') {
ml.ec('_fontfamilynotstring');
return
}
ml.dl = fi
};
this.settitlefontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.dm = number(size)
};
this.settitleposition = function(gd) {
if (typeof gd !== 'string') {
ml.ec('_titlepositionnotstring');
return
}
ml.dn = gd
};
this.settooltip = function(fi, fm) {
if (!ml.gf(fi) || fi.length < 1 || fi.length > 3) {
ml.ec('_invalidtooltip');
return
}
if (ml.ec !== 'pie') {
var line = (typeof fi[2] === 'undefined') ? '__all__': fi[2];
if (typeof ml.dz[line] === 'undefined') {
ml.dz[line] = {}
}
if (ml.ec === 'line' && typeof fi[0] === 'string') {
if (typeof ml.bk[fi[0]] !== 'undefined') {
ml.dz[line][ml.bk[fi[0]]] = fi
}
} else {
ml.dz[line][fi[0]] = fi
}
} else {
ml.dz[fi[0]] = fi
}
if (typeof fm !== 'undefined') {
if (!ml.je(fm)) {
ml.ec('_invalidfunction');
return
}
if (ml.ec !== 'pie') {
if (ml.ec === 'line' && typeof fi[0] === 'string') {
if (typeof ml.bk[fi[0]] !== 'undefined') {
ml.dz[line][ml.bk[fi[0]]]['callback'] = fm
}
} else {
ml.dz[line][fi[0]]['callback'] = fm
}
} else {
ml.dz[fi[0]]['callback'] = fm
}
}
};
this.settooltipbackground = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.do = color
};
this.settooltipborder = function(mu) {
if (typeof mu !== 'string') {
ml.ec('_tooltipbordernotstring');
return
}
ml.dp = mu
};
this.settooltipfontcolor = function(color) {
if (typeof color !== 'string' || ml.fr(color) === false) {
ml.ec('_invalidcolor');
return
}
ml.dr = color
};
this.settooltipfontfamily = function(font) {
if (typeof font !== 'string') {
ml.ec('_tooltipfontnotstring');
return
}
ml.ds = font
};
this.settooltipfontsize = function(size) {
if (typeof size !== 'number') {
ml.ec('_fontsizenotnumber');
return
}
ml.dt = number(size)
};
this.settooltipopacity = function(fj) {
if (typeof fj !== 'number' || (fj < 0 || fj > 1)) {
ml.ec('_opacitynotnumber');
return
}
ml.dv = number(fj)
};
this.settooltippadding = function(mu) {
if (typeof mu !== 'string') {
ml.ec('_tooltippaddingnotstring');
return
}
ml.dw = mu
};
this.settooltipoffset = function(fk) {
if (typeof fk !== 'number') {
ml.ec('_tooltipoffsetnotnumber');
return
}
ml.du = number(fk)
};
this.settooltipposition = function(position) {
if (typeof position !== 'string') {
ml.ec('_tooltippositionnotstring');
return
}
var ep = ml.dy.length;
for (var eq = 0; eq < ep; eq++) {
if (ml.dy[eq] === position) {
ml.dx = position;
return true
}
}
ml.ec('_tooltippositionwrong');
return
};
this.setvaluesformat = function(jc) {
if (jc !== '.' && jc !== ',' && jc !== false) {
ml.ec('_invalidvalueformat');
return
}
ml.em = jc
}
////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
}
function gk() {}
gk.mv = function(hk) {
var iu = "0x";
var mw = new array("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f");
for (var eq = 0; eq < hk.length; eq++) {
iu += mw[hk.charcodeat(eq) >> 4] + mw[hk.charcodeat(eq) & 0xf]
}
return iu
};
gk.gl = function(hj) {
var iu = "";
for (var eq = (hj.substr(0, 2) == "0x") ? 2: 0; eq < hj.length; eq += 2) {
iu += string.fromcharcode(parseint(hj.substr(eq, 2), 16))
}
return iu
};
if (!document.createelement('canvas').getcontext) { (function() {
var m = math;
var mr = m.round;
var ms = m.sin;
var mc = m.cos;
var abs = m.abs;
var sqrt = m.sqrt;
var z = 10;
var z2 = z / 2;
function getcontext() {
return this.context_ || (this.context_ = new canvasrenderingcontext2d_(this))
}
var slice = array.prototype.slice;
function bind(f, obj, var_args) {
var a = slice.call(arguments, 2);
return function() {
return f.apply(obj, a.concat(slice.call(arguments)))
}
}
function encodehtmlattribute(s) {
return string(s).replace(/&/g, '&').replace(/"/g, '"')
}
function addnamespacesandstylesheet(doc) {
if (!doc.namespaces['g_vml_']) {
doc.namespaces.add('g_vml_', 'urn:schemas-microsoft-com:vml', '#default#vml')
}
if (!doc.namespaces['g_o_']) {
doc.namespaces.add('g_o_', 'urn:schemas-microsoft-com:office:office', '#default#vml')
}
if (!doc.stylesheets['ex_canvas_']) {
var ss = doc.createstylesheet();
ss.owningelement.id = 'ex_canvas_';
ss.csstext = 'canvas{display:inline-block;overflow:hidden;' + 'text-align:left;width:300px;height:150px}'
}
}
addnamespacesandstylesheet(document);
var g_vmlcanvasmanager_ = {
init: function(opt_doc) {
if (/msie/.test(navigator.useragent) && !window.opera) {
var doc = opt_doc || document;
doc.createelement('canvas');
doc.attachevent('onreadystatechange', bind(this.init_, this, doc))
}
},
init_: function(doc) {
var els = doc.getelementsbytagname('canvas');
for (var i = 0; i < els.length; i++) {
this.initelement(els[i])
}
},
initelement: function(el) {
if (!el.getcontext) {
el.getcontext = getcontext;
addnamespacesandstylesheet(el.ownerdocument);
el.innerhtml = '';
el.attachevent('onpropertychange', onpropertychange);
el.attachevent('onresize', onresize);
var attrs = el.attributes;
if (attrs.width && attrs.width.specified) {
el.style.width = attrs.width.nodevalue + 'px'
} else {
el.width = el.clientwidth
}
if (attrs.height && attrs.height.specified) {
el.style.height = attrs.height.nodevalue + 'px'
} else {
el.height = el.clientheight
}
}
return el
}
};
function onpropertychange(e) {
var el = e.srcelement;
switch (e.propertyname) {
case 'width':
el.getcontext().clearrect();
el.style.width = el.attributes.width.nodevalue + 'px';
el.firstchild.style.width = el.clientwidth + 'px';
break;
case 'height':
el.getcontext().clearrect();
el.style.height = el.attributes.height.nodevalue + 'px';
el.firstchild.style.height = el.clientheight + 'px';
break
}
}
function onresize(e) {
var el = e.srcelement;
if (el.firstchild) {
el.firstchild.style.width = el.clientwidth + 'px';
el.firstchild.style.height = el.clientheight + 'px'
}
}
g_vmlcanvasmanager_.init();
var dec2hex = [];
for (var i = 0; i < 16; i++) {
for (var j = 0; j < 16; j++) {
dec2hex[i * 16 + j] = i.tostring(16) + j.tostring(16)
}
}
function creatematrixidentity() {
return [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
}
function matrixmultiply(m1, m2) {
var result = creatematrixidentity();
for (var x = 0; x < 3; x++) {
for (var y = 0; y < 3; y++) {
var sum = 0;
for (var z = 0; z < 3; z++) {
sum += m1[x][z] * m2[z][y]
}
result[x][y] = sum
}
}
return result
}
function copystate(o1, o2) {
o2.fillstyle = o1.fillstyle;
o2.linecap = o1.linecap;
o2.linejoin = o1.linejoin;
o2.linewidth = o1.linewidth;
o2.miterlimit = o1.miterlimit;
o2.shadowblur = o1.shadowblur;
o2.shadowcolor = o1.shadowcolor;
o2.shadowoffsetx = o1.shadowoffsetx;
o2.shadowoffsety = o1.shadowoffsety;
o2.strokestyle = o1.strokestyle;
o2.globalalpha = o1.globalalpha;
o2.font = o1.font;
o2.textalign = o1.textalign;
o2.textbaseline = o1.textbaseline;
o2.arcscalex_ = o1.arcscalex_;
o2.arcscaley_ = o1.arcscaley_;
o2.linescale_ = o1.linescale_
}
function processstyle(stylestring) {
var str,
alpha = 1;
stylestring = string(stylestring);
if (stylestring.substring(0, 3) == 'rgb') {
var start = stylestring.indexof('(', 3);
var end = stylestring.indexof(')', start + 1);
var guts = stylestring.substring(start + 1, end).split(',');
str = '#';
for (var i = 0; i < 3; i++) {
str += dec2hex[number(guts[i])]
}
if (guts.length == 4 && stylestring.substr(3, 1) == 'a') {
alpha = guts[3]
}
} else {
str = stylestring
}
return {
color: str,
alpha: alpha
}
}
var default_style = {
style: 'normal',
variant: 'normal',
weight: 'normal',
size: 10,
family: 'sans-serif'
};
var fontstylecache = {};
function processfontstyle(stylestring) {
if (fontstylecache[stylestring]) {
return fontstylecache[stylestring]
}
var el = document.createelement('div');
var style = el.style;
try {
style.font = stylestring
} catch(ex) {}
return fontstylecache[stylestring] = {
style: style.fontstyle || default_style.style,
variant: style.fontvariant || default_style.variant,
weight: style.fontweight || default_style.weight,
size: style.fontsize || default_style.size,
family: style.fontfamily || default_style.family
}
}
function getcomputedstyle(style, element) {
var computedstyle = {};
for (var p in style) {
computedstyle[p] = style[p]
}
var canvasfontsize = parsefloat(element.currentstyle.fontsize),
fontsize = parsefloat(style.size);
if (typeof style.size == 'number') {
computedstyle.size = style.size
} else if (style.size.indexof('px') != -1) {
computedstyle.size = fontsize
} else if (style.size.indexof('em') != -1) {
computedstyle.size = canvasfontsize * fontsize
} else if (style.size.indexof('%') != -1) {
computedstyle.size = (canvasfontsize / 100) * fontsize
} else if (style.size.indexof('pt') != -1) {
computedstyle.size = canvasfontsize * (4 / 3) * fontsize
} else {
computedstyle.size = canvasfontsize
}
computedstyle.size *= 0.981;
return computedstyle
}
function buildstyle(style) {
return style.style + ' ' + style.variant + ' ' + style.weight + ' ' + style.size + 'px ' + style.family
}
function processlinecap(linecap) {
switch (linecap) {
case 'butt':
return 'flat';
case 'round':
return 'round';
case 'square':
default:
return 'square'
}
}
function canvasrenderingcontext2d_(surfaceelement) {
this.m_ = creatematrixidentity();
this.mstack_ = [];
this.astack_ = [];
this.currentpath_ = [];
this.strokestyle = '#000';
this.fillstyle = '#000';
this.linewidth = 1;
this.linejoin = 'miter';
this.linecap = 'butt';
this.miterlimit = z * 1;
this.globalalpha = 1;
this.font = '10px sans-serif';
this.textalign = 'left';
this.textbaseline = 'alphabetic';
this.canvas = surfaceelement;
var el = surfaceelement.ownerdocument.createelement('div');
el.style.width = surfaceelement.clientwidth + 'px';
el.style.height = surfaceelement.clientheight + 'px';
el.style.overflow = 'hidden';
el.style.position = 'absolute';
surfaceelement.appendchild(el);
this.element_ = el;
this.arcscalex_ = 1;
this.arcscaley_ = 1;
this.linescale_ = 1
}
var contextprototype = canvasrenderingcontext2d_.prototype;
contextprototype.clearrect = function() {
if (this.textmeasureel_) {
this.textmeasureel_.removenode(true);
this.textmeasureel_ = null
}
this.element_.innerhtml = ''
};
contextprototype.beginpath = function() {
this.currentpath_ = []
};
contextprototype.moveto = function(ax, ay) {
var p = this.getcoords_(ax, ay);
this.currentpath_.push({
type: 'moveto',
x: p.x,
y: p.y
});
this.currentx_ = p.x;
this.currenty_ = p.y
};
contextprototype.lineto = function(ax, ay) {
var p = this.getcoords_(ax, ay);
this.currentpath_.push({
type: 'lineto',
x: p.x,
y: p.y
});
this.currentx_ = p.x;
this.currenty_ = p.y
};
contextprototype.beziercurveto = function(acp1x, acp1y, acp2x, acp2y, ax, ay) {
var p = this.getcoords_(ax, ay);
var cp1 = this.getcoords_(acp1x, acp1y);
var cp2 = this.getcoords_(acp2x, acp2y);
beziercurveto(this, cp1, cp2, p)
};
function beziercurveto(self, cp1, cp2, p) {
self.currentpath_.push({
type: 'beziercurveto',
cp1x: cp1.x,
cp1y: cp1.y,
cp2x: cp2.x,
cp2y: cp2.y,
x: p.x,
y: p.y
});
self.currentx_ = p.x;
self.currenty_ = p.y
}
contextprototype.quadraticcurveto = function(acpx, acpy, ax, ay) {
var cp = this.getcoords_(acpx, acpy);
var p = this.getcoords_(ax, ay);
var cp1 = {
x: this.currentx_ + 2.0 / 3.0 * (cp.x - this.currentx_),
y: this.currenty_ + 2.0 / 3.0 * (cp.y - this.currenty_)
};
var cp2 = {
x: cp1.x + (p.x - this.currentx_) / 3.0,
y: cp1.y + (p.y - this.currenty_) / 3.0
};
beziercurveto(this, cp1, cp2, p)
};
contextprototype.arc = function(ax, ay, aradius, astartangle, aendangle, aclockwise) {
aradius *= z;
var arctype = aclockwise ? 'at': 'wa';
var xstart = ax + mc(astartangle) * aradius - z2;
var ystart = ay + ms(astartangle) * aradius - z2;
var xend = ax + mc(aendangle) * aradius - z2;
var yend = ay + ms(aendangle) * aradius - z2;
if (xstart == xend && !aclockwise) {
xstart += 0.125
}
var p = this.getcoords_(ax, ay);
var pstart = this.getcoords_(xstart, ystart);
var pend = this.getcoords_(xend, yend);
this.currentpath_.push({
type: arctype,
x: p.x,
y: p.y,
radius: aradius,
xstart: pstart.x,
ystart: pstart.y,
xend: pend.x,
yend: pend.y
})
};
contextprototype.rect = function(ax, ay, awidth, aheight) {
this.moveto(ax, ay);
this.lineto(ax + awidth, ay);
this.lineto(ax + awidth, ay + aheight);
this.lineto(ax, ay + aheight);
this.closepath()
};
contextprototype.strokerect = function(ax, ay, awidth, aheight) {
var oldpath = this.currentpath_;
this.beginpath();
this.moveto(ax, ay);
this.lineto(ax + awidth, ay);
this.lineto(ax + awidth, ay + aheight);
this.lineto(ax, ay + aheight);
this.closepath();
this.stroke();
this.currentpath_ = oldpath
};
contextprototype.fillrect = function(ax, ay, awidth, aheight) {
var oldpath = this.currentpath_;
this.beginpath();
this.moveto(ax, ay);
this.lineto(ax + awidth, ay);
this.lineto(ax + awidth, ay + aheight);
this.lineto(ax, ay + aheight);
this.closepath();
this.fill();
this.currentpath_ = oldpath
};
contextprototype.createlineargradient = function(ax0, ay0, ax1, ay1) {
var gradient = new canvasgradient_('gradient');
gradient.x0_ = ax0;
gradient.y0_ = ay0;
gradient.x1_ = ax1;
gradient.y1_ = ay1;
return gradient
};
contextprototype.createradialgradient = function(ax0, ay0, ar0, ax1, ay1, ar1) {
var gradient = new canvasgradient_('gradientradial');
gradient.x0_ = ax0;
gradient.y0_ = ay0;
gradient.r0_ = ar0;
gradient.x1_ = ax1;
gradient.y1_ = ay1;
gradient.r1_ = ar1;
return gradient
};
contextprototype.drawimage = function(image, var_args) {
var dx,
dy,
dw,
dh,
sx,
sy,
sw,
sh;
var oldruntimewidth = image.runtimestyle.width;
var oldruntimeheight = image.runtimestyle.height;
image.runtimestyle.width = 'auto';
image.runtimestyle.height = 'auto';
var w = image.width;
var h = image.height;
image.runtimestyle.width = oldruntimewidth;
image.runtimestyle.height = oldruntimeheight;
if (arguments.length == 3) {
dx = arguments[1];
dy = arguments[2];
sx = sy = 0;
sw = dw = w;
sh = dh = h
} else if (arguments.length == 5) {
dx = arguments[1];
dy = arguments[2];
dw = arguments[3];
dh = arguments[4];
sx = sy = 0;
sw = w;
sh = h
} else if (arguments.length == 9) {
sx = arguments[1];
sy = arguments[2];
sw = arguments[3];
sh = arguments[4];
dx = arguments[5];
dy = arguments[6];
dw = arguments[7];
dh = arguments[8]
} else {
throw error('invalid number of arguments')
}
var d = this.getcoords_(dx, dy);
var w2 = sw / 2;
var h2 = sh / 2;
var vmlstr = [];
var w = 10;
var h = 10;
vmlstr.push('
', '', '');
this.element_.insertadjacenthtml('beforeend', vmlstr.join(''))
};
contextprototype.stroke = function(afill) {
var linestr = [];
var lineopen = false;
var w = 10;
var h = 10;
linestr.push('
');
if (!afill) {
appendstroke(this, linestr)
} else {
appendfill(this, linestr, min, max)
}
linestr.push('');
this.element_.insertadjacenthtml('beforeend', linestr.join(''))
};
function appendstroke(ctx, linestr) {
var a = processstyle(ctx.strokestyle);
var color = a.color;
var opacity = a.alpha * ctx.globalalpha;
var linewidth = ctx.linescale_ * ctx.linewidth;
if (linewidth < 1) {
opacity *= linewidth
}
linestr.push('
')
}
function appendfill(ctx, linestr, min, max) {
var fillstyle = ctx.fillstyle;
var arcscalex = ctx.arcscalex_;
var arcscaley = ctx.arcscaley_;
var width = max.x - min.x;
var height = max.y - min.y;
if (fillstyle instanceof canvasgradient_) {
var angle = 0;
var focus = {
x: 0,
y: 0
};
var shift = 0;
var expansion = 1;
if (fillstyle.type_ == 'gradient') {
var x0 = fillstyle.x0_ / arcscalex;
var y0 = fillstyle.y0_ / arcscaley;
var x1 = fillstyle.x1_ / arcscalex;
var y1 = fillstyle.y1_ / arcscaley;
var p0 = ctx.getcoords_(x0, y0);
var p1 = ctx.getcoords_(x1, y1);
var dx = p1.x - p0.x;
var dy = p1.y - p0.y;
angle = math.atan2(dx, dy) * 180 / math.pi;
if (angle < 0) {
angle += 360
}
if (angle < 1*e - 6) {
angle = 0
}
} else {
var p0 = ctx.getcoords_(fillstyle.x0_, fillstyle.y0_);
focus = {
x: (p0.x - min.x) / width,
y: (p0.y - min.y) / height
};
width /= arcscalex * z;
height /= arcscaley * z;
var dimension = m.max(width, height);
shift = 2 * fillstyle.r0_ / dimension;
expansion = 2 * fillstyle.r1_ / dimension - shift
}
var stops = fillstyle.colors_;
stops.sort(function(cs1, cs2) {
return cs1.offset - cs2.offset
});
var length = stops.length;
var color1 = stops[0].color;
var color2 = stops[length - 1].color;
var opacity1 = stops[0].alpha * ctx.globalalpha;
var opacity2 = stops[length - 1].alpha * ctx.globalalpha;
var colors = [];
for (var i = 0; i < length; i++) {
var stop = stops[i];
colors.push(stop.offset * expansion + shift + ' ' + stop.color)
}
linestr.push('
')
} else if (fillstyle instanceof canvaspattern_) {
if (width && height) {
var deltaleft = -min.x;
var deltatop = -min.y;
linestr.push('
')
}
} else {
var a = processstyle(ctx.fillstyle);
var color = a.color;
var opacity = a.alpha * ctx.globalalpha;
linestr.push('
')
}
}
contextprototype.fill = function() {
this.stroke(true)
};
contextprototype.closepath = function() {
this.currentpath_.push({
type: 'close'
})
};
contextprototype.getcoords_ = function(ax, ay) {
var m = this.m_;
return {
x: z * (ax * m[0][0] + ay * m[1][0] + m[2][0]) - z2,
y: z * (ax * m[0][1] + ay * m[1][1] + m[2][1]) - z2
}
};
contextprototype.save = function() {
var o = {};
copystate(this, o);
this.astack_.push(o);
this.mstack_.push(this.m_);
this.m_ = matrixmultiply(creatematrixidentity(), this.m_)
};
contextprototype.restore = function() {
if (this.astack_.length) {
copystate(this.astack_.pop(), this);
this.m_ = this.mstack_.pop()
}
};
function matrixisfinite(m) {
return isfinite(m[0][0]) && isfinite(m[0][1]) && isfinite(m[1][0]) && isfinite(m[1][1]) && isfinite(m[2][0]) && isfinite(m[2][1])
}
function setm(ctx, m, updatelinescale) {
if (!matrixisfinite(m)) {
return
}
ctx.m_ = m;
if (updatelinescale) {
var det = m[0][0] * m[1][1] - m[0][1] * m[1][0];
ctx.linescale_ = sqrt(abs(det))
}
}
contextprototype.translate = function(ax, ay) {
var m1 = [[1, 0, 0], [0, 1, 0], [ax, ay, 1]];
setm(this, matrixmultiply(m1, this.m_), false)
};
contextprototype.rotate = function(arot) {
var c = mc(arot);
var s = ms(arot);
var m1 = [[c, s, 0], [ - s, c, 0], [0, 0, 1]];
setm(this, matrixmultiply(m1, this.m_), false)
};
contextprototype.scale = function(ax, ay) {
this.arcscalex_ *= ax;
this.arcscaley_ *= ay;
var m1 = [[ax, 0, 0], [0, ay, 0], [0, 0, 1]];
setm(this, matrixmultiply(m1, this.m_), true)
};
contextprototype.transform = function(m11, m12, m21, m22, dx, dy) {
var m1 = [[m11, m12, 0], [m21, m22, 0], [dx, dy, 1]];
setm(this, matrixmultiply(m1, this.m_), true)
};
contextprototype.settransform = function(m11, m12, m21, m22, dx, dy) {
var m = [[m11, m12, 0], [m21, m22, 0], [dx, dy, 1]];
setm(this, m, true)
};
contextprototype.drawtext_ = function(text, x, y, maxwidth, stroke) {
var m = this.m_,
delta = 1000,
left = 0,
right = delta,
offset = {
x: 0,
y: 0
},
linestr = [];
var fontstyle = getcomputedstyle(processfontstyle(this.font), this.element_);
var fontstylestring = buildstyle(fontstyle);
var elementstyle = this.element_.currentstyle;
var textalign = this.textalign.tolowercase();
switch (textalign) {
case 'left':
case 'center':
case 'right':
break;
case 'end':
textalign = elementstyle.direction == 'ltr' ? 'right': 'left';
break;
case 'start':
textalign = elementstyle.direction == 'rtl' ? 'right': 'left';
break;
default:
textalign = 'left'
}
switch (this.textbaseline) {
case 'hanging':
case 'top':
offset.y = fontstyle.size / 1.75;
break;
case 'middle':
break;
default:
case null:
case 'alphabetic':
case 'ideographic':
case 'bottom':
offset.y = -fontstyle.size / 2.25;
break
}
switch (textalign) {
case 'right':
left = delta;
right = 0.05;
break;
case 'center':
left = right = delta / 2;
break
}
var d = this.getcoords_(x + offset.x, y + offset.y);
linestr.push('
');
if (stroke) {
appendstroke(this, linestr)
} else {
appendfill(this, linestr, {
x: -left,
y: 0
},
{
x: right,
y: fontstyle.size
})
}
var skewm = m[0][0].tofixed(3) + ',' + m[1][0].tofixed(3) + ',' + m[0][1].tofixed(3) + ',' + m[1][1].tofixed(3) + ',0,0';
var skewoffset = mr(d.x / z) + ',' + mr(d.y / z);
linestr.push('', '', '');
this.element_.insertadjacenthtml('beforeend', linestr.join(''))
};
contextprototype.filltext = function(text, x, y, maxwidth) {
this.drawtext_(text, x, y, maxwidth, false)
};
contextprototype.stroketext = function(text, x, y, maxwidth) {
this.drawtext_(text, x, y, maxwidth, true)
};
contextprototype.measuretext = function(text) {
if (!this.textmeasureel_) {
var s = '
';
this.element_.insertadjacenthtml('beforeend', s);
this.textmeasureel_ = this.element_.lastchild
}
var doc = this.element_.ownerdocument;
this.textmeasureel_.innerhtml = '';
this.textmeasureel_.style.font = this.font;
this.textmeasureel_.appendchild(doc.createtextnode(text));
return {
width: this.textmeasureel_.offsetwidth
}
};
contextprototype.clip = function() {};
contextprototype.arcto = function() {};
contextprototype.createpattern = function(image, repetition) {
return new canvaspattern_(image, repetition)
};
function canvasgradient_(atype) {
this.type_ = atype;
this.x0_ = 0;
this.y0_ = 0;
this.r0_ = 0;
this.x1_ = 0;
this.y1_ = 0;
this.r1_ = 0;
this.colors_ = []
}
canvasgradient_.prototype.addcolorstop = function(aoffset, acolor) {
acolor = processstyle(acolor);
this.colors_.push({
offset: aoffset,
color: acolor.color,
alpha: acolor.alpha
})
};
function canvaspattern_(image, repetition) {
assertimageisvalid(image);
switch (repetition) {
case 'repeat':
case null:
case '':
this.repetition_ = 'repeat';
break;
case 'repeat-x':
case 'repeat-y':
case 'no-repeat':
this.repetition_ = repetition;
break;
default:
throwexception('syntax_err')
}
this.src_ = image.src;
this.width_ = image.width;
this.height_ = image.height
}
function throwexception(s) {
throw new domexception_(s)
}
function assertimageisvalid(img) {
if (!img || img.nodetype != 1 || img.tagname != 'img') {
throwexception('type_mismatch_err')
}
if (img.readystate != 'complete') {
throwexception('invalid_state_err')
}
}
function domexception_(s) {
this.code = this[s];
this.message = s + ': dom exception ' + this.code
}
var p = domexception_.prototype = new error;
p.index_size_err = 1;
p.domstring_size_err = 2;
p.hierarchy_request_err = 3;
p.wrong_document_err = 4;
p.invalid_character_err = 5;
p.no_data_allowed_err = 6;
p.no_modification_allowed_err = 7;
p.not_found_err = 8;
p.not_supported_err = 9;
p.inuse_attribute_err = 10;
p.invalid_state_err = 11;
p.syntax_err = 12;
p.invalid_modification_err = 13;
p.namespace_err = 14;
p.invalid_access_err = 15;
p.validation_err = 16;
p.type_mismatch_err = 17;
g_vmlcanvasmanager = g_vmlcanvasmanager_;
canvasrenderingcontext2d = canvasrenderingcontext2d_;
canvasgradient = canvasgradient_;
canvaspattern = canvaspattern_;
domexception = domexception_
})()
}
if (/^opera/.test(navigator.useragent.tolowercase())) {
function check_stroketextcapability() {
if (document.namespaces['v'] == null) {
var e = ["shape", "shapetype", "group", "background", "path", "formulas", "handles", "fill", "stroke", "shadow", "textbox", "textpath", "imagedata", "line", "polyline", "curve", "roundrect", "oval", "rect", "arc", "image"],
s = document.createstylesheet();
for (var i = 0; i < e.length; i++) {
s.addrule("v\\:" + e[i], "behavior: url(#default#vml);")
}
document.namespaces.add("v", "urn:schemas-microsoft-com:vml", "#default#vml")
}
if (typeof get_stroketext == 'function' && document.namespaces['v'] != null) {
return true
} else {
return false
}
}
function get_boundingbox(x, y, baseline, lineheight, linewidth, weight, color, opacity, rotation) {
rotation = typeof(rotation) != 'undefined' ? rotation: 0;
color = typeof(color) != 'undefined' ? color: '#000000';
opacity = typeof(opacity) != 'undefined' ? opacity: 1;
id = typeof(id) != 'undefined' ? 'id="' + id + '"': '';
var w = parseint(linewidth),
b = parseint(baseline),
h = parseint(lineheight);
return '
'
}
function get_stroketext(string, x, y, size, weight, width, space, font, color, opacity, rotation, id) {
function qc(cx, cy, cpx, cpy, ax, ay) {
var t = new array(6);
t[0] = cx + 2.0 / 3.0 * (cpx - cx);
t[1] = cy + 2.0 / 3.0 * (cpy - cy);
t[2] = t[0] + (ax - cx) / 3.0;
t[3] = t[1] + (ay - cy) / 3.0;
t[4] = ax;
t[5] = ay;
return t
}
size = typeof(size) != 'undefined' ? size: 12;
weight = typeof(weight) != 'undefined' ? weight: 100;
width = 100;
space = 100;
font = "sans-serif";
string = typeof(string) != 'undefined' ? string: ' ';
var xx = typeof(x) != 'undefined' ? x: 0;
var yy = typeof(y) != 'undefined' ? y: 0;
rotation = typeof(rotation) != 'undefined' ? rotation: 0;
color = typeof(color) != 'undefined' ? color: '#000000';
opacity = typeof(opacity) != 'undefined' ? opacity: 1;
id = typeof(id) != 'undefined' ? 'id="' + id + '"': '';
var i = 0,
j = 0,
f = 10,
path = "",
a,
b,
z,
k,
c,
p,
o,
len = string.length,
mag = size / 25.0,
fac = math.max(math.min(weight, 400), 1) / 40,
faw = math.max(math.min(width, 400), 10) / 100;
var spc = math.max(math.min(space, 1000), 10) / 100,
mx = ((mag * 16 * faw) * spc) - (mag * 16 * faw),
lw = (fac * mag);
x = 0;
y = size;
var ww = math.round(get_textwidth(string, size, width, space, font)),
hh = math.round(get_textheight(size));
var out = '
';
return out
}
function get_baseline(size) {
return size
}
function get_textheight(size) {
size = typeof(size) != 'undefined' ? size: 12;
return 32 * (size / 25)
}
function get_textwidth(string, size, width, space, font) {
size = typeof(size) != 'undefined' ? size: 12;
width = 100;
space = 100;
string = typeof(string) != 'undefined' ? string: ' ';
font = "sans-serif";
var total = 0,
len = string.length,
mg = size / 25.0,
fw = math.max(math.min(width, 400), 10) / 100,
sp = math.max(math.min(space, 1000), 10) / 100,
m = ((mg * 16 * fw) * sp) - (mg * 16 * fw);
for (var i = 0; i < len; i++) {
var c = strokefont[font][string.charat(i)];
if (c) total += ((c.w * fw) * mg) + m
}
return total - (m)
}
function get_widthtext(string, width, size, fontwidth, space, font) {
size = typeof(size) != 'undefined' ? size: 12;
fontwidth = typeof(fontwidth) != 'undefined' ? fontwidth: 100;
space = 100;
string = typeof(string) != 'undefined' ? string: ' ';
width = 100;
font = "sans-serif";
var cur = 0,
total = 0,
len = string.length,
mg = size / 25.0,
fw = math.max(math.min(fontwidth, 400), 10) / 100,
sp = math.max(math.min(space, 1000), 10) / 100,
m = ((mg * 16 * fw) * sp) - (mg * 16 * fw);
for (var i = 0; i < len; i++) {
var c = strokefont[font][string.charat(i)];
if (c) {
cur = ((c.w * fw) * mg) + m;
if ((total + cur - (m)) <= width) {
total += cur
} else {
break
}
} else {
break
}
}
return string.substring(0, i)
}
function draw_boundingbox(ctx, x, y, baseline, lineheight, linewidth) {
ctx.strokerect(x, y + baseline, linewidth, lineheight - baseline);
ctx.strokerect(x, y, linewidth, baseline)
}
function do_drawtext(string, x, y, size, weight, width, space, font) {
size = typeof(size) != 'undefined' ? size: 12;
weight = typeof(weight) != 'undefined' ? weight: 100;
width = 100;
space = 100;
font = "sans-serif";
x = typeof(x) != 'undefined' ? x: 0;
y = typeof(y) != 'undefined' ? y + size: 0 + size;
string = typeof(string) != 'undefined' ? string: ' ';
var i = 0,
j = 0,
a,
b,
z,
c,
p,
o,
len = string.length,
mag = size / 25.0,
fac = math.max(math.min(weight, 400), 1) / 40,
faw = math.max(math.min(width, 400), 10) / 100;
var spc = math.max(math.min(space, 1000), 10) / 100,
mx = ((mag * 16 * faw) * spc) - (mag * 16 * faw),
lw = this.linewidth,
ml = this.miterlimit,
lj = this.linejoin,
lc = this.linecap;
this.linewidth = (fac * mag);
this.miterlimit = 0;
this.linejoin = "round";
this.linecap = "round";
for (i = 0; i < len; i++) {
c = strokefont[font][string.charat(i)];
if (!c) {
continue
}
o = 0;
this.beginpath();
for (j = 0; j < c.n; j++) {
if (typeof(c.d[o]) != "string") {
o++;
continue
}
p = c.d[o];
o++;
a = c.d[o];
if (p == "m") {
this.moveto(x + a[0] * mag * faw, y - a[1] * mag);
o++
} else if (p == "q") {
o++;
b = c.d[o];
this.quadraticcurveto(x + a[0] * mag * faw, y - a[1] * mag, x + b[0] * mag * faw, y - b[1] * mag);
o++
} else if (p == "b") {
o++;
b = c.d[o];
o++;
z = c.d[o];
this.beziercurveto(x + a[0] * mag * faw, y - a[1] * mag, x + b[0] * mag * faw, y - b[1] * mag, x + z[0] * mag * faw, y - z[1] * mag);
o++
} else if (p == "l") {
this.lineto(x + a[0] * mag * faw, y - a[1] * mag);
o++;
while (typeof(c.d[o]) != "string" && o < c.d.length) {
a = c.d[o];
this.lineto(x + a[0] * mag * faw, y - a[1] * mag);
o++
}
}
}
this.stroke();
x += ((c.w * faw) * mag) + mx
}
this.linewidth = lw;
this.miterlimit = ml;
this.linejoin = lj;
this.linecap = lc
}
function set_textrendercontext(ctx) {
if (typeof canvasrenderingcontext2d == 'undefined') {
ctx.stroketext = do_drawtext
}
}
function check_textrendercontext(ctx) {
if (typeof ctx.stroketext == 'function') {
return true
} else {
return false
}
}
if (typeof canvasrenderingcontext2d != 'undefined') {
canvasrenderingcontext2d.prototype.stroketext = do_drawtext
}
strokefont = new array();
strokefont["sans-serif"] = {
' ': {
w: 16,
n: 1,
d: []
},
'!': {
w: 10,
n: 4,
d: ['m', [5, 21], 'l', [5, 7], 'm', [5, 2], 'l', [4, 1], [5, 0], [6, 1], [5, 2]]
},
'"': {
w: 14,
n: 4,
d: ['m', [4, 21], 'l', [4, 14], 'm', [10, 21], 'l', [10, 14]]
},
'#': {
w: 21,
n: 8,
d: ['m', [11, 25], 'l', [4, -7], 'm', [17, 25], 'l', [10, -7], 'm', [4, 12], 'l', [18, 12], 'm', [3, 6], 'l', [17, 6]]
},
'$': {
w: 20,
n: 12,
d: ['m', [16, 18], 'q', [15, 21], [10, 21], 'q', [5, 21], [4, 17], 'q', [3, 12], [7, 11], 'l', [13, 10], 'q', [18, 9], [17, 4], 'q', [16, 0], [10, 0], 'q', [4, 0], [3, 4], 'm', [8, 25], 'l', [6, -4], 'm', [14, 25], 'l', [12, -4]]
},
'%': {
w: 24,
n: 12,
d: ['m', [21, 21], 'l', [3, 0], 'm', [7, 21], 'q', [3, 21], [3, 17], 'q', [3, 13], [7, 13], 'q', [11, 13], [11, 17], 'q', [11, 21], [7, 21], 'm', [17, 8], 'q', [13, 8], [13, 4], 'q', [13, 0], [17, 0], 'q', [21, 0], [21, 4], 'q', [21, 8], [17, 8]]
},
'&': {
w: 26,
n: 14,
d: ['m', [23, 12], 'q', [23, 14], [22, 14], 'q', [20, 14], [19, 11], 'l', [17, 6], 'q', [15, 0], [9, 0], 'q', [3, 0], [3, 5], 'q', [3, 8], [7, 10], 'l', [12, 13], 'q', [14, 15], [14, 17], 'q', [14, 21], [11, 21], 'q', [8, 21], [8, 17], 'q', [8, 14], [12, 8], 'q', [17, 0], [21, 0], 'q', [23, 0], [23, 2]]
},
'\'': {
w: 10,
n: 2,
d: ['m', [5, 19], 'l', [4, 20], [5, 21], [6, 20], [6, 18], [5, 16], [4, 15]]
},
'(': {
w: 14,
n: 3,
d: ['m', [11, 25], 'q', [4, 19], [4, 9], 'q', [4, -1], [11, -7]]
},
')': {
w: 14,
n: 3,
d: ['m', [3, 25], 'q', [10, 19], [10, 9], 'q', [10, -1], [3, -7]]
},
'*': {
w: 16,
n: 6,
d: ['m', [8, 21], 'l', [8, 9], 'm', [3, 18], 'l', [13, 12], 'm', [13, 18], 'l', [3, 12]]
},
'+': {
w: 26,
n: 4,
d: ['m', [13, 18], 'l', [13, 0], 'm', [4, 9], 'l', [22, 9]]
},
',': {
w: 10,
n: 2,
d: ['m', [6, 1], 'l', [5, 0], [4, 1], [5, 2], [6, 1], [6, -1], [5, -3], [4, -4]]
},
'-': {
w: 26,
n: 2,
d: ['m', [4, 9], 'l', [22, 9]]
},
'.': {
w: 10,
n: 2,
d: ['m', [5, 2], 'l', [4, 1], [5, 0], [6, 1], [5, 2]]
},
'/': {
w: 22,
n: 2,
d: ['m', [20, 25], 'l', [2, -7]]
},
'0': {
w: 20,
n: 7,
d: ['m', [10, 21], 'q', [3, 21], [3, 12], 'l', [3, 9], 'q', [3, 0], [10, 0], 'q', [17, 0], [17, 9], 'l', [17, 12], 'q', [17, 21], [10, 21]]
},
'1': {
w: 20,
n: 3,
d: ['m', [6, 17], 'q', [8, 18], [11, 21], 'l', [11, 0]]
},
'2': {
w: 20,
n: 5,
d: ['m', [17, 0], 'l', [3, 0], [13, 10], 'q', [16, 13], [16, 16], 'q', [16, 21], [10, 21], 'q', [4, 21], [4, 16]]
},
'3': {
w: 20,
n: 5,
d: ['m', [5, 21], 'l', [16, 21], [10, 14], 'q', [17, 14], [17, 7], 'q', [17, 0], [10, 0], 'q', [5, 0], [3, 4]]
},
'4': {
w: 20,
n: 2,
d: ['m', [13, 0], 'l', [13, 21], [3, 7], [18, 7]]
},
'5': {
w: 20,
n: 6,
d: ['m', [15, 21], 'l', [5, 21], [4, 12], 'q', [5, 14], [10, 14], 'q', [17, 14], [17, 7], 'q', [17, 0], [10, 0], 'q', [5, 0], [3, 4]]
},
'6': {
w: 20,
n: 8,
d: ['m', [16, 18], 'q', [15, 21], [10, 21], 'q', [3, 21], [3, 12], 'l', [3, 7], 'q', [3, 0], [10, 0], 'q', [17, 0], [17, 7], 'q', [17, 13], [10, 13], 'q', [3, 13], [3, 7]]
},
'7': {
w: 20,
n: 2,
d: ['m', [3, 21], 'l', [17, 21], [7, 0]]
},
'8': {
w: 20,
n: 9,
d: ['m', [10, 13], 'q', [15, 13], [15, 17], 'q', [15, 21], [10, 21], 'q', [5, 21], [5, 17], 'q', [5, 13], [10, 13], 'q', [3, 13], [3, 7], 'q', [3, 0], [10, 0], 'q', [17, 0], [17, 7], 'q', [17, 13], [10, 13]]
},
'9': {
w: 20,
n: 8,
d: ['m', [17, 14], 'q', [17, 8], [10, 8], 'q', [3, 8], [3, 14], 'q', [3, 21], [10, 21], 'q', [17, 21], [17, 14], 'l', [17, 9], 'q', [17, 0], [10, 0], 'q', [5, 0], [4, 3]]
},
':': {
w: 10,
n: 4,
d: ['m', [5, 14], 'l', [4, 13], [5, 12], [6, 13], [5, 14], 'm', [5, 2], 'l', [4, 1], [5, 0], [6, 1], [5, 2]]
},
';': {
w: 10,
n: 4,
d: ['m', [5, 14], 'l', [4, 13], [5, 12], [6, 13], [5, 14], 'm', [6, 1], 'l', [5, 0], [4, 1], [5, 2], [6, 1], [6, -1], [5, -3], [4, -4]]
},
'<': {
w: 24,
n: 2,
d: ['m', [20, 18], 'l', [4, 9], [20, 0]]
},
'=': {
w: 26,
n: 4,
d: ['m', [4, 12], 'l', [22, 12], 'm', [4, 6], 'l', [22, 6]]
},
'>': {
w: 24,
n: 2,
d: ['m', [4, 18], 'l', [20, 9], [4, 0]]
},
'?': {
w: 18,
n: 8,
d: ['m', [3, 16], 'q', [3, 21], [9, 21], 'q', [15, 21], [15, 16], 'q', [15, 11], [10, 11], 'q', [9, 11], [9, 10], 'l', [9, 7], 'm', [9, 2], 'l', [8, 1], [9, 0], [10, 1], [9, 2]]
},
'@': {
w: 27,
n: 17,
d: ['m', [21, 3], 'q', [20, 1], [14, 0], 'l', [13, 0], 'q', [4, 1], [3, 10], 'l', [3, 11], 'q', [4, 20], [13, 21], 'l', [14, 21], 'q', [23, 20], [24, 11], 'l', [24, 10], 'q', [24, 6], [20, 6], 'q', [17, 6], [18, 10], 'q', [18, 6], [13, 6], 'q', [8, 6], [9, 11], 'q', [10, 15], [14, 15], 'q', [19, 15], [18, 10], 'm', [18, 10], 'l', [19, 14]]
},
'a': {
w: 18,
n: 6,
d: ['m', [1, 0], 'l', [9, 21], [17, 0], 'm', [4, 7], 'l', [14, 7]]
},
'b': {
w: 21,
n: 9,
d: ['m', [4, 11], 'l', [12, 11], 'm', [13, 0], 'l', [4, 0], [4, 21], [12, 21], 'q', [17, 21], [17, 16], 'q', [17, 11], [12, 11], 'q', [18, 11], [18, 6], 'l', [18, 5], 'q', [18, 0], [13, 0]]
},
'c': {
w: 21,
n: 7,
d: ['m', [11, 21], 'q', [17, 21], [18, 16], 'm', [18, 5], 'q', [17, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'd': {
w: 21,
n: 5,
d: ['m', [11, 0], 'l', [4, 0], [4, 21], [11, 21], 'q', [18, 21], [18, 12], 'l', [18, 9], 'q', [18, 0], [11, 0]]
},
'e': {
w: 19,
n: 4,
d: ['m', [17, 21], 'l', [4, 21], [4, 0], [17, 0], 'm', [4, 11], 'l', [12, 11]]
},
'f': {
w: 18,
n: 4,
d: ['m', [17, 21], 'l', [4, 21], [4, 0], 'm', [4, 11], 'l', [12, 11]]
},
'g': {
w: 21,
n: 8,
d: ['m', [11, 21], 'q', [17, 21], [18, 16], 'm', [13, 8], 'l', [18, 8], [18, 5], 'q', [17, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'h': {
w: 22,
n: 6,
d: ['m', [4, 21], 'l', [4, 0], 'm', [18, 21], 'l', [18, 0], 'm', [4, 11], 'l', [18, 11]]
},
'i': {
w: 8,
n: 2,
d: ['m', [4, 21], 'l', [4, 0]]
},
'j': {
w: 16,
n: 5,
d: ['m', [12, 21], 'l', [12, 5], 'q', [12, 0], [7, 0], 'q', [2, 0], [2, 5], 'l', [2, 7]]
},
'k': {
w: 21,
n: 6,
d: ['m', [4, 21], 'l', [4, 0], 'm', [18, 21], 'l', [4, 7], 'm', [9, 12], 'l', [18, 0]]
},
'l': {
w: 17,
n: 2,
d: ['m', [4, 21], 'l', [4, 0], [16, 0]]
},
'm': {
w: 24,
n: 2,
d: ['m', [4, 0], 'l', [4, 21], [12, 0], [20, 21], [20, 0]]
},
'n': {
w: 22,
n: 2,
d: ['m', [4, 0], 'l', [4, 21], [18, 0], [18, 21]]
},
'o': {
w: 22,
n: 7,
d: ['m', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'p': {
w: 21,
n: 6,
d: ['m', [4, 10], 'l', [13, 10], 'q', [18, 10], [18, 15], 'l', [18, 16], 'q', [18, 21], [13, 21], 'l', [4, 21], [4, 0]]
},
'q': {
w: 22,
n: 9,
d: ['m', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21], 'm', [12, 4], 'l', [18, -2]]
},
'r': {
w: 21,
n: 8,
d: ['m', [4, 10], 'l', [13, 10], 'q', [18, 10], [18, 15], 'l', [18, 16], 'q', [18, 21], [13, 21], 'l', [4, 21], [4, 0], 'm', [13, 10], 'l', [18, 0]]
},
's': {
w: 20,
n: 8,
d: ['m', [16, 18], 'q', [15, 21], [10, 21], 'q', [5, 21], [4, 17], 'q', [3, 12], [7, 11], 'l', [13, 10], 'q', [18, 9], [17, 4], 'q', [16, 0], [10, 0], 'q', [4, 0], [3, 4]]
},
't': {
w: 16,
n: 4,
d: ['m', [8, 21], 'l', [8, 0], 'm', [1, 21], 'l', [15, 21]]
},
'u': {
w: 22,
n: 5,
d: ['m', [4, 21], 'l', [4, 6], 'q', [4, 0], [11, 0], 'q', [18, 0], [18, 6], 'l', [18, 21]]
},
'v': {
w: 18,
n: 2,
d: ['m', [1, 21], 'l', [9, 0], [17, 21]]
},
'w': {
w: 24,
n: 2,
d: ['m', [2, 21], 'l', [7, 0], [12, 21], [17, 0], [22, 21]]
},
'x': {
w: 20,
n: 4,
d: ['m', [3, 21], 'l', [17, 0], 'm', [17, 21], 'l', [3, 0]]
},
'y': {
w: 18,
n: 4,
d: ['m', [1, 21], 'l', [9, 11], [17, 21], 'm', [9, 11], 'l', [9, 0]]
},
'z': {
w: 20,
n: 2,
d: ['m', [3, 21], 'l', [17, 21], [3, 0], [17, 0]]
},
'[': {
w: 14,
n: 2,
d: ['m', [11, 25], 'l', [4, 25], [4, -7], [11, -7]]
},
'\\': {
w: 14,
n: 2,
d: ['m', [0, 21], 'l', [14, -3]]
},
']': {
w: 14,
n: 2,
d: ['m', [3, 25], 'l', [10, 25], [10, -7], [3, -7]]
},
'^': {
w: 16,
n: 2,
d: ['m', [3, 16], 'l', [8, 21], [13, 16]]
},
'_': {
w: 16,
n: 2,
d: ['m', [0, -2], 'l', [16, -2]]
},
'`': {
w: 10,
n: 2,
d: ['m', [6, 21], 'l', [5, 20], [4, 18], [4, 16], [5, 15], [6, 16], [5, 17]]
},
'a': {
w: 19,
n: 10,
d: ['m', [15, 14], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'b': {
w: 19,
n: 10,
d: ['m', [4, 21], 'l', [4, 0], 'm', [10, 14], 'l', [9, 14], 'q', [6, 14], [4, 12], 'm', [4, 2], 'q', [6, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'c': {
w: 18,
n: 10,
d: ['m', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [15, 11], 'q', [14, 14], [10, 14]]
},
'd': {
w: 19,
n: 10,
d: ['m', [15, 21], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'e': {
w: 18,
n: 8,
d: ['m', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [3, 8], 'l', [15, 8], 'q', [15, 14], [9, 14]]
},
'f': {
w: 12,
n: 5,
d: ['m', [10, 21], 'q', [5, 21], [5, 17], 'l', [5, 0], 'm', [2, 14], 'l', [9, 14]]
},
'g': {
w: 19,
n: 12,
d: ['m', [15, 14], 'l', [15, -2], 'q', [15, -7], [10, -7], 'q', [7, -7], [6, -6], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'h': {
w: 19,
n: 6,
d: ['m', [4, 21], 'l', [4, 0], 'm', [4, 10], 'q', [6, 14], [11, 14], 'q', [15, 14], [15, 10], 'l', [15, 0]]
},
'i': {
w: 8,
n: 4,
d: ['m', [3, 21], 'l', [4, 20], [5, 21], [4, 22], [3, 21], 'm', [4, 14], 'l', [4, 0]]
},
'j': {
w: 10,
n: 5,
d: ['m', [5, 21], 'l', [6, 20], [7, 21], [6, 22], [5, 21], 'm', [6, 14], 'l', [6, -3], 'q', [6, -8], [1, -7]]
},
'k': {
w: 17,
n: 6,
d: ['m', [4, 21], 'l', [4, 0], 'm', [14, 14], 'l', [4, 4], 'm', [8, 8], 'l', [15, 0]]
},
'l': {
w: 8,
n: 2,
d: ['m', [4, 21], 'l', [4, 0]]
},
'm': {
w: 26,
n: 10,
d: ['m', [4, 14], 'l', [4, 0], 'm', [4, 10], 'q', [6, 14], [10, 14], 'q', [13, 14], [13, 10], 'l', [13, 0], 'm', [13, 10], 'q', [15, 14], [19, 14], 'q', [22, 14], [22, 10], 'l', [22, 0]]
},
'n': {
w: 19,
n: 6,
d: ['m', [4, 14], 'l', [4, 0], 'm', [4, 10], 'q', [6, 14], [11, 14], 'q', [15, 14], [15, 10], 'l', [15, 0]]
},
'o': {
w: 19,
n: 7,
d: ['m', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'p': {
w: 19,
n: 10,
d: ['m', [4, 14], 'l', [4, -7], 'm', [10, 14], 'l', [9, 14], 'q', [6, 14], [4, 12], 'm', [4, 2], 'q', [6, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'q': {
w: 19,
n: 10,
d: ['m', [15, 14], 'l', [15, -7], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'r': {
w: 13,
n: 4,
d: ['m', [4, 14], 'l', [4, 0], 'm', [4, 8], 'q', [5, 14], [12, 14]]
},
's': {
w: 16,
n: 7,
d: ['m', [13, 11], 'q', [13, 14], [8, 14], 'q', [3, 14], [3, 11], 'q', [3, 8], [8, 7], 'q', [13, 6], [13, 3], 'q', [13, 0], [8, 0], 'q', [3, 0], [3, 3]]
},
't': {
w: 12,
n: 5,
d: ['m', [5, 21], 'l', [5, 4], 'q', [5, -1], [10, 0], 'm', [2, 14], 'l', [9, 14]]
},
'u': {
w: 19,
n: 6,
d: ['m', [4, 14], 'l', [4, 4], 'q', [4, 0], [8, 0], 'q', [13, 0], [15, 4], 'm', [15, 14], 'l', [15, 0]]
},
'v': {
w: 16,
n: 2,
d: ['m', [2, 14], 'l', [8, 0], [14, 14]]
},
'w': {
w: 22,
n: 2,
d: ['m', [3, 14], 'l', [7, 0], [11, 14], [15, 0], [19, 14]]
},
'x': {
w: 17,
n: 4,
d: ['m', [3, 14], 'l', [14, 0], 'm', [14, 14], 'l', [3, 0]]
},
'y': {
w: 16,
n: 5,
d: ['m', [2, 14], 'l', [8, 0], 'm', [14, 14], 'l', [8, 0], 'q', [5, -7], [1, -7]]
},
'z': {
w: 17,
n: 2,
d: ['m', [3, 14], 'l', [14, 14], [3, 0], [14, 0]]
},
'{': {
w: 14,
n: 9,
d: ['m', [9, 25], 'q', [5, 24], [5, 20], 'q', [5, 17], [7, 16], 'q', [9, 15], [8, 12], 'q', [7, 9], [4, 9], 'q', [7, 9], [8, 6], 'q', [9, 3], [7, 2], 'q', [5, 1], [5, -2], 'q', [5, -6], [9, -7]]
},
'|': {
w: 8,
n: 2,
d: ['m', [4, 25], 'l', [4, -7]]
},
'}': {
w: 14,
n: 9,
d: ['m', [5, 25], 'q', [9, 24], [9, 20], 'q', [9, 17], [7, 16], 'q', [5, 15], [6, 12], 'q', [7, 9], [10, 9], 'q', [7, 9], [6, 6], 'q', [5, 3], [7, 2], 'q', [9, 1], [9, -2], 'q', [9, -6], [5, -7]]
},
'~': {
w: 24,
n: 4,
d: ['m', [3, 6], 'q', [3, 12], [10, 10], 'l', [14, 8], 'q', [21, 4], [21, 10]]
},
'': {
w: 16,
n: 1,
d: []
},
'': {
w: 10,
n: 4,
d: ['m', [5, 10], 'l', [5, -4], 'm', [5, 17], 'l', [4, 16], [5, 15], [6, 16], [5, 17]]
},
'': {
w: 18,
n: 14,
d: ['m', [9, 14], 'l', [9, 18], 'm', [9, 0], 'l', [9, -4], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [15, 11], 'q', [14, 14], [10, 14]]
},
'': {
w: 18,
n: 8,
d: ['m', [4, 11], 'l', [13, 11], 'm', [16, 18], 'q', [15, 21], [11, 21], 'q', [5, 21], [6, 16], 'q', [7, 8], [6, 2], 'q', [5, 0], [4, 0], 'l', [16, 0]]
},
'': {
w: 19,
n: 13,
d: ['m', [15, 3], 'l', [17, 1], 'm', [15, 13], 'l', [17, 15], 'm', [5, 3], 'l', [3, 1], 'm', [5, 13], 'l', [3, 15], 'm', [10, 14], 'q', [4, 14], [4, 8], 'q', [4, 2], [10, 2], 'q', [16, 2], [16, 8], 'q', [16, 14], [10, 14]]
},
'': {
w: 18,
n: 8,
d: ['m', [4, 7], 'l', [14, 7], 'm', [4, 11], 'l', [14, 11], 'm', [1, 21], 'l', [9, 11], [17, 21], 'm', [9, 11], 'l', [9, 0]]
},
'': {
w: 8,
n: 4,
d: ['m', [4, 25], 'l', [4, 12], 'm', [4, 6], 'l', [4, -7]]
},
'': {
w: 20,
n: 12,
d: ['m', [16, 18], 'q', [16, 21], [10, 21], 'q', [4, 21], [4, 18], 'q', [4, 15], [10, 14], 'q', [16, 13], [16, 10], 'q', [16, 6], [10, 7], 'm', [10, 14], 'q', [4, 15], [4, 11], 'q', [4, 8], [10, 7], 'q', [16, 6], [16, 3], 'q', [16, 0], [10, 0], 'q', [4, 0], [4, 3]]
},
'': {
w: 16,
n: 4,
d: ['m', [4, 25], 'l', [4, 23], 'm', [12, 25], 'l', [12, 23]]
},
'': {
w: 27,
n: 15,
d: ['m', [18, 13], 'q', [17, 15], [14, 15], 'q', [9, 15], [9, 11], 'l', [9, 10], 'q', [9, 6], [14, 6], 'q', [17, 6], [18, 8], 'm', [24, 10], 'q', [24, 0], [14, 0], 'l', [13, 0], 'q', [3, 0], [3, 10], 'l', [3, 11], 'q', [3, 21], [13, 21], 'l', [14, 21], 'q', [24, 21], [24, 11], 'l', [24, 10]]
},
'': {
w: 14,
n: 9,
d: ['m', [4, 12], 'l', [10, 12], 'm', [10, 21], 'l', [10, 15], 'm', [4, 18], 'q', [4, 15], [7, 15], 'q', [10, 15], [10, 18], 'q', [10, 21], [7, 21], 'q', [4, 21], [4, 18]]
},
'': {
w: 24,
n: 4,
d: ['m', [12, 16], 'l', [3, 9], [12, 2], 'm', [21, 16], 'l', [12, 9], [21, 2]]
},
'': {
w: 22,
n: 2,
d: ['m', [4, 12], 'l', [18, 12], [18, 8]]
},
'': {
w: 22,
n: 2,
d: ['m', [4, 9], 'l', [18, 9]]
},
'': {
w: 27,
n: 17,
d: ['m', [9, 6], 'l', [9, 15], [16, 15], 'm', [9, 10], 'l', [16, 10], [18, 6], 'm', [16, 10], 'q', [18, 10], [18, 12], 'l', [18, 13], 'q', [18, 15], [16, 15], 'm', [24, 10], 'q', [24, 0], [14, 0], 'l', [13, 0], 'q', [3, 0], [3, 10], 'l', [3, 11], 'q', [3, 21], [13, 21], 'l', [14, 21], 'q', [24, 21], [24, 11], 'l', [24, 10]]
},
'': {
w: 16,
n: 2,
d: ['m', [0, 24], 'l', [16, 24]]
},
'': {
w: 10,
n: 5,
d: ['m', [3, 23], 'q', [3, 21], [5, 21], 'q', [7, 21], [7, 23], 'q', [7, 25], [5, 25], 'q', [3, 25], [3, 23]]
},
'': {
w: 22,
n: 6,
d: ['m', [11, 18], 'l', [11, 6], 'm', [4, 12], 'l', [18, 12], 'm', [4, 2], 'l', [18, 2]]
},
'': {
w: 14,
n: 6,
d: ['m', [10, 11], 'l', [4, 11], 'q', [4, 15], [7, 15], 'q', [10, 15], [10, 18], 'q', [10, 21], [7, 21], 'q', [4, 21], [4, 18]]
},
'': {
w: 14,
n: 5,
d: ['m', [4, 14], 'q', [4, 11], [7, 11], 'q', [10, 11], [10, 14], 'q', [10, 17], [7, 17], 'l', [10, 21], [4, 21]]
},
'': {
w: 19,
n: 2,
d: ['m', [9, 18], 'l', [12, 20]]
},
'': {
w: 19,
n: 7,
d: ['m', [4, 14], 'l', [4, -6], 'm', [4, 4], 'q', [4, 0], [8, 0], 'q', [13, 0], [15, 4], 'm', [15, 14], 'l', [15, 0]]
},
'': {
w: 18,
n: 5,
d: ['m', [8, 11], 'q', [3, 11], [3, 16], 'q', [3, 21], [9, 21], 'm', [9, 0], 'l', [9, 21], [15, 21], [15, 0]]
},
'': {
w: 10,
n: 2,
d: ['m', [5, 14], 'l', [4, 13], [5, 12], [6, 13], [5, 14]]
},
'': {
w: 18,
n: 2,
d: ['m', [10, 0], 'l', [10, -2], [7, -4]]
},
'': {
w: 10,
n: 2,
d: ['m', [4, 19], 'l', [6, 21], [6, 11]]
},
'': {
w: 14,
n: 7,
d: ['m', [4, 12], 'l', [10, 12], 'm', [4, 18], 'q', [4, 15], [7, 15], 'q', [10, 15], [10, 18], 'q', [10, 21], [7, 21], 'q', [4, 21], [4, 18]]
},
'': {
w: 24,
n: 4,
d: ['m', [3, 16], 'l', [12, 9], [3, 2], 'm', [12, 16], 'l', [21, 9], [12, 2]]
},
'': {
w: 24,
n: 6,
d: ['m', [4, 19], 'l', [6, 21], [6, 11], 'm', [16, 15], 'l', [6, 5], 'm', [19, 0], 'l', [19, 10], [14, 4], [20, 4]]
},
'': {
w: 24,
n: 10,
d: ['m', [4, 19], 'l', [6, 21], [6, 11], 'm', [16, 15], 'l', [6, 5], 'm', [20, 0], 'l', [14, 0], 'q', [14, 4], [17, 4], 'q', [20, 4], [20, 7], 'q', [20, 10], [17, 10], 'q', [14, 10], [14, 7]]
},
'': {
w: 24,
n: 10,
d: ['m', [4, 14], 'q', [4, 11], [7, 11], 'q', [10, 11], [10, 14], 'q', [10, 17], [7, 17], 'l', [10, 21], [4, 21], 'm', [18, 15], 'l', [8, 5], 'm', [19, 0], 'l', [19, 10], [14, 4], [20, 4]]
},
'': {
w: 18,
n: 7,
d: ['m', [9, 21], 'l', [8, 20], [9, 19], [10, 20], [9, 21], 'm', [9, 14], 'l', [9, 10], 'q', [3, 10], [3, 5], 'q', [3, 0], [9, 0], 'q', [15, 0], [15, 5]]
},
'': {
w: 18,
n: 6,
d: ['m', [7, 25], 'l', [10, 23], 'm', [1, 0], 'l', [9, 21], [17, 0], 'm', [4, 7], 'l', [14, 7]]
},
'': {
w: 18,
n: 6,
d: ['m', [8, 23], 'l', [11, 25], 'm', [1, 0], 'l', [9, 21], [17, 0], 'm', [4, 7], 'l', [14, 7]]
},
'': {
w: 18,
n: 6,
d: ['m', [7, 23], 'l', [9, 25], [11, 23], 'm', [1, 0], 'l', [9, 21], [17, 0], 'm', [4, 7], 'l', [14, 7]]
},
'': {
w: 18,
n: 6,
d: ['m', [6, 23], 'l', [8, 25], [10, 23], [12, 25], 'm', [1, 0], 'l', [9, 21], [17, 0], 'm', [4, 7], 'l', [14, 7]]
},
'': {
w: 18,
n: 10,
d: ['m', [5, 25], 'l', [5, 23], 'm', [13, 25], 'l', [13, 23], 'm', [1, 0], 'l', [9, 21], [17, 0], 'm', [4, 7], 'l', [14, 7]]
},
'': {
w: 18,
n: 10,
d: ['m', [7, 23], 'q', [7, 21], [9, 21], 'q', [11, 21], [11, 23], 'q', [11, 25], [9, 25], 'q', [7, 25], [7, 23], 'm', [1, 0], 'l', [9, 21], [17, 0], 'm', [4, 7], 'l', [14, 7]]
},
'': {
w: 18,
n: 12,
d: ['m', [9, 21], 'l', [1, 0], 'm', [4, 7], 'l', [9, 7], 'm', [9, 21], 'l', [9, 0], 'm', [9, 21], 'l', [17, 21], 'm', [9, 11], 'l', [17, 11], 'm', [9, 0], 'l', [17, 0]]
},
'': {
w: 21,
n: 9,
d: ['m', [11, 0], 'l', [11, -2], [8, -4], 'm', [11, 21], 'q', [17, 21], [18, 16], 'm', [18, 5], 'q', [17, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'': {
w: 19,
n: 8,
d: ['m', [7, 25], 'l', [10, 23], 'm', [17, 21], 'l', [4, 21], [4, 0], [17, 0], 'm', [4, 11], 'l', [12, 11]]
},
'': {
w: 19,
n: 8,
d: ['m', [9, 23], 'l', [12, 25], 'm', [17, 21], 'l', [4, 21], [4, 0], [17, 0], 'm', [4, 11], 'l', [12, 11]]
},
'': {
w: 19,
n: 8,
d: ['m', [8, 23], 'l', [10, 25], [12, 23], 'm', [17, 21], 'l', [4, 21], [4, 0], [17, 0], 'm', [4, 11], 'l', [12, 11]]
},
'': {
w: 19,
n: 10,
d: ['m', [6, 25], 'l', [6, 23], 'm', [15, 25], 'l', [15, 23], 'm', [17, 21], 'l', [4, 21], [4, 0], [17, 0], 'm', [4, 11], 'l', [12, 11]]
},
'': {
w: 8,
n: 4,
d: ['m', [3, 25], 'l', [6, 23], 'm', [4, 21], 'l', [4, 0]]
},
'': {
w: 8,
n: 4,
d: ['m', [2, 23], 'l', [5, 25], 'm', [4, 21], 'l', [4, 0]]
},
'': {
w: 8,
n: 4,
d: ['m', [2, 23], 'l', [4, 25], [6, 23], 'm', [4, 21], 'l', [4, 0]]
},
'': {
w: 8,
n: 6,
d: ['m', [2, 25], 'l', [2, 23], 'm', [6, 25], 'l', [6, 23], 'm', [4, 21], 'l', [4, 0]]
},
'': {
w: 21,
n: 7,
d: ['m', [2, 10], 'l', [11, 10], 'm', [11, 0], 'l', [4, 0], [4, 21], [11, 21], 'q', [18, 21], [18, 12], 'l', [18, 9], 'q', [18, 0], [11, 0]]
},
'': {
w: 22,
n: 4,
d: ['m', [8, 23], 'l', [10, 25], [12, 23], [14, 25], 'm', [4, 0], 'l', [4, 21], [18, 0], [18, 21]]
},
'': {
w: 22,
n: 9,
d: ['m', [8, 25], 'l', [11, 23], 'm', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'': {
w: 22,
n: 9,
d: ['m', [10, 23], 'l', [13, 25], 'm', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'': {
w: 22,
n: 9,
d: ['m', [9, 23], 'l', [11, 25], [13, 23], 'm', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'': {
w: 22,
n: 9,
d: ['m', [8, 23], 'l', [10, 25], [12, 23], [14, 25], 'm', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'': {
w: 22,
n: 13,
d: ['m', [6, 25], 'l', [6, 23], 'm', [16, 25], 'l', [16, 23], 'm', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'': {
w: 12,
n: 4,
d: ['m', [2, 16], 'l', [10, 6], 'm', [10, 16], 'l', [2, 6]]
},
'': {
w: 22,
n: 9,
d: ['m', [3, 1], 'l', [19, 20], 'm', [11, 21], 'q', [19, 21], [19, 12], 'l', [19, 9], 'q', [19, 0], [11, 0], 'q', [3, 0], [3, 9], 'l', [3, 12], 'q', [3, 21], [11, 21]]
},
'': {
w: 22,
n: 7,
d: ['m', [8, 25], 'l', [11, 23], 'm', [4, 21], 'l', [4, 6], 'q', [4, 0], [11, 0], 'q', [18, 0], [18, 6], 'l', [18, 21]]
},
'': {
w: 22,
n: 7,
d: ['m', [10, 23], 'l', [13, 25], 'm', [4, 21], 'l', [4, 6], 'q', [4, 0], [11, 0], 'q', [18, 0], [18, 6], 'l', [18, 21]]
},
'': {
w: 22,
n: 7,
d: ['m', [9, 23], 'l', [11, 25], [13, 23], 'm', [4, 21], 'l', [4, 6], 'q', [4, 0], [11, 0], 'q', [18, 0], [18, 6], 'l', [18, 21]]
},
'': {
w: 22,
n: 9,
d: ['m', [7, 25], 'l', [7, 23], 'm', [15, 25], 'l', [15, 23], 'm', [4, 21], 'l', [4, 6], 'q', [4, 0], [11, 0], 'q', [18, 0], [18, 6], 'l', [18, 21]]
},
'': {
w: 18,
n: 6,
d: ['m', [8, 23], 'l', [11, 25], 'm', [1, 21], 'l', [9, 11], [9, 0], 'm', [17, 21], 'l', [9, 11]]
},
'': {
w: 19,
n: 7,
d: ['m', [4, 18], 'l', [4, -5], 'm', [4, 14], 'l', [9, 14], 'q', [16, 14], [16, 7], 'q', [16, 0], [9, 0], 'l', [4, 0]]
},
'': {
w: 21,
n: 9,
d: ['m', [8, 0], 'l', [11, 0], 'q', [17, 0], [17, 5], 'l', [17, 6], 'q', [17, 10], [11, 12], 'q', [16, 13], [16, 16], 'q', [16, 21], [10, 21], 'q', [4, 21], [4, 16], 'l', [4, 0]]
},
'': {
w: 19,
n: 12,
d: ['m', [7, 20], 'l', [10, 18], 'm', [15, 14], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'': {
w: 19,
n: 12,
d: ['m', [9, 18], 'l', [12, 20], 'm', [15, 14], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'': {
w: 19,
n: 12,
d: ['m', [7, 18], 'l', [9, 20], [11, 18], 'm', [15, 14], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'': {
w: 19,
n: 12,
d: ['m', [7, 18], 'l', [9, 20], [11, 18], [13, 20], 'm', [15, 14], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'': {
w: 19,
n: 14,
d: ['m', [4, 20], 'l', [4, 18], 'm', [15, 20], 'l', [15, 18], 'm', [15, 14], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'': {
w: 19,
n: 15,
d: ['m', [7, 18], 'q', [7, 16], [9, 16], 'q', [11, 16], [11, 18], 'q', [11, 20], [9, 20], 'q', [7, 20], [7, 18], 'm', [15, 14], 'l', [15, 0], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [13, 0], [15, 2], 'm', [15, 12], 'q', [13, 14], [10, 14]]
},
'': {
w: 21,
n: 10,
d: ['m', [11, 14], 'l', [11, 0], 'm', [11, 8], 'l', [18, 8], 'q', [18, 14], [12, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [13, 0], 'q', [17, 0], [18, 3]]
},
'': {
w: 18,
n: 10,
d: ['m', [10, 0], 'l', [10, -2], [7, -4], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [15, 11], 'q', [14, 14], [10, 14]]
},
'': {
w: 18,
n: 10,
d: ['m', [7, 20], 'l', [10, 18], 'm', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [3, 8], 'l', [15, 8], 'q', [15, 14], [9, 14]]
},
'': {
w: 18,
n: 10,
d: ['m', [9, 18], 'l', [12, 20], 'm', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [3, 8], 'l', [15, 8], 'q', [15, 14], [9, 14]]
},
'': {
w: 18,
n: 10,
d: ['m', [7, 18], 'l', [9, 20], [11, 18], 'm', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [3, 8], 'l', [15, 8], 'q', [15, 14], [9, 14]]
},
'': {
w: 18,
n: 12,
d: ['m', [4, 20], 'l', [4, 18], 'm', [15, 20], 'l', [15, 18], 'm', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [14, 0], [15, 3], 'm', [3, 8], 'l', [15, 8], 'q', [15, 14], [9, 14]]
},
'': {
w: 8,
n: 4,
d: ['m', [3, 20], 'l', [6, 18], 'm', [4, 14], 'l', [4, 0]]
},
'': {
w: 8,
n: 4,
d: ['m', [2, 18], 'l', [5, 20], 'm', [4, 14], 'l', [4, 0]]
},
'': {
w: 8,
n: 4,
d: ['m', [2, 18], 'l', [4, 20], [6, 18], 'm', [4, 14], 'l', [4, 0]]
},
'': {
w: 8,
n: 6,
d: ['m', [2, 20], 'l', [2, 18], 'm', [6, 20], 'l', [6, 18], 'm', [4, 14], 'l', [4, 0]]
},
'': {
w: 19,
n: 12,
d: ['m', [8, 17], 'l', [10, 21], 'm', [7, 20], 'l', [11, 18], 'q', [16, 16], [16, 8], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 19,
n: 8,
d: ['m', [7, 18], 'l', [9, 20], [11, 18], [13, 20], 'm', [4, 14], 'l', [4, 0], 'm', [4, 10], 'q', [6, 14], [11, 14], 'q', [15, 14], [15, 10], 'l', [15, 0]]
},
'': {
w: 19,
n: 9,
d: ['m', [7, 20], 'l', [10, 18], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 19,
n: 9,
d: ['m', [9, 18], 'l', [12, 20], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 19,
n: 9,
d: ['m', [7, 18], 'l', [9, 20], [11, 18], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 19,
n: 9,
d: ['m', [7, 18], 'l', [9, 20], [11, 18], [13, 20], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 19,
n: 11,
d: ['m', [4, 20], 'l', [4, 18], 'm', [15, 20], 'l', [15, 18], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 18,
n: 6,
d: ['m', [9, 15], 'l', [9, 14], 'm', [4, 9], 'l', [14, 9], 'm', [9, 4], 'l', [9, 3]]
},
'': {
w: 19,
n: 9,
d: ['m', [3, 1], 'l', [15, 14], 'm', [10, 14], 'l', [9, 14], 'q', [3, 14], [3, 7], 'q', [3, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 19,
n: 8,
d: ['m', [7, 20], 'l', [10, 18], 'm', [4, 14], 'l', [4, 4], 'q', [4, 0], [8, 0], 'q', [13, 0], [15, 4], 'm', [15, 14], 'l', [15, 0]]
},
'': {
w: 19,
n: 8,
d: ['m', [9, 18], 'l', [12, 20], 'm', [4, 14], 'l', [4, 4], 'q', [4, 0], [8, 0], 'q', [13, 0], [15, 4], 'm', [15, 14], 'l', [15, 0]]
},
'': {
w: 19,
n: 8,
d: ['m', [7, 18], 'l', [9, 20], [11, 18], 'm', [4, 14], 'l', [4, 4], 'q', [4, 0], [8, 0], 'q', [13, 0], [15, 4], 'm', [15, 14], 'l', [15, 0]]
},
'': {
w: 19,
n: 10,
d: ['m', [4, 20], 'l', [4, 18], 'm', [15, 20], 'l', [15, 18], 'm', [4, 14], 'l', [4, 4], 'q', [4, 0], [8, 0], 'q', [13, 0], [15, 4], 'm', [15, 14], 'l', [15, 0]]
},
'': {
w: 16,
n: 7,
d: ['m', [7, 18], 'l', [10, 20], 'm', [2, 14], 'l', [8, 0], 'm', [14, 14], 'l', [8, 0], 'q', [5, -7], [1, -7]]
},
'': {
w: 19,
n: 10,
d: ['m', [4, 21], 'l', [4, -7], 'm', [10, 14], 'l', [9, 14], 'q', [6, 14], [4, 12], 'm', [4, 2], 'q', [6, 0], [9, 0], 'l', [10, 0], 'q', [16, 0], [16, 7], 'q', [16, 14], [10, 14]]
},
'': {
w: 16,
n: 9,
d: ['m', [2, 20], 'l', [2, 18], 'm', [14, 20], 'l', [14, 18], 'm', [2, 14], 'l', [8, 0], 'm', [14, 14], 'l', [8, 0], 'q', [5, -7], [1, -7]]
}
}
}
if (!this.json) {
this.json = {}
} (function() {
function f(n) {
return n < 10 ? '0' + n: n
}
if (typeof date.prototype.tojson !== 'function') {
date.prototype.tojson = function(key) {
return isfinite(this.valueof()) ? this.getutcfullyear() + '-' + f(this.getutcmonth() + 1) + '-' + f(this.getutcdate()) + 't' + f(this.getutchours()) + ':' + f(this.getutcminutes()) + ':' + f(this.getutcseconds()) + 'z': null
};
string.prototype.tojson = number.prototype.tojson = boolean.prototype.tojson = function(key) {
return this.valueof()
}
}
var cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
escapable = /[\\\"\x00-\x1f\x7f-\x9f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,
gap,
indent,
meta = {
'\b': '\\b',
'\t': '\\t',
'\n': '\\n',
'\f': '\\f',
'\r': '\\r',
'"': '\\"',
'\\': '\\\\'
},
rep;
function quote(string) {
escapable.lastindex = 0;
return escapable.test(string) ? '"' + string.replace(escapable,
function(a) {
var c = meta[a];
return typeof c === 'string' ? c: '\\u' + ('0000' + a.charcodeat(0).tostring(16)).slice( - 4)
}) + '"': '"' + string + '"'
}
function str(key, holder) {
var i,
k,
v,
length,
mind = gap,
partial,
value = holder[key];
if (value && typeof value === 'object' && typeof value.tojson === 'function') {
value = value.tojson(key)
}
if (typeof rep === 'function') {
value = rep.call(holder, key, value)
}
switch (typeof value) {
case 'string':
return quote(value);
case 'number':
return isfinite(value) ? string(value) : 'null';
case 'boolean':
case 'null':
return string(value);
case 'object':
if (!value) {
return 'null'
}
gap += indent;
partial = [];
if (object.prototype.tostring.apply(value) === '[object array]') {
length = value.length;
for (i = 0; i < length; i += 1) {
partial[i] = str(i, value) || 'null'
}
v = partial.length === 0 ? '[]': gap ? '[\n' + gap + partial.join(',\n' + gap) + '\n' + mind + ']': '[' + partial.join(',') + ']';
gap = mind;
return v
}
if (rep && typeof rep === 'object') {
length = rep.length;
for (i = 0; i < length; i += 1) {
k = rep[i];
if (typeof k === 'string') {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ': ':') + v)
}
}
}
} else {
for (k in value) {
if (object.hasownproperty.call(value, k)) {
v = str(k, value);
if (v) {
partial.push(quote(k) + (gap ? ': ': ':') + v)
}
}
}
}
v = partial.length === 0 ? '{}': gap ? '{\n' + gap + partial.join(',\n' + gap) + '\n' + mind + '}': '{' + partial.join(',') + '}';
gap = mind;
return v
}
}
if (typeof json.stringify !== 'function') {
json.stringify = function(value, replacer, space) {
var i;
gap = '';
indent = '';
if (typeof space === 'number') {
for (i = 0; i < space; i += 1) {
indent += ' '
}
} else if (typeof space === 'string') {
indent = space
}
rep = replacer;
if (replacer && typeof replacer !== 'function' && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {
throw new error('json.stringify')
}
return str('', {
'': value
})
}
}
if (typeof json.parse !== 'function') {
json.parse = function(text, reviver) {
var j;
function walk(holder, key) {
var k,
v,
value = holder[key];
if (value && typeof value === 'object') {
for (k in value) {
if (object.hasownproperty.call(value, k)) {
v = walk(value, k);
if (v !== undefined) {
value[k] = v
} else {
delete value[k]
}
}
}
}
return reviver.call(holder, key, value)
}
cx.lastindex = 0;
if (cx.test(text)) {
text = text.replace(cx,
function(a) {
return '\\u' + ('0000' + a.charcodeat(0).tostring(16)).slice( - 4)
})
}
if (/^[\],:{}\s]*$/.test(text.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fa-f]{4})/g, '@').replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[ee][+\-]?\d+)?/g, ']').replace(/(?:^|:|,)(?:\s*\[)+/g, ''))) {
j = eval('(' + text + ')');
return typeof reviver === 'function' ? walk({
'': j
},
'') : j
}
throw new syntaxerror('json.parse')
}
}
} ());