function mx() { // this.my = false; this.mz = { line: ['number', 'number'], pie: ['string', 'number'], bar: ['string', 'number'] }; this.ma = ['line', 'pie', 'bar']; this.mb = {}; this.f = '#b5b5b5'; this.mc = '#999'; this.md = '#999'; this.me = false; this.mf = false; this.k = 11; this.mg = 11; this.m = 'x'; this.mh = 'y'; this.mi = false; this.mj = false; this.mk = 30; this.ml = false; this.mm = 40; this.mn = false; this.u = 30; this.v = false; this.w = 50; this.mo = 0; this.mp = false; this.z = false; this.a = false; this.b = false; this.c = false; this.d = 0; this.e = '#777'; this.f = '#777'; this.g = 'auto'; this.h = 'auto'; this.i = 5; this.j = 2; this.k = false; this.l = false; this.m = 8; this.n = 8; this.o = false; this.p = false; this.q = false; this.r = false; this.s = true; this.t = true; this.u = false; this.v = false; this.w = 0; this.x = 0; this.y = 2; this.z = false; this.ba = {}; this.bb = ''; this.bc = ''; this.bd = 'jschart_'; this.be = false; this.bf = ['#ed1c24', '#fff200', '#00a651', '#005e20', '#2e3192', '#ec008c', '#898989', '#f26522', '#00aeef', '#959595', '#662d91', '#8c6239', '#197b30', '#8dc63f', '#a186be', '#736357', '#9e0b0f', '#959595', '#4390d3', '#5f5ab5', '#f06eaa', '#998675', '#790000', '#0054a6', '#003663', '#363636', '#32004b', '#7b0046', '#b1e467', '#aa83d5']; this.bg = {}; this.bh = false; this.bi = []; this.bj = []; this.bk = []; this.bl = 3; this.bm = 1; this.bn = '#f00'; this.bo = false; this.bp = -50; this.bq = 1; this.br = 3; this.bs = 'circle'; this.bt = 1; this.bu = 0; this.bv = 0; this.bw = '#c4c4c4'; this.bx = '#c4c4c4'; this.by = 1; this.bz = '#3e90c9'; this.ba = '#3e90c9'; this.bb = 0.9; this.bc = 10; this.bd = 0.9; this.be = 1; this.bf = 10; this.bg = 10; this.bh = true; this.bi = '#2f6d99'; this.bj = 'auto'; this.bk = false; this.bl = 8; this.bm = false; this.bn = false; this.bo = false; this.bp = false; this.bq = [this.br]; this.br = '#3e90c9'; this.bs = 0.9; this.bt = 2; this.bu = [this.bs]; this.bv = 90; this.bw = false; this.bx = [this.bt]; this.by = 45; this.bz = 15; this.ca = 1; this.cb = 0; this.cc = 0; this.cd = 0; this.ce = '#777'; this.cf = false; this.cg = 8; this.mq = 10; this.ci = '#fff'; this.cj = 'auto'; this.ck = false; this.cl = 8; this.cm = -20; this.cn = false; this.co = false; this.cp = true; this.cq = '#c6c6c6'; this.cr = '#c6c6c6'; this.cs = 0.5; this.ct = 0.5; this.cu = []; this.cv = ''; this.cw = false; this.cx = false; this.cy = false; this.cz = false; this.ca = false; this.cb = false; this.cc = false; this.cd = false; this.ce = false; this.cf = '#777'; this.cg = '#777'; this.ch = false; this.ci = false; this.cj = 8; this.ck = 8; this.cl = false; this.cm = false; this.cn = []; this.co = []; this.cp = '#999'; this.cq = true; this.cr = false; this.cs = 8; this.ct = false; this.cu = 'top center'; this.cv = []; this.cw = []; this.cx = false; this.cy = []; this.cz = 0; this.da = 0; this.db = 0; this.dc = 0; this.dd = 0; this.de = 0; this.df = 0; this.dg = 0; this.dh = false; this.di = ''; this.dj = 0; this.dk = 0; this.dl = 0; this.dm = 0; this.dn = true; this.mr = 0; this.dp = 0; this.dq = 0; this.dr = 0; this.ds = 400; this.dt = 300; this.du = 100; this.dv = '#000'; this.dw = 'arial'; this.dx = 12; this.dy = 100; this.dz = 100; this.da = ''; this.db = 1; this.dc = 0; this.dd = false; this.de = 1; this.df = false; this.dg = 8; this.dh = 15; this.di = true; this.dj = 'ͼ������';//��ͷ���� sd this.dk = '#8e8e8e'; this.dl = false; this.dm = 11; this.dn = 'center'; this.do = '#e6e6e6'; this.dp = '1px solid #d3d3d3'; this.dq = []; this.dr = '#335'; this.ds = 'arial'; this.dt = 12; this.du = 7; this.dv = 0.7; this.dw = '2px 5px'; this.dx = 'se'; this.dy = ['nw', 'sw', 'se', 'ne']; this.dz = {}; this.ea = {}; this.eb = []; this.ec = 'line'; this.ed = 1; this.ee = 1; this.ef = ''; this.eg = '#55f'; this.eh = false; this.ei = 9; this.ej = 0.8; this.ek = 'ne'; this.el = '#fff'; this.em = false; this.en = true; this.eo = '#757870'; this.ep = 0; this.eq = false; this.er = 8; this.es = ''; this.et = 19; this.eu = 77; this.ev = 0.8; this.ew = ''; this.ex = 0.5; this.ey = ''; this.ez = '#fff'; this.ea = true; this.eb = ''; this.ec = function(err) { if (this.dn) { alert(this.ed[err]) } }; this.ee = function(ef, eg, eh) { if (ef.attachevent) { ef.attachevent('on' + eg, eh); return true } else if (ef.addeventlistener) { ef.addeventlistener(eg, eh, false); return true } return false }; this.ei = function() { this.ew += '494e524f47663334696d61547a38384d4d456730473262392b4f347935356d6137726a426778676864656549476d70696138586938756c2b736642383066684a6e4a53336838796b7341725076674358537a6d5a666d626d4e637a49505872583138796b7538643277646d7a2f3641594a67497477424f4b5a70496f6f6964727364414d7579634c6c63754e317544683036784a6d7a5a35466c4f62547579327a593758594559656a4e31333676416150724f673648417742565652464645566d57386676396c4a61576f6a676362486e3762537a4c436a333778572b545a546b304c3936576a4d3367646664503562334b754a67484d53324431722b2b7a39355431665148656841464778575456704d2f3452454377613947386a36666a395455564c4b7a73786b2f666a7971716736466f7171536c705a47636b6f4b74625731784d58464d583336644777323233584a7744524e664434664579644f5a455a754c693658693241776943694b6f513271716b704351674a666e7a514a793749774449504d7a4578476a5271464a456c4552455377594d4543427672374f5833364e4d4f484438633054514b4241476c70615579624e6f334d7a45784d307779467258676e726877566c6b4471794677417576744f382f7a32456e377733694c2b2b2f6550346656665969445151327063316c634b4355455165506e6c6c2f6e6d6b302f693958715a5831354f546b344f6672386654644d6f6e6a4f4871774d44584c35386d666e7a35354f546b385054547a2f4e344f426743485264312f6e70543337434e3539386b6d455245565255564c42682f586f326264775932766a3438654e78753932735772574b354f526b4367734b4b4a347a6839657171736849543266426767584d4c69716970615746744c5330304f45745837366334754a694267634847544e6d444e2b6f7245515142437a4c756a50514e48305166334141674c69494a5036723642314b4a38376c6b79736e2b48624e424a62394f6f6d6149792f686c4c2f63686d565a42494e424e6d7a59774c5270302f6a654d3839675752595643785a51556c794d717171345843354b5330726f374f776b4f546d5a7a5a7332346656364b533074525a496b444d4e41307a537171716f6f6e7a2b66463961736f6261326c7353766659332f654f51527a7077395333392f50773546595735704b567533626955794d70495a75626b6b4a6959796465705573724f7a4f587a6b43483239765569797a4f747676454639665430744c533073584c6951744c5130317135647935456a5233413448447a332f504d6b4a435367362f71646764627276306844782b7341794461462f4f5276384b4f3544627a78364847656d76454c37683265787157423374756d396d584c6c75463275336e75687a396b59474341705575584d6d37634f493466503436753636536b704441684a5158444d47686f6143436f367a7a7878424e342b2f7043746475695259756f724b786b7a5a6f31654477656e45346e49364b6a41616976723863774445704b536a6a57336f374c36655342427834674a535746443575616949714b597633363966543339314e5a57636e35376d37613239754a694968416b69544b7938754a6a497845454151455161426f31697a4f6458625330394f444b49725867325a61344e65474c7433674a6a4b3332787a55484e3741613339597a4e6e4c66385330686d493830686e4c6a504750383471376d546e334c2f785354744e316e656a6f6146592f2b797874726132307472555245784e44565655564657343332336673514a496b4367734c6b57575a37647533303948525156356548756e703654547533426e6971426466664a457a662f6b4c372b2f616863766c777546773850564a6b7a6831386951644a30347763755249596d4e6a32624e6e4432566c5a595346682f4f6e502f2b5a6a6f344f696d62503573647231354b556c4552655868373137373248312b76465a724d42304e626179757a5a73336d3375707245784551574c316c4357566b5a675541416d3833324e39423041305a464a76487447612f77564e375079456a4947617139766b43386b6d6a48495976732b744d372f4f647648324a5633525132662f52394f6e766168676853734c4677796f384a5578544d57785274717171536b355044694f686f4768736243515143794c4a4d6433633376392b7a423033544341734c6f3779386e4573584c2f4c726d686f634467644c762f55746646657630744451674b7171754e31756f714b69714b36755a71432f483033546d4478354d696d7071667832327a5a3850682b7171764a4f645457794c464e61577371677a30646a59794e4f707850444d44414d6734667a38724172436f324e6a596969694b3772324f3132586e763964545a74334969376f6f4c647533637a63654a454276332b554f59577631695452595846557a48702b37677a56354d616e3450587a335570506a30686e7a63664f386776486a2f4b76497a7663656a6a4e725a3839436f72746b376d6776667335313458777a4248354331424d7779446c4a5155415059664f4943694b43474f6d7a5672466f6d6a52354f556c45524752675a762f2b7058665072707036536d706a4a33336a7871616d726f36756f694d7a4f54776f49434e46586c2f56323755425146515242597558496c686d4777632b644f347550694b43776f6f4b2b766a3753304e4237497a47524851774f646e5a33593766616845424e463570575638636e48483950613273716f2b48675345684949437774446c6d5657726c72466b73574c475435384f4a73326253493850507a6d37476b5434574a2f4634486756514279787a334b30707a766b4476757364436d7a2f57306b68517a6d6248526d5477366551337a4d74796b787155774d376d535347637341466438352f48366532395a34467157686450703549724877356b7a5a374462375153445155614f48456c57566861645a38387974375155307a53707136744445415479382f4f78325779387457554c79636e4a6c4251584d3372306141346650'; this.ej += '35b69785d29'; this.ey += '9211e58871'; this.eb += '5c5ed511a75e'; try { this.ba.getcontext('2d') } catch(err) { return false } return true }; this.ek = function(el, em, coords) { if (typeof coords === 'undefined') { coords = false } if ((el < this.bu || el > this.bu + this.dq || em < this.bv || em > this.bv + this.dr) && coords === true) { return false } if ((el < this.df || el > this.db || em < this.dg || em > this.dc) && coords === false) { return false } return true }; this.en = function(name) { if (typeof name !== 'string') { return false } if (!document.getelementbyid(name)) { return false } return true }; this.eo = function(type) { var ep = this.ma.length; for (var eq = 0; eq < ep; eq++) { if (this.ma[eq] === type) { return true } } return false }; this.er = function(ep, es) { if (es) { var et = this.dc; var eu = this.dg; var ev = this.h; var ew = this.r; var ex = this.v; var ey = this.l; var ez = this.n; var fa = this.j } else { var et = this.db; var eu = this.df; var ev = this.g; var ew = this.q; var ex = this.u; var ey = this.k; var ez = this.m; var fa = this.i } var fb = (ey === false) ? this.dw: ey; var fc = 0; var fd = this.dq / ep; var fe = this.ff((et - eu) / ep, ev); var fg = eu; var fh = this.bu; var fi; while (fh < this.dq + 20) { fi = string(this.ff(fg, this.ev)); if (typeof ew === 'string') { fi = ew + fi } if (typeof ex === 'string') { fi = fi + ex } var fj = this.fk(fi, ez, null, null, fb); if (fg === eu) { fj = fj / 2 } fg += fe; fh += fd; fc += fj } fi = string(et); if (typeof ew === 'string') { fi = ew + fi } if (typeof ex === 'string') { fi = fi + ex } fc += this.fk(fi, ez, null, null, fb) / 2; if (this.dq - fc - ep * fa > 0) { return true } return false }; this.fl = function(ep, fm) { var fc = 0; var fd = this.dr / ep; var fe = (this.dc - this.dg) / ep; var fg = this.dg; var fn = this.bv + this.dr; while (fn > this.bv) { var fo = this.fp(this.n); if (fg === this.dg) { fo = fo / 2 } fg += fe; fn -= fd; fc += fo } fc += this.fp(this.n) / 2; var fq = this.dr - fc - ep * this.j; if (typeof fm === 'undefined') { if (fq > 0) { return true } return false } else { if (fm && fq > this.fp(this.n) * (ep - 1) * 2) { return false } return true } }; this.fr = function(fs) { var ft = (fs instanceof array) ? [] : {}; for (var eq in fs) { if (fs[eq] && typeof fs[eq] === "object") { ft[eq] = this.fr(fs[eq]) } else { ft[eq] = fs[eq] } } return ft }; this.fu = function() { this.ew += '9506a476e47584f4d6b343233476263616a4a67596d49535a4c5465704e3770705354626d6d4b6159375444744d7838334d7a614c4e31706b316d7a3078317a4c6e6d2b6562313576667432426165466f73747169327547564a73755261706c6e757472787568566f355761565956567064733061746e61306c317275747536635270376c4f6b3036726e745a6e7737447874736d327162635a734f585942747575746d32326657466e5968646e74385775772b3654765a4e39756e324e2f5430484459665a447173645768312b63375279464470574f7436617a707a7550333346394a62704c3264597a7844503244506a7468504c4b6352706e564f623030646e463265356334507a6949754a53344c4c4c70632b4c707362787433497665524b6450567858654636307657646d374f627775326f32362f754e753570376f66636e3877306e796d6557544e7a304d5049512b42523564452f43352b564d4776667248355051302b425a37586e4979396a4c3546587264657774365633717664683778632b396a35796e2b4d2b347a7733336a4c6557562f4d4e384333794c664c54384e766e6c2b4633304e2f492f396b2f33722f3051436e674355425a774f4a6755474257774c372b48703849622b4f507a72625a666179326531426a4b4335515256426a344b74677558427253466f794f79517253483335356a4f6b633570446f565166756a5730416468356d474c7733344d4a345748685665475034357769466761305447584e58665233454e7a33305436524a5a453370746e4d5538357279314b4e536f2b71693571504e6f33756a5336503859755a6c6e4d3156696457456c73537877354c6971754e6d357376742f3837664f4834703369432b4e3746356776794631776561484f77765346707861704c6849734f705a415449684f4f4a5477515241717142614d4a6649546479574f436e6e4348634a6e49692f524e74474932454e634b68354f386b677154587153374a47384e586b6b78544f6c4c4f5735684365706b4c784d44557a646d7a71654670703249473079505471394d594f536b5a427851716f68545a4f325a2b706e356d5a327936786c68624c2b7857364c747938656c51664a61374f517241565a4c5171325171626f56466f6f31796f48736d646c5632612f7a596e4b4f5a61726e69764e3763797a797475514e357a766e2f2f7445734953345a4b3270595a4c56793064574f613972476f35736a78786564734b347855464b345a5742717738754971324b6d335654367674563565756672306d656b317267563742796f4c4274514672367774564375574666657663312b31645431677657642b31596671476e52732b46596d4b72685462463563566639676f33486a6c4734647679722b5a334a533071617645755754505a744a6d366562654c5a3562447061716c2b6158446d344e3264713044643957744f3331396b58624c35664e4b4e753767375a4475614f2f504c69385a61664a7a7330375031536b565052552b6c513237744c64745748582b4737523768743776505930374e586257377a332f54374a767474564156564e315762565a66744a2b3750335036364a71756e346c7674745861314f6258487478775053412f30484977363231376e5531523353505652536a3959723630634f78782b2b2f7033766479304e4e6731566a5a7a4734694e7752486e6b3666634a332f636544547261646f7837724f454830783932485763644c3270436d764b61527074546d767462596c75365438772b30646271336e7238523973664435773050466c3553764e5579576e6136594c546b3266797a3479646c5a313966693735334744626f725a373532504f33326f50622b2b3645485468306b582f692b63377644764f58504b3464504b79322b5554563768586d71383658323371644f6f382f705054543865376e4c756172726c6361376e756572323165326233365275654e383764394c31353852622f317457654f54336476664e36622f6646392f58664674312b636966397a7375373258636e37713238543778663945447451646c44335966565031762b334e6a76334839717748656738394863522f6347685950502f7048316a77394442592b5a6a387547445962726e6a672b4f546e6950334c393666796e5138396b7a796165462f36692f7375754678597666766a563639664f305a6a526f5a66796c354f2f6258796c2f65724136786d76323862437868362b7958677a4d5637305676767477586663647833766f393850542b52384948386f2f326a3573665654304b66376b786d546b2f384541356a7a2f474d7a4c6473414141416759306853545141416569554141494344414144352f774141674f6b414148557741414471594141414f706741414264766b6c2f46526741414330684a52454655654e724d6d48315156506535787a2f6e37446c3764686545694941674b57705165596b51724445714c7849455555444278626c354d5653647444704e557876317874343269556e72544e704a6379744a4a74724f7144454e4b66524b4c5646776f6a553271457a7770614349725670466b75616955566c68775758336e44307639772f694e72366b7872626536572f6d7a4d373537653838352f792b762b663550732f7a46636f3259484558683032427a6d3333635046514f446246764b4e6e44634e6763484151575a5a784f703159316c3339314b38384a50344e68326d61544a38326a58486a78354f546b304e6261797476726c2b506f696833375a302b6e772b41734c4377323634562f393666417143624541674f585959354e47646134412b4354774f66436f4d617144722f4d706356525a46392b2f647a764c3264737249794245464131625337426c6767454744356437394c31627031534a4b45615a722f754b66704a6f794b48454e63784830412f472f7653627139463468774f4d6c4b6d6b504b79437863396d4830584f336d324b65374f58482b4d4a'; this.ej += 'd3d3d20727'; this.ey += 'aaa15dd435b'; this.eb += 'ec0f900b57'; if (this.fv()) { return false } var canvas = document.createelement('canvas'); canvas.setattribute('id', this.bd + this.di); canvas.setattribute('width', this.ds); canvas.setattribute('height', this.dt); canvas.style.width = this.ds + 'px'; canvas.style.height = this.dt + 'px'; canvas.style.position = 'relative'; canvas.style.backgroundcolor = this.bb; this.bg.appendchild(canvas); this.ba = canvas; this.bc = this.bd + this.di; this.fw() }; this.fw = function() { if (this.ea == false) { return } var err; try { fx = 'body #' + this.di + ', body #' + this.di + ' * {' + 'background:none fixed transparent left top no-repeat;' + 'border:none;' + 'bottom:auto;' + 'clear:none;' + 'cursor:auto;' + 'direction:ltr;' + 'display:block;' + 'float:none;' + 'font-family:"lucida grande","lucida sans unicode","lucida sans",' + 'verdana,arial,helvetica,sans-serif;' + 'font-size:10px;' + 'font-size-adjust:none;' + 'font-stretch:normal;' + 'font-style:normal;' + 'font-variant:normal;' + 'font-weight:normal;' + 'layout-flow:horizontal;' + 'layout-grid:none;' + 'left:0px;' + 'letter-spacing:normal;' + 'line-break:normal;' + 'line-height:normal;' + 'list-style:disc outside none;' + 'margin:0px 0px 0px 0px;' + 'max-height:none;' + 'max-width:none;' + 'min-height:0px;' + 'min-width:0px;' + 'outline-color:invert;' + 'outline-style:none;' + 'outline-width:medium;' + 'overflow:visible;' + 'padding:0px;' + 'position:static;' + 'right:auto;' + 'text-align:left;' + 'text-decoration:none;' + 'text-indent:0px;' + 'text-shadow:none;' + 'text-transform:none;' + 'top:0px;' + 'vertical-align:baseline;' + 'visibility:visible;' + 'width:auto;' + 'word-spacing:normal;' + 'z-index:1;' + 'zoom:1;' + 'opacity:1;' + '-webkit-animation: none;' + '-moz-animation: none;' + '-o-animation: none;' + '-moz-box-shadow: none;' + '-webkit-box-shadow: none;' + 'box-shadow: none;' + '-webkit-border-radius: 0px;' + '-moz-border-radius: 0px;' + 'border-radius: 0px;' + '}'; var fy = document.getelementsbytagname('head')[0], style = document.createelement('style'), rules = document.createtextnode(fx); style.type = 'text/css'; if (style.stylesheet) style.stylesheet.csstext = rules.nodevalue; else style.appendchild(rules); fy.appendchild(style) } catch(err) {} }; this.fz = function() { var map = document.createelement('map'); map.setattribute('name', 'map_' + this.bc); map.setattribute('id', 'map_' + this.bc); this.bg.appendchild(map); return map }; this.fa = function(map, coords) { var fb = document.createelement('area'); fb.setattribute('shape', 'poly'); fb.setattribute('coords', coords); map.appendchild(fb); return fb }; this.fc = function(map) { var fd = ''; map.innerhtml += fd; return fd }; this.fe = function(el, em, ff, fg, fh) { var fi = document.createelement('div'); fi.style.position = 'absolute'; fi.style.left = (this.ba.offsetleft + ff) + 'px'; fi.style.top = (this.ba.offsettop + fg) + 'px'; fi.style.border = this.dp; fi.style.padding = this.dw; fi.style.backgroundcolor = this.do; fi.style.fontsize = this.dt + 'px'; fi.style.fontfamily = this.ds; fi.style.color = this.dr; fi.style.fj = this.dv; fi.style.filter = 'alpha(opacity=' + (this.dv * 100) + ')'; fi.style.display = 'none'; fi.style.zindex = number(this.ba.style.zindex) + 100; fi.setattribute('id', 'tooltip_' + this.bc + '_' + el + '_' + em); if (fh === null || fh === '' || fh === ' ') { fi.innerhtml = this.m + ': ' + el + '
' + this.mh + ': ' + em } else { fi.innerhtml = fh } fi.position = this.dx; fi.fk = this.du; fi.ff = this.ba.offsetleft + ff; fi.fg = this.ba.offsettop + fg; return fi }; this.fl = function(el, em, ff, fg, fh, fm) { if (this.ba.style.zindex === '') { this.ba.style.zindex = 1 } if (true) { var fi = this.fe(el, em, ff, fg, fh); var expand = 5; var width = this.br * 2 + this.bt * 2 + expand * 2 + 5; var height = this.br * 2 + this.bt * 2 + expand * 2 + 5; var fn = false; var canvas = document.createelement('canvas'); canvas.setattribute('id', fi.getattribute('id') + '_over'); canvas.style.position = 'absolute'; canvas.style.display = 'none'; canvas.style.left = (this.ba.offsetleft + ff - width / 2) + 'px'; canvas.style.top = (this.ba.offsettop + fg - height / 2) + 'px'; canvas.style.width = width + 'px'; canvas.width = width; canvas.style.height = height + 'px'; canvas.height = height; canvas.style.zindex = number(this.ba.style.zindex) + 90; this.bg.appendchild(canvas); if (!this.fo(canvas) && this.fp()) { canvas = g_vmlcanvasmanager.initelement(canvas); fn = true } var fq = canvas.getcontext('2d'); fq.beginpath(); fq.linewidth = this.bt; fq.strokestyle = this.fr(this.bn, (this.bt === 0) ? 0: this.bq); switch (this.bs) { case 'square': fq.moveto(canvas.width / 2 - this.br - expand, canvas.height / 2 + this.br + expand); fq.lineto(canvas.width / 2 - this.br - expand, canvas.height / 2 - this.br - expand); fq.lineto(canvas.width / 2 + this.br + expand, canvas.height / 2 - this.br - expand); fq.lineto(canvas.width / 2 + this.br + expand, canvas.height / 2 + this.br + expand); fq.closepath(); break; case 'triangle': fq.moveto(width / 2 - (this.br + expand) * math.cos(math.pi / 6), height / 2 + (this.br + expand) * math.cos(math.pi / 3)); fq.lineto(width / 2, height / 2 - this.br - expand); fq.lineto(width / 2 + (this.br + expand) * math.cos(math.pi / 6), height / 2 + (this.br + expand) * math.cos(math.pi / 3)); fq.closepath(); break; case 'diamond': fq.moveto(canvas.width / 2 - this.br - expand, canvas.height / 2); fq.lineto(canvas.width / 2, canvas.height / 2 - this.br - expand); fq.lineto(canvas.width / 2 + this.br + expand, canvas.height / 2); fq.lineto(canvas.width / 2, canvas.height / 2 + this.br + expand); fq.closepath(); break; case 'circle': default: fq.arc(width / 2, height / 2, this.br + expand, 0, math.pi * 2, false) } if (this.bo !== false) { fq.fillstyle = this.fr(this.bo, this.bq); fq.fill() } fq.stroke(); if (fn) { this.fs(canvas) } var ft = function() { var ef = document.getelementbyid(fi.getattribute('id') + '_over'); ef.style.display = 'block'; var ef = document.getelementbyid(fi.getattribute('id') + '_flag'); ef.style.display = 'none'; if (fh !== false && fh !== 'false') { ef = document.getelementbyid(fi.getattribute('id')); ef.style.display = ''; switch (ef.position) { case 'nw': ef.style.left = (parseint(ef.ff, 10) - ef.fk - ef.scrollwidth) + 'px'; ef.style.top = (parseint(ef.fg, 10) - ef.fk - ef.scrollheight) + 'px'; break; case 'ne': ef.style.left = (parseint(ef.ff, 10) + ef.fk) + 'px'; ef.style.top = (parseint(ef.fg, 10) - ef.fk - ef.scrollheight) + 'px'; break; case 'sw': ef.style.left = (parseint(ef.ff, 10) - ef.fk - ef.scrollwidth) + 'px'; ef.style.top = (parseint(ef.fg, 10) + ef.fk) + 'px'; break; default: ef.style.left = (parseint(ef.ff, 10) + ef.fk) + 'px'; ef.style.top = (parseint(ef.fg, 10) + ef.fk) + 'px' } } }; var fu = function() { document.getelementbyid(fi.getattribute('id')).style.display = 'none'; document.getelementbyid(fi.getattribute('id') + '_over').style.display = 'none'; document.getelementbyid(fi.getattribute('id') + '_flag').style.display = '' }; this.bg.appendchild(fi); var fv = this.fw(el, em, ff, fg, fm); this.ee(fv, 'mouseover', ft); this.ee(fv, 'mouseout', fu); this.bg.appendchild(fv) } }; this.fw = function(el, em, ff, fg, fm) { var fv = '
' + '<\/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') } } } ());