Merge branch 'gadget'
[dygraphs.git] / plotkit_v091 / PlotKit / PlotKit_Packed.js
CommitLineData
6a1aa64f
DV
1/***
2
3 PlotKit.PlotKit 0.9.1 : PACKED VERSION
4
5 THIS FILE IS AUTOMATICALLY GENERATED. If creating patches, please
6 diff against the source tree, not this file.
7
8 For more information, <http://www.liquidx.net/plotkit/>.
9
10 Copyright (c) 2006. Alastair Tse.
11
12***/
13
14try{
15if(typeof (MochiKit.Base)=="undefined"||typeof (MochiKit.DOM)=="undefined"||typeof (MochiKit.Color)=="undefined"||typeof (MochiKit.Format)=="undefined"){
16throw "";
17}
18}
19catch(e){
20throw "PlotKit depends on MochiKit.{Base,Color,DOM,Format}";
21}
22MochiKit.Base.update(MochiKit.Color.Color.prototype,{asFillColor:function(){
23return this.lighterColorWithLevel(0.3);
24},asStrokeColor:function(){
25return this.darkerColorWithLevel(0.1);
26},asPointColor:function(){
27return this.lighterColorWithLevel(0.1);
28}});
29if(typeof (PlotKit)=="undefined"){
30PlotKit={};
31}
32PlotKit.NAME="PlotKit";
33PlotKit.VERSION="0.8";
34PlotKit.__repr__=function(){
35return "["+this.NAME+" "+this.VERSION+"]";
36};
37PlotKit.toString=function(){
38return this.__repr__();
39};
40if(typeof (PlotKit.Base)=="undefined"){
41PlotKit.Base={};
42}
43PlotKit.Base.NAME="PlotKit.Base";
44PlotKit.Base.VERSION=PlotKit.VERSION;
45PlotKit.Base.__repr__=function(){
46return "["+this.NAME+" "+this.VERSION+"]";
47};
48PlotKit.Base.toString=function(){
49return this.__repr__();
50};
51PlotKit.Base.usingPrototype=function(){
52try{
53return (typeof (Object.extend)=="function");
54}
55catch(e){
56return false;
57}
58};
59MochiKit.Base.update(PlotKit.Base,{roundInterval:function(_1,_2,_3){
60var _4=MochiKit.Format.roundToFixed;
61var _5=_1/_2;
62return parseFloat(_4(_5,_3));
63},collapse:function(_6){
64var m=MochiKit.Base;
65var _8=new Array();
66for(var i=0;i<_6.length;i++){
67_8=m.concat(_8,_6[i]);
68}
69if(PlotKit.Base.usingPrototype()){
70delete _8.extend;
71delete _8.from;
72delete _8.inspect;
73}
74return _8;
75},uniq:function(_10){
76var m=MochiKit.Base;
77if(!m.isArrayLike(_10)||(_10.length<1)){
78return new Array();
79}
80var _11=new Array();
81var _12=_10[0];
82_11.push(_10[0]);
83for(var i=1;i<_10.length;i++){
84if(m.compare(_10[i],_12)!=0){
85_12=_10[i];
86_11.push(_10[i]);
87}
88}
89return _11;
90},colorScheme:function(){
91var mb=MochiKit.Base;
92var mc=MochiKit.Color;
93var _15=["red","orange","yellow","green","cyan","blue","purple","magenta"];
94var _16=function(_17){
95return mc.Color[_17+"Color"]();
96};
97return mb.map(_16,_15);
98},baseDarkPrimaryColors:function(){
99var _18=MochiKit.Color.Color.fromHexString;
100return [_18("#ad3f40"),_18("#ddac2c"),_18("#dfdd0c"),_18("#5276c4"),_18("#739c5a")];
101},basePrimaryColors:function(){
102var _19=MochiKit.Color.Color.fromHexString;
103return [_19("#d24c4d"),_19("#f2b32f"),_19("#ece90e"),_19("#5d83da"),_19("#78a15d")];
104},baseBlueColors:function(){
105var _20=MochiKit.Color.Color.fromHexString;
106return [_20("#4b6b94"),_20("#5d81b4"),_20("#acbad2")];
107},palette:function(_21,_22,_23,_24){
108var _25=MochiKit.Base.isUndefinedOrNull;
109var _26=new Array();
110if(_25(_24)){
111_24=0.1;
112}
113if(_25(_23)){
114_23=0.4;
115}
116if(_25(_22)){
117_22=-0.2;
118}
119var _27=_22;
120while(_27<=_23){
121_26.push(_27);
122_27+=_24;
123}
124var _28=function(_29,_30){
125return _29.lighterColorWithLevel(_30);
126};
127return MochiKit.Base.map(partial(_28,_21),_26);
128},excanvasSupported:function(){
129if(/MSIE/.test(navigator.userAgent)&&!window.opera){
130return true;
131}
132return false;
133},findPosX:function(obj){
134var _32=0;
135if(obj.offsetParent){
136while(obj.offsetParent){
137_32+=obj.offsetLeft;
138obj=obj.offsetParent;
139}
140}else{
141if(obj.x){
142_32+=obj.x;
143}
144}
145return _32;
146},findPosY:function(obj){
147var _33=0;
148if(obj.offsetParent){
149while(obj.offsetParent){
150_33+=obj.offsetTop;
151obj=obj.offsetParent;
152}
153}else{
154if(obj.y){
155_33+=obj.y;
156}
157}
158return _33;
159},isFuncLike:function(obj){
160return (typeof (obj)=="function");
161}});
162PlotKit.Base.map=function(fn,lst){
163if(PlotKit.Base.usingPrototype()){
164var _36=[];
165for(var x in lst){
166if(typeof (lst[x])=="function"){
167continue;
168}
169_36.push(fn(lst[x]));
170}
171return _36;
172}else{
173return MochiKit.Base.map(fn,lst);
174}
175};
176PlotKit.Base.items=function(lst){
177if(PlotKit.Base.usingPrototype()){
178var _38=[];
179for(var x in lst){
180if(typeof (lst[x])=="function"){
181continue;
182}
183_38.push([x,lst[x]]);
184}
185return _38;
186}else{
187return MochiKit.Base.items(lst);
188}
189};
190PlotKit.Base.keys=function(lst){
191if(PlotKit.Base.usingPrototype()){
192var _39=[];
193for(var x in lst){
194if(typeof (lst[x])=="function"){
195continue;
196}
197_39.push(x);
198}
199return _39;
200}else{
201return MochiKit.Base.keys(lst);
202}
203};
204PlotKit.Base.baseColors=function(){
205var _40=MochiKit.Color.Color.fromHexString;
206return [_40("#476fb2"),_40("#be2c2b"),_40("#85b730"),_40("#734a99"),_40("#26a1c5"),_40("#fb8707"),_40("#000000")];
207};
208PlotKit.Base.officeBaseStyle={"axisLineWidth":2,"axisLabelColor":Color.grayColor(),"axisLineColor":Color.whiteColor(),"padding":{top:5,bottom:10,left:30,right:30}};
209MochiKit.Base.update(PlotKit.Base,{officeBlue:function(){
210var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[0]),"backgroundColor":PlotKit.Base.baseColors()[0].lighterColorWithLevel(0.45)};
211MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
212return r;
213},officeRed:function(){
214var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[1]),"backgroundColor":PlotKit.Base.baseColors()[1].lighterColorWithLevel(0.5)};
215MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
216return r;
217},officeGreen:function(){
218var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[2]),"backgroundColor":PlotKit.Base.baseColors()[2].lighterColorWithLevel(0.5)};
219MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
220return r;
221},officePurple:function(){
222var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[3]),"backgroundColor":PlotKit.Base.baseColors()[3].lighterColorWithLevel(0.5)};
223MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
224return r;
225},officeCyan:function(){
226var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[4]),"backgroundColor":PlotKit.Base.baseColors()[4].lighterColorWithLevel(0.5)};
227MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
228return r;
229},officeOrange:function(){
230var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[5]),"backgroundColor":PlotKit.Base.baseColors()[5].lighterColorWithLevel(0.4)};
231MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
232return r;
233},officeBlack:function(){
234var r={"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[6],0,0.6),"backgroundColor":PlotKit.Base.baseColors()[6].lighterColorWithLevel(0.9)};
235MochiKit.Base.update(r,PlotKit.Base.officeBaseStyle);
236return r;
237}});
238PlotKit.Base.EXPORT=["baseColors","collapse","colorScheme","findPosX","findPosY","officeBaseStyle","officeBlue","officeRed","officeGreen","officePurple","officeCyan","officeOrange","officeBlack","roundInterval","uniq","isFuncLike","excanvasSupported"];
239PlotKit.Base.EXPORT_OK=[];
240PlotKit.Base.__new__=function(){
241var m=MochiKit.Base;
242m.nameFunctions(this);
243this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
244};
245PlotKit.Base.__new__();
246MochiKit.Base._exportSymbols(this,PlotKit.Base);
247try{
248if(typeof (PlotKit.Base)=="undefined"){
249throw "";
250}
251}
252catch(e){
253throw "PlotKit.Layout depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.Base";
254}
255if(typeof (PlotKit.Layout)=="undefined"){
256PlotKit.Layout={};
257}
258PlotKit.Layout.NAME="PlotKit.Layout";
259PlotKit.Layout.VERSION=PlotKit.VERSION;
260PlotKit.Layout.__repr__=function(){
261return "["+this.NAME+" "+this.VERSION+"]";
262};
263PlotKit.Layout.toString=function(){
264return this.__repr__();
265};
266PlotKit.Layout.valid_styles=["bar","line","pie","point"];
267PlotKit.Layout=function(_42,_43){
268this.options={"barWidthFillFraction":0.75,"barOrientation":"vertical","xOriginIsZero":true,"yOriginIsZero":true,"xAxis":null,"yAxis":null,"xTicks":null,"yTicks":null,"xNumberOfTicks":10,"yNumberOfTicks":5,"xTickPrecision":1,"yTickPrecision":1,"pieRadius":0.4};
269this.style=_42;
270MochiKit.Base.update(this.options,_43?_43:{});
271if(!MochiKit.Base.isUndefinedOrNull(this.options.xAxis)){
272this.minxval=this.options.xAxis[0];
273this.maxxval=this.options.xAxis[1];
274this.xscale=this.maxxval-this.minxval;
275}else{
276this.minxval=0;
277this.maxxval=null;
278this.xscale=null;
279}
280if(!MochiKit.Base.isUndefinedOrNull(this.options.yAxis)){
281this.minyval=this.options.yAxis[0];
282this.maxyval=this.options.yAxis[1];
283this.yscale=this.maxyval-this.minyval;
284}else{
285this.minyval=0;
286this.maxyval=null;
287this.yscale=null;
288}
289this.bars=new Array();
290this.points=new Array();
291this.slices=new Array();
292this.xticks=new Array();
293this.yticks=new Array();
294this.datasets=new Array();
295this.minxdelta=0;
296this.xrange=1;
297this.yrange=1;
298this.hitTestCache={x2maxy:null};
299};
300PlotKit.Layout.prototype.addDataset=function(_44,_45){
301this.datasets[_44]=_45;
302};
303PlotKit.Layout.prototype.removeDataset=function(_46,_47){
304delete this.datasets[_46];
305};
306PlotKit.Layout.prototype.addDatasetFromTable=function(_48,_49,_50,_51,_52){
307var _53=MochiKit.Base.isUndefinedOrNull;
308var _54=MochiKit.DOM.scrapeText;
309var _55=MochiKit.Format.strip;
310if(_53(_50)){
311_50=0;
312}
313if(_53(_51)){
314_51=1;
315}
316if(_53(_52)){
317_52=-1;
318}
319var _56=_49.tBodies[0].rows;
320var _57=new Array();
321var _58=new Array();
322if(!_53(_56)){
323for(var i=0;i<_56.length;i++){
324_57.push([parseFloat(_55(_54(_56[i].cells[_50]))),parseFloat(_55(_54(_56[i].cells[_51])))]);
325if(_52>=0){
326_58.push({v:parseFloat(_55(_54(_56[i].cells[_50]))),label:_55(_54(_56[i].cells[_52]))});
327}
328}
329this.addDataset(_48,_57);
330if(_52>=0){
331this.options.xTicks=_58;
332}
333return true;
334}
335return false;
336};
337PlotKit.Layout.prototype.evaluate=function(){
338this._evaluateLimits();
339this._evaluateScales();
340if(this.style=="bar"){
341if(this.options.barOrientation=="horizontal"){
342this._evaluateHorizBarCharts();
343}else{
344this._evaluateBarCharts();
345}
346this._evaluateBarTicks();
347}else{
348if(this.style=="line"){
349this._evaluateLineCharts();
350this._evaluateLineTicks();
351}else{
352if(this.style=="pie"){
353this._evaluatePieCharts();
354this._evaluatePieTicks();
355}
356}
357}
358};
359PlotKit.Layout.prototype.hitTest=function(x,y){
360var f=MochiKit.Format.twoDigitFloat;
361if((this.style=="bar")&&this.bars&&(this.bars.length>0)){
362for(var i=0;i<this.bars.length;i++){
363var bar=this.bars[i];
364if((x>=bar.x)&&(x<=bar.x+bar.w)&&(y>=bar.y)&&(y-bar.y<=bar.h)){
365return bar;
366}
367}
368}else{
369if(this.style=="line"){
370if(this.hitTestCache.x2maxy==null){
371this._regenerateHitTestCache();
372}
373var _62=x/this.xscale;
374var _63=this.hitTestCache.xvalues;
375var _64=null;
376var _65=null;
377for(var i=1;i<_63.length;i++){
378if(_63[i]>_62){
379_64=_63[i-1];
380_65=_63[i];
381break;
382}
383}
384if((_64!=null)){
385var _66=this.hitTestCache.x2maxy[_64];
386var _67=this.hitTestCache.x2maxy[_65];
387var _68=(1-y)/this.yscale;
388var _69=(_67-_66)/(_65-_64);
389var _70=_66+_69*(_62-_64);
390if(_70>=_68){
391var obj={xval:_62,yval:_68,xafter:_65,yafter:_67,xbefore:_64,ybefore:_66,yprojected:_70};
392return obj;
393}
394}
395}else{
396if(this.style=="pie"){
397var _71=Math.sqrt((y-0.5)*(y-0.5)+(x-0.5)*(x-0.5));
398if(_71>this.options.pieRadius){
399return null;
400}
401var _72=Math.atan2(y-0.5,x-0.5)-Math.PI/2;
402for(var i=0;i<this.slices.length;i++){
403var _73=this.slices[i];
404if(_73.startAngle<_72&&_73.endAngle>=_72){
405return _73;
406}
407}
408}
409}
410}
411return null;
412};
413PlotKit.Layout.prototype.rectForX=function(x){
414return null;
415};
416PlotKit.Layout.prototype.angleRangeForX=function(x){
417return null;
418};
419PlotKit.Layout.prototype._evaluateLimits=function(){
420var map=PlotKit.Base.map;
421var _75=PlotKit.Base.items;
422var _76=MochiKit.Base.itemgetter;
423var _77=PlotKit.Base.collapse;
424var _78=MochiKit.Base.listMin;
425var _79=MochiKit.Base.listMax;
426var _80=MochiKit.Base.isUndefinedOrNull;
427var all=_77(map(_76(1),_75(this.datasets)));
428if(_80(this.options.xAxis)){
429if(this.options.xOriginIsZero){
430this.minxval=0;
431}else{
432this.minxval=_78(map(parseFloat,map(_76(0),all)));
433}
434this.maxxval=_79(map(parseFloat,map(_76(0),all)));
435}else{
436this.minxval=this.options.xAxis[0];
437this.maxxval=this.options.xAxis[1];
438this.xscale=this.maxval-this.minxval;
439}
440if(_80(this.options.yAxis)){
441if(this.options.yOriginIsZero){
442this.minyval=0;
443}else{
444this.minyval=_78(map(parseFloat,map(_76(1),all)));
445}
446this.maxyval=_79(map(parseFloat,map(_76(1),all)));
447}else{
448this.minyval=this.options.yAxis[0];
449this.maxyval=this.options.yAxis[1];
450this.yscale=this.maxyval-this.minyval;
451}
452};
453PlotKit.Layout.prototype._evaluateScales=function(){
454var _82=MochiKit.Base.isUndefinedOrNull;
455this.xrange=this.maxxval-this.minxval;
456if(this.xrange==0){
457this.xscale=1;
458}else{
459this.xscale=1/this.xrange;
460}
461this.yrange=this.maxyval-this.minyval;
462if(this.yrange==0){
463this.yscale=1;
464}else{
465this.yscale=1/this.yrange;
466}
467};
468PlotKit.Layout.prototype._uniqueXValues=function(){
469var _83=PlotKit.Base.collapse;
470var map=PlotKit.Base.map;
471var _84=PlotKit.Base.uniq;
472var _85=MochiKit.Base.itemgetter;
473var _86=PlotKit.Base.items;
474var _87=map(parseFloat,map(_85(0),_83(map(_85(1),_86(this.datasets)))));
475_87.sort(MochiKit.Base.compare);
476return _84(_87);
477};
478PlotKit.Layout.prototype._evaluateBarCharts=function(){
479var _88=PlotKit.Base.items;
480var _89=_88(this.datasets).length;
481var _90=10000000;
482var _91=this._uniqueXValues();
483for(var i=1;i<_91.length;i++){
484_90=Math.min(Math.abs(_91[i]-_91[i-1]),_90);
485}
486var _92=0;
487var _93=0;
488var _94=0;
489if(_91.length==1){
490_90=1;
491this.xscale=1;
492this.minxval=_91[0];
493_92=1*this.options.barWidthFillFraction;
494_93=_92/_89;
495_94=(1-this.options.barWidthFillFraction)/2;
496}else{
497if(this.xrange==1){
498this.xscale=0.5;
499}else{
500if(this.xrange==2){
501this.xscale=1/3;
502}else{
503this.xscale=(1-_90/this.xrange)/this.xrange;
504}
505}
506_92=_90*this.xscale*this.options.barWidthFillFraction;
507_93=_92/_89;
508_94=_90*this.xscale*(1-this.options.barWidthFillFraction)/2;
509}
510this.minxdelta=_90;
511this.bars=new Array();
512var i=0;
513for(var _95 in this.datasets){
514var _96=this.datasets[_95];
515if(PlotKit.Base.isFuncLike(_96)){
516continue;
517}
518for(var j=0;j<_96.length;j++){
519var _98=_96[j];
520var _99={x:((parseFloat(_98[0])-this.minxval)*this.xscale)+(i*_93)+_94,y:1-((parseFloat(_98[1])-this.minyval)*this.yscale),w:_93,h:((parseFloat(_98[1])-this.minyval)*this.yscale),xval:parseFloat(_98[0]),yval:parseFloat(_98[1]),name:_95};
521if((_99.x>=0)&&(_99.x<=1)&&(_99.y>=0)&&(_99.y<=1)){
522this.bars.push(_99);
523}
524}
525i++;
526}
527};
528PlotKit.Layout.prototype._evaluateHorizBarCharts=function(){
529var _100=PlotKit.Base.items;
530var _101=_100(this.datasets).length;
531var _102=10000000;
532var _103=this._uniqueXValues();
533for(var i=1;i<_103.length;i++){
534_102=Math.min(Math.abs(_103[i]-_103[i-1]),_102);
535}
536var _104=0;
537var _105=0;
538var _106=0;
539if(_103.length==1){
540_102=1;
541this.xscale=1;
542this.minxval=_103[0];
543_104=1*this.options.barWidthFillFraction;
544_105=_104/_101;
545_106=(1-this.options.barWidthFillFraction)/2;
546}else{
547this.xscale=(1-_102/this.xrange)/this.xrange;
548_104=_102*this.xscale*this.options.barWidthFillFraction;
549_105=_104/_101;
550_106=_102*this.xscale*(1-this.options.barWidthFillFraction)/2;
551}
552this.minxdelta=_102;
553this.bars=new Array();
554var i=0;
555for(var _107 in this.datasets){
556var _108=this.datasets[_107];
557if(PlotKit.Base.isFuncLike(_108)){
558continue;
559}
560for(var j=0;j<_108.length;j++){
561var item=_108[j];
562var rect={y:((parseFloat(item[0])-this.minxval)*this.xscale)+(i*_105)+_106,x:0,h:_105,w:((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_107};
563if(rect.y<=0){
564rect.y=0;
565}
566if(rect.y>=1){
567rect.y=1;
568}
569if((rect.x>=0)&&(rect.x<=1)){
570this.bars.push(rect);
571}
572}
573i++;
574}
575};
576PlotKit.Layout.prototype._evaluateLineCharts=function(){
577var _111=PlotKit.Base.items;
578var _112=_111(this.datasets).length;
579this.points=new Array();
580var i=0;
581for(var _113 in this.datasets){
582var _114=this.datasets[_113];
583if(PlotKit.Base.isFuncLike(_114)){
584continue;
585}
586_114.sort(function(a,b){
587return compare(parseFloat(a[0]),parseFloat(b[0]));
588});
589for(var j=0;j<_114.length;j++){
590var item=_114[j];
591var _117={x:((parseFloat(item[0])-this.minxval)*this.xscale),y:1-((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:_113};
592if(_117.y<=0){
593_117.y=0;
594}
595if(_117.y>=1){
596_117.y=1;
597}
598if((_117.x>=0)&&(_117.x<=1)){
599this.points.push(_117);
600}
601}
602i++;
603}
604};
605PlotKit.Layout.prototype._evaluatePieCharts=function(){
606var _118=PlotKit.Base.items;
607var sum=MochiKit.Iter.sum;
608var _120=MochiKit.Base.itemgetter;
609var _121=_118(this.datasets).length;
610var _122=_118(this.datasets)[0][1];
611var _123=sum(map(_120(1),_122));
612this.slices=new Array();
613var _124=0;
614for(var i=0;i<_122.length;i++){
615var _125=_122[i][1]/_123;
616var _126=_124*Math.PI*2;
617var _127=(_124+_125)*Math.PI*2;
618var _128={fraction:_125,xval:_122[i][0],yval:_122[i][1],startAngle:_126,endAngle:_127};
619if(_122[i][1]!=0){
620this.slices.push(_128);
621}
622_124+=_125;
623}
624};
625PlotKit.Layout.prototype._evaluateLineTicksForXAxis=function(){
626var _129=MochiKit.Base.isUndefinedOrNull;
627if(this.options.xTicks){
628this.xticks=new Array();
629var _130=function(tick){
630var _132=tick.label;
631if(_129(_132)){
632_132=tick.v.toString();
633}
634var pos=this.xscale*(tick.v-this.minxval);
635if((pos>=0)&&(pos<=1)){
636this.xticks.push([pos,_132]);
637}
638};
639MochiKit.Iter.forEach(this.options.xTicks,bind(_130,this));
640}else{
641if(this.options.xNumberOfTicks){
642var _134=this._uniqueXValues();
643var _135=this.xrange/this.options.xNumberOfTicks;
644var _136=0;
645this.xticks=new Array();
646for(var i=0;i<=_134.length;i++){
647if((_134[i]-this.minxval)>=(_136*_135)){
648var pos=this.xscale*(_134[i]-this.minxval);
649if((pos>1)||(pos<0)){
650continue;
651}
652this.xticks.push([pos,_134[i]]);
653_136++;
654}
655if(_136>this.options.xNumberOfTicks){
656break;
657}
658}
659}
660}
661};
662PlotKit.Layout.prototype._evaluateLineTicksForYAxis=function(){
663var _137=MochiKit.Base.isUndefinedOrNull;
664if(this.options.yTicks){
665this.yticks=new Array();
666var _138=function(tick){
667var _139=tick.label;
668if(_137(_139)){
669_139=tick.v.toString();
670}
671var pos=1-(this.yscale*(tick.v-this.minyval));
672if((pos>=0)&&(pos<=1)){
673this.yticks.push([pos,_139]);
674}
675};
676MochiKit.Iter.forEach(this.options.yTicks,bind(_138,this));
677}else{
678if(this.options.yNumberOfTicks){
679this.yticks=new Array();
680var _140=PlotKit.Base.roundInterval;
681var prec=this.options.yTickPrecision;
682var _142=_140(this.yrange,this.options.yNumberOfTicks,prec);
683for(var i=0;i<=this.options.yNumberOfTicks;i++){
684var yval=this.minyval+(i*_142);
685var pos=1-((yval-this.minyval)*this.yscale);
686if((pos>1)||(pos<0)){
687continue;
688}
689this.yticks.push([pos,MochiKit.Format.roundToFixed(yval,prec)]);
690}
691}
692}
693};
694PlotKit.Layout.prototype._evaluateLineTicks=function(){
695this._evaluateLineTicksForXAxis();
696this._evaluateLineTicksForYAxis();
697};
698PlotKit.Layout.prototype._evaluateBarTicks=function(){
699this._evaluateLineTicks();
700var _144=function(tick){
701return [tick[0]+(this.minxdelta*this.xscale)/2,tick[1]];
702};
703this.xticks=MochiKit.Base.map(bind(_144,this),this.xticks);
704if(this.options.barOrientation=="horizontal"){
705var _145=this.xticks;
706this.xticks=this.yticks;
707this.yticks=_145;
708var _146=function(tick){
709return [1-tick[0],tick[1]];
710};
711this.xticks=MochiKit.Base.map(_146,this.xticks);
712}
713};
714PlotKit.Layout.prototype._evaluatePieTicks=function(){
715var _147=MochiKit.Base.isUndefinedOrNull;
716var _148=MochiKit.Format.numberFormatter("#%");
717this.xticks=new Array();
718if(this.options.xTicks){
719var _149=new Array();
720for(var i=0;i<this.slices.length;i++){
721_149[this.slices[i].xval]=this.slices[i];
722}
723for(var i=0;i<this.options.xTicks.length;i++){
724var tick=this.options.xTicks[i];
725var _150=_149[tick.v];
726var _151=tick.label;
727if(_150){
728if(_147(_151)){
729_151=tick.v.toString();
730}
731_151+=" ("+_148(_150.fraction)+")";
732this.xticks.push([tick.v,_151]);
733}
734}
735}else{
736for(var i=0;i<this.slices.length;i++){
737var _150=this.slices[i];
738var _151=_150.xval+" ("+_148(_150.fraction)+")";
739this.xticks.push([_150.xval,_151]);
740}
741}
742};
743PlotKit.Layout.prototype._regenerateHitTestCache=function(){
744this.hitTestCache.xvalues=this._uniqueXValues();
745this.hitTestCache.xlookup=new Array();
746this.hitTestCache.x2maxy=new Array();
747var _152=MochiKit.Base.listMax;
748var _153=MochiKit.Base.itemgetter;
749var map=MochiKit.Base.map;
750var _154=keys(this.datasets);
751for(var i=0;i<_154.length;i++){
752var _155=this.datasets[_154[i]];
753for(var j=0;j<_155.length;j++){
754var xval=_155[j][0];
755var yval=_155[j][1];
756if(this.hitTestCache.xlookup[xval]){
757this.hitTestCache.xlookup[xval].push([yval,_154[i]]);
758}else{
759this.hitTestCache.xlookup[xval]=[[yval,_154[i]]];
760}
761}
762}
763for(var x in this.hitTestCache.xlookup){
764var _157=this.hitTestCache.xlookup[x];
765this.hitTestCache.x2maxy[x]=_152(map(_153(0),_157));
766}
767};
768PlotKit.LayoutModule={};
769PlotKit.LayoutModule.Layout=PlotKit.Layout;
770PlotKit.LayoutModule.EXPORT=["Layout"];
771PlotKit.LayoutModule.EXPORT_OK=[];
772PlotKit.LayoutModule.__new__=function(){
773var m=MochiKit.Base;
774m.nameFunctions(this);
775this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
776};
777PlotKit.LayoutModule.__new__();
778MochiKit.Base._exportSymbols(this,PlotKit.LayoutModule);
779try{
780if((typeof (PlotKit.Base)=="undefined")||(typeof (PlotKit.Layout)=="undefined")){
781throw "";
782}
783}
784catch(e){
785throw "PlotKit.Layout depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.{Base,Layout}";
786}
787if(typeof (PlotKit.CanvasRenderer)=="undefined"){
788PlotKit.CanvasRenderer={};
789}
790PlotKit.CanvasRenderer.NAME="PlotKit.CanvasRenderer";
791PlotKit.CanvasRenderer.VERSION=PlotKit.VERSION;
792PlotKit.CanvasRenderer.__repr__=function(){
793return "["+this.NAME+" "+this.VERSION+"]";
794};
795PlotKit.CanvasRenderer.toString=function(){
796return this.__repr__();
797};
798PlotKit.CanvasRenderer=function(_158,_159,_160){
799if(arguments.length>0){
800this.__init__(_158,_159,_160);
801}
802};
803PlotKit.CanvasRenderer.prototype.__init__=function(_161,_162,_163){
804var _164=MochiKit.Base.isUndefinedOrNull;
805var _165=MochiKit.Color.Color;
806this.options={"drawBackground":true,"backgroundColor":_165.whiteColor(),"padding":{left:30,right:30,top:5,bottom:10},"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[0]),"strokeColor":_165.whiteColor(),"strokeColorTransform":"asStrokeColor","strokeWidth":0.5,"shouldFill":true,"shouldStroke":true,"drawXAxis":true,"drawYAxis":true,"axisLineColor":_165.blackColor(),"axisLineWidth":0.5,"axisTickSize":3,"axisLabelColor":_165.blackColor(),"axisLabelFont":"Arial","axisLabelFontSize":9,"axisLabelWidth":50,"pieRadius":0.4,"enableEvents":true};
807MochiKit.Base.update(this.options,_163?_163:{});
808this.layout=_162;
809this.element=MochiKit.DOM.getElement(_161);
810this.container=this.element.parentNode;
811this.isIE=PlotKit.Base.excanvasSupported();
812if(this.isIE&&!_164(G_vmlCanvasManager)){
813this.IEDelay=0.5;
814this.maxTries=5;
815this.renderDelay=null;
816this.clearDelay=null;
817this.element=G_vmlCanvasManager.initElement(this.element);
818}
819this.height=this.element.height;
820this.width=this.element.width;
821if(_164(this.element)){
822throw "CanvasRenderer() - passed canvas is not found";
823}
824if(!this.isIE&&!(PlotKit.CanvasRenderer.isSupported(this.element))){
825throw "CanvasRenderer() - Canvas is not supported.";
826}
827if(_164(this.container)||(this.container.nodeName.toLowerCase()!="div")){
828throw "CanvasRenderer() - <canvas> needs to be enclosed in <div>";
829}
830this.xlabels=new Array();
831this.ylabels=new Array();
832this.isFirstRender=true;
833this.area={x:this.options.padding.left,y:this.options.padding.top,w:this.width-this.options.padding.left-this.options.padding.right,h:this.height-this.options.padding.top-this.options.padding.bottom};
834MochiKit.DOM.updateNodeAttributes(this.container,{"style":{"position":"relative","width":this.width+"px"}});
835};
836PlotKit.CanvasRenderer.prototype.render=function(){
837if(this.isIE){
838try{
839if(this.renderDelay){
840this.renderDelay.cancel();
841this.renderDelay=null;
842}
843var _166=this.element.getContext("2d");
844}
845catch(e){
846this.isFirstRender=false;
847if(this.maxTries-->0){
848this.renderDelay=MochiKit.Async.wait(this.IEDelay);
849this.renderDelay.addCallback(bind(this.render,this));
850}
851return;
852}
853}
854if(this.options.drawBackground){
855this._renderBackground();
856}
857if(this.layout.style=="bar"){
858this._renderBarChart();
859this._renderBarAxis();
860}else{
861if(this.layout.style=="pie"){
862this._renderPieChart();
863this._renderPieAxis();
864}else{
865if(this.layout.style=="line"){
866this._renderLineChart();
867this._renderLineAxis();
868}
869}
870}
871};
872PlotKit.CanvasRenderer.prototype._renderBarChartWrap=function(data,_168){
873var _169=this.element.getContext("2d");
874var _170=this.options.colorScheme.length;
875var _171=this.options.colorScheme;
876var _172=MochiKit.Base.keys(this.layout.datasets);
877var _173=_172.length;
878for(var i=0;i<_173;i++){
879var _174=_172[i];
880var _175=_171[i%_170];
881_169.save();
882_169.fillStyle=_175.toRGBString();
883if(this.options.strokeColor){
884_169.strokeStyle=this.options.strokeColor.toRGBString();
885}else{
886if(this.options.strokeColorTransform){
887_169.strokeStyle=_175[this.options.strokeColorTransform]().toRGBString();
888}
889}
890_169.lineWidth=this.options.strokeWidth;
891var _176=function(obj){
892if(obj.name==_174){
893_168(_169,obj);
894}
895};
896MochiKit.Iter.forEach(data,bind(_176,this));
897_169.restore();
898}
899};
900PlotKit.CanvasRenderer.prototype._renderBarChart=function(){
901var bind=MochiKit.Base.bind;
902var _178=function(_179,bar){
903var x=this.area.w*bar.x+this.area.x;
904var y=this.area.h*bar.y+this.area.y;
905var w=this.area.w*bar.w;
906var h=this.area.h*bar.h;
907if((w<1)||(h<1)){
908return;
909}
910if(this.options.shouldFill){
911_179.fillRect(x,y,w,h);
912}
913if(this.options.shouldStroke){
914_179.strokeRect(x,y,w,h);
915}
916};
917this._renderBarChartWrap(this.layout.bars,bind(_178,this));
918};
919PlotKit.CanvasRenderer.prototype._renderLineChart=function(){
920var _182=this.element.getContext("2d");
921var _183=this.options.colorScheme.length;
922var _184=this.options.colorScheme;
923var _185=MochiKit.Base.keys(this.layout.datasets);
924var _186=_185.length;
925var bind=MochiKit.Base.bind;
926var _187=MochiKit.Base.partial;
927for(var i=0;i<_186;i++){
928var _188=_185[i];
929var _189=_184[i%_183];
930var _190=this.options.strokeColorTransform;
931_182.save();
932_182.fillStyle=_189.toRGBString();
933if(this.options.strokeColor){
934_182.strokeStyle=this.options.strokeColor.toRGBString();
935}else{
936if(this.options.strokeColorTransform){
937_182.strokeStyle=_189[_190]().toRGBString();
938}
939}
940_182.lineWidth=this.options.strokeWidth;
941var _191=function(ctx){
942ctx.beginPath();
943ctx.moveTo(this.area.x,this.area.y+this.area.h);
944var _193=function(ctx_,_195){
945if(_195.name==_188){
946ctx_.lineTo(this.area.w*_195.x+this.area.x,this.area.h*_195.y+this.area.y);
947}
948};
949MochiKit.Iter.forEach(this.layout.points,_187(_193,ctx),this);
950ctx.lineTo(this.area.w+this.area.x,this.area.h+this.area.y);
951ctx.lineTo(this.area.x,this.area.y+this.area.h);
952ctx.closePath();
953};
954if(this.options.shouldFill){
955bind(_191,this)(_182);
956_182.fill();
957}
958if(this.options.shouldStroke){
959bind(_191,this)(_182);
960_182.stroke();
961}
962_182.restore();
963}
964};
965PlotKit.CanvasRenderer.prototype._renderPieChart=function(){
966var _196=this.element.getContext("2d");
967var _197=this.options.colorScheme.length;
968var _198=this.layout.slices;
969var _199=this.area.x+this.area.w*0.5;
970var _200=this.area.y+this.area.h*0.5;
971var _201=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
972if(this.isIE){
973_199=parseInt(_199);
974_200=parseInt(_200);
975_201=parseInt(_201);
976}
977for(var i=0;i<_198.length;i++){
978var _202=this.options.colorScheme[i%_197];
979_196.save();
980_196.fillStyle=_202.toRGBString();
981var _203=function(){
982_196.beginPath();
983_196.moveTo(_199,_200);
984_196.arc(_199,_200,_201,_198[i].startAngle-Math.PI/2,_198[i].endAngle-Math.PI/2,false);
985_196.lineTo(_199,_200);
986_196.closePath();
987};
988if(Math.abs(_198[i].startAngle-_198[i].endAngle)>0.001){
989if(this.options.shouldFill){
990_203();
991_196.fill();
992}
993if(this.options.shouldStroke){
994_203();
995_196.lineWidth=this.options.strokeWidth;
996if(this.options.strokeColor){
997_196.strokeStyle=this.options.strokeColor.toRGBString();
998}else{
999if(this.options.strokeColorTransform){
1000_196.strokeStyle=_202[this.options.strokeColorTransform]().toRGBString();
1001}
1002}
1003_196.stroke();
1004}
1005}
1006_196.restore();
1007}
1008};
1009PlotKit.CanvasRenderer.prototype._renderBarAxis=function(){
1010this._renderAxis();
1011};
1012PlotKit.CanvasRenderer.prototype._renderLineAxis=function(){
1013this._renderAxis();
1014};
1015PlotKit.CanvasRenderer.prototype._renderAxis=function(){
1016if(!this.options.drawXAxis&&!this.options.drawYAxis){
1017return;
1018}
1019var _204=this.element.getContext("2d");
1020var _205={"style":{"position":"absolute","fontSize":this.options.axisLabelFontSize+"px","zIndex":10,"color":this.options.axisLabelColor.toRGBString(),"width":this.options.axisLabelWidth+"px","overflow":"hidden"}};
1021_204.save();
1022_204.strokeStyle=this.options.axisLineColor.toRGBString();
1023_204.lineWidth=this.options.axisLineWidth;
1024if(this.options.drawYAxis){
1025if(this.layout.yticks){
1026var _206=function(tick){
1027if(typeof (tick)=="function"){
1028return;
1029}
1030var x=this.area.x;
1031var y=this.area.y+tick[0]*this.area.h;
1032_204.beginPath();
1033_204.moveTo(x,y);
1034_204.lineTo(x-this.options.axisTickSize,y);
1035_204.closePath();
1036_204.stroke();
1037var _207=DIV(_205,tick[1]);
1038_207.style.top=(y-this.options.axisLabelFontSize)+"px";
1039_207.style.left=(x-this.options.padding.left-this.options.axisTickSize)+"px";
1040_207.style.textAlign="right";
1041_207.style.width=(this.options.padding.left-this.options.axisTickSize*2)+"px";
1042MochiKit.DOM.appendChildNodes(this.container,_207);
1043this.ylabels.push(_207);
1044};
1045MochiKit.Iter.forEach(this.layout.yticks,bind(_206,this));
1046}
1047_204.beginPath();
1048_204.moveTo(this.area.x,this.area.y);
1049_204.lineTo(this.area.x,this.area.y+this.area.h);
1050_204.closePath();
1051_204.stroke();
1052}
1053if(this.options.drawXAxis){
1054if(this.layout.xticks){
1055var _206=function(tick){
1056if(typeof (dataset)=="function"){
1057return;
1058}
1059var x=this.area.x+tick[0]*this.area.w;
1060var y=this.area.y+this.area.h;
1061_204.beginPath();
1062_204.moveTo(x,y);
1063_204.lineTo(x,y+this.options.axisTickSize);
1064_204.closePath();
1065_204.stroke();
1066var _208=DIV(_205,tick[1]);
1067_208.style.top=(y+this.options.axisTickSize)+"px";
1068_208.style.left=(x-this.options.axisLabelWidth/2)+"px";
1069_208.style.textAlign="center";
1070_208.style.width=this.options.axisLabelWidth+"px";
1071MochiKit.DOM.appendChildNodes(this.container,_208);
1072this.xlabels.push(_208);
1073};
1074MochiKit.Iter.forEach(this.layout.xticks,bind(_206,this));
1075}
1076_204.beginPath();
1077_204.moveTo(this.area.x,this.area.y+this.area.h);
1078_204.lineTo(this.area.x+this.area.w,this.area.y+this.area.h);
1079_204.closePath();
1080_204.stroke();
1081}
1082_204.restore();
1083};
1084PlotKit.CanvasRenderer.prototype._renderPieAxis=function(){
1085if(!this.options.drawXAxis){
1086return;
1087}
1088if(this.layout.xticks){
1089var _209=new Array();
1090for(var i=0;i<this.layout.slices.length;i++){
1091_209[this.layout.slices[i].xval]=this.layout.slices[i];
1092}
1093var _210=this.area.x+this.area.w*0.5;
1094var _211=this.area.y+this.area.h*0.5;
1095var _212=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
1096var _213=this.options.axisLabelWidth;
1097for(var i=0;i<this.layout.xticks.length;i++){
1098var _214=_209[this.layout.xticks[i][0]];
1099if(MochiKit.Base.isUndefinedOrNull(_214)){
1100continue;
1101}
1102var _215=(_214.startAngle+_214.endAngle)/2;
1103var _216=_215;
1104if(_216>Math.PI*2){
1105_216=_216-Math.PI*2;
1106}else{
1107if(_216<0){
1108_216=_216+Math.PI*2;
1109}
1110}
1111var _217=_210+Math.sin(_216)*(_212+10);
1112var _218=_211-Math.cos(_216)*(_212+10);
1113var _219={"position":"absolute","zIndex":11,"width":_213+"px","fontSize":this.options.axisLabelFontSize+"px","overflow":"hidden","color":this.options.axisLabelColor.toHexString()};
1114if(_216<=Math.PI*0.5){
1115_219["textAlign"]="left";
1116_219["verticalAlign"]="top";
1117_219["left"]=_217+"px";
1118_219["top"]=(_218-this.options.axisLabelFontSize)+"px";
1119}else{
1120if((_216>Math.PI*0.5)&&(_216<=Math.PI)){
1121_219["textAlign"]="left";
1122_219["verticalAlign"]="bottom";
1123_219["left"]=_217+"px";
1124_219["top"]=_218+"px";
1125}else{
1126if((_216>Math.PI)&&(_216<=Math.PI*1.5)){
1127_219["textAlign"]="right";
1128_219["verticalAlign"]="bottom";
1129_219["left"]=(_217-_213)+"px";
1130_219["top"]=_218+"px";
1131}else{
1132_219["textAlign"]="right";
1133_219["verticalAlign"]="bottom";
1134_219["left"]=(_217-_213)+"px";
1135_219["top"]=(_218-this.options.axisLabelFontSize)+"px";
1136}
1137}
1138}
1139var _220=DIV({"style":_219},this.layout.xticks[i][1]);
1140this.xlabels.push(_220);
1141MochiKit.DOM.appendChildNodes(this.container,_220);
1142}
1143}
1144};
1145PlotKit.CanvasRenderer.prototype._renderBackground=function(){
1146var _221=this.element.getContext("2d");
1147_221.save();
1148_221.fillStyle=this.options.backgroundColor.toRGBString();
1149_221.fillRect(0,0,this.width,this.height);
1150_221.restore();
1151};
1152PlotKit.CanvasRenderer.prototype.clear=function(){
1153if(this.isIE){
1154try{
1155if(this.clearDelay){
1156this.clearDelay.cancel();
1157this.clearDelay=null;
1158}
1159var _222=this.element.getContext("2d");
1160}
1161catch(e){
1162this.isFirstRender=false;
1163this.clearDelay=MochiKit.Async.wait(this.IEDelay);
1164this.clearDelay.addCallback(bind(this.clear,this));
1165return;
1166}
1167}
1168var _222=this.element.getContext("2d");
1169_222.clearRect(0,0,this.width,this.height);
1170MochiKit.Iter.forEach(this.xlabels,MochiKit.DOM.removeElement);
1171MochiKit.Iter.forEach(this.ylabels,MochiKit.DOM.removeElement);
1172this.xlabels=new Array();
1173this.ylabels=new Array();
1174};
1175PlotKit.CanvasRenderer.prototype._initialiseEvents=function(){
1176var _223=MochiKit.Signal.connect;
1177var bind=MochiKit.Base.bind;
1178_223(this.element,"onclick",bind(this.onclick,this));
1179};
1180PlotKit.CanvasRenderer.prototype._resolveObject=function(e){
1181var x=(e.mouse().page.x-PlotKit.Base.findPosX(this.element)-this.area.x)/this.area.w;
1182var y=(e.mouse().page.y-PlotKit.Base.findPosY(this.element)-this.area.y)/this.area.h;
1183var _225=this.layout.hitTest(x,y);
1184if(_225){
1185return _225;
1186}
1187return null;
1188};
1189PlotKit.CanvasRenderer.prototype._createEventObject=function(_226,e){
1190if(_226==null){
1191return null;
1192}
1193e.chart=_226;
1194return e;
1195};
1196PlotKit.CanvasRenderer.prototype.onclick=function(e){
1197var _227=this._resolveObject(e);
1198var _228=this._createEventObject(_227,e);
1199if(_228!=null){
1200MochiKit.Signal.signal(this,"onclick",_228);
1201}
1202};
1203PlotKit.CanvasRenderer.prototype.onmouseover=function(e){
1204var _229=this._resolveObject(e);
1205var _230=this._createEventObject(_229,e);
1206if(_230!=null){
1207signal(this,"onmouseover",_230);
1208}
1209};
1210PlotKit.CanvasRenderer.prototype.onmouseout=function(e){
1211var _231=this._resolveObject(e);
1212var _232=this._createEventObject(_231,e);
1213if(_232==null){
1214signal(this,"onmouseout",e);
1215}else{
1216signal(this,"onmouseout",_232);
1217}
1218};
1219PlotKit.CanvasRenderer.prototype.onmousemove=function(e){
1220var _233=this._resolveObject(e);
1221var _234=this._createEventObject(_233,e);
1222if((_233==null)&&(this.event_isinside==null)){
1223return;
1224}
1225if((_233!=null)&&(this.event_isinside==null)){
1226signal(this,"onmouseover",_234);
1227}
1228if((_233==null)&&(this.event_isinside!=null)){
1229signal(this,"onmouseout",_234);
1230}
1231if((_233!=null)&&(this.event_isinside!=null)){
1232signal(this,"onmousemove",_234);
1233}
1234this.event_isinside=_233;
1235};
1236PlotKit.CanvasRenderer.isSupported=function(_235){
1237var _236=null;
1238try{
1239if(MochiKit.Base.isUndefinedOrNull(_235)){
1240_236=MochiKit.DOM.CANVAS({});
1241}else{
1242_236=MochiKit.DOM.getElement(_235);
1243}
1244var _237=_236.getContext("2d");
1245}
1246catch(e){
1247var ie=navigator.appVersion.match(/MSIE (\d\.\d)/);
1248var _239=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
1249if((!ie)||(ie[1]<6)||(_239)){
1250return false;
1251}
1252return true;
1253}
1254return true;
1255};
1256PlotKit.Canvas={};
1257PlotKit.Canvas.CanvasRenderer=PlotKit.CanvasRenderer;
1258PlotKit.Canvas.EXPORT=["CanvasRenderer"];
1259PlotKit.Canvas.EXPORT_OK=["CanvasRenderer"];
1260PlotKit.Canvas.__new__=function(){
1261var m=MochiKit.Base;
1262m.nameFunctions(this);
1263this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
1264};
1265PlotKit.Canvas.__new__();
1266MochiKit.Base._exportSymbols(this,PlotKit.Canvas);
1267try{
1268if(typeof (PlotKit.Layout)=="undefined"){
1269throw "";
1270}
1271}
1272catch(e){
1273throw "PlotKit depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.Layout";
1274}
1275PlotKit.SVGRenderer=function(_240,_241,_242){
1276if(arguments.length>0){
1277this.__init__(_240,_241,_242);
1278}
1279};
1280PlotKit.SVGRenderer.NAME="PlotKit.SVGRenderer";
1281PlotKit.SVGRenderer.VERSION=PlotKit.VERSION;
1282PlotKit.SVGRenderer.__repr__=function(){
1283return "["+this.NAME+" "+this.VERSION+"]";
1284};
1285PlotKit.SVGRenderer.toString=function(){
1286return this.__repr__();
1287};
1288PlotKit.SVGRenderer.SVGNS="http://www.w3.org/2000/svg";
1289PlotKit.SVGRenderer.prototype.__init__=function(_243,_244,_245){
1290var _246=MochiKit.Base.isUndefinedOrNull;
1291this.options={"drawBackground":true,"backgroundColor":Color.whiteColor(),"padding":{left:30,right:30,top:5,bottom:10},"colorScheme":PlotKit.Base.palette(PlotKit.Base.baseColors()[1]),"strokeColor":Color.whiteColor(),"strokeColorTransform":"asStrokeColor","strokeWidth":0.5,"shouldFill":true,"shouldStroke":true,"drawXAxis":true,"drawYAxis":true,"axisLineColor":Color.blackColor(),"axisLineWidth":0.5,"axisTickSize":3,"axisLabelColor":Color.blackColor(),"axisLabelFont":"Arial","axisLabelFontSize":9,"axisLabelWidth":50,"axisLabelUseDiv":true,"pieRadius":0.4,"enableEvents":true};
1292MochiKit.Base.update(this.options,_245?_245:{});
1293this.layout=_244;
1294this.element=MochiKit.DOM.getElement(_243);
1295this.container=this.element.parentNode;
1296this.height=parseInt(this.element.getAttribute("height"));
1297this.width=parseInt(this.element.getAttribute("width"));
1298this.document=document;
1299this.root=this.element;
1300try{
1301this.document=this.element.getSVGDocument();
1302this.root=_246(this.document.documentElement)?this.element:this.document.documentElement;
1303}
1304catch(e){
1305}
1306this.element.style.zIndex=1;
1307if(_246(this.element)){
1308throw "SVGRenderer() - passed SVG object is not found";
1309}
1310if(_246(this.container)||this.container.nodeName.toLowerCase()!="div"){
1311throw "SVGRenderer() - No DIV's around the SVG.";
1312}
1313this.xlabels=new Array();
1314this.ylabels=new Array();
1315this.defs=this.createSVGElement("defs");
1316this.area={x:this.options.padding.left,y:this.options.padding.top,w:this.width-this.options.padding.left-this.options.padding.right,h:this.height-this.options.padding.top-this.options.padding.bottom};
1317MochiKit.DOM.updateNodeAttributes(this.container,{"style":{"position":"relative","width":this.width+"px"}});
1318};
1319PlotKit.SVGRenderer.prototype.render=function(){
1320if(this.options.drawBackground){
1321this._renderBackground();
1322}
1323if(this.layout.style=="bar"){
1324this._renderBarChart();
1325this._renderBarAxis();
1326}else{
1327if(this.layout.style=="pie"){
1328this._renderPieChart();
1329this._renderPieAxis();
1330}else{
1331if(this.layout.style=="line"){
1332this._renderLineChart();
1333this._renderLineAxis();
1334}
1335}
1336}
1337};
1338PlotKit.SVGRenderer.prototype._renderBarOrLine=function(data,_247,_248,_249){
1339var _250=this.options.colorScheme.length;
1340var _251=this.options.colorScheme;
1341var _252=MochiKit.Base.keys(this.layout.datasets);
1342var _253=_252.length;
1343for(var i=0;i<_253;i++){
1344var _254=_252[i];
1345var _255=new Array();
1346var _256=_251[i%_250];
1347if(this.options.shouldFill){
1348_255["fill"]=_256.toRGBString();
1349}else{
1350_255["fill"]="none";
1351}
1352if(this.options.shouldStroke&&(this.options.strokeColor||this.options.strokeColorTransform)){
1353if(this.options.strokeColor){
1354_255["stroke"]=this.options.strokeColor.toRGBString();
1355}else{
1356if(this.options.strokeColorTransform){
1357_255["stroke"]=_256[this.options.strokeColorTransform]().toRGBString();
1358}
1359}
1360_255["strokeWidth"]=this.options.strokeWidth;
1361}
1362if(_248){
1363_248(_255);
1364}
1365var _257=function(obj){
1366if(obj.name==_254){
1367_247(_255,obj);
1368}
1369};
1370MochiKit.Iter.forEach(data,bind(_257,this));
1371if(_249){
1372_249(_255);
1373}
1374}
1375};
1376PlotKit.SVGRenderer.prototype._renderBarChart=function(){
1377var bind=MochiKit.Base.bind;
1378var _258=function(_259,bar){
1379var x=this.area.w*bar.x+this.area.x;
1380var y=this.area.h*bar.y+this.area.y;
1381var w=this.area.w*bar.w;
1382var h=this.area.h*bar.h;
1383this._drawRect(x,y,w,h,_259);
1384};
1385this._renderBarOrLine(this.layout.bars,bind(_258,this));
1386};
1387PlotKit.SVGRenderer.prototype._renderLineChart=function(){
1388var bind=MochiKit.Base.bind;
1389var _260=function(_261,_262){
1390this._tempPointsBuffer+=(this.area.w*_262.x+this.area.x)+","+(this.area.h*_262.y+this.area.y)+" ";
1391};
1392var _263=function(_264){
1393this._tempPointsBuffer="";
1394this._tempPointsBuffer+=(this.area.x)+","+(this.area.y+this.area.h)+" ";
1395};
1396var _265=function(_266){
1397this._tempPointsBuffer+=(this.area.w+this.area.x)+","+(this.area.h+this.area.y);
1398_266["points"]=this._tempPointsBuffer;
1399var elem=this.createSVGElement("polygon",_266);
1400this.root.appendChild(elem);
1401};
1402this._renderBarOrLine(this.layout.points,bind(_260,this),bind(_263,this),bind(_265,this));
1403};
1404PlotKit.SVGRenderer.prototype._renderPieChart=function(){
1405var _268=this.options.colorScheme.length;
1406var _269=this.layout.slices;
1407var _270=this.area.x+this.area.w*0.5;
1408var _271=this.area.y+this.area.h*0.5;
1409var _272=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
1410if(_269.length==1&&(Math.abs(_269[0].startAngle)-Math.abs(_269[0].endAngle)<0.1)){
1411var _273={"cx":_270,"cy":_271,"r":_272};
1412var _274=this.options.colorScheme[0];
1413if(this.options.shouldFill){
1414_273["fill"]=_274.toRGBString();
1415}else{
1416_273["fill"]="none";
1417}
1418if(this.options.shouldStroke&&(this.options.strokeColor||this.options.strokeColorTransform)){
1419if(this.options.strokeColor){
1420_273["stroke"]=this.options.strokeColor.toRGBString();
1421}else{
1422if(this.options.strokeColorTransform){
1423_273["stroke"]=_274[this.options.strokeColorTransform]().toRGBString();
1424}
1425}
1426_273["style"]="stroke-width: "+this.options.strokeWidth;
1427}
1428this.root.appendChild(this.createSVGElement("circle",_273));
1429return;
1430}
1431for(var i=0;i<_269.length;i++){
1432var _273=new Array();
1433var _274=this.options.colorScheme[i%_268];
1434if(this.options.shouldFill){
1435_273["fill"]=_274.toRGBString();
1436}else{
1437_273["fill"]="none";
1438}
1439if(this.options.shouldStroke&&(this.options.strokeColor||this.options.strokeColorTransform)){
1440if(this.options.strokeColor){
1441_273["stroke"]=this.options.strokeColor.toRGBString();
1442}else{
1443if(this.options.strokeColorTransform){
1444_273["stroke"]=_274[this.options.strokeColorTransform]().toRGBString();
1445}
1446}
1447_273["style"]="stroke-width:"+this.options.strokeWidth;
1448}
1449var _275=0;
1450if(Math.abs(_269[i].endAngle-_269[i].startAngle)>Math.PI){
1451_275=1;
1452}
1453var x1=Math.cos(_269[i].startAngle-Math.PI/2)*_272;
1454var y1=Math.sin(_269[i].startAngle-Math.PI/2)*_272;
1455var x2=Math.cos(_269[i].endAngle-Math.PI/2)*_272;
1456var y2=Math.sin(_269[i].endAngle-Math.PI/2)*_272;
1457var rx=x2-x1;
1458var ry=y2-y1;
1459var _282="M"+_270+","+_271+" ";
1460_282+="l"+x1+","+y1+" ";
1461_282+="a"+_272+","+_272+" 0 "+_275+",1 "+rx+","+ry+" z";
1462_273["d"]=_282;
1463var elem=this.createSVGElement("path",_273);
1464this.root.appendChild(elem);
1465}
1466};
1467PlotKit.SVGRenderer.prototype._renderBarAxis=function(){
1468this._renderAxis();
1469};
1470PlotKit.SVGRenderer.prototype._renderLineAxis=function(){
1471this._renderAxis();
1472};
1473PlotKit.SVGRenderer.prototype._renderAxis=function(){
1474if(!this.options.drawXAxis&&!this.options.drawYAxis){
1475return;
1476}
1477var _283={"style":{"position":"absolute","textAlign":"center","fontSize":this.options.axisLabelFontSize+"px","zIndex":10,"color":this.options.axisLabelColor.toRGBString(),"width":this.options.axisLabelWidth+"px","overflow":"hidden"}};
1478var _284={"stroke":this.options.axisLineColor.toRGBString(),"strokeWidth":this.options.axisLineWidth};
1479if(this.options.drawYAxis){
1480if(this.layout.yticks){
1481var _285=function(tick){
1482var x=this.area.x;
1483var y=this.area.y+tick[0]*this.area.h;
1484this._drawLine(x,y,x-3,y,_284);
1485if(this.options.axisLabelUseDiv){
1486var _286=DIV(_283,tick[1]);
1487_286.style.top=(y-this.options.axisLabelFontSize)+"px";
1488_286.style.left=(x-this.options.padding.left+this.options.axisTickSize)+"px";
1489_286.style.textAlign="left";
1490_286.style.width=(this.options.padding.left-3)+"px";
1491MochiKit.DOM.appendChildNodes(this.container,_286);
1492this.ylabels.push(_286);
1493}else{
1494var _287={y:y+3,x:(x-this.options.padding.left+3),width:(this.options.padding.left-this.options.axisTickSize)+"px",height:(this.options.axisLabelFontSize+3)+"px",fontFamily:"Arial",fontSize:this.options.axisLabelFontSize+"px",fill:this.options.axisLabelColor.toRGBString()};
1495var _286=this.createSVGElement("text",_287);
1496_286.appendChild(this.document.createTextNode(tick[1]));
1497this.root.appendChild(_286);
1498}
1499};
1500MochiKit.Iter.forEach(this.layout.yticks,bind(_285,this));
1501}
1502this._drawLine(this.area.x,this.area.y,this.area.x,this.area.y+this.area.h,_284);
1503}
1504if(this.options.drawXAxis){
1505if(this.layout.xticks){
1506var _285=function(tick){
1507var x=this.area.x+tick[0]*this.area.w;
1508var y=this.area.y+this.area.h;
1509this._drawLine(x,y,x,y+this.options.axisTickSize,_284);
1510if(this.options.axisLabelUseDiv){
1511var _288=DIV(_283,tick[1]);
1512_288.style.top=(y+this.options.axisTickSize)+"px";
1513_288.style.left=(x-this.options.axisLabelWidth/2)+"px";
1514_288.style.textAlign="center";
1515_288.style.width=this.options.axisLabelWidth+"px";
1516MochiKit.DOM.appendChildNodes(this.container,_288);
1517this.xlabels.push(_288);
1518}else{
1519var _289={y:(y+this.options.axisTickSize+this.options.axisLabelFontSize),x:x-3,width:this.options.axisLabelWidth+"px",height:(this.options.axisLabelFontSize+3)+"px",fontFamily:"Arial",fontSize:this.options.axisLabelFontSize+"px",fill:this.options.axisLabelColor.toRGBString(),textAnchor:"middle"};
1520var _288=this.createSVGElement("text",_289);
1521_288.appendChild(this.document.createTextNode(tick[1]));
1522this.root.appendChild(_288);
1523}
1524};
1525MochiKit.Iter.forEach(this.layout.xticks,bind(_285,this));
1526}
1527this._drawLine(this.area.x,this.area.y+this.area.h,this.area.x+this.area.w,this.area.y+this.area.h,_284);
1528}
1529};
1530PlotKit.SVGRenderer.prototype._renderPieAxis=function(){
1531if(this.layout.xticks){
1532var _290=new Array();
1533for(var i=0;i<this.layout.slices.length;i++){
1534_290[this.layout.slices[i].xval]=this.layout.slices[i];
1535}
1536var _291=this.area.x+this.area.w*0.5;
1537var _292=this.area.y+this.area.h*0.5;
1538var _293=Math.min(this.area.w*this.options.pieRadius+10,this.area.h*this.options.pieRadius+10);
1539var _294=this.options.axisLabelWidth;
1540for(var i=0;i<this.layout.xticks.length;i++){
1541var _295=_290[this.layout.xticks[i][0]];
1542if(MochiKit.Base.isUndefinedOrNull(_295)){
1543continue;
1544}
1545var _296=(_295.startAngle+_295.endAngle)/2;
1546var _297=_296;
1547if(_297>Math.PI*2){
1548_297=_297-Math.PI*2;
1549}else{
1550if(_297<0){
1551_297=_297+Math.PI*2;
1552}
1553}
1554var _298=_291+Math.sin(_297)*(_293+10);
1555var _299=_292-Math.cos(_297)*(_293+10);
1556var _300={"position":"absolute","zIndex":11,"width":_294+"px","fontSize":this.options.axisLabelFontSize+"px","overflow":"hidden","color":this.options.axisLabelColor.toHexString()};
1557var _301={"width":_294+"px","fontSize":this.options.axisLabelFontSize+"px","height":(this.options.axisLabelFontSize+3)+"px","fill":this.options.axisLabelColor.toRGBString()};
1558if(_297<=Math.PI*0.5){
1559MochiKit.Base.update(_300,{"textAlign":"left","verticalAlign":"top","left":_298+"px","top":(_299-this.options.axisLabelFontSize)+"px"});
1560MochiKit.Base.update(_301,{"x":_298,"y":(_299-this.options.axisLabelFontSize),"textAnchor":"left"});
1561}else{
1562if((_297>Math.PI*0.5)&&(_297<=Math.PI)){
1563MochiKit.Base.update(_300,{"textAlign":"left","verticalAlign":"bottom","left":_298+"px","top":_299+"px"});
1564MochiKit.Base.update(_301,{"textAnchor":"left","x":_298,"y":_299});
1565}else{
1566if((_297>Math.PI)&&(_297<=Math.PI*1.5)){
1567MochiKit.Base.update(_300,{"textAlign":"right","verticalAlign":"bottom","left":_298+"px","top":_299+"px"});
1568MochiKit.Base.update(_301,{"textAnchor":"right","x":_298-_294,"y":_299});
1569}else{
1570MochiKit.Base.update(_300,{"textAlign":"left","verticalAlign":"bottom","left":_298+"px","top":_299+"px"});
1571MochiKit.Base.update(_301,{"textAnchor":"left","x":_298-_294,"y":_299-this.options.axisLabelFontSize});
1572}
1573}
1574}
1575if(this.options.axisLabelUseDiv){
1576var _302=DIV({"style":_300},this.layout.xticks[i][1]);
1577this.xlabels.push(_302);
1578MochiKit.DOM.appendChildNodes(this.container,_302);
1579}else{
1580var _302=this.createSVGElement("text",_301);
1581_302.appendChild(this.document.createTextNode(this.layout.xticks[i][1]));
1582this.root.appendChild(_302);
1583}
1584}
1585}
1586};
1587PlotKit.SVGRenderer.prototype._renderBackground=function(){
1588var opts={"stroke":"none","fill":this.options.backgroundColor.toRGBString()};
1589this._drawRect(0,0,this.width,this.height,opts);
1590};
1591PlotKit.SVGRenderer.prototype._drawRect=function(x,y,w,h,_304){
1592var _305={x:x+"px",y:y+"px",width:w+"px",height:h+"px"};
1593if(_304){
1594MochiKit.Base.update(_305,_304);
1595}
1596var elem=this.createSVGElement("rect",_305);
1597this.root.appendChild(elem);
1598};
1599PlotKit.SVGRenderer.prototype._drawLine=function(x1,y1,x2,y2,_306){
1600var _307={x1:x1+"px",y1:y1+"px",x2:x2+"px",y2:y2+"px"};
1601if(_306){
1602MochiKit.Base.update(_307,_306);
1603}
1604var elem=this.createSVGElement("line",_307);
1605this.root.appendChild(elem);
1606};
1607PlotKit.SVGRenderer.prototype.clear=function(){
1608while(this.element.firstChild){
1609this.element.removeChild(this.element.firstChild);
1610}
1611if(this.options.axisLabelUseDiv){
1612for(var i=0;i<this.xlabels.length;i++){
1613MochiKit.DOM.removeElement(this.xlabels[i]);
1614}
1615for(var i=0;i<this.ylabels.length;i++){
1616MochiKit.DOM.removeElement(this.ylabels[i]);
1617}
1618}
1619this.xlabels=new Array();
1620this.ylabels=new Array();
1621};
1622PlotKit.SVGRenderer.prototype.createSVGElement=function(name,_309){
1623var _310=MochiKit.Base.isUndefinedOrNull;
1624var elem;
1625var doc=_310(this.document)?document:this.document;
1626try{
1627elem=doc.createElementNS(PlotKit.SVGRenderer.SVGNS,name);
1628}
1629catch(e){
1630elem=doc.createElement(name);
1631elem.setAttribute("xmlns",PlotKit.SVGRenderer.SVGNS);
1632}
1633if(_309){
1634MochiKit.DOM.updateNodeAttributes(elem,_309);
1635}
1636return elem;
1637};
1638PlotKit.SVGRenderer.SVG=function(_312){
1639var ie=navigator.appVersion.match(/MSIE (\d\.\d)/);
1640var _313=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
1641if(ie&&(ie[1]>=6)&&(!_313)){
1642var _314=_312["width"]?_312["width"]:"100";
1643var _315=_312["height"]?_312["height"]:"100";
1644var eid=_312["id"]?_312["id"]:"notunique";
1645var html="<svg:svg width=\""+_314+"\" height=\""+_315+"\" ";
1646html+="id=\""+eid+"\" version=\"1.1\" baseProfile=\"full\" />";
1647var _318=document.createElement(html);
1648var _319=_318.getSVGDocument().createElementNS(PlotKit.SVGRenderer.SVGNS,"svg");
1649_319.setAttribute("width",_314);
1650_319.setAttribute("height",_315);
1651_318.getSVGDocument().appendChild(_319);
1652return _318;
1653}else{
1654return PlotKit.SVGRenderer.prototype.createSVGElement("svg",_312);
1655}
1656};
1657PlotKit.SVGRenderer.isSupported=function(){
1658var _320=(navigator.userAgent.toLowerCase().indexOf("opera")!=-1);
1659var _321=navigator.appVersion.match(/MSIE (\d\.\d)/);
1660var _322=navigator.userAgent.match(/AppleWebKit\/(\d+)/);
1661var _323=navigator.userAgent.match(/Opera\/(\d*\.\d*)/);
1662var _324=navigator.userAgent.match(/rv:(\d*\.\d*).*Gecko/);
1663var _325="http://www.w3.org/TR/SVG11/feature#SVG";
1664if(_321&&(_321[1]>=6)&&!_320){
1665return document.implementation.hasFeature(_325,"1.1");
1666}
1667if(_323&&(_323[1]>8.9)){
1668return true;
1669}
1670if(_324&&(_324>1.7)){
1671return true;
1672}
1673return false;
1674};
1675PlotKit.SVG={};
1676PlotKit.SVG.SVGRenderer=PlotKit.SVGRenderer;
1677PlotKit.SVG.EXPORT=["SVGRenderer"];
1678PlotKit.SVG.EXPORT_OK=["SVGRenderer"];
1679PlotKit.SVG.__new__=function(){
1680var m=MochiKit.Base;
1681m.nameFunctions(this);
1682this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
1683};
1684PlotKit.SVG.__new__();
1685MochiKit.Base._exportSymbols(this,PlotKit.SVG);
1686try{
1687if(typeof (PlotKit.CanvasRenderer)=="undefined"){
1688throw "";
1689}
1690}
1691catch(e){
1692throw "SweetCanvas depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.{Layout, Canvas}";
1693}
1694if(typeof (PlotKit.SweetCanvasRenderer)=="undefined"){
1695PlotKit.SweetCanvasRenderer={};
1696}
1697PlotKit.SweetCanvasRenderer=function(_326,_327,_328){
1698if(arguments.length>0){
1699this.__init__(_326,_327,_328);
1700}
1701};
1702PlotKit.SweetCanvasRenderer.NAME="PlotKit.SweetCanvasRenderer";
1703PlotKit.SweetCanvasRenderer.VERSION=PlotKit.VERSION;
1704PlotKit.SweetCanvasRenderer.__repr__=function(){
1705return "["+this.NAME+" "+this.VERSION+"]";
1706};
1707PlotKit.SweetCanvasRenderer.toString=function(){
1708return this.__repr__();
1709};
1710PlotKit.SweetCanvasRenderer.prototype=new PlotKit.CanvasRenderer();
1711PlotKit.SweetCanvasRenderer.prototype.constructor=PlotKit.SweetCanvasRenderer;
1712PlotKit.SweetCanvasRenderer.__super__=PlotKit.CanvasRenderer.prototype;
1713PlotKit.SweetCanvasRenderer.prototype.__init__=function(el,_330,opts){
1714var _331=PlotKit.Base.officeBlue();
1715MochiKit.Base.update(_331,opts);
1716PlotKit.SweetCanvasRenderer.__super__.__init__.call(this,el,_330,_331);
1717};
1718PlotKit.SweetCanvasRenderer.prototype._renderBarChart=function(){
1719var bind=MochiKit.Base.bind;
1720var _332=Color.blackColor().colorWithAlpha(0.1).toRGBString();
1721var _333=function(_334,x,y,w,h){
1722_334.fillStyle=_332;
1723_334.fillRect(x-2,y-2,w+4,h+2);
1724_334.fillStyle=_332;
1725_334.fillRect(x-1,y-1,w+2,h+1);
1726};
1727var _335=this.options.colorScheme.length;
1728var _336=this.options.colorScheme;
1729var _337=PlotKit.Base.keys(this.layout.datasets);
1730var _338=_337.length;
1731var _339=function(name){
1732for(var i=0;i<_338;i++){
1733if(name==_337[i]){
1734return _336[i%_335];
1735}
1736}
1737return _336[0];
1738};
1739var _340=function(_341,bar){
1740var x=this.area.w*bar.x+this.area.x;
1741var y=this.area.h*bar.y+this.area.y;
1742var w=this.area.w*bar.w;
1743var h=this.area.h*bar.h;
1744if((w<1)||(h<1)){
1745return;
1746}
1747_341.save();
1748_341.shadowBlur=5;
1749_341.shadowColor=Color.fromHexString("#888888").toRGBString();
1750if(this.isIE){
1751_341.save();
1752_341.fillStyle="#cccccc";
1753_341.fillRect(x-2,y-2,w+4,h+2);
1754_341.restore();
1755}else{
1756_333(_341,x,y,w,h);
1757}
1758if(this.options.shouldFill){
1759_341.fillStyle=_339(bar.name).toRGBString();
1760_341.fillRect(x,y,w,h);
1761}
1762_341.shadowBlur=0;
1763_341.strokeStyle=Color.whiteColor().toRGBString();
1764_341.lineWidth=2;
1765if(this.options.shouldStroke){
1766_341.strokeRect(x,y,w,h);
1767}
1768_341.restore();
1769};
1770this._renderBarChartWrap(this.layout.bars,bind(_340,this));
1771};
1772PlotKit.SweetCanvasRenderer.prototype._renderLineChart=function(){
1773var _342=this.element.getContext("2d");
1774var _343=this.options.colorScheme.length;
1775var _344=this.options.colorScheme;
1776var _345=PlotKit.Base.keys(this.layout.datasets);
1777var _346=_345.length;
1778var bind=MochiKit.Base.bind;
1779for(var i=0;i<_346;i++){
1780var _347=_345[i];
1781var _348=_344[i%_343];
1782var _349=this.options.strokeColorTransform;
1783_342.save();
1784var _350=function(ctx){
1785ctx.beginPath();
1786ctx.moveTo(this.area.x,this.area.y+this.area.h);
1787var _351=function(ctx_,_352){
1788if(_352.name==_347){
1789ctx_.lineTo(this.area.w*_352.x+this.area.x,this.area.h*_352.y+this.area.y);
1790}
1791};
1792MochiKit.Iter.forEach(this.layout.points,partial(_351,ctx),this);
1793ctx.lineTo(this.area.w+this.area.x,this.area.h+this.area.y);
1794ctx.lineTo(this.area.x,this.area.y+this.area.h);
1795ctx.closePath();
1796};
1797if(this.options.shouldFill){
1798_342.save();
1799if(this.isIE){
1800_342.fillStyle="#cccccc";
1801}else{
1802_342.fillStyle=Color.blackColor().colorWithAlpha(0.2).toRGBString();
1803}
1804_342.translate(-1,-2);
1805bind(_350,this)(_342);
1806if(this.options.shouldFill){
1807_342.fill();
1808}
1809_342.restore();
1810}
1811_342.shadowBlur=5;
1812_342.shadowColor=Color.fromHexString("#888888").toRGBString();
1813_342.fillStyle=_348.toRGBString();
1814_342.lineWidth=2;
1815_342.strokeStyle=Color.whiteColor().toRGBString();
1816if(this.options.shouldFill){
1817bind(_350,this)(_342);
1818_342.fill();
1819}
1820if(this.options.shouldStroke){
1821bind(_350,this)(_342);
1822_342.stroke();
1823}
1824_342.restore();
1825}
1826};
1827PlotKit.SweetCanvasRenderer.prototype._renderPieChart=function(){
1828var _353=this.element.getContext("2d");
1829var _354=this.options.colorScheme.length;
1830var _355=this.layout.slices;
1831var _356=this.area.x+this.area.w*0.5;
1832var _357=this.area.y+this.area.h*0.5;
1833var _358=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
1834if(this.isIE){
1835_356=parseInt(_356);
1836_357=parseInt(_357);
1837_358=parseInt(_358);
1838}
1839if(!this.isIE){
1840_353.save();
1841var _359=Color.blackColor().colorWithAlpha(0.2);
1842_353.fillStyle=_359.toRGBString();
1843_353.shadowBlur=5;
1844_353.shadowColor=Color.fromHexString("#888888").toRGBString();
1845_353.translate(1,1);
1846_353.beginPath();
1847_353.moveTo(_356,_357);
1848_353.arc(_356,_357,_358+2,0,Math.PI*2,false);
1849_353.closePath();
1850_353.fill();
1851_353.restore();
1852}
1853_353.save();
1854_353.strokeStyle=Color.whiteColor().toRGBString();
1855_353.lineWidth=2;
1856for(var i=0;i<_355.length;i++){
1857var _360=this.options.colorScheme[i%_354];
1858_353.fillStyle=_360.toRGBString();
1859var _361=function(){
1860_353.beginPath();
1861_353.moveTo(_356,_357);
1862_353.arc(_356,_357,_358,_355[i].startAngle-Math.PI/2,_355[i].endAngle-Math.PI/2,false);
1863_353.lineTo(_356,_357);
1864_353.closePath();
1865};
1866if(Math.abs(_355[i].startAngle-_355[i].endAngle)>0.0001){
1867if(this.options.shouldFill){
1868_361();
1869_353.fill();
1870}
1871if(this.options.shouldStroke){
1872_361();
1873_353.stroke();
1874}
1875}
1876}
1877_353.restore();
1878};
1879PlotKit.SweetCanvasRenderer.prototype._renderBackground=function(){
1880var _362=this.element.getContext("2d");
1881if(this.layout.style=="bar"||this.layout.style=="line"){
1882_362.save();
1883_362.fillStyle=this.options.backgroundColor.toRGBString();
1884_362.fillRect(this.area.x,this.area.y,this.area.w,this.area.h);
1885_362.strokeStyle=this.options.axisLineColor.toRGBString();
1886_362.lineWidth=1;
1887var _363=this.layout.yticks;
1888var _364=false;
1889if(this.layout.style=="bar"&&this.layout.options.barOrientation=="horizontal"){
1890_363=this.layout.xticks;
1891_364=true;
1892}
1893for(var i=0;i<_363.length;i++){
1894var x1=0;
1895var y1=0;
1896var x2=0;
1897var y2=0;
1898if(_364){
1899x1=_363[i][0]*this.area.w+this.area.x;
1900y1=this.area.y;
1901x2=x1;
1902y2=y1+this.area.h;
1903}else{
1904x1=this.area.x;
1905y1=_363[i][0]*this.area.h+this.area.y;
1906x2=x1+this.area.w;
1907y2=y1;
1908}
1909_362.beginPath();
1910_362.moveTo(x1,y1);
1911_362.lineTo(x2,y2);
1912_362.closePath();
1913_362.stroke();
1914}
1915_362.restore();
1916}else{
1917PlotKit.SweetCanvasRenderer.__super__._renderBackground.call(this);
1918}
1919};
1920PlotKit.SweetCanvas={};
1921PlotKit.SweetCanvas.SweetCanvasRenderer=PlotKit.SweetCanvasRenderer;
1922PlotKit.SweetCanvas.EXPORT=["SweetCanvasRenderer"];
1923PlotKit.SweetCanvas.EXPORT_OK=["SweetCanvasRenderer"];
1924PlotKit.SweetCanvas.__new__=function(){
1925var m=MochiKit.Base;
1926m.nameFunctions(this);
1927this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
1928};
1929PlotKit.SweetCanvas.__new__();
1930MochiKit.Base._exportSymbols(this,PlotKit.SweetCanvas);
1931try{
1932if(typeof (PlotKit.SVGRenderer)=="undefined"){
1933throw "";
1934}
1935}
1936catch(e){
1937throw "SweetSVG depends on MochiKit.{Base,Color,DOM,Format} and PlotKit.{Layout, SVG}";
1938}
1939if(typeof (PlotKit.SweetSVGRenderer)=="undefined"){
1940PlotKit.SweetSVGRenderer={};
1941}
1942PlotKit.SweetSVGRenderer=function(_365,_366,_367){
1943if(arguments.length>0){
1944this.__init__(_365,_366,_367);
1945}
1946};
1947PlotKit.SweetSVGRenderer.NAME="PlotKit.SweetSVGRenderer";
1948PlotKit.SweetSVGRenderer.VERSION=PlotKit.VERSION;
1949PlotKit.SweetSVGRenderer.__repr__=function(){
1950return "["+this.NAME+" "+this.VERSION+"]";
1951};
1952PlotKit.SweetSVGRenderer.toString=function(){
1953return this.__repr__();
1954};
1955PlotKit.SweetSVGRenderer.prototype=new PlotKit.SVGRenderer();
1956PlotKit.SweetSVGRenderer.prototype.constructor=PlotKit.SweetSVGRenderer;
1957PlotKit.SweetSVGRenderer.__super__=PlotKit.SVGRenderer.prototype;
1958PlotKit.SweetSVGRenderer.prototype.__init__=function(_368,_369,_370){
1959var _371=PlotKit.Base.officeBlue();
1960MochiKit.Base.update(_371,_370);
1961PlotKit.SweetSVGRenderer.__super__.__init__.call(this,_368,_369,_371);
1962};
1963PlotKit.SweetSVGRenderer.prototype._addDropShadowFilter=function(){
1964var _372=this.createSVGElement("filter",{x:0,y:0,"id":"dropShadow"});
1965var _373=this.createSVGElement("feOffset",{"in":"SourceGraphic","dx":0,"dy":0,"result":"topCopy"});
1966var blur=this.createSVGElement("feGaussianBlur",{"in":"SourceAlpha","StdDeviation":2,"result":"shadow"});
1967var _375=this.createSVGElement("feOffset",{"in":"shadow","dx":-1,"dy":-2,"result":"movedShadow"});
1968var _376=this.createSVGElement("feMerge");
1969var _377=this.createSVGElement("feMergeNode",{"in":"topCopy"});
1970var _378=this.createSVGElement("feMergeNode",{"in":"movedShadow"});
1971_376.appendChild(_377);
1972_376.appendChild(_378);
1973_372.appendChild(_373);
1974_372.appendChild(blur);
1975_372.appendChild(_375);
1976_372.appendChild(_376);
1977this.defs.appendChild(_372);
1978};
1979PlotKit.SweetSVGRenderer.prototype._renderBarChart=function(){
1980var bind=MochiKit.Base.bind;
1981var _379=Color.blackColor().toRGBString();
1982var _380="fill:"+_379+";fill-opacity:0.15";
1983var _381="stroke-width: 2.0; stroke:"+Color.whiteColor().toRGBString();
1984var _382=function(_383,bar){
1985var x=this.area.w*bar.x+this.area.x;
1986var y=this.area.h*bar.y+this.area.y;
1987var w=this.area.w*bar.w;
1988var h=this.area.h*bar.h;
1989if((w<1)||(h<1)){
1990return;
1991}
1992_383["style"]=_381;
1993this._drawRect(x-2,y-1,w+4,h+2,{"style":_380});
1994this._drawRect(x,y,w,h,_383);
1995};
1996this._renderBarOrLine(this.layout.bars,bind(_382,this));
1997};
1998PlotKit.SweetSVGRenderer.prototype._renderLineChart=function(){
1999var bind=MochiKit.Base.bind;
2000var _384=Color.blackColor().toRGBString();
2001var _385="fill:"+_384+";fill-opacity:0.15";
2002var _386="stroke-width: 2.0; stroke:"+Color.whiteColor().toRGBString();
2003var _387=function(_388,_389){
2004this._tempPointsBuffer+=(this.area.w*_389.x+this.area.x)+","+(this.area.h*_389.y+this.area.y)+" ";
2005};
2006var _390=function(_391){
2007this._tempPointsBuffer="";
2008this._tempPointsBuffer+=(this.area.x)+","+(this.area.y+this.area.h)+" ";
2009};
2010var _392=function(_393){
2011this._tempPointsBuffer+=(this.area.w+this.area.x)+","+(this.area.h+this.area.y);
2012_393["points"]=this._tempPointsBuffer;
2013_393["stroke"]="none";
2014_393["transform"]="translate(-2, -1)";
2015_393["style"]=_385;
2016var _394=this.createSVGElement("polygon",_393);
2017this.root.appendChild(_394);
2018_393["transform"]="";
2019_393["style"]=_386;
2020var elem=this.createSVGElement("polygon",_393);
2021this.root.appendChild(elem);
2022};
2023this._renderBarOrLine(this.layout.points,bind(_387,this),bind(_390,this),bind(_392,this));
2024};
2025PlotKit.SweetSVGRenderer.prototype._renderPieChart=function(){
2026var _395=this.area.x+this.area.w*0.5;
2027var _396=this.area.y+this.area.h*0.5;
2028var _397=Color.blackColor().toRGBString();
2029var _398=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);
2030var _399="fill:"+_397+";fill-opacity:0.15";
2031var _400=this.createSVGElement("circle",{"style":_399,"cx":_395+1,"cy":_396+1,"r":_398+1});
2032this.root.appendChild(_400);
2033PlotKit.SweetSVGRenderer.__super__._renderPieChart.call(this);
2034};
2035PlotKit.SweetSVGRenderer.prototype._renderBackground=function(){
2036var _401={"fill":this.options.backgroundColor.toRGBString(),"stroke":"none"};
2037if(this.layout.style=="bar"||this.layout.style=="line"){
2038this._drawRect(this.area.x,this.area.y,this.area.w,this.area.h,_401);
2039var _402=this.layout.yticks;
2040var _403=false;
2041if(this.layout.style=="bar"&&this.layout.options.barOrientation=="horizontal"){
2042_402=this.layout.xticks;
2043_403=true;
2044}
2045for(var i=0;i<_402.length;i++){
2046var x=0;
2047var y=0;
2048var w=0;
2049var h=0;
2050if(_403){
2051x=_402[i][0]*this.area.w+this.area.x;
2052y=this.area.y;
2053w=1;
2054h=this.area.w;
2055}else{
2056x=this.area.x;
2057y=_402[i][0]*this.area.h+this.area.y;
2058w=this.area.w;
2059h=1;
2060}
2061this._drawRect(x,y,w,h,{"fill":this.options.axisLineColor.toRGBString()});
2062}
2063}else{
2064PlotKit.SweetSVGRenderer.__super__._renderBackground.call(this);
2065}
2066};
2067PlotKit.SweetSVG={};
2068PlotKit.SweetSVG.SweetSVGRenderer=PlotKit.SweetSVGRenderer;
2069PlotKit.SweetSVG.EXPORT=["SweetSVGRenderer"];
2070PlotKit.SweetSVG.EXPORT_OK=["SweetSVGRenderer"];
2071PlotKit.SweetSVG.__new__=function(){
2072var m=MochiKit.Base;
2073m.nameFunctions(this);
2074this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
2075};
2076PlotKit.SweetSVG.__new__();
2077MochiKit.Base._exportSymbols(this,PlotKit.SweetSVG);
2078try{
2079if(typeof (PlotKit.CanvasRenderer)=="undefined"){
2080throw "";
2081}
2082}
2083catch(e){
2084throw "PlotKit.EasyPlot depends on all of PlotKit's components";
2085}
2086if(typeof (PlotKit.EasyPlot)=="undefined"){
2087PlotKit.EasyPlot={};
2088}
2089PlotKit.EasyPlot.NAME="PlotKit.EasyPlot";
2090PlotKit.EasyPlot.VERSION=PlotKit.VERSION;
2091PlotKit.EasyPlot.__repr__=function(){
2092return "["+this.NAME+" "+this.VERSION+"]";
2093};
2094PlotKit.EasyPlot.toString=function(){
2095return this.__repr__();
2096};
2097PlotKit.EasyPlot=function(_404,_405,_406,_407){
2098this.layout=new Layout(_404,_405);
2099this.divElem=_406;
2100this.width=parseInt(_406.getAttribute("width"));
2101this.height=parseInt(_406.getAttribute("height"));
2102this.deferredCount=0;
2103if(this.width<1){
2104this.width=this.divElem.width?this.divElem.width:300;
2105}
2106if(this.height<1){
2107this.height=this.divElem.height?this.divElem.height:300;
2108}
2109if(isArrayLike(_407)){
2110for(var i=0;i<_407.length;i++){
2111if(typeof (_407[i])=="string"){
2112this.deferredCount++;
2113var d=MochiKit.Async.doSimpleXMLHttpRequest(_407[i]);
2114d.addCallback(MochiKit.Base.bind(PlotKit.EasyPlot.onDataLoaded,this));
2115}else{
2116if(isArrayLike(_407[i])){
2117this.layout.addDataset("data-"+i,_407[i]);
2118}
2119}
2120}
2121}else{
2122if(!isUndefinedOrNull(_407)){
2123throw "Passed datasources are not Array like";
2124}
2125}
2126if(CanvasRenderer.isSupported()){
2127this.element=CANVAS({"id":this.divElem.getAttribute("id")+"-canvas","width":this.width,"height":this.height},"");
2128this.divElem.appendChild(this.element);
2129this.renderer=new SweetCanvasRenderer(this.element,this.layout,_405);
2130}else{
2131if(SVGRenderer.isSupported()){
2132this.element=SVGRenderer.SVG({"id":this.divElem.getAttribute("id")+"-svg","width":this.width,"height":this.height,"version":"1.1","baseProfile":"full"},"");
2133this.divElem.appendChild(this.element);
2134this.renderer=new SweetSVGRenderer(this.element,this.layout,_405);
2135}
2136}
2137if((this.deferredCount==0)&&(PlotKit.Base.keys(this.layout.datasets).length>0)){
2138this.layout.evaluate();
2139this.renderer.clear();
2140this.renderer.render();
2141}
2142};
2143PlotKit.EasyPlot.onDataLoaded=function(_409){
2144var _410=new Array();
2145var _411=_409.responseText.split("\n");
2146for(var i=0;i<_411.length;i++){
2147var _412=MochiKit.Format.strip(_411[i]);
2148if((_412.length>1)&&(_412.charAt(0)!="#")){
2149_410.push(_412.split(","));
2150}
2151}
2152this.layout.addDataset("data-ajax-"+this.deferredCount,_410);
2153this.deferredCount--;
2154if((this.deferredCount==0)&&(PlotKit.Base.keys(this.layout.datasets).length>0)){
2155this.layout.evaluate();
2156this.renderer.clear();
2157this.renderer.render();
2158}
2159};
2160PlotKit.EasyPlot.prototype.reload=function(){
2161this.layout.evaluate();
2162this.renderer.clear();
2163this.renderer.render();
2164};
2165PlotKit.EasyPlotModule={};
2166PlotKit.EasyPlotModule.EasyPlot=PlotKit.EasyPlot;
2167PlotKit.EasyPlotModule.EXPORT=["EasyPlot"];
2168PlotKit.EasyPlotModule.EXPORT_OK=[];
2169PlotKit.EasyPlotModule.__new__=function(){
2170var m=MochiKit.Base;
2171m.nameFunctions(this);
2172this.EXPORT_TAGS={":common":this.EXPORT,":all":m.concat(this.EXPORT,this.EXPORT_OK)};
2173};
2174PlotKit.EasyPlotModule.__new__();
2175MochiKit.Base._exportSymbols(this,PlotKit.EasyPlotModule);
2176
2177