if(!window.CanvasRenderingContext2D){(function(){var m=Math;var mr=m.round;var ms=m.sin;var mc=m.cos;var Z=10;var Z2=Z/2;var G_vmlCanvasManager_={init:function(opt_doc){var doc=opt_doc||document;if(/MSIE/.test(navigator.userAgent)&&!window.opera){var self=this;doc.attachEvent("onreadystatechange",function(){self.init_(doc);});}},init_:function(doc){if(doc.readyState=="complete"){if(!doc.namespaces["g_vml_"]){doc.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml");}
var ss=doc.createStyleSheet();ss.cssText="canvas{display:inline-block;overflow:hidden;"+"text-align:left;width:300px;height:150px}"+"g_vml_\\:*{behavior:url(#default#VML)}";var els=doc.getElementsByTagName("canvas");for(var i=0;i<els.length;i++){if(!els[i].getContext){this.initElement(els[i]);}}}},fixElement_:function(el){var outerHTML=el.outerHTML;var newEl=el.ownerDocument.createElement(outerHTML);if(outerHTML.slice(-2)!="/>"){var tagName="/"+el.tagName;var ns;while((ns=el.nextSibling)&&ns.tagName!=tagName){ns.removeNode();}
if(ns){ns.removeNode();}}
el.parentNode.replaceChild(newEl,el);return newEl;},initElement:function(el){el=this.fixElement_(el);el.getContext=function(){if(this.context_){return this.context_;}
return this.context_=new CanvasRenderingContext2D_(this);};el.attachEvent('onpropertychange',onPropertyChange);el.attachEvent('onresize',onResize);var attrs=el.attributes;if(attrs.width&&attrs.width.specified){el.style.width=attrs.width.nodeValue+"px";}else{el.width=el.clientWidth;}
if(attrs.height&&attrs.height.specified){el.style.height=attrs.height.nodeValue+"px";}else{el.height=el.clientHeight;}
return el;}};function onPropertyChange(e){var el=e.srcElement;switch(e.propertyName){case'width':el.style.width=el.attributes.width.nodeValue+"px";el.getContext().clearRect();break;case'height':el.style.height=el.attributes.height.nodeValue+"px";el.getContext().clearRect();break;}}
function onResize(e){var el=e.srcElement;if(el.firstChild){el.firstChild.style.width=el.clientWidth+'px';el.firstChild.style.height=el.clientHeight+'px';}}
G_vmlCanvasManager_.init();var dec2hex=[];for(var i=0;i<16;i++){for(var j=0;j<16;j++){dec2hex[i*16+j]=i.toString(16)+j.toString(16);}}
function createMatrixIdentity(){return[[1,0,0],[0,1,0],[0,0,1]];}
function matrixMultiply(m1,m2){var result=createMatrixIdentity();for(var x=0;x<3;x++){for(var y=0;y<3;y++){var sum=0;for(var z=0;z<3;z++){sum+=m1[x][z]*m2[z][y];}
result[x][y]=sum;}}
return result;}
function copyState(o1,o2){o2.fillStyle=o1.fillStyle;o2.lineCap=o1.lineCap;o2.lineJoin=o1.lineJoin;o2.lineWidth=o1.lineWidth;o2.miterLimit=o1.miterLimit;o2.shadowBlur=o1.shadowBlur;o2.shadowColor=o1.shadowColor;o2.shadowOffsetX=o1.shadowOffsetX;o2.shadowOffsetY=o1.shadowOffsetY;o2.strokeStyle=o1.strokeStyle;o2.arcScaleX_=o1.arcScaleX_;o2.arcScaleY_=o1.arcScaleY_;}
function processStyle(styleString){var str,alpha=1;styleString=String(styleString);if(styleString.substring(0,3)=="rgb"){var start=styleString.indexOf("(",3);var end=styleString.indexOf(")",start+1);var guts=styleString.substring(start+1,end).split(",");str="#";for(var i=0;i<3;i++){str+=dec2hex[Number(guts[i])];}
if((guts.length==4)&&(styleString.substr(3,1)=="a")){alpha=guts[3];}}else{str=styleString;}
return[str,alpha];}
function processLineCap(lineCap){switch(lineCap){case"butt":return"flat";case"round":return"round";case"square":default:return"square";}}
function CanvasRenderingContext2D_(surfaceElement){this.m_=createMatrixIdentity();this.mStack_=[];this.aStack_=[];this.currentPath_=[];this.strokeStyle="#000";this.fillStyle="#000";this.lineWidth=1;this.lineJoin="miter";this.lineCap="butt";this.miterLimit=Z*1;this.globalAlpha=1;this.canvas=surfaceElement;var el=surfaceElement.ownerDocument.createElement('div');el.style.width=surfaceElement.clientWidth+'px';el.style.height=surfaceElement.clientHeight+'px';el.style.overflow='hidden';el.style.position='absolute';surfaceElement.appendChild(el);this.element_=el;this.arcScaleX_=1;this.arcScaleY_=1;};var contextPrototype=CanvasRenderingContext2D_.prototype;contextPrototype.clearRect=function(){this.element_.innerHTML="";this.currentPath_=[];};contextPrototype.beginPath=function(){this.currentPath_=[];};contextPrototype.moveTo=function(aX,aY){this.currentPath_.push({type:"moveTo",x:aX,y:aY});this.currentX_=aX;this.currentY_=aY;};contextPrototype.lineTo=function(aX,aY){this.currentPath_.push({type:"lineTo",x:aX,y:aY});this.currentX_=aX;this.currentY_=aY;};contextPrototype.bezierCurveTo=function(aCP1x,aCP1y,aCP2x,aCP2y,aX,aY){this.currentPath_.push({type:"bezierCurveTo",cp1x:aCP1x,cp1y:aCP1y,cp2x:aCP2x,cp2y:aCP2y,x:aX,y:aY});this.currentX_=aX;this.currentY_=aY;};contextPrototype.quadraticCurveTo=function(aCPx,aCPy,aX,aY){var cp1x=this.currentX_+2.0/3.0*(aCPx-this.currentX_);var cp1y=this.currentY_+2.0/3.0*(aCPy-this.currentY_);var cp2x=cp1x+(aX-this.currentX_)/3.0;var cp2y=cp1y+(aY-this.currentY_)/3.0;this.bezierCurveTo(cp1x,cp1y,cp2x,cp2y,aX,aY);};contextPrototype.arc=function(aX,aY,aRadius,aStartAngle,aEndAngle,aClockwise){aRadius*=Z;var arcType=aClockwise?"at":"wa";var xStart=aX+(mc(aStartAngle)*aRadius)-Z2;var yStart=aY+(ms(aStartAngle)*aRadius)-Z2;var xEnd=aX+(mc(aEndAngle)*aRadius)-Z2;var yEnd=aY+(ms(aEndAngle)*aRadius)-Z2;if(xStart==xEnd&&!aClockwise){xStart+=0.125;}
this.currentPath_.push({type:arcType,x:aX,y:aY,radius:aRadius,xStart:xStart,yStart:yStart,xEnd:xEnd,yEnd:yEnd});};contextPrototype.rect=function(aX,aY,aWidth,aHeight){this.moveTo(aX,aY);this.lineTo(aX+aWidth,aY);this.lineTo(aX+aWidth,aY+aHeight);this.lineTo(aX,aY+aHeight);this.closePath();};contextPrototype.strokeRect=function(aX,aY,aWidth,aHeight){this.beginPath();this.moveTo(aX,aY);this.lineTo(aX+aWidth,aY);this.lineTo(aX+aWidth,aY+aHeight);this.lineTo(aX,aY+aHeight);this.closePath();this.stroke();};contextPrototype.fillRect=function(aX,aY,aWidth,aHeight){this.beginPath();this.moveTo(aX,aY);this.lineTo(aX+aWidth,aY);this.lineTo(aX+aWidth,aY+aHeight);this.lineTo(aX,aY+aHeight);this.closePath();this.fill();};contextPrototype.createLinearGradient=function(aX0,aY0,aX1,aY1){var gradient=new CanvasGradient_("gradient");return gradient;};contextPrototype.createRadialGradient=function(aX0,aY0,aR0,aX1,aY1,aR1){var gradient=new CanvasGradient_("gradientradial");gradient.radius1_=aR0;gradient.radius2_=aR1;gradient.focus_.x=aX0;gradient.focus_.y=aY0;return gradient;};contextPrototype.drawImage=function(image,var_args){var dx,dy,dw,dh,sx,sy,sw,sh;var oldRuntimeWidth=image.runtimeStyle.width;var oldRuntimeHeight=image.runtimeStyle.height;image.runtimeStyle.width='auto';image.runtimeStyle.height='auto';var w=image.width;var h=image.height;image.runtimeStyle.width=oldRuntimeWidth;image.runtimeStyle.height=oldRuntimeHeight;if(arguments.length==3){dx=arguments[1];dy=arguments[2];sx=sy=0;sw=dw=w;sh=dh=h;}else if(arguments.length==5){dx=arguments[1];dy=arguments[2];dw=arguments[3];dh=arguments[4];sx=sy=0;sw=w;sh=h;}else if(arguments.length==9){sx=arguments[1];sy=arguments[2];sw=arguments[3];sh=arguments[4];dx=arguments[5];dy=arguments[6];dw=arguments[7];dh=arguments[8];}else{throw"Invalid number of arguments";}
var d=this.getCoords_(dx,dy);var w2=sw/2;var h2=sh/2;var vmlStr=[];var W=10;var H=10;vmlStr.push(' <g_vml_:group',' coordsize="',Z*W,',',Z*H,'"',' coordorigin="0,0"',' style="width:',W,';height:',H,';position:absolute;');if(this.m_[0][0]!=1||this.m_[0][1]){var filter=[];filter.push("M11='",this.m_[0][0],"',","M12='",this.m_[1][0],"',","M21='",this.m_[0][1],"',","M22='",this.m_[1][1],"',","Dx='",mr(d.x/Z),"',","Dy='",mr(d.y/Z),"'");var max=d;var c2=this.getCoords_(dx+dw,dy);var c3=this.getCoords_(dx,dy+dh);var c4=this.getCoords_(dx+dw,dy+dh);max.x=Math.max(max.x,c2.x,c3.x,c4.x);max.y=Math.max(max.y,c2.y,c3.y,c4.y);vmlStr.push("padding:0 ",mr(max.x/Z),"px ",mr(max.y/Z),"px 0;filter:progid:DXImageTransform.Microsoft.Matrix(",filter.join(""),", sizingmethod='clip');")}else{vmlStr.push("top:",mr(d.y/Z),"px;left:",mr(d.x/Z),"px;")}
vmlStr.push(' ">','<g_vml_:image src="',image.src,'"',' style="width:',Z*dw,';',' height:',Z*dh,';"',' cropleft="',sx/w,'"',' croptop="',sy/h,'"',' cropright="',(w-sx-sw)/w,'"',' cropbottom="',(h-sy-sh)/h,'"',' />','</g_vml_:group>');this.element_.insertAdjacentHTML("BeforeEnd",vmlStr.join(""));};contextPrototype.stroke=function(aFill){var lineStr=[];var lineOpen=false;var a=processStyle(aFill?this.fillStyle:this.strokeStyle);var color=a[0];var opacity=a[1]*this.globalAlpha;var W=10;var H=10;lineStr.push('<g_vml_:shape',' fillcolor="',color,'"',' filled="',Boolean(aFill),'"',' style="position:absolute;width:',W,';height:',H,';"',' coordorigin="0 0" coordsize="',Z*W,' ',Z*H,'"',' stroked="',!aFill,'"',' strokeweight="',this.lineWidth,'"',' strokecolor="',color,'"',' path="');var newSeq=false;var min={x:null,y:null};var max={x:null,y:null};for(var i=0;i<this.currentPath_.length;i++){var p=this.currentPath_[i];if(p.type=="moveTo"){lineStr.push(" m ");var c=this.getCoords_(p.x,p.y);lineStr.push(mr(c.x),",",mr(c.y));}else if(p.type=="lineTo"){lineStr.push(" l ");var c=this.getCoords_(p.x,p.y);lineStr.push(mr(c.x),",",mr(c.y));}else if(p.type=="close"){lineStr.push(" x ");}else if(p.type=="bezierCurveTo"){lineStr.push(" c ");var c=this.getCoords_(p.x,p.y);var c1=this.getCoords_(p.cp1x,p.cp1y);var c2=this.getCoords_(p.cp2x,p.cp2y);lineStr.push(mr(c1.x),",",mr(c1.y),",",mr(c2.x),",",mr(c2.y),",",mr(c.x),",",mr(c.y));}else if(p.type=="at"||p.type=="wa"){lineStr.push(" ",p.type," ");var c=this.getCoords_(p.x,p.y);var cStart=this.getCoords_(p.xStart,p.yStart);var cEnd=this.getCoords_(p.xEnd,p.yEnd);lineStr.push(mr(c.x-this.arcScaleX_*p.radius),",",mr(c.y-this.arcScaleY_*p.radius)," ",mr(c.x+this.arcScaleX_*p.radius),",",mr(c.y+this.arcScaleY_*p.radius)," ",mr(cStart.x),",",mr(cStart.y)," ",mr(cEnd.x),",",mr(cEnd.y));}
if(c){if(min.x==null||c.x<min.x){min.x=c.x;}
if(max.x==null||c.x>max.x){max.x=c.x;}
if(min.y==null||c.y<min.y){min.y=c.y;}
if(max.y==null||c.y>max.y){max.y=c.y;}}}
lineStr.push(' ">');if(typeof this.fillStyle=="object"){var focus={x:"50%",y:"50%"};var width=(max.x-min.x);var height=(max.y-min.y);var dimension=(width>height)?width:height;focus.x=mr((this.fillStyle.focus_.x/width)*100+50)+"%";focus.y=mr((this.fillStyle.focus_.y/height)*100+50)+"%";var colors=[];if(this.fillStyle.type_=="gradientradial"){var inside=(this.fillStyle.radius1_/dimension*100);var expansion=(this.fillStyle.radius2_/dimension*100)-inside;}else{var inside=0;var expansion=100;}
var insidecolor={offset:null,color:null};var outsidecolor={offset:null,color:null};this.fillStyle.colors_.sort(function(cs1,cs2){return cs1.offset-cs2.offset;});for(var i=0;i<this.fillStyle.colors_.length;i++){var fs=this.fillStyle.colors_[i];colors.push((fs.offset*expansion)+inside,"% ",fs.color,",");if(fs.offset>insidecolor.offset||insidecolor.offset==null){insidecolor.offset=fs.offset;insidecolor.color=fs.color;}
if(fs.offset<outsidecolor.offset||outsidecolor.offset==null){outsidecolor.offset=fs.offset;outsidecolor.color=fs.color;}}
colors.pop();lineStr.push('<g_vml_:fill',' color="',outsidecolor.color,'"',' color2="',insidecolor.color,'"',' type="',this.fillStyle.type_,'"',' focusposition="',focus.x,', ',focus.y,'"',' colors="',colors.join(""),'"',' opacity="',opacity,'" />');}else if(aFill){lineStr.push('<g_vml_:fill color="',color,'" opacity="',opacity,'" />');}else{lineStr.push('<g_vml_:stroke',' opacity="',opacity,'"',' joinstyle="',this.lineJoin,'"',' miterlimit="',this.miterLimit,'"',' endcap="',processLineCap(this.lineCap),'"',' weight="',this.lineWidth,'px"',' color="',color,'" />');}
lineStr.push("</g_vml_:shape>");this.element_.insertAdjacentHTML("beforeEnd",lineStr.join(""));this.currentPath_=[];};contextPrototype.fill=function(){this.stroke(true);}
contextPrototype.closePath=function(){this.currentPath_.push({type:"close"});};contextPrototype.getCoords_=function(aX,aY){return{x:Z*(aX*this.m_[0][0]+aY*this.m_[1][0]+this.m_[2][0])-Z2,y:Z*(aX*this.m_[0][1]+aY*this.m_[1][1]+this.m_[2][1])-Z2}};contextPrototype.save=function(){var o={};copyState(this,o);this.aStack_.push(o);this.mStack_.push(this.m_);this.m_=matrixMultiply(createMatrixIdentity(),this.m_);};contextPrototype.restore=function(){copyState(this.aStack_.pop(),this);this.m_=this.mStack_.pop();};contextPrototype.translate=function(aX,aY){var m1=[[1,0,0],[0,1,0],[aX,aY,1]];this.m_=matrixMultiply(m1,this.m_);};contextPrototype.rotate=function(aRot){var c=mc(aRot);var s=ms(aRot);var m1=[[c,s,0],[-s,c,0],[0,0,1]];this.m_=matrixMultiply(m1,this.m_);};contextPrototype.scale=function(aX,aY){this.arcScaleX_*=aX;this.arcScaleY_*=aY;var m1=[[aX,0,0],[0,aY,0],[0,0,1]];this.m_=matrixMultiply(m1,this.m_);};contextPrototype.clip=function(){};contextPrototype.arcTo=function(){};contextPrototype.createPattern=function(){return new CanvasPattern_;};function CanvasGradient_(aType){this.type_=aType;this.radius1_=0;this.radius2_=0;this.colors_=[];this.focus_={x:0,y:0};}
CanvasGradient_.prototype.addColorStop=function(aOffset,aColor){aColor=processStyle(aColor);this.colors_.push({offset:1-aOffset,color:aColor});};function CanvasPattern_(){}
G_vmlCanvasManager=G_vmlCanvasManager_;CanvasRenderingContext2D=CanvasRenderingContext2D_;CanvasGradient=CanvasGradient_;CanvasPattern=CanvasPattern_;})();}
function Series(data,options){this.DEFAULT_OPTIONS={label:null,labelFormat:"<span class='chart-label-title'>#title</span><br /> <span class='chart-label-text'>#xvalue #yvalue</span>",titleFormat:null,xvalueFormat:null,yvalueFormat:null,lines:{show:false,color:'#000',lineWidth:3,opacity:1,fill:false,fillColor:'#FFF',fillOpacity:0.75,shadowColor:'#000',shadowOpacity:0.2,shadowSize:2},points:{show:false,radius:3,color:'#FFF',fill:true,opacity:0.75,shadowColor:'#000',shadowOpacity:0.2,shadowSize:2},bars:{show:false,lineWidth:3,barWidth:0.75,fill:true,opacity:1,color:'#000',strokeColor:'#000',shadowColor:'#000',shadowOpacity:0.5,shadowSize:0},slices:{show:false,opacity:1,color:'#000'}};options=options||{};this.data=data;this.label=options.label||this.DEFAULT_OPTIONS.label;this.labelFormat=options.labelFormat||this.DEFAULT_OPTIONS.labelFormat;if(options.titleFormat)this.labelFormat=this.labelFormat.replace("#title",options.titleFormat);if(options.xvalueFormat)this.labelFormat=this.labelFormat.replace("#xvalue",options.xvalueFormat);if(options.yvalueFormat)this.labelFormat=this.labelFormat.replace("#yvalue",options.yvalueFormat);this.onclick=options.onclick||null;this.lines=_merge(this.DEFAULT_OPTIONS.lines,options.lines||{});this.points=_merge(this.DEFAULT_OPTIONS.points,options.points||{});this.bars=_merge(this.DEFAULT_OPTIONS.bars,options.bars||{});this.slices=_merge(this.DEFAULT_OPTIONS.slices,options.slices||{});this.legendColor='#000';if(this.bars.show){this.legendColor=this.bars.color;}
this._hovermap=[];}
function Chart(target,series,options,isPie){this.isPie=isPie||false;this.DEFAULT_OPTIONS={chart:{mousemove:this.mouseover,mouseout:this.mouseout},canvas:{width:650,height:350,bgColor:'#FFF'},border:{show:true,radius:0,shadowSize:0,lineWidth:3,color:"#000"},grid:{show:true,lineWidth:1,bgColor:"#FFF",color:"#000",labelMargin:5,mouseCatchingArea:10,opacity:0.25},xaxis:{show:true,mode:null,autoscale:null,min:null,max:null,fontSize:14,fontFamily:'Arial',ticks:null,tickFormatter:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null},yaxis:{show:true,mode:null,autoscale:0.02,min:null,max:null,fontSize:16,fontFamily:'Arial',ticks:null,tickFormatter:null,tickDecimals:null,tickSize:null,minTickSize:null,monthNames:null,timeformat:null},legend:{show:true,fontSize:12,fontFamily:'Arial',size:20,margin:5},nodata:{message:'No Data Available',fontStyle:'italic',fontFamily:'Arial',fontSize:24},pies:{show:isPie,shadowSize:2,shadowColor:'#000',shadowOpacity:0.5,sliceDepth:7}};this.options={};this.options.chart=_merge(this.DEFAULT_OPTIONS.chart,options.chart||{});this.options=_merge(this.DEFAULT_OPTIONS.chart,options||{});this.options.canvas=_merge(this.DEFAULT_OPTIONS.canvas,options.canvas||{});this.options.border=_merge(this.DEFAULT_OPTIONS.border,options.border||{});this.options.grid=_merge(this.DEFAULT_OPTIONS.grid,options.grid||{});this.options.xaxis=_merge(this.DEFAULT_OPTIONS.xaxis,options.xaxis||{});this.options.yaxis=_merge(this.DEFAULT_OPTIONS.yaxis,options.yaxis||{});this.options.legend=_merge(this.DEFAULT_OPTIONS.legend,options.legend||{});this.options.nodata=_merge(this.DEFAULT_OPTIONS.nodata,options.nodata||{});this.options.pies=_merge(this.DEFAULT_OPTIONS.pies,options.pies||{});this.initialize(target,series);}
Chart.prototype.initialize=function(target,series){this.div=document.getElementById(target);this.div.style.position='relative';this.div.style.width=this.options.canvas.width+'px';this.div.style.height=this.options.canvas.height+'px';this.target=this._canvas(this.div,this.options.canvas.width,this.options.canvas.height);this.overlay2=this._canvas(this.div,this.options.canvas.width,this.options.canvas.height);this.overlay=this._canvas(this.div,this.options.canvas.width,this.options.canvas.height);this.context=this.target.getContext('2d');this.overlayContext=this.overlay.getContext('2d');this.drawContext=this.overlay2.getContext('2d');if(this.options.mousemove!=null){this.target.onmousemove=this.overlay.onmousemove=this.options.mousemove?_bindEvent(function(e){var p=_xy(e);var o=_near(this,p.x,p.y);return this.options.mousemove(e,this,p,o);},this):null;}
if(this.options.mouseout!=null){this.target.onmouseout=this.overlay.onmouseout=this.options.mouseout?_bindEvent(function(e){return this.options.mouseout(e,this);},this):null;}
var dimensions=_getDimensions(this.target);this.width=dimensions.width
this.height=dimensions.height;this.plotWidth=this.width;this.plotHeight=this.height;this.offset={};this.offset.left=this.offset.top=this.offset.bottom=this.offset.right=0;this.barCount=0;this.currentMouseover=null;this.series=[];var hasData=false;for(var i=0;i<series.length;i++){this.series.push(series[i]);if(!hasData){if(this.isPie)
hasData=(series[i].data>0);else if(series[i].data&&series[i].data.length>0){if(series[i].bars.show){for(var k=0;k<series[i].data.length;k++){if(series[i].data[k][1]!=0&&series[i].data[k][1]!=null){hasData=true;break;}}}
else
hasData=(series[i].lines.show||(!series[i].bars.show&&!series[i].points.show))?(series[i].data.length>1):true;}}}
if(!hasData){this.div.removeChild(this.overlay);this.drawError();}
else{if(this.isPie){this.calcPie();this.calcPieHoverMap(this.series);this.drawPie();}
else if(this.series.length>0){this.calc();this.xm=this.plotWidth/this.xrange;this.ym=this.plotHeight/this.yrange;this.draw();}}};Chart.prototype._canvas=function(p,w,h){var canvas=document.createElement('canvas');canvas.setAttribute('width',w);canvas.setAttribute('height',h);canvas.style.position='absolute';p.appendChild(canvas);if(/MSIE/.test(navigator.userAgent)&&!window.opera){canvas=_initIECanvas(canvas);}
return canvas;};function _initIECanvas(canvas){if(/MSIE/.test(navigator.userAgent)&&!window.opera)
return G_vmlCanvasManager.initElement(canvas);else
return canvas;}
Chart.prototype.calc=function(){this.xaxis={};this.yaxis={};this.xrange=null;this.yrange=null;this.xaxis.datamin=this.yaxis.datamin=Number.MAX_VALUE;this.xaxis.datamax=this.yaxis.datamax=Number.MIN_VALUE;this.xDataRange=null;this.yDataRange=null;for(var i=0;i<this.series.length;i++){this.calcSeries(this.series[i]);}};Chart.prototype.calcPie=function(){var series=this.series;var sum=0;for(var i=0;i<series.length;i++){sum+=series[i].data;}
sum=(sum==0)?1:sum;this.offset={left:0,top:0,right:0,bottom:0};if(this.options.legend.show){var label=document.createElement('div');label.innerHTML="100.0%";label.style.fontFamily=this.options.legend.fontFamily;label.style.fontSize=this.options.legend.fontSize+'px';label.style.position='absolute';label.style.left=label.style.top='0px';this.div.appendChild(label);var d=_getDimensions(label);this.div.removeChild(label);this.pieLabelDimensions={width:d.width,height:d.height};this.offset.top+=d.height;this.offset.bottom+=d.height;this.offset.right+=d.width;this.offset.left+=d.width;var legend=document.createElement('div');legend.className="chart-legend";var tbl='<table><thead><tr><th colspan="2">Name</th><th>Value</th></tr></thead><tbody>'
for(var i=0;i<series.length;i++){series[i].sliceInfo={value:Math.round(((series[i].data/sum)*1000.0))/10.0,angle:series[i].data/sum*360};var cl=(i%2!=0)?'odd':'even';tbl+='<tr class="'+cl+'"><td style="background:'+series[i].slices.color+';width:'+this.options.legend.size+'px;font-size:1px;">&nbsp;</td><td>'+(series[i].label||'&nbsp;')+'</td><td style="white-space: nowrap;">'+series[i].data+' ('+series[i].sliceInfo.value+'%)</td></tr>';}
tbl+="</tbody></table>";legend.innerHTML=tbl;legend.style.position='absolute';legend.style.left=legend.style.top='0px';this.div.appendChild(legend);var d=_getDimensions(legend);var lw=Math.min(d.width,this.options.canvas.width/2);legend.style.width=lw+'px';this.offset.left+=lw+this.options.legend.margin;this.div.removeChild(legend);this.pieLegend=legend;}
else{for(var i=0;i<series.length;i++){series[i].sliceInfo={value:Math.round(((series[i].data/sum)*1000.0))/10.0,angle:series[i].data/sum*360};}}
this.width-=this.offset.left+this.offset.right;this.height-=this.offset.top+this.offset.bottom;this.radius=Math.min(this.width,this.height)/2-this.options.pies.shadowSize;this.radius-=(this.options.border.show)?this.options.border.lineWidth:0;this.radius-=this.options.pies.sliceDepth;this.radius*=.98;};Chart.prototype.drawPie=function(){var ctx=this.context;var series=this.series;this.target.setAttribute('width',this.width);this.target.setAttribute('height',this.height);this.target.style.width=this.width+'px';this.target.style.height=this.height+'px';this.target.style.position='absolute';this.target.style.left=this.offset.left+'px';this.target.style.top=this.offset.top+'px';this.overlay.setAttribute('width',this.width);this.overlay.setAttribute('height',this.height);this.overlay.style.width=this.width+'px';this.overlay.style.height=this.height+'px';this.overlay.style.position='absolute';this.overlay.style.left=this.offset.left+'px';this.overlay.style.top=this.offset.top+'px';this.overlay2.setAttribute('width',this.width);this.overlay2.setAttribute('height',this.height);this.overlay2.style.width=this.width+'px';this.overlay2.style.height=this.height+'px';this.overlay2.style.position='absolute';this.overlay2.style.left=this.offset.left+'px';this.overlay2.style.top=this.offset.top+'px';var e=1/.98;var lw=(this.options.border.show)?this.options.border.lineWidth:0;var radius=this.radius;var shadow=this.options.pies.shadowSize;var x=this.width/2-shadow-lw;var y=this.radius+shadow+lw+this.options.pies.sliceDepth;if(shadow>0){ctx.fillStyle=_toRGBA(this.options.pies.shadowColor,this.options.pies.shadowOpacity);ctx.beginPath();ctx.arc(x+shadow,y+shadow,radius+lw,radius+lw,0,Math.PI*2,true);ctx.fill();ctx.closePath();}
var lastAngle=0;for(var i=0;i<series.length;i++){var angle=series[i].sliceInfo.angle;ctx.fillStyle=_toRGBA(series[i].slices.color,1);drawWedge(ctx,x,y,lastAngle,angle,radius,radius,true);ctx.strokeStyle=_toRGBA(series[i].slices.strokeColor||series[i].slices.color,1);drawWedge(ctx,x,y,lastAngle,angle,radius,radius,false);if(this.options.legend.show){var g=(((lastAngle*-1)-angle)-lastAngle)/2;var midX=x+Math.cos(g*Math.PI/180)*(radius+shadow+lw)*e;var midY=y+Math.sin(g*Math.PI/180)*(radius+shadow+lw)*e;var e1X=x+Math.cos(-1*lastAngle*Math.PI/180)*(radius+shadow+lw)*e;var e1Y=y+Math.sin(-1*lastAngle*Math.PI/180)*(radius+shadow+lw)*e;var e2X=x+Math.cos(((lastAngle*-1)-angle)*Math.PI/180)*(radius+shadow+lw)*e;var e2Y=y+Math.sin(((lastAngle*-1)-angle)*Math.PI/180)*(radius+shadow+lw)*e;var dist=Math.sqrt((e2X-e1X)*(e2X-e1X)+(e2Y-e1Y)*(e2Y-e1Y));var left=this.offset.left;var top=this.offset.top;var d=document.createElement('div');d.innerHTML=series[i].sliceInfo.value+"%";d.style.fontFamily=this.options.legend.fontFamily;fontSize=12;if(Math.round(dist)<this.pieLabelDimensions.height){fontSize=Math.round(dist);}
else
fontSize=this.options.legend.fontSize;d.style.fontSize=fontSize+'px';d.style.zIndex=2;this.div.appendChild(d);d.style.position='absolute';var m=_getDimensions(d);if(x<=midX&&y>=midY){top=midY-m.height;left=midX;}
else if(x>=midX&&y>midY){top=midY-m.height;left=midX-m.width;}
else if(x>=midX&&y<=midY){top=midY;left=midX-m.width;}
else{top=midY;left=midX;}
d.style.left=left+this.offset.left+'px';d.style.top=top+this.offset.top+'px';if(fontSize<12)
this.div.removeChild(d);}
lastAngle+=angle;}
if(this.options.border.show){ctx.lineWidth=lw;ctx.strokeStyle=_toRGBA(this.options.border.color,1);ctx.beginPath();ctx.arc(x,y,radius+lw/2,radius+lw/2,0,Math.PI*2);ctx.stroke();ctx.closePath();}
if(this.options.legend.show){var legend=this.pieLegend;legend.style.top=this.offset.top+'px';this.div.appendChild(this.pieLegend);}};Chart.prototype.calcSeries=function(series){var xDataRange=this.xDataRange;var yDataRange=this.yDataRange;this.processSeriesData(series.data);if(xDataRange!=this.xDataRange){this.calcAxisRange(this.xaxis,this.options.xaxis);this.extendXRangeIfNeededByBar();this.xrange=this.xaxis.max-this.xaxis.min;this.calcTicks(this.xaxis,this.options.xaxis);this.calcTicks(this.yaxis,this.options.yaxis);this.calcTickSpacing();this.calcSpacing();}
if(yDataRange!=this.yDataRange){this.calcAxisRange(this.yaxis,this.options.yaxis);this.yrange=this.yaxis.max-this.yaxis.min;this.calcTicks(this.xaxis,this.options.xaxis);this.calcTicks(this.yaxis,this.options.yaxis);this.calcTickSpacing();this.calcSpacing();}
if(series.lines.show||series.points.show||(!series.bars.show&&!series.points.show)){this.calcHoverMap(series);}
if(series.bars.show){this.barCount+=1;var b=1;for(var i=0;i<this.series.length;i++){if(this.series[i].bars.show){this.calcHoverMap(this.series[i],'bar',b);b+=1;}}}};Chart.prototype.calcHoverMap=function(series,type,counter){series._hovermap=[];var data=series.data;for(var j=0;j<data.length;j++){if(data[j]==null)
continue;var px=data[j][0];var py=data[j][1];var x=this.tHoz(px);var y=this.tVert(py);var x1,x2,y1,y2,cx,cy=null;if(type!='bar'){area=2;x1=x-area;y1=y-area;x2=x+area;y2=y+area;cx=x;cy=y;}
else{var bwa=series.bars.barWidth/this.barCount;var mid=Math.ceil(this.barCount/2)-1;var shift=bwa*(mid-counter);shift+=(this.barCount%2==0)?bwa:bwa/2;x1=this.tHoz(px-shift);y1=y;x2=this.tHoz(px+bwa-shift);y2=this.tVert(this.yaxis.min);cx=x1+((x2-x1)/2);cy=y1+((y2-y1)/2);}
series._hovermap.push({datapoint:data[j],x1:x1,y1:y1,x2:x2,y2:y2,x:cx,y:cy,series:series});}};Chart.prototype.calcPieHoverMap=function(series){var e=1/.98;var lw=(this.options.border.show)?this.options.border.lineWidth:0;var radius=this.radius;var shadow=this.options.pies.shadowSize;var x=this.width/2-shadow-lw;var y=this.radius+shadow+lw+this.options.pies.sliceDepth;var lastAngle=0;series._hovermap=[];var data=series;for(var j=0;j<data.length;j++){if(data[j]==null)
continue;var angle=data[j].sliceInfo.angle;series._hovermap.push({datapoint:[data[j].label,data[j].data],x:x,y:y,lastAngle:lastAngle,angle:angle,radius:radius,series:data[j]});lastAngle+=angle;}};Chart.prototype.processSeriesData=function(data){for(var j=0;j<data.length;++j){if(data[j]==null)
continue;var x=data[j][0],y=data[j][1];if(x==null||y==null||isNaN(x=+x)||isNaN(y=+y)){data[j]=null;continue;}
if(x<this.xaxis.datamin)
this.xaxis.datamin=x;if(x>this.xaxis.datamax)
this.xaxis.datamax=x;if(y<this.yaxis.datamin)
this.yaxis.datamin=y;if(y>this.yaxis.datamax)
this.yaxis.datamax=y;}
if(this.xaxis.datamin==Number.MAX_VALUE)
this.xaxis.datamin=0;if(this.yaxis.datamin==Number.MAX_VALUE)
this.yaxis.datamin=0;if(this.xaxis.datamax==Number.MIN_VALUE)
this.xaxis.datamax=1;if(this.yaxis.datamax==Number.MIN_VALUE)
this.yaxis.datamax=1;this.xDataRange=this.xaxis.datamax-this.xaxis.datamin;this.yDataRange=this.yaxis.datamax-this.yaxis.datamin;};Chart.prototype.calcAxisRange=function(axis,options){var min=options.min!=null?options.min:axis.datamin;var max=options.max!=null?options.max:axis.datamax;if(max-min==0.0){var widen;if(max==0.0)
widen=1.0;else
widen=0.01;min-=widen;max+=widen;}
else{var margin=options.autoscale;if(margin!=null){if(options.min==null){min-=(max-min)*margin;if(min<0&&axis.datamin>=0)
min=0;}
if(options.max==null){max+=(max-min)*margin;if(max>0&&axis.datamax<=0)
max=0;}}}
axis.min=min;axis.max=max;};Chart.prototype.erase=function(){var ctx=this.context;ctx.clearRect(0,0,this.width,this.height);};Chart.prototype.calcTicks=function(axis,axisOptions){var noTicks;if(typeof axisOptions.ticks=="number"&&axisOptions.ticks>0)
noTicks=axisOptions.ticks;else if(axis==this.xaxis)
noTicks=Math.max(1,Math.round(this.options.canvas.width/100));else
noTicks=Math.max(1,Math.round(this.options.canvas.height/60));var delta=(axis.max-axis.min)/noTicks;var size,generator,unit,formatter,i,magn,norm;if(axisOptions.mode=='time'){function formatDate(d,fmt,monthNames){var leftPad=function(n){n=""+n;return n.length==1?"0"+n:n;};var r=[];var escape=false;if(monthNames==null)
monthNames=["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"];for(var i=0;i<fmt.length;++i){var c=fmt.charAt(i);if(escape){switch(c){case'h':c=""+d.getHours();break;case'H':c=leftPad(d.getHours());break;case'M':c=leftPad(d.getMinutes());break;case'S':c=leftPad(d.getSeconds());break;case'd':c=""+d.getDate();break;case'm':c=""+(d.getMonth()+1);break;case'y':c=""+d.getFullYear();break;case'b':c=""+monthNames[d.getMonth()];break;}
r.push(c);escape=false;}
else{if(c=="%")
escape=true;else
r.push(c);}}
return r.join("");}
var timeUnitSize={"second":1000,"minute":60*1000,"hour":60*60*1000,"day":24*60*60*1000,"month":30*24*60*60*1000,"year":365.2425*24*60*60*1000};var spec=[[1,"second"],[2,"second"],[5,"second"],[10,"second"],[30,"second"],[1,"minute"],[2,"minute"],[5,"minute"],[10,"minute"],[30,"minute"],[1,"hour"],[2,"hour"],[4,"hour"],[8,"hour"],[12,"hour"],[1,"day"],[2,"day"],[3,"day"],[0.25,"month"],[0.5,"month"],[1,"month"],[2,"month"],[3,"month"],[6,"month"],[1,"year"]];var minSize=0;if(axisOptions.minTickSize!=null){if(typeof axisOptions.tickSize=="number")
minSize=axisOptions.tickSize;else
minSize=axisOptions.minTickSize[0]*timeUnitSize[axisOptions.minTickSize[1]];}
for(i=0;i<spec.length-1;++i)
if(delta<(spec[i][0]*timeUnitSize[spec[i][1]]
+spec[i+1][0]*timeUnitSize[spec[i+1][1]])/2&&spec[i][0]*timeUnitSize[spec[i][1]]>=minSize)
break;size=spec[i][0];unit=spec[i][1];if(unit=="year"){magn=Math.pow(10,Math.floor(Math.log(delta/timeUnitSize.year)/Math.LN10));norm=(delta/timeUnitSize.year)/magn;if(norm<1.5)
size=1;else if(norm<3)
size=2;else if(norm<7.5)
size=5;else
size=10;size*=magn;}
if(axisOptions.tickSize){size=axisOptions.tickSize[0];unit=axisOptions.tickSize[1];}
generator=function(axis){var ticks=[],tickSize=axis.tickSize[0],unit=axis.tickSize[1],d=new Date(axis.min);var step=tickSize*timeUnitSize[unit];if(unit=="second")
d.setSeconds(_floorInBase(d.getSeconds(),tickSize));if(unit=="minute")
d.setMinutes(_floorInBase(d.getMinutes(),tickSize));if(unit=="hour")
d.setHours(_floorInBase(d.getHours(),tickSize));if(unit=="month")
d.setMonth(_floorInBase(d.getMonth(),tickSize));if(unit=="year")
d.setFullYear(_floorInBase(d.getFullYear(),tickSize));d.setMilliseconds(0);if(step>=timeUnitSize.minute)
d.setSeconds(0);if(step>=timeUnitSize.hour)
d.setMinutes(0);if(step>=timeUnitSize.day)
d.setHours(0);if(step>=timeUnitSize.day*4)
d.setDate(1);if(step>=timeUnitSize.year)
d.setMonth(0);var carry=0,v;do{v=d.getTime();ticks.push({v:v,label:axis.tickFormatter(v,axis)});if(unit=="month"){if(tickSize<1){d.setDate(1);var start=d.getTime();d.setMonth(d.getMonth()+1);var end=d.getTime();d.setTime(v+carry*timeUnitSize.hour+(end-start)*tickSize);carry=d.getHours();d.setHours(0);}
else
d.setMonth(d.getMonth()+tickSize);}
else if(unit=="year"){d.setFullYear(d.getFullYear()+tickSize);}
else
d.setTime(v+step);}while(v<axis.max);return ticks;};formatter=function(v,axis){var d=new Date(v);if(axisOptions.timeformat!=null)
return formatDate(d,axisOptions.timeformat,axisOptions.monthNames);var t=axis.tickSize[0]*timeUnitSize[axis.tickSize[1]];var span=axis.max-axis.min;if(t<timeUnitSize.minute)
fmt="%h:%M:%S";else if(t<timeUnitSize.day){if(span<2*timeUnitSize.day)
fmt="%h:%M";else
fmt="%b %d %h:%M";}
else if(t<timeUnitSize.month)
fmt="%b %d";else if(t<timeUnitSize.year){if(span<timeUnitSize.year)
fmt="%b";else
fmt="%b %y";}
else
fmt="%y";return formatDate(d,fmt,axisOptions.monthNames);};}
else{var maxDec=axisOptions.tickDecimals;var dec=-Math.floor(Math.log(delta)/Math.LN10);if(maxDec!=null&&dec>maxDec)
dec=maxDec;magn=Math.pow(10,-dec);norm=delta/magn;if(norm<1.5)
size=1;else if(norm<3){size=2;if(norm>2.25&&(maxDec==null||dec+1<=maxDec)){size=2.5;++dec;}}
else if(norm<7.5)
size=5;else
size=10;size*=magn;if(axisOptions.minTickSize!=null&&size<axisOptions.minTickSize)
size=axisOptions.minTickSize;if(axisOptions.tickSize!=null)
size=axisOptions.tickSize;axis.tickDecimals=Math.max(0,(maxDec!=null)?maxDec:dec);axis.div=this.div;generator=function(axis){var ticks=[];var start=_floorInBase(axis.min,axis.tickSize);var i=0,v;do{v=start+i*axis.tickSize;ticks.push({v:v,label:axis.tickFormatter(v,axis)});++i;}while(v<axis.max);return ticks;};formatter=function(v,axis){return v.toFixed(axis.tickDecimals);};}
axis.tickSize=unit?[size,unit]:size;axis.tickGenerator=generator;if(typeof axisOptions.tickFormatter=="function"){axis.tickFormatter=function(v,axis){return""+axisOptions.tickFormatter(v,axis);};}
else{axis.tickFormatter=formatter;}
axis.ticks=[];if(axisOptions.ticks==null){axis.ticks=axis.tickGenerator(axis);}
else if(typeof axisOptions.ticks=="number"){if(axisOptions.ticks>0)
axis.ticks=axis.tickGenerator(axis);}
else if(axisOptions.ticks){var ticks=axisOptions.ticks;if(typeof ticks=="function")
ticks=ticks({min:axis.min,max:axis.max});var i,v;for(i=0;i<ticks.length;++i){var label=null;var t=ticks[i];if(typeof t=="object"){v=t[0];if(t.length>1)
label=t[1];}
else
v=t;if(label==null)
label=axis.tickFormatter(v,axis);axis.ticks[i]={v:v,label:label};}}};Chart.prototype.calcSpacing=function(){var s=this.options.border.show?this.options.border.shadowSize:0;var lw=this.options.border.show?this.options.border.lineWidth:0;var w=this.plotWidth=this.width-s-lw;var h=this.plotHeight=this.height-s-lw;var r=this.radius=this.options.border.show?this.options.border.radius:0;this.offset={};var series=this.series;var maxOutset=lw;for(i=0;i<series.length;++i){if(series[i].points.show){maxOutset=Math.max(maxOutset,series[i].points.radius+series[i].lines.lineWidth/2);}}
this.offset.left=this.offset.right=this.offset.top=this.offset.bottom=maxOutset;this.offset.left+=this.options.canvas.width-this.width+this.options.grid.labelMargin;this.offset.bottom+=this.options.canvas.height-this.height+this.legendHeight;this.offset.right+=s;};Chart.prototype.calcTickSpacing=function(){var yaxis=this.yaxis;var xaxis=this.xaxis;var options=this.options;var series=this.series;this.legendHeight=0;if(options.legend.show){var lbl='';for(var i=0;i<series.length;i++){if(series[i].label){lbl=series[i].label;break;}}
if(lbl=='')
options.legend.show=false;var dd=document.createElement('div');dd.style.fontFamily=options.legend.fontFamily;dd.style.fontSize=options.legend.fontSize+'px';dd.innerHTML='<a style="white-space: nowrap;" href="#">'+lbl+'</a>';this._canvas(dd,options.legend.size,options.legend.size);this.div.appendChild(dd);var d=_getDimensions(dd);this.div.removeChild(dd);this.legendHeight=Math.max(d.height,options.legend.size);this.legendHeight+=options.legend.margin;}
if(options.yaxis.show){var i,labels=[],l;for(i=0;i<yaxis.ticks.length;++i){l=yaxis.ticks[i].label.toString().replace(' ','&nbsp;');if(l)
labels.push('<div style="white-space: nowrap;position:absolute;left:0px;top:0px;">'+l+'</div>');}
var yLabelMaxHeight=0;var yLabelMaxWidth=this.yaxis.maxLabelWidth||0;if(labels.length>0){var dd=document.createElement('div');dd.setAttribute('style',"position:absolute;left:0px;top:-10000px;font-size: "+options.yaxis.fontSize+"px;font-family: '"+options.yaxis.fontFamily+"';");dd.innerHTML=labels.join("");this.div.appendChild(dd);var dimensions=_getDimensions(dd.lastChild);if(yLabelMaxHeight<dimensions.height)
yLabelMaxHeight=dimensions.height;if(yLabelMaxWidth<dimensions.width)
yLabelMaxWidth=dimensions.width;this.div.removeChild(dd);this.yaxis.maxLabelHeight=yLabelMaxHeight;this.yaxis.maxLabelWidth=yLabelMaxWidth;}
this.width=options.canvas.width-yLabelMaxWidth-options.grid.labelMargin;}
if(options.xaxis.show){var xLabelMaxHeight=0;var xLabelBoxWidth=this.width/xaxis.ticks.length;if(options.xaxis.show){labels=[];for(i=0;i<xaxis.ticks.length;++i){l=xaxis.ticks[i].label;if(l)
labels.push('<div style="white-space: nowrap;position:relative;left:'+((xLabelBoxWidth/2)*i)+'px;">&nbsp;'+l+'</div>');}
if(labels.length>0){var dd=document.createElement('div');dd.setAttribute('style',"position:absolute;left:0;top:-10000px;font-size: "+options.xaxis.fontSize+"px;font-family: '"+options.xaxis.fontFamily+"';");dd.innerHTML=labels.join("");this.div.appendChild(dd);var dimensions=_getDimensions(dd.lastChild);if(xLabelMaxHeight<dimensions.height)
xLabelMaxHeight=dimensions.height;this.div.removeChild(dd);}}
this.height=options.canvas.height-this.legendHeight-xLabelMaxHeight-options.grid.labelMargin;}
this.target.setAttribute('width',this.width);this.target.style.width=this.width+'px';this.target.setAttribute('height',this.height);this.target.style.height=this.height+'px';this.target.style.position="absolute";this.target.style.right='0px';this.target.style.top='0px';this.overlay.setAttribute('width',this.width);this.overlay.style.width=this.width+'px';this.overlay.setAttribute('height',this.height);this.overlay.style.height=this.height+'px';this.overlay.style.position="absolute";this.overlay.style.right='0px';this.overlay.style.top='0px';this.overlay2.setAttribute('width',this.width);this.overlay2.style.width=this.width+'px';this.overlay2.setAttribute('height',this.height);this.overlay2.style.height=this.height+'px';this.overlay2.style.position="absolute";this.overlay2.style.right='0px';this.overlay2.style.top='0px';};Chart.prototype.drawTicks=function(){if(this.options.legend.show){if(this.legenddiv!=null){this.div.removeChild(this.legenddiv);this.legenddiv=null;}
if(this.legenddiv==null){var ld=document.createElement('div');ld.style.position='absolute';ld.style.bottom='0px';ld.style.right='0px';for(var i=0;i<this.series.length;i++)
this.drawLegendMarker(ld,this.series[i]);this.legenddiv=ld;this.div.appendChild(ld);}}
var leftOffset=this.options.canvas.width-this.width-this.options.grid.labelMargin;if(this.options.yaxis.show){var yLabelMaxHeight=this.yaxis.maxLabelHeight;var labels="";var v;for(i=0;i<this.yaxis.ticks.length;++i){v=this.yaxis.ticks[i].v;if(v<=this.yaxis.min||v>=this.yaxis.max)
continue;posTop=Math.round(this.tVert(this.yaxis.ticks[i].v)-yLabelMaxHeight/2);if(posTop>0)
labels+='<div style="white-space: nowrap;width:'+leftOffset+'px;font-size:'+this.options.yaxis.fontSize+'px;font-family:\''+this.options.yaxis.fontFamily+'\';text-align:right;position: absolute;left:0;top:'+posTop+'px;">'+this.yaxis.ticks[i].label+'</div>';}
if(this.yaxisdiv!=null){this.div.removeChild(this.yaxisdiv);this.yaxisdiv=null;}
if(this.yaxisdiv==null){var yd=document.createElement("div");yd.setAttribute('class','yaxis-labels');yd.innerHTML=labels;yd.style.position='absolute';yd.style.left='0px';yd.style.top='0px';this.div.appendChild(yd);this.yaxisdiv=yd;}}
if(this.options.xaxis.show){var xLabelBoxWidth=Math.round((this.plotWidth/this.xaxis.ticks.length)-this.options.grid.labelMargin);var labels="";var v;var posLeft=0;for(i=0;i<this.xaxis.ticks.length;++i){v=this.xaxis.ticks[i].v;posLeft=Math.round(this.tHoz(this.xaxis.ticks[i].v)-xLabelBoxWidth/2);if(posLeft>0&&posLeft<(this.plotWidth-xLabelBoxWidth/2))
labels+='<div style="white-space: nowrap;width:'+xLabelBoxWidth+'px;font-size:'+this.options.xaxis.fontSize+'px;font-family:\''+this.options.xaxis.fontFamily+'\';text-align:center;position: absolute;left:'+posLeft+'px;top:'+this.options.grid.labelMargin+'px;">'+this.xaxis.ticks[i].label+'</div>';}
if(this.xaxisdiv!=null){this.div.removeChild(this.xaxisdiv);this.xaxisdiv=null;}
if(this.xaxisdiv==null){var xd=document.createElement("div");xd.setAttribute('class','xaxis-labels');xd.innerHTML=labels;xd.setAttribute('style','position: absolute;left:'+this.offset.left+'px;top:'+this.height+'px;');xd.style.position='absolute';xd.style.left=leftOffset+'px';xd.style.top=this.height+'px';this.div.appendChild(xd);this.xaxisdiv=xd;}}};Chart.prototype.drawLegendMarker=function(p,series){if(!series.label)
return false;var labelColor=typeof series.bars.color=="string"?series.bars.color:series.bars.color[0];var labels=typeof series.label=="string"?[[series.label,labelColor]]:series.label;for(i=0;i<labels.length;i++){var w=this.options.legend.size;var h=w;var canvas=this._canvas(p,w,h);canvas.style.position='relative';var ctx=canvas.getContext('2d');if(this.options.grid.show){ctx.beginPath();ctx.fillStyle=_toRGBA(this.options.grid.bgColor,1);ctx.rect(0,0,w,h);ctx.fill();}
ctx.lineWidth=1;ctx.strokeStyle=_toRGBA(this.options.border.color,1);ctx.rect(0,0,w,h);ctx.stroke();ctx.save();w-=2;h-=2;ctx.translate(1,1);if(series.bars.show){ctx.beginPath();ctx.fillStyle=_toRGBA(labels[i][1],series.bars.opacity);ctx.rect((w*0.25)/2,h*0.25,w*0.75,h-5);ctx.fill();ctx.beginPath();ctx.lineWidth=2;ctx.strokeStyle=_toRGBA(series.bars.strokeColor,1);ctx.rect((w*0.25)/2,h*0.25,w*0.75,h);ctx.stroke();}
else
if(series.lines.show||(!series.lines.show&&!series.points.show)){if(series.lines.fill){ctx.beginPath();ctx.fillStyle=_toRGBA(series.lines.fillColor,series.lines.fillOpacity);ctx.rect(0,h/2,w,h/2);ctx.fill();}
var lw=ctx.lineWidth=series.lines.lineWidth;ctx.strokeStyle=_toRGBA(series.lines.color,series.lines.opacity);ctx.beginPath();ctx.moveTo(0,h/2);ctx.lineTo(w,h/2);ctx.stroke();}
if(series.points.show){if(series.points.fill){ctx.beginPath();ctx.fillStyle=_toRGBA(series.points.color,series.points.opacity);ctx.arc(w/2,h/2,series.points.radius,0,2*Math.PI,true);ctx.fill();}
ctx.beginPath();var lw=ctx.lineWidth=series.lines.lineWidth;ctx.strokeStyle=_toRGBA(series.lines.color,series.lines.opacity);ctx.arc(w/2,h/2,series.points.radius,0,2*Math.PI,true);ctx.stroke();}
ctx.restore();var lbl=document.createElement("span");lbl.style.fontFamily=this.options.legend.fontFamily;lbl.style.fontSize=this.options.legend.fontSize+'px';p.appendChild(lbl);if(series.onclick){lbl.innerHTML='&nbsp;<a href="#">'+labels[i][0]+'</a>&nbsp; &nbsp;';var a=lbl.getElementsByTagName('a')[0];a.onclick=series.onclick;}
else{lbl.innerHTML=labels[i][0];lbl.innerHTML='&nbsp;'+labels[i][0]+'&nbsp; &nbsp;';}}};Chart.prototype.drawError=function(){this.calcSpacing();if(this.options.border.show){if(this.options.grid.show){var ctx=this.context;ctx.strokeStyle=_toRGBA(this.options.grid.color,this.options.grid.opacity||0.25);ctx.lineWidth=this.options.grid.lineWidth;var lw=this.options.border.lineWidth;ctx.save();ctx.fillStyle=_toRGBA(this.options.grid.bgColor,1);ctx.fillRect(0,0,this.width,this.height);ctx.restore();var n=3
ctx.save();ctx.beginPath();for(i=1;i<n;++i){ctx.moveTo((this.plotWidth/n)*i+ctx.lineWidth/2,0);ctx.lineTo((this.plotWidth/n)*i+ctx.lineWidth/2,this.plotHeight);}
for(i=1;i<n;++i){ctx.moveTo(0,(this.plotHeight/n)*i+ctx.lineWidth/2);ctx.lineTo(this.plotWidth,(this.plotHeight/n)*i+ctx.lineWidth/2);}
ctx.stroke();ctx.restore();}
this.drawBorder();}
var msg=document.createElement('div');msg.innerHTML=this.options.nodata.message;msg.style.fontFamily=this.options.nodata.fontFamily;msg.style.fontSize=this.options.nodata.fontSize+'px';msg.style.fontStyle=this.options.nodata.fontStyle;msg.style.width=this.width+'px';msg.style.textAlign='center';msg.style.overflow='hidden';msg.style.position='absolute';msg.style.left='-10000px';msg.style.top='0px';this.div.appendChild(msg);var d=_getDimensions(msg);msg.style.left=this.width/2-d.width/2+'px';msg.style.top=this.height/2-d.height/2+'px';};Chart.prototype.draw=function(){this.drawTicks();this.erase();if(this.options.grid.show){this.drawGrid();}
this.xm=this.plotWidth/this.xrange;this.ym=this.plotHeight/this.yrange;for(var i=0;i<this.series.length;i++){this.drawSeries(this.series[i],i);}
if(this.options.border.show){this.drawBorder();}};Chart.prototype.drawSeries=function(series,counter){if(series.lines.show||(!series.bars.show&&!series.points.show)){this.calcHoverMap(series);this.drawSeriesLines(series);}
if(series.bars.show){this.calcHoverMap(series,'bar',counter);this.drawSeriesBars(series,counter);}
if(series.points.show){this.calcHoverMap(series);this.drawSeriesPoints(series);}};Chart.prototype.drawBorder=function(){var ctx=this.context;ctx.save();var lw=ctx.lineWidth=this.options.border.lineWidth;var s=this.options.border.shadowSize;if(this.options.canvas.bgColor)
ctx.fillStyle=_toRGBA(this.options.canvas.bgColor,1);var w=this.width;var h=this.height;var r=this.radius;ctx.beginPath();ctx.moveTo(0,r);ctx.quadraticCurveTo(s,s,r+s+lw,0);ctx.lineTo(0,0);ctx.closePath();ctx.fill();ctx.beginPath();ctx.moveTo(w-r-lw-s,0);ctx.quadraticCurveTo(w-lw-s,lw+s,w,r+lw);ctx.lineTo(w,0);ctx.closePath();ctx.fill();ctx.beginPath();ctx.moveTo(w,h-r);ctx.quadraticCurveTo(w-lw-s,h-lw-s,w-r+lw,h);ctx.lineTo(w,h);ctx.closePath();ctx.fill();ctx.beginPath();ctx.moveTo(r+lw,h);ctx.quadraticCurveTo(lw+s,h-lw-s,0,h-r-lw-s);ctx.lineTo(0,w);ctx.closePath();ctx.fill();w=this.plotWidth;h=this.plotHeight;ctx.strokeStyle=_toRGBA(this.options.border.color,1);for(var i=0;i<s;i++){drawHalfRect(ctx,s-i+lw/2,s-i+lw/2,w,h,r);}
drawRect(ctx,lw/2,lw/2,w,h,r);ctx.restore();};Chart.prototype.drawGrid=function(){var ctx=this.context;ctx.strokeStyle=_toRGBA(this.options.grid.color,this.options.grid.opacity||0.25);ctx.lineWidth=this.options.grid.lineWidth;ctx.save();ctx.fillStyle=_toRGBA(this.options.grid.bgColor,1);ctx.fillRect(0,0,this.width,this.height);ctx.restore();var lw=this.options.border.lineWidth;ctx.save();ctx.beginPath();var v;for(i=0;i<this.xaxis.ticks.length;++i){v=this.xaxis.ticks[i].v;if(v<=this.xaxis.min||v>=this.xaxis.max)
continue;ctx.moveTo(Math.floor(this.tHoz(v))+ctx.lineWidth/2,0);ctx.lineTo(Math.floor(this.tHoz(v))+ctx.lineWidth/2,this.plotHeight);}
for(i=0;i<this.yaxis.ticks.length;++i){v=this.yaxis.ticks[i].v;if(v<=this.yaxis.min||v>=this.yaxis.max)
continue;ctx.moveTo(0,Math.floor(this.tVert(v))+ctx.lineWidth/2);ctx.lineTo(this.plotWidth,Math.floor(this.tVert(v))+ctx.lineWidth/2);}
ctx.stroke();ctx.restore();};function _int(n,r,l){var ret=0;if(n<r||n>(l-r)){var z=n;if(n>(l-n))
z=l-n;ret=r-Math.sqrt((r*r)-((r-z)*(r-z)));}
return ret;}
Chart.prototype.tVert=function(y){return this.height-((y-this.yaxis.min)*this.ym);};Chart.prototype.tHoz=function(x){return(x-this.xaxis.min)*this.xm;};Chart.prototype.vVert=function(y){y=this.height-y;return((y/this.ym)+this.yaxis.min);};Chart.prototype.vHoz=function(x){return(x/this.xm)+this.xaxis.min;};Chart.prototype.drawSeriesLines=function(series){var ctx=this.context;var xaxis=this.xaxis;var yaxis=this.yaxis;var c=this;function plotLine(data,offset){var prev,cur=null,drawx=null,drawy=null;ctx.beginPath();for(var i=0;i<data.length;++i){prev=cur;cur=data[i];if(prev==null||cur==null)
continue;var x1=prev[0],y1=prev[1],x2=cur[0],y2=cur[1];if(y1<=y2&&y1<yaxis.min){if(y2<yaxis.min)
continue;x1=(yaxis.min-y1)/(y2-y1)*(x2-x1)+x1;y1=yaxis.min;}
else if(y2<=y1&&y2<yaxis.min){if(y1<yaxis.min)
continue;x2=(yaxis.min-y1)/(y2-y1)*(x2-x1)+x1;y2=yaxis.min;}
if(y1>=y2&&y1>yaxis.max){if(y2>yaxis.max)
continue;x1=(yaxis.max-y1)/(y2-y1)*(x2-x1)+x1;y1=yaxis.max;}
else if(y2>=y1&&y2>yaxis.max){if(y1>yaxis.max)
continue;x2=(yaxis.max-y1)/(y2-y1)*(x2-x1)+x1;y2=yaxis.max;}
if(x1<=x2&&x1<xaxis.min){if(x2<xaxis.min)
continue;y1=(xaxis.min-x1)/(x2-x1)*(y2-y1)+y1;x1=xaxis.min;}
else if(x2<=x1&&x2<xaxis.min){if(x1<xaxis.min)
continue;y2=(xaxis.min-x1)/(x2-x1)*(y2-y1)+y1;x2=xaxis.min;}
if(x1>=x2&&x1>xaxis.max){if(x2>xaxis.max)
continue;y1=(xaxis.max-x1)/(x2-x1)*(y2-y1)+y1;x1=xaxis.max;}
else if(x2>=x1&&x2>xaxis.max){if(x1>xaxis.max)
continue;y2=(xaxis.max-x1)/(x2-x1)*(y2-y1)+y1;x2=xaxis.max;}
if(drawx!=c.tHoz(x1)||drawy!=c.tVert(y1)+offset)
ctx.moveTo(c.tHoz(x1),c.tVert(y1)+offset);drawx=c.tHoz(x2);drawy=c.tVert(y2)+offset;ctx.lineTo(drawx,drawy);}
ctx.stroke();}
function plotLineArea(data){var prev,cur=null;var bottom=Math.min(Math.max(0,yaxis.min),yaxis.max);var top,lastX=0;var areaOpen=false;for(var i=0;i<data.length;++i){prev=cur;cur=data[i];if(areaOpen&&prev!=null&&cur==null){ctx.lineTo(c.tHoz(lastX),c.tVert(bottom));ctx.fill();areaOpen=false;continue;}
if(prev==null||cur==null)
continue;var x1=prev[0],y1=prev[1],x2=cur[0],y2=cur[1];if(x1<=x2&&x1<xaxis.min){if(x2<xaxis.min)
continue;y1=(xaxis.min-x1)/(x2-x1)*(y2-y1)+y1;x1=xaxis.min;}
else if(x2<=x1&&x2<xaxis.min){if(x1<xaxis.min)
continue;y2=(xaxis.min-x1)/(x2-x1)*(y2-y1)+y1;x2=xaxis.min;}
if(x1>=x2&&x1>xaxis.max){if(x2>xaxis.max)
continue;y1=(xaxis.max-x1)/(x2-x1)*(y2-y1)+y1;x1=xaxis.max;}
else if(x2>=x1&&x2>xaxis.max){if(x1>xaxis.max)
continue;y2=(xaxis.max-x1)/(x2-x1)*(y2-y1)+y1;x2=xaxis.max;}
if(!areaOpen){ctx.beginPath();ctx.moveTo(c.tHoz(x1),c.tVert(bottom));areaOpen=true;}
if(y1>=yaxis.max&&y2>=yaxis.max){ctx.lineTo(c.tHoz(x1),c.tVert(yaxis.max));ctx.lineTo(c.tHoz(x2),c.tVert(yaxis.max));continue;}
else if(y1<=yaxis.min&&y2<=yaxis.min){ctx.lineTo(c.tHoz(x1),c.tVert(yaxis.min));ctx.lineTo(c.tHoz(x2),c.tVert(yaxis.min));continue;}
var x1old=x1,x2old=x2;if(y1<=y2&&y1<yaxis.min&&y2>=yaxis.min){x1=(yaxis.min-y1)/(y2-y1)*(x2-x1)+x1;y1=yaxis.min;}
else if(y2<=y1&&y2<yaxis.min&&y1>=yaxis.min){x2=(yaxis.min-y1)/(y2-y1)*(x2-x1)+x1;y2=yaxis.min;}
if(y1>=y2&&y1>yaxis.max&&y2<=yaxis.max){x1=(yaxis.max-y1)/(y2-y1)*(x2-x1)+x1;y1=yaxis.max;}
else if(y2>=y1&&y2>yaxis.max&&y1<=yaxis.max){x2=(yaxis.max-y1)/(y2-y1)*(x2-x1)+x1;y2=yaxis.max;}
if(x1!=x1old){if(y1<=yaxis.min)
top=yaxis.min;else
top=yaxis.max;ctx.lineTo(c.tHoz(x1old),c.tVert(top));ctx.lineTo(c.tHoz(x1),c.tVert(top));}
ctx.lineTo(c.tHoz(x1),c.tVert(y1));ctx.lineTo(c.tHoz(x2),c.tVert(y2));if(x2!=x2old){if(y2<=yaxis.min)
top=yaxis.min;else
top=yaxis.max;ctx.lineTo(tHoz(x2old),c.tVert(top));ctx.lineTo(tHoz(x2),c.tVert(top));}
lastX=Math.max(x2,x2old);}
if(areaOpen){ctx.lineTo(c.tHoz(lastX),c.tVert(bottom));ctx.fill();}}
ctx.save();ctx.lineJoin="round";var lw=series.lines.lineWidth;var sw=series.lines.shadowSize;if(sw>0){ctx.lineWidth=sw/2;ctx.strokeStyle=_toRGBA(series.lines.shadowColor,series.lines.shadowOpacity/2);plotLine(series.data,lw/2+sw/2+ctx.lineWidth/2);ctx.lineWidth=sw/2;ctx.strokeStyle=_toRGBA(series.lines.shadowColor,series.lines.shadowOpacity);plotLine(series.data,lw/2+ctx.lineWidth/2);}
ctx.lineWidth=lw;ctx.strokeStyle=_toRGBA(series.lines.color,series.lines.opacity);if(series.lines.fill){ctx.fillStyle=_toRGBA(series.lines.fillColor,series.lines.fillOpacity);plotLineArea(series.data,0);}
plotLine(series.data,0);ctx.restore();};Chart.prototype.drawSeriesPoints=function(series){var ctx=this.context;var xaxis=this.xaxis;var yaxis=this.yaxis;var c=this;function plotPoints(data,radius,fill){for(var i=0;i<data.length;++i){if(data[i]==null)
continue;var x=data[i][0],y=data[i][1];if(x<xaxis.min||x>xaxis.max||y<yaxis.min||y>yaxis.max)
continue;ctx.beginPath();ctx.arc(c.tHoz(x),c.tVert(y),radius,0,2*Math.PI,true);if(fill)
ctx.fill();ctx.stroke();}}
function plotPointShadows(data,offset,radius){for(var i=0;i<data.length;++i){if(data[i]==null)
continue;var x=data[i][0],y=data[i][1];if(x<xaxis.min||x>xaxis.max||y<yaxis.min||y>yaxis.max)
continue;ctx.beginPath();ctx.arc(c.tHoz(x),c.tVert(y)+offset,radius,0,Math.PI,false);ctx.stroke();}}
ctx.save();var lw=series.lines.lineWidth;var sw=series.points.shadowSize;if(sw>0){ctx.lineWidth=sw/2;ctx.strokeStyle=_toRGBA(series.points.shadowColor,series.points.shadowOpacity/2);plotPointShadows(series.data,sw/2+ctx.lineWidth/2,series.points.radius);ctx.lineWidth=sw/2;ctx.strokeStyle=_toRGBA(series.points.shadowColor,series.points.shadowOpacity);plotPointShadows(series.data,ctx.lineWidth/2,series.points.radius);}
ctx.lineWidth=series.lines.lineWidth;ctx.strokeStyle=series.lines.color;ctx.fillStyle=series.points.fill?_toRGBA(series.points.color,series.points.opacity):_toRGBA(series.lines.color,series.lines.opacity);plotPoints(series.data,series.points.radius,series.points.fill);ctx.restore();};Chart.prototype.drawSeriesBars=function(series,counter){var ctx=this.context;var xaxis=this.xaxis;var yaxis=this.yaxis;var c=this;function plotBars(data,barWidth,offset,fill,color,opacity,shadow){var bwa=barWidth/c.barCount;var mid=Math.ceil(c.barCount/2)-1;var shift=bwa*(mid-counter);shift+=(c.barCount%2==0)?bwa:bwa/2;for(var i=0;i<data.length;i++){if(data[i]==null)
continue;var x=data[i][0],y=data[i][1];var drawLeft=true,drawTop=true,drawRight=true;var left=x-shift,right=x+bwa-shift,bottom=0,top=y;if(right<xaxis.min||left>xaxis.max||top<yaxis.min||bottom>yaxis.max)
continue;if(left<xaxis.min){left=xaxis.min;drawLeft=false;}
if(right>xaxis.max){right=xaxis.max;drawRight=false;}
if(bottom<yaxis.min)
bottom=yaxis.min;if(top>yaxis.max){top=yaxis.max;drawTop=false;}
var pxLeft=c.tHoz(left);var pxRight=c.tHoz(right);var pxTop=c.tVert(top);var pxBottom=c.tVert(bottom);ctx.save();if(shadow.width>0){for(j=0;j<shadow.width;j++){var shadOpacity=shadow.opacity-((shadow.opacity/shadow.width)*j);ctx.strokeStyle=_toRGBA(shadow.color,shadOpacity);ctx.lineWidth=1;ctx.beginPath();ctx.moveTo(pxRight+(shadow.width-(shadow.width-j)),pxTop+shadow.width/2);ctx.lineTo(pxRight+(shadow.width-(shadow.width-j)),pxBottom);ctx.stroke();}}
if(fill){var fillColor=typeof color=="string"?color:color.length>i+1?color[i]:color[color.length-1];ctx.fillStyle=_toRGBA(fillColor,opacity);ctx.beginPath();ctx.moveTo(pxLeft,pxBottom+offset);ctx.lineTo(pxLeft,pxTop+offset);ctx.lineTo(pxRight,pxTop+offset);ctx.lineTo(pxRight,pxBottom+offset);ctx.fill();}
ctx.restore();if(drawLeft||drawRight||drawTop){ctx.beginPath();ctx.moveTo(pxLeft+offset,pxBottom+offset);if(drawLeft)
ctx.lineTo(pxLeft+offset,pxTop+offset);else
ctx.moveTo(pxLeft,pxTop+offset);if(drawTop)
ctx.lineTo(pxRight,pxTop+offset);else
ctx.moveTo(pxRight,pxTop+offset);if(drawRight)
ctx.lineTo(pxRight,pxBottom+offset);else
ctx.moveTo(pxRight,pxBottom+offset);ctx.stroke();}}}
ctx.save();ctx.lineJoin="round";var bw=series.bars.barWidth;var lw=Math.min(series.bars.lineWidth,bw);var shadow={width:series.bars.shadowSize,color:series.bars.shadowColor,opacity:series.bars.shadowOpacity};ctx.lineWidth=lw;ctx.strokeStyle=series.bars.strokeColor;plotBars(series.data,bw,0,series.bars.fill,series.bars.color,series.bars.opacity,shadow);ctx.restore();};Chart.prototype.extendXRangeIfNeededByBar=function(){var options=this.options;var xaxis=this.xaxis;var series=this.series;if(options.xaxis.max==null){var newmax=xaxis.max;for(var i=0;i<series.length;++i)
if(series[i].bars.show&&series[i].bars.barWidth+xaxis.datamax>newmax)
newmax=xaxis.datamax+series[i].bars.barWidth;xaxis.min=xaxis.min-(newmax-xaxis.max);xaxis.max=xaxis.max+(newmax-xaxis.max);}};Chart.prototype.mouseover=function(e,c,p,o){var ctx=c.drawContext;var label=$(c.div.id).select('div.chart-label').first();if(o){if(c.currentMouseover==null||o!=c.currentMouseover){ctx.clearRect(0,0,c.width,c.height);c.currentMouseover=o;if(c.isPie){ctx.beginPath();ctx.fillStyle=_toDarkRGBA(o.series.slices.color,o.series.slices.opacity);ctx.strokeStyle=_toDarkRGBA(o.series.slices.color,o.series.slices.opacity);var pieDepth=c.options.pies.sliceDepth;var midAngle=(60)*Math.PI/180;var startAngle=o.lastAngle*Math.PI/180;var endAngle=(o.lastAngle+o.angle)*Math.PI/180;var midDepthX=Math.cos(midAngle)*pieDepth;var midDepthY=Math.sin(midAngle)*pieDepth;var startArcX=Math.cos(startAngle)*(o.radius+c.options.border.lineWidth);var startArcY=Math.sin(startAngle)*(o.radius+c.options.border.lineWidth);var endArcX=Math.cos(endAngle)*(o.radius+c.options.border.lineWidth);var endArcY=Math.sin(endAngle)*(o.radius+c.options.border.lineWidth);ctx.moveTo(o.x+midDepthX,o.y-midDepthY);ctx.lineTo(o.x,o.y);ctx.lineTo(o.x+startArcX,o.y-startArcY);ctx.lineTo(o.x+startArcX+midDepthX,o.y-startArcY-midDepthY);ctx.fill();ctx.beginPath();ctx.lineTo(o.x+midDepthX,o.y-midDepthY);ctx.lineTo(o.x+endArcX+midDepthX,o.y-endArcY-midDepthY);ctx.lineTo(o.x+endArcX,o.y-endArcY);ctx.lineTo(o.x,o.y);ctx.lineTo(o.x+midDepthX,o.y-midDepthY);ctx.fill();ctx.closePath();drawWedge(ctx,o.x,o.y,o.lastAngle,o.angle,o.radius+c.options.border.lineWidth,o.radius+c.options.border.lineWidth,true);ctx.fillStyle=_toRGBA(o.series.slices.color,o.series.slices.opacity);drawWedge(ctx,o.x+midDepthX,o.y-midDepthY,o.lastAngle,o.angle,o.radius+c.options.border.lineWidth,o.radius+c.options.border.lineWidth,true);ctx.strokeStyle=_toRGBA(c.options.border.color,1);ctx.lineWidth=c.options.border.lineWidth;drawArc(ctx,o.x+midDepthX,o.y-midDepthY,o.lastAngle,o.angle,o.radius+(c.options.border.lineWidth/2));}
else
if(o.series.lines.show){ctx.beginPath();ctx.fillStyle=_toRGBA(o.series.lines.color,o.series.lines.opacity);ctx.arc(o.x,o.y,5,0,Math.PI*2,true);ctx.fill();ctx.closePath();}
else
if(o.series.bars.show){ctx.beginPath();var fillColor=typeof o.series.bars.color=="string"?o.series.bars.color:o.series.bars.color[o.datapoint[0]];ctx.fillStyle=_toRGBA(fillColor,o.series.bars.opacity);ctx.strokeStyle=_toDarkRGBA(fillColor,o.series.bars.opacity);var barDepth=5;ctx.moveTo(o.x1-barDepth,o.y1-barDepth-c.options.border.lineWidth);ctx.lineTo(o.x1-barDepth,o.y2-c.options.border.lineWidth);ctx.lineTo(o.x2-barDepth,o.y2-c.options.border.lineWidth);ctx.lineTo(o.x2-barDepth,o.y1-barDepth-c.options.border.lineWidth);ctx.lineTo(o.x1-barDepth,o.y1-barDepth-c.options.border.lineWidth);ctx.fill();ctx.closePath();ctx.beginPath();ctx.fillStyle=_toDarkRGBA(fillColor,o.series.bars.opacity);ctx.moveTo(o.x2-barDepth,o.y1-barDepth-c.options.border.lineWidth);ctx.lineTo(o.x2,o.y1-c.options.border.lineWidth);ctx.lineTo(o.x2,o.y2-c.options.border.lineWidth);ctx.lineTo(o.x2-barDepth,o.y2-c.options.border.lineWidth);ctx.lineTo(o.x2-barDepth,o.y1-barDepth-c.options.border.lineWidth);ctx.fill();ctx.closePath();}
else{label.hide();ctx.clearRect(0,0,c.width,c.height);}}
var main=label.select('div.chart-label-main').first();var format=o.series.labelFormat;format=format.replace("#title",o.series.label);if(c.xaxis){var xValue=c.options.xaxis.mode=="time"?c.xaxis.tickFormatter(o.datapoint[0],c.xaxis):o.datapoint[0].toFixed(c.xaxis.tickDecimals);if(c.xaxis.ticks.length>o.datapoint[0]){format=format.replace("#xvalue",c.xaxis.ticks[o.datapoint[0]].label);}
else{format=format.replace("#xvalue",xValue);}
format=format.replace("#yvalue",o.datapoint[1].toFixed(c.yaxis.tickDecimals));}
else{yValue=(c.isPie)?o.datapoint[1]:o.datapoint[1].toFixed(c.yaxis.tickDecimals);format=format.replace("#xvalue","");format=format.replace("#yvalue",yValue);}
main.innerHTML=format;var d=label.getDimensions();var bShadow=label.select('.bottom-shadow').first();var rShadow=label.select('.right-shadow').first();bShadow.style.width=d.width-5+'px';rShadow.style.height=d.height-2+'px';var labelPosition=_xy(e);var left=labelPosition.x+20;if(!c.isPie)
left=left+d.width>c.width?left-d.width-20:left;label.style.left=left+10+'px';var top=labelPosition.y-d.height-10;top=top-5<0?5:top+d.height+5>c.height?c.height-d.height-5:top;label.style.top=top+'px';label.style.zIndex="3";label.show();}
else{c.currentMouseover=null;label.hide();ctx.clearRect(0,0,c.width,c.height);}};Chart.prototype.mouseout=function(e,c){var ctx=c.drawContext;var label=$(c.div.id).select('div.chart-label').first();if($(c.overlay2).cumulativeOffset().left+$(c.overlay2).getWidth()<=e.clientX+10||$(c.overlay2).cumulativeOffset().left>=e.clientX-10||$(c.overlay2).cumulativeOffset().top+$(c.overlay2).getHeight()<=e.clientY+10||$(c.overlay2).cumulativeOffset().top>=e.clientY-10){c.currentMouseover=null;label.hide();ctx.clearRect(0,0,c.width,c.height);}}
function PieChart(target,series,options){return new Chart(target,series,options,true);}
function _merge(destination,source){for(var property in source)
destination[property]=source[property];return destination;}
function _toRGBA(hex,opacity){hex=hex.toString();hex=(hex.charAt(0)!='#')?'#'+hex:hex;hex=(hex.length<7)?hex.charAt(0)+hex.charAt(1)+hex.charAt(1)+hex.charAt(2)+hex.charAt(2)+hex.charAt(3)+hex.charAt(3):hex;return"rgba("+parseInt(hex.charAt(1)+hex.charAt(2),16)+","+parseInt(hex.charAt(3)+hex.charAt(4),16)+","+parseInt(hex.charAt(5)+hex.charAt(6),16)+","+opacity+")";}
function _toDarkRGBA(hex,opacity){hex=hex.toString();hex=(hex.charAt(0)!='#')?'#'+hex:hex;hex=(hex.length<7)?hex.charAt(0)+hex.charAt(1)+hex.charAt(1)+hex.charAt(2)+hex.charAt(2)+hex.charAt(3)+hex.charAt(3):hex;return"rgba("+Math.max((parseInt(hex.charAt(1)+hex.charAt(2),16)-35),0)+","+Math.max((parseInt(hex.charAt(3)+hex.charAt(4),16)-35),0)+","+Math.max((parseInt(hex.charAt(5)+hex.charAt(6),16)-35),0)+","+opacity+")";}
function _isArray(object){return object!=null&&typeof object=="object"&&'splice'in object&&'join'in object;}
function _bindEvent(){var args=[];for(var i=0;i<arguments.length;i++){args.push(arguments[i]);}
var m=args.shift(),object=args.shift();return function(e){return m.apply(object,[e||window.event].concat(args));}}
function _xy(e){e=Event.extend(e);cxy=$(e.target||e.srcElement).cumulativeOffset();sxy=$(e.target||e.srcElement).cumulativeScrollOffset();var px=e.pointerX();var py=e.pointerY();x=px-cxy[0];y=py-cxy[1];var isModalbox=$("MB_content")!=null;if(isModalbox){x-=sxy[0];y-=sxy[1];}
return{x:x,y:y};}
function _near(c,x,y){var series=c.series;var xaxis=c.xaxis;var yaxis=c.yaxis;var options=c.options;var sel=null;var area=options.grid.mouseCatchingArea;var closest=c.plotWidth;if(!c.isPie){for(var i=0;i<series.length;i++){var map=series[i]._hovermap;for(var j=0;j<map.length;j++){var o=map[j];o.area=area;var x1=o.x1-o.area;var x2=o.x2+o.area;var y1=o.y1-o.area;var y2=o.y2+o.area;w=Math.abs(o.x-x);h=Math.abs(o.y-y);len=Math.sqrt((w*w)+(h*h));if(x>x1&&x<x2&&y>y1&&y<y2&&len<closest){closest=len;sel=o;}}}}
else{var map=series._hovermap;for(var j=0;j<map.length;j++){var o=map[j];o.area=area;var isContained=false;var r1=o.radius+o.area;w=Math.abs(o.x-x);h=Math.abs(o.y-y);len=Math.sqrt((w*w)+(h*h));var pAngle=Math.atan(h/w)*180/Math.PI;if(o.x-x>0){if(o.y-y>0){pAngle=90+(90-pAngle);}
else{pAngle=180+pAngle;}}
else{if(o.y-y>0){pAngle=pAngle;}
else{pAngle=270+(90-pAngle);}}
if(r1>len&&pAngle>o.lastAngle&&pAngle<o.angle+o.lastAngle){sel=o;}}}
return sel;}
function _floorInBase(n,base){return base*Math.floor(n/base);}
function _getDimensions(element){var display=element.style.display;if(display!='none'&&display!=null)
return{width:element.offsetWidth,height:element.offsetHeight};var els=element.style;var originalVisibility=els.visibility;var originalPosition=els.position;var originalDisplay=els.display;els.visibility='hidden';els.position='absolute';els.display='block';var originalWidth=element.clientWidth;var originalHeight=element.clientHeight;els.display=originalDisplay;els.position=originalPosition;els.visibility=originalVisibility;return{width:originalWidth,height:originalHeight};}
function drawHalfRect(ctx,x,y,w,h,cornerRadius,fill)
{var theta=0;var angle=0;var cx=0;var cy=0;var px=0;var py=0;if(cornerRadius>Math.min(w,h)/2)
{cornerRadius=Math.min(w,h)/2;}
theta=Math.PI/4;ctx.beginPath();angle=-Math.PI/2;px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.moveTo(px,py);angle+=theta;cx=x+w-cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);ctx.lineTo(x+w,y+h-cornerRadius);angle+=theta;cx=x+w-cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+h-cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+h-cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);angle+=theta;cx=x+w-cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+h-cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+h-cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);ctx.lineTo(x+cornerRadius,y+h);angle+=theta;cx=x+cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+h-cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+h-cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);if(fill)
ctx.fill();else
ctx.stroke();}
function drawRect(ctx,x,y,w,h,cornerRadius,fill)
{var theta=0;var angle=0;var cx=0;var cy=0;var px=0;var py=0;if(cornerRadius>Math.min(w,h)/2)
{cornerRadius=Math.min(w,h)/2;}
theta=Math.PI/4;ctx.beginPath();ctx.moveTo(x+cornerRadius,y);ctx.lineTo(x+w-cornerRadius,y);angle=-Math.PI/2;cx=x+w-cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);angle+=theta;cx=x+w-cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);ctx.lineTo(x+w,y+h-cornerRadius);angle+=theta;cx=x+w-cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+h-cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+h-cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);angle+=theta;cx=x+w-cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+h-cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+w-cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+h-cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);ctx.lineTo(x+cornerRadius,y+h);angle+=theta;cx=x+cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+h-cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+h-cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);angle+=theta;cx=x+cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+h-cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+h-cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);ctx.lineTo(x,y+cornerRadius);angle+=theta;cx=x+cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);angle+=theta;cx=x+cornerRadius+(Math.cos(angle+(theta/2))*cornerRadius/Math.cos(theta/2));cy=y+cornerRadius+(Math.sin(angle+(theta/2))*cornerRadius/Math.cos(theta/2));px=x+cornerRadius+(Math.cos(angle+theta)*cornerRadius);py=y+cornerRadius+(Math.sin(angle+theta)*cornerRadius);ctx.quadraticCurveTo(cx,cy,px,py);if(fill)
ctx.fill();else
ctx.stroke();}
function drawWedge(ctx,x,y,startAngle,arc,radius,yRadius,fill){ctx.beginPath();ctx.moveTo(x,y);if(yRadius==undefined){yRadius=radius;}
var segAngle=0;var theta=0;var angle=0;var angleMid=0;var segs=0;var ax=0;var ay=0;var bx=0;var by=0;var cx=0;var cy=0;if(Math.abs(arc)>360){arc=360;}
segs=Math.ceil(Math.abs(arc)/45);segAngle=arc/segs;theta=-(segAngle/180)*Math.PI;angle=-(startAngle/180)*Math.PI;if(segs>0){ax=x+Math.cos(startAngle/180*Math.PI)*radius;ay=y+Math.sin(-startAngle/180*Math.PI)*yRadius;ctx.lineTo(ax,ay);for(var i=0;i<segs;i++){angle+=theta;angleMid=angle-(theta/2);bx=x+Math.cos(angle)*radius;by=y+Math.sin(angle)*yRadius;cx=x+Math.cos(angleMid)*(radius/Math.cos(theta/2));cy=y+Math.sin(angleMid)*(yRadius/Math.cos(theta/2));ctx.quadraticCurveTo(cx,cy,bx,by);}
ctx.lineTo(x,y);ctx.closePath();if(fill)
ctx.fill();else
ctx.stroke();}}
function drawArc(ctx,x,y,startAngle,arc,radius){ctx.beginPath();var segAngle=0;var theta=0;var angle=0;var angleMid=0;var segs=0;var ax=0;var ay=0;var bx=0;var by=0;var cx=0;var cy=0;if(Math.abs(arc)>360){arc=360;}
segs=Math.ceil(Math.abs(arc)/45);segAngle=arc/segs;theta=-(segAngle/180)*Math.PI;angle=-(startAngle/180)*Math.PI;if(segs>0){ax=x+Math.cos(startAngle/180*Math.PI)*radius;ay=y+Math.sin(-startAngle/180*Math.PI)*radius;ctx.moveTo(ax,ay);for(var i=0;i<segs;i++){angle+=theta;angleMid=angle-(theta/2);bx=x+Math.cos(angle)*radius;by=y+Math.sin(angle)*radius;cx=x+Math.cos(angleMid)*(radius/Math.cos(theta/2));cy=y+Math.sin(angleMid)*(radius/Math.cos(theta/2));ctx.quadraticCurveTo(cx,cy,bx,by);}}
ctx.stroke();ctx.closePath();}
function $M(destination,source,recursive){if(typeof(source)!="object")return source;if(!destination)destination=(source instanceof Array)?[]:{};if(!recursive)recursive=true;for(var property in source)
destination[property]=(recursive!==true||typeof(source[property])!="object"||source instanceof Array)?source[property]:$M(destination[property],source[property],recursive);return destination;};var CHART_COLORS=['#ffcf56','#fb6a11','#a20d09','#cccca8','#713900','#f1e0c4','#222e00','#fefddf'];var FULL_OPTIONS={canvas:{width:600,height:325},border:{radius:5,color:'#cccccc',lineWidth:3},grid:{color:'#ebebeb',opacity:1,mouseCatchingArea:25},xaxis:{fontFamily:'Trebuchet MS',fontSize:12},yaxis:{fontFamily:'Trebuchet MS',fontSize:12},nodata:{fontFamily:'Trebuchet MS',fontStyle:'normal'},legend:{fontFamily:'Trebuchet MS'}};var MINI_OPTIONS={canvas:{width:30,height:16},border:{show:true,color:'#cccccc',lineWidth:1,radius:0},grid:{show:false,color:'#ebebeb',opacity:1},xaxis:{show:false},yaxis:{show:false},legend:{show:false},nodata:{message:'n/a',fontSize:10,fontStyle:'normal'},chart:{mousemove:function(){return false;},mouseout:function(){return false;}}};var MINI_TIMELINE=$M({xaxis:{mode:'time'}},MINI_OPTIONS);var FULL_TIMELINE=$M({legend:{show:false},xaxis:{mode:'time',minTickSize:[1,'day']}},FULL_OPTIONS);var MINI_PIE=$M({pies:{shadowSize:0,sliceDepth:0}},MINI_OPTIONS);var FULL_PIE=$M({pies:{shadowSize:2,shadowColor:'#000',shadowOpacity:1}},FULL_OPTIONS);var MINI_BAR=$M({yaxis:{min:0}},MINI_OPTIONS);var FULL_BAR=$M({yaxis:{min:0}},FULL_OPTIONS);var S_MINI_LINE={lines:{lineWidth:1,shadowSize:1}};var S_LINE={points:{show:true,radius:5,color:'#ffffff'},lines:{show:true,lineWidth:3,shadowSize:2,fill:false}};var S_MINI_BAR={bars:{show:true,strokeColor:'#cccccc',shadowSize:0}};var S_BAR={bars:{show:true,strokeColor:'#cccccc',shadowSize:3}};