try{var a;if($chk(a))throw'';}catch(e){throw'mooPlotr depende del fantabuloso Mootools framework (version 1.1).';};if(typeof(Plotr)=='undefined')Plotr={};Plotr.name='Plotr';Plotr.version='0.1.4';Plotr.author='Adaptado a MooTools por Daniel Niquet - http://techniq.softr.net';if(typeof(Plotr.Base)=='undefined')Plotr.Base={};Plotr.Base.items=function(lst){var result=new Array();for(var item in lst){if(typeof(lst[item])=='function')continue;result.push(lst[item])}return result};Plotr.Base.excanvasSupported=function(){if(/MSIE/.test(navigator.userAgent)&&!window.opera){return true}return false};Plotr.Base.isSupported=function(canvasName){var canvas=null;try{canvas=(!$chk(canvasName))?canvas=new Element('canvas'):canvas=$(canvasName);var context=canvas.getContext('2d')}catch(e){var ie=navigator.appVersion.match(/MSIE (\d\.\d)/);var opera=(navigator.userAgent.toLowerCase().indexOf('opera')!=-1);if((!ie)||(ie[1]<6)||(opera))return false;return true}return true};Plotr.Base.uniqueIndices=function(lst){var result=new Array();var a=Plotr.Base.Max(lst,function(item){return item.length});a.times(function(i){result.push(i)});return result};Plotr.Base.sum=function(lst){lst=Plotr.Base.flatten(lst);var result=0;lst.each(function(a){result+=a});return result};Plotr.Base.K=function(x){return x};Plotr.Base.Max=function(obj,iterator){var result;obj.each(function(value,index){value=(iterator||Plotr.Base.K)(value,index);if(result==undefined||value>=result)result=value});return result};Plotr.Base.flatten=function(lst){return Plotr.Base.inject(lst,[],function(array,value){return array.concat(value&&value.constructor==Array?Plotr.Base.flatten(value):[value])})};Plotr.Base.pluck=function(lst,property){var results=[];lst.each(function(value,index){results.push(value[property])});return results};Plotr.Base.inject=function(obj,memo,iterator){obj.each(function(value,index){memo=iterator(memo,value,index)});return memo};Plotr.Base.levelHSB=function(hsbObj,level){rgb=[hsbObj.h,hsbObj.s,Math.min(hsbObj.b+level,100)].hsbToRgb();return"rgb("+rgb[0]+","+rgb[1]+","+rgb[2]+")"};Plotr.Base.generateColorscheme=function(hex,size,reverse){var rgb=hex.hexToRgb(true);var hsb=[rgb[0],rgb[1],rgb[2]].rgbToHsb();hsb={h:hsb[0],s:hsb[1],b:hsb[2]};var result=new Array();var level=(100-hsb.b)/size;size.times(function(index){result.push(Plotr.Base.levelHSB(hsb,level*index))});return(reverse)?result.reverse():result};Plotr.Base.defaultScheme=function(size){return Plotr.Base.generateColorscheme('#3c581a',size)};Plotr.Base.getColorscheme=function(color,size){var r=Plotr.Base.colorSchemes[color];if(!$chk(r))r=color;return Plotr.Base.generateColorscheme(r,(size)?size:3)};Plotr.Base.colorSchemes={red:'#6d1d1d',green:'#3c581a',blue:'#224565',grey:'#444',black:'#000'};Plotr.Chart={initialize:function(element,options){this.setOptions(options);this.sets=0;this.dataStores=new Array();if($chk(this.options.xAxis)){this.minxval=this.options.xAxis[0];this.maxxval=this.options.xAxis[1];this.xscale=this.maxxval-this.minxval}else{this.minxval=0;this.maxxval=this.xscale=null}if($chk(this.options.yAxis)){this.minyval=this.options.yAxis[0];this.maxyval=this.options.yAxis[1];this.yscale=this.maxyval-this.minyval}else{this.minyval=0;this.maxyval=this.yscale=null}this.xticks=new Array();this.yticks=new Array();this.minxdelta=0;this.xrange=1;this.yrange=1;this._initCanvas(element)},addDataset:function(store){$each(store,function(v,k){this.dataStores[k]=store[k];this.sets++},this)},addTable:function(table,x,y,xticks){table=$(table);if(!$chk(x))x=0;if(!$chk(y))y=1;if(!$chk(xticks))xticks=-1;var tr=$$('table tr');var store={};var labels=new Array();tr.each(function(el,i){tds=el.getChildren();if(i>=y){var xx=new Array();tds.each(function(ele,j){if(j>=x)xx.push([j-1,ele.innerHTML.toFloat()])});store['row_'+i]=xx}});if(xticks>=0){var tickIndex=0;var xx=new Array();tr[xticks].getChildren().each(function(el,index){if(index>=x){xx.push({v:tickIndex++,label:el.innerHTML})}});this.options.xTicks=xx}this.addDataset(store)},_eval:function(options){if($chk(options)){Object.extend(options,{});this.setOptions(options)}this.stores=Plotr.Base.items(this.dataStores);this._evalXY();this.setColorscheme()},_evalXY:function(){var xdata=Array();var xdata=Plotr.Base.flatten(this.stores.map(function(item){return Plotr.Base.pluck(item,0)}));if(!$chk(this.options.xAxis)){this.minxval=(this.options.xOriginIsZero)?0:xdata.min().toFloat();this.maxxval=Plotr.Base.Max(xdata).toFloat()}else{this.minxval=this.options.xAxis[0];this.maxxval=this.options.xAxis[1];this.xscale=this.maxxval-this.minxval}this.xrange=this.maxxval-this.minxval;this.xscale=(this.xrange==0)?1.0:1/this.xrange;var ydata=Array();ydata=Plotr.Base.flatten(this.stores.map(function(item){return Plotr.Base.pluck(item,1)}));if(!$chk(this.options.yAxis)){this.minyval=(this.options.yOriginIsZero)?0:parseFloat(ydata.min());this.maxyval=parseFloat(Plotr.Base.Max(ydata))}else{this.minyval=this.options.yAxis[0];this.maxyval=this.options.yAxis[1];this.yscale=this.maxyval-this.minyval}this.yrange=this.maxyval-this.minyval;this.yscale=(this.yrange==0)?1.0:1/this.yrange},_evalLineTicks:function(){this._evalLineTicksForXAxis();this._evalLineTicksForYAxis()},_evalLineTicksForXAxis:function(){if(this.options.xTicks){this.xticks=this.options.xTicks.map(function(tick){var label=tick.label;if(!$chk(label))label=tick.v.toString();var pos=this.xscale*(tick.v-this.minxval);if((pos>=0.0)&&(pos<=1.0))return[pos,label]}.bind(this))}else if(this.options.xNumberOfTicks){var uniqx=Plotr.Base.uniqueIndices(this.stores);var roughSeparation=this.xrange/this.options.xNumberOfTicks;var tickCount=0;this.xticks=new Array();uniqx.every(function(el,i){if((el-this.minxval)>=(tickCount*roughSeparation)){var pos=this.xscale*(el-this.minxval);if((pos>1.0)||(pos<0.0))return true;this.xticks.push([pos,el]);tickCount++}if(tickCount>this.options.xNumberOfTicks)return false})}},_evalLineTicksForYAxis:function(){if(this.options.yTicks){this.yticks=this.options.yTicks.map(function(tick){var label=tick.label;if(!$chk(label))label=tick.v.toString();var pos=1.0-(this.yscale*(tick.v-this.minyval));if((pos>=0.0)&&(pos<=1.0)){return[pos,label]}}.bind(this))}else if(this.options.yNumberOfTicks){this.yticks=new Array();var prec=this.options.yTickPrecision;var num=this.yrange/this.options.yNumberOfTicks;var roughSeparation=num.toFixed(this.options.yTickPrecision);for(var i=0;i<=this.options.yNumberOfTicks;i++){var yval=this.minyval+(i*roughSeparation);var pos=1.0-((yval-this.minyval)*this.yscale);if((pos>1.0)||(pos<0.0))continue;this.yticks.push([pos,yval.toFixed(prec)])}}}};Plotr.Canvas={setOptions:function(options){this.options=Object.extend({sweetRender:true,drawBackground:true,backgroundLineColor:'#ffffff',backgroundColor:'#f5f5f5',padding:{left:30,right:30,top:5,bottom:10},colorScheme:Plotr.Base.defaultScheme(Math.max(this.sets,3)),strokeColor:'#ffffff',strokeWidth:0.5,shouldFill:true,shouldStroke:true,drawXAxis:true,drawYAxis:true,axisTickSize:3,axisLineColor:'#000000',axisLineWidth:0.5,axisLabelColor:'#666666',axisLabelFont:'Arial',axisLabelFontSize:9,axisLabelWidth:50,barWidthFillFraction:0.75,barOrientation:'vertical',xOriginIsZero:true,yOriginIsZero:true,xAxis:null,yAxis:null,xTicks:null,yTicks:null,xNumberOfTicks:10,yNumberOfTicks:10,xTickPrecision:1,yTickPrecision:1,pieRadius:0.4},options||{})},reset:function(){this.setOptions();this.dataStores=new Array();if($chk(this.renderDelay)){this.renderDelay.stop();this.renderDelay=null}},_initCanvas:function(element){this.canvasNode=$(element);this.containerNode=this.canvasNode.getParent();this.containerNode.setStyles('position: relative; width:'+this.canvasNode.width+'px');this.isIE=Plotr.Base.excanvasSupported();if(this.isIE&&$chk(G_vmlCanvasManager)){this.IEDelay=0.5;this.maxTries=10;this.renderDelay=null;this.renderStack=new Array();this.canvasNode=G_vmlCanvasManager.initElement(this.canvasNode)}if(!$chk(this.canvasNode))throw'Plotr.Canvas(): Could\'nt find canvas.';if(!$chk(this.containerNode)||this.containerNode.nodeName.toLowerCase()!='div')throw'Plotr.Canvas(): Canvas element is not enclosed by a <div> element.';if(!this.isIE&&!(Plotr.Base.isSupported(element)))throw"Plotr.Canvas(): Canvas is not supported.";this.xlabels=new Array();this.ylabels=new Array();this.area={x:this.options.padding.left,y:this.options.padding.top,w:this.canvasNode.width-this.options.padding.left-this.options.padding.right,h:this.canvasNode.height-this.options.padding.top-this.options.padding.bottom}},_render:function(element){if($chk(element))this._initCanvas(element);if(this.options.drawBackground){this._renderBackground()}},_ieWaitForVML:function(element,options){if($chk(element)){this.renderStack[element]=options}try{if($chk(this.canvasNode)){this.canvasNode.getContext("2d")}else{$(element).getContext("2d")}}catch(e){if(!$chk(this.renderDelay)){this.renderDelay=new PeriodicalExecuter(function(pe){if($chk(this.canvasNode)){this.render(this.canvasNode,options)}else{this.render(element,options)}}.bind(this),this.IEDelay)}else if(this.maxTries--<=0){this.renderDelay.stop()}return true}if($chk(this.renderDelay)){this.renderDelay.stop();delete this.renderStack[element||this.canvasNode]}return false},setColorscheme:function(){var scheme=this.options.colorScheme;if(scheme instanceof Array){return}else if(typeof(scheme)=='string'){if(this.type=='pie'){this.options.colorScheme=Plotr.Base.getColorscheme(scheme,Math.max(this.stores[0].length,3))}else{this.options.colorScheme=Plotr.Base.getColorscheme(scheme,Math.max(this.sets,3))}}else{throw'Plotr.Canvas.setColorscheme(): colorScheme is invalid!';}},_renderBackground:function(){var cx=this.canvasNode.getContext('2d');cx.save();cx.fillStyle=this.options.backgroundColor;if(this.options.sweetRender){cx.fillRect(this.area.x,this.area.y,this.area.w,this.area.h);cx.strokeStyle=this.options.backgroundLineColor;cx.lineWidth=1.0;var ticks=this.yticks;var horiz=false;if(this.type=='bar'&&this.options.barOrientation=='horizontal'){ticks=this.xticks;horiz=true}var drawBackgroundLines=function(tick){var x1=x2=y1=y2=0;if(horiz){x1=x2=tick[0]*this.area.w+this.area.x;y1=this.area.y;y2=y1+this.area.h}else{x1=this.area.x;y1=tick[0]*this.area.h+this.area.y;x2=x1+this.area.w;y2=y1}cx.beginPath();cx.moveTo(x1,y1);cx.lineTo(x2,y2);cx.closePath();cx.stroke()}.bind(this);ticks.each(drawBackgroundLines)}else{cx.fillRect(0,0,this.canvasNode.width,this.canvasNode.height)}cx.restore()},_renderLineAxis:function(){this._renderAxis()},_renderAxis:function(){if(!this.options.drawXAxis&&!this.options.drawYAxis)return;var cx=this.canvasNode.getContext('2d');var labelStyle={position:'absolute',fontSize:this.options.axisLabelFontSize+'px',fontFamily:this.options.axisLabelFont,zIndex:10,color:this.options.axisLabelColor,width:this.options.axisLabelWidth+'px',overflow:'hidden'};cx.save();cx.strokeStyle=this.options.axisLineColor;cx.lineWidth=this.options.axisLineWidth;if(this.options.drawYAxis){if(this.yticks){var collectYLabels=function(tick){if(typeof(tick)=='function')return;var x=this.area.x;var y=this.area.y+tick[0]*this.area.h;cx.beginPath();cx.moveTo(x,y);cx.lineTo(x-this.options.axisTickSize,y);cx.closePath();cx.stroke();var label=new Element('div');label.appendText(tick[1]);label.setStyles(Object.extend(labelStyle,{top:(y-this.options.axisLabelFontSize),left:(x-this.options.padding.left-this.options.axisTickSize),width:(this.options.padding.left-this.options.axisTickSize*2),textAlign:'right'}));this.containerNode.adopt(label);return label}.bind(this);this.ylabels=this.yticks.map(collectYLabels)}cx.beginPath();cx.moveTo(this.area.x,this.area.y);cx.lineTo(this.area.x,this.area.y+this.area.h);cx.closePath();cx.stroke()}if(this.options.drawXAxis){if(this.xticks){var collectXLabels=function(tick){if(typeof(tick)=='function')return;var x=this.area.x+tick[0]*this.area.w;var y=this.area.y+this.area.h;cx.beginPath();cx.moveTo(x,y);cx.lineTo(x,y+this.options.axisTickSize);cx.closePath();cx.stroke();var label=new Element('div');label.appendText(tick[1]);label.setStyles(Object.extend(labelStyle,{top:(y+this.options.axisTickSize),left:(x-this.options.axisLabelWidth/2),width:this.options.axisLabelWidth,textAlign:'center'}));this.containerNode.adopt(label);return label}.bind(this);this.xlabels=this.xticks.map(collectXLabels)}cx.beginPath();cx.moveTo(this.area.x,this.area.y+this.area.h);cx.lineTo(this.area.x+this.area.w,this.area.y+this.area.h);cx.closePath();cx.stroke()}cx.restore()}};Plotr.BarChart=new Class();Plotr.BarChart=Plotr.BarChart.extend(Plotr.Canvas);Plotr.BarChart=Plotr.BarChart.extend(Plotr.Chart);Plotr.BarChart=Plotr.BarChart.extend({type:'bar',render:function(element,options){if(this.isIE&&this._ieWaitForVML(element,options)){return}this._evaluate(options);this._render(element);this._renderBarChart();this._renderBarAxis();if(this.isIE){$each(this.renderStack,function(value,key){if($type(value)=='function')return;this.render(key,value);return})}},_evaluate:function(options){this._eval(options);if(this.options.barOrientation=='vertical')this._evalBarChart();else this._evalHorizBarChart();this._evalBarTicks()},_evalBarChart:function(){var uniqx=Plotr.Base.uniqueIndices(this.stores);var xdelta=10000000;for(var i=1;i<uniqx.length;i++){xdelta=Math.min(Math.abs(uniqx[i]-uniqx[i-1]),xdelta)}var barWidth=0;var barWidthForSet=0;var barMargin=0;if(uniqx.length==1){xdelta=1.0;this.xscale=1.0;this.minxval=uniqx[0];barWidth=1.0*this.options.barWidthFillFraction;barWidthForSet=barWidth/this.stores.length;barMargin=(1.0-this.options.barWidthFillFraction)/2}else{this.xscale=(this.xrange==1)?0.5:(this.xrange==2)?1/3.0:(1.0-1/this.xrange)/this.xrange;barWidth=xdelta*this.xscale*this.options.barWidthFillFraction;barWidthForSet=barWidth/this.stores.length;barMargin=xdelta*this.xscale*(1.0-this.options.barWidthFillFraction)/2}this.minxdelta=xdelta;this.bars=new Array();var i=0;for(var name in this.dataStores){var store=this.dataStores[name];if(typeof(store)=='function')continue;for(var j=0;j<store.length;j++){var item=store[j];var rect={x:((parseFloat(item[0])-this.minxval)*this.xscale)+(i*barWidthForSet)+barMargin,y:1.0-((parseFloat(item[1])-this.minyval)*this.yscale),w:barWidthForSet,h:((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:name};if((rect.x>=0.0)&&(rect.x<=1.0)&&(rect.y>=0.0)&&(rect.y<=1.0)){this.bars.push(rect)}}i++}},_evalHorizBarChart:function(){var uniqx=Plotr.Base.uniqueIndices(this.stores);var xdelta=10000000;for(var i=1;i<uniqx.length;i++){xdelta=Math.min(Math.abs(uniqx[i]-uniqx[i-1]),xdelta)}var barWidth=0;var barWidthForSet=0;var barMargin=0;if(uniqx.length==1){xdelta=1.0;this.xscale=1.0;this.minxval=uniqx[0];barWidth=1.0*this.options.barWidthFillFraction;barWidthForSet=barWidth/this.stores.length;barMargin=(1.0-this.options.barWidthFillFraction)/2}else{this.xscale=(1.0-xdelta/this.xrange)/this.xrange;barWidth=xdelta*this.xscale*this.options.barWidthFillFraction;barWidthForSet=barWidth/this.stores.length;barMargin=xdelta*this.xscale*(1.0-this.options.barWidthFillFraction)/2}this.minxdelta=xdelta;this.bars=new Array();var i=0;for(var name in this.dataStores){var store=this.dataStores[name];if(typeof(store)=='function')continue;for(var j=0;j<store.length;j++){var item=store[j];var rect={y:((parseFloat(item[0])-this.minxval)*this.xscale)+(i*barWidthForSet)+barMargin,x:0.0,h:barWidthForSet,w:((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:name};rect.y=(rect.y<=0.0)?0.0:(rect.y>=1.0)?1.0:rect.y;if((rect.x>=0.0)&&(rect.x<=1.0)){this.bars.push(rect)}}i++}},_evalBarTicks:function(){this._evalLineTicks();this.xticks=this.xticks.map(function(tick){return[tick[0]+(this.minxdelta*this.xscale)/2,tick[1]]}.bind(this));if(this.options.barOrientation=='horizontal'){var tmp=this.xticks;this.xticks=this.yticks.map(function(tick){return[1.0-tick[0],tick[1]]}.bind(this));this.yticks=tmp}},_renderBarChart:function(){var cx=this.canvasNode.getContext('2d');var index=0;for(var storeName in this.dataStores){var drawBar=function(bar){if(bar.name!=storeName||typeof(bar)=='function')return;cx.save();cx.lineWidth=this.options.strokeWidth;cx.fillStyle=this.options.colorScheme[index%this.options.colorScheme.length];cx.strokeStyle=this.options.strokeColor;var x=this.area.w*bar.x+this.area.x;var y=this.area.h*bar.y+this.area.y;var w=this.area.w*bar.w;var h=this.area.h*bar.h;if((w<1)||(h<1))return;if(this.options.shouldFill)cx.fillRect(x,y,w,h);if(this.options.shouldStroke)cx.strokeRect(x,y,w,h);cx.restore()}.bind(this);this.bars.each(drawBar);index++}},_renderBarAxis:function(){this._renderAxis()}});Plotr.LineChart=new Class();Plotr.LineChart=Plotr.LineChart.extend(Plotr.Canvas);Plotr.LineChart=Plotr.LineChart.extend(Plotr.Chart);Plotr.LineChart=Plotr.LineChart.extend({type:'line',render:function(element,options){if(this.isIE&&this._ieWaitForVML(element,options)){return}this._evaluate(options);this._render(element);this._renderLineChart();this._renderLineAxis();if(this.isIE){for(var el in this.renderStack){if(typeof(this.renderStack[el])=='function')break;this.render(el,this.renderStack[el]);break}}},_evaluate:function(options){this._eval(options);this._evalLineChart();this._evalLineTicksForXAxis();this._evalLineTicksForYAxis()},_evalLineChart:function(){this.points=new Array();for(var name in this.dataStores){var store=this.dataStores[name];if(typeof(store)=='function')continue;for(var j=0;j<store.length;j++){var item=store[j];var point={x:((parseFloat(item[0])-this.minxval)*this.xscale),y:1.0-((parseFloat(item[1])-this.minyval)*this.yscale),xval:parseFloat(item[0]),yval:parseFloat(item[1]),name:name};point.y=(point.y<=0.0)?0.0:(point.y>=1.0)?1.0:point.y;if((point.x>=0.0)&&(point.x<=1.0)){this.points.push(point)}}}},_renderLineChart:function(){var cx=this.canvasNode.getContext("2d");var index=0;for(var storeName in this.dataStores){cx.save();cx.lineWidth=this.options.strokeWidth;cx.fillStyle=this.options.colorScheme[index%this.options.colorScheme.length];cx.strokeStyle=this.options.strokeColor;var preparePath=function(){cx.beginPath();cx.moveTo(this.area.x,this.area.y+this.area.h);var addPoint=function(point){}.bind(this);for(var point in this.points){var currPoint=this.points[point];if(currPoint.name==storeName)cx.lineTo(this.area.w*currPoint.x+this.area.x,this.area.h*currPoint.y+this.area.y)}cx.lineTo(this.area.w+this.area.x,this.area.h+this.area.y);cx.lineTo(this.area.x,this.area.y+this.area.h);cx.closePath()}.bind(this);if(this.options.shouldFill){preparePath(cx);cx.fill()}if(this.options.shouldStroke){preparePath(cx);cx.stroke()}cx.restore();index++}}});Plotr.PieChart=new Class();Plotr.PieChart=Plotr.PieChart.extend(Plotr.Canvas);Plotr.PieChart=Plotr.PieChart.extend(Plotr.Chart);Plotr.PieChart=Plotr.PieChart.extend({type:'pie',render:function(element,options){if(this.isIE&&this._ieWaitForVML(element,options)){return}this._evaluate(options);this._render(element);this._renderPieChart();this._renderPieAxis();if(this.isIE){for(var el in this.renderStack){if(typeof(this.renderStack[el])=='function')break;this.render(el,this.renderStack[el]);break}}},_evaluate:function(options){this._eval(options);this._evalPieChart();this._evalPieTicks()},_evalPieChart:function(){var store=this.stores[0];var sum=Plotr.Base.sum(Plotr.Base.pluck(store,1));var angle=0.0;this.slices=new Array();for(var i=0,slice=null,fraction=null;i<store.length;i++){slice=store[i];if(slice[1]>0){fraction=slice[1]/sum;this.slices.push({fraction:fraction,xval:slice[0],yval:slice[1],startAngle:2*angle*Math.PI,endAngle:2*(angle+fraction)*Math.PI});angle+=fraction}}},_renderPieChart:function(){var cx=this.canvasNode.getContext('2d');var centerx=this.area.x+this.area.w*0.5;var centery=this.area.y+this.area.h*0.5;var radius=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);if(this.isIE){centerx=parseInt(centerx);centery=parseInt(centery);radius=parseInt(radius)}for(var i=0,ln=this.slices.length;i<ln;i++){cx.save();cx.fillStyle=this.options.colorScheme[i%this.options.colorScheme.length];var drawPie=function(){cx.beginPath();cx.moveTo(centerx,centery);cx.arc(centerx,centery,radius,this.slices[i].startAngle-Math.PI/2,this.slices[i].endAngle-Math.PI/2,false);cx.lineTo(centerx,centery);cx.closePath()}.bind(this);if(Math.abs(this.slices[i].startAngle-this.slices[i].endAngle)>0.001){if(this.options.shouldFill){drawPie();cx.fill()}if(this.options.shouldStroke){drawPie();cx.lineWidth=this.options.strokeWidth;if(this.options.strokeColor)cx.strokeStyle=this.options.strokeColor;cx.stroke()}}cx.restore()}},_evalPieTicks:function(){this.xticks=new Array();var toPercentage=function(n){n*=100;return n.toFixed(1)+'%'};if(this.options.xTicks){var lookup=new Array();for(var i=0;i<this.slices.length;i++){lookup[this.slices[i].xval]=this.slices[i]}for(var i=0;i<this.options.xTicks.length;i++){var tick=this.options.xTicks[i];var slice=lookup[tick.v];var label=tick.label;if(slice){if(!$chk(label))label=tick.v.toString();label+=" ("+toPercentage(slice.fraction)+")";this.xticks.push([tick.v,label])}}}else{for(var i=0;i<this.slices.length;i++){var slice=this.slices[i];var label=slice.xval+" ("+toPercentage(slice.fraction)+")";this.xticks.push([slice.xval,label])}}},_renderPieAxis:function(){if(!this.options.drawXAxis)return;if(this.xticks){var lookup=new Array();for(var i=0;i<this.slices.length;i++){lookup[this.slices[i].xval]=this.slices[i]}var centerx=this.area.x+this.area.w*0.5;var centery=this.area.y+this.area.h*0.5;var radius=Math.min(this.area.w*this.options.pieRadius,this.area.h*this.options.pieRadius);var labelWidth=this.options.axisLabelWidth;for(var i=0;i<this.xticks.length;i++){var slice=lookup[this.xticks[i][0]];if(!$chk(slice))continue;var angle=(slice.startAngle+slice.endAngle)/2;var normalisedAngle=angle;if(normalisedAngle>Math.PI*2)normalisedAngle=normalisedAngle-Math.PI*2;else if(normalisedAngle<0)normalisedAngle=normalisedAngle+Math.PI*2;var labelx=centerx+Math.sin(normalisedAngle)*(radius+10);var labely=centery-Math.cos(normalisedAngle)*(radius+10);var labelStyle={position:'absolute',zIndex:11,width:labelWidth,fontFamily:this.options.axisLabelFont,fontSize:this.options.axisLabelFontSize,overflow:'hidden',color:this.options.axisLabelColor};if(normalisedAngle<=Math.PI*0.5){Object.extend(labelStyle,{textAlign:'left',verticalAlign:'top',left:labelx,top:(labely-this.options.axisLabelFontSize)})}else if((normalisedAngle>Math.PI*0.5)&&(normalisedAngle<=Math.PI)){Object.extend(labelStyle,{textAlign:'left',verticalAlign:'bottom',left:labelx,top:labely})}else if((normalisedAngle>Math.PI)&&(normalisedAngle<=Math.PI*1.5)){Object.extend(labelStyle,{textAlign:'right',verticalAlign:'bottom',left:(labelx-labelWidth),top:labely})}else{Object.extend(labelStyle,{textAlign:'right',verticalAlign:'bottom',left:(labelx-labelWidth),top:(labely-this.options.axisLabelFontSize)})}var label=new Element('div');label.appendText(this.xticks[i][1]);label.setStyles(labelStyle);this.containerNode.adopt(label);this.xlabels.push(label)}}}});