(function(){var undefined,doc=document,win=window,math=Math,mathRound=math.round,mathFloor=math.floor,mathMax=math.max,mathAbs=math.abs,mathCos=math.cos,mathSin=math.sin,userAgent=navigator.userAgent,isIE=/msie/i.test(userAgent)&&!win.opera,isWebKit=/AppleWebKit/.test(userAgent),styleTag,canvasCounter=0,colorCounter,symbolCounter,symbolSizes={},idCounter=0,timeFactor=1,garbageBin,DIV='div',ABSOLUTE='absolute',RELATIVE='relative',HIDDEN='hidden',HIGHCHARTS_HIDDEN='highcharts-'+HIDDEN,VISIBLE='visible',PX='px',makeTime,getMinutes,getHours,getDay,getDate,getMonth,getFullYear,setMinutes,setHours,setDate,setMonth,setFullYear,globalAdapter=win.HighchartsAdapter,adapter=globalAdapter||{},each=adapter.each,grep=adapter.grep,map=adapter.map,merge=adapter.merge,hyphenate=adapter.hyphenate,addEvent=adapter.addEvent,fireEvent=adapter.fireEvent,animate=adapter.animate,getAjax=adapter.getAjax;if(!globalAdapter&&win.jQuery){var jQ=jQuery;each=function(arr,fn){for(var i=0,len=arr.length;i=0&&styleSheets[index].media!=media)index--;styleSheet=styleSheets[index];styleSheet.addRule(selector,serialized);}} function extend(a,b){if(!a)a={};for(var n in b)a[n]=b[n];return a;} function setOptions(options){defaultOptions=merge(defaultOptions,options);setTimeMethods();return defaultOptions;} function discardElement(element){if(!garbageBin)garbageBin=createElement(DIV);if(element)garbageBin.appendChild(element);garbageBin.innerHTML='';} var defaultFont='normal 12px "Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',defaultLabelOptions={enabled:true,align:'center',x:0,y:15,style:{color:'#666',font:defaultFont.replace('12px','11px')}},defaultOptions={colors:['#4572A7','#AA4643','#89A54E','#80699B','#3D96AE','#DB843D','#92A8CD','#A47D7C','#B5CA92'],symbols:['circle','diamond','square','triangle','triangle-down'],lang:{loading:'Loading...',months:['January','February','March','April','May','June','July','August','September','October','November','December'],weekdays:['Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday'],decimalPoint:'.',resetZoom:'Reset zoom',resetZoomTitle:'Reset zoom level 1:1',thousandsSep:','},global:{useUTC:false},chart:{margin:[50,50,60,80],borderColor:'#4572A7',borderRadius:5,defaultSeriesType:'line',ignoreHiddenSeries:true,plotBorderColor:'#C0C0C0'},title:{text:'Chart title',style:{textAlign:'center',color:'#3E576F',font:defaultFont.replace('12px','16px'),margin:'10px 0 0 0'}},subtitle:{text:'',style:{textAlign:'center',color:'#6D869F',font:defaultFont,margin:0}},plotOptions:{line:{allowPointSelect:false,showCheckbox:false,animation:true,events:{},lineWidth:2,shadow:true,marker:{enabled:true,symbol:'auto',lineWidth:0,radius:4,lineColor:'#FFFFFF',fillColor:'auto',states:{hover:{},select:{fillColor:'#FFFFFF',lineColor:'auto',lineWidth:2}}},point:{events:{}},dataLabels:merge(defaultLabelOptions,{enabled:false,y:-6,formatter:function(){return this.y;}}),showInLegend:true,states:{hover:{lineWidth:3,marker:{}},select:{marker:{}}}}},labels:{style:{position:ABSOLUTE,color:'#3E576F',font:defaultFont}},legend:{enabled:true,layout:'horizontal',labelFormatter:function(){return this.name},borderColor:'#909090',borderRadius:5,shadow:true,style:{bottom:'10px',left:'80px',padding:'5px'},itemStyle:{listStyle:'none',margin:0,padding:'0 2em 0 0',font:defaultFont,cursor:'pointer',color:'#3E576F',position:RELATIVE},itemHoverStyle:{color:'#000'},itemHiddenStyle:{color:'#CCC'},itemCheckboxStyle:{position:ABSOLUTE,right:0},symbolWidth:16,symbolPadding:5},loading:{hideDuration:100,labelStyle:{font:defaultFont.replace('normal','bold'),position:RELATIVE,top:'1em'},showDuration:100,style:{position:ABSOLUTE,backgroundColor:'white',opacity:0.5,textAlign:'center'}},tooltip:{enabled:true,formatter:function(){return''+(this.point.name||this.series.name)+'
'+'X value: '+this.x+'
'+'Y value: '+this.y;},backgroundColor:'rgba(255, 255, 255, .85)',borderWidth:2,borderRadius:5,shadow:true,snap:10,style:{color:'#333333',font:defaultFont,fontSize:'9pt',padding:'5px',whiteSpace:'nowrap'}},toolbar:{itemStyle:{color:'#4572A7',cursor:'pointer',margin:'20px',font:defaultFont}},credits:{enabled:false,text:'Highcharts.com',href:'',style:{position:ABSOLUTE,right:'10px',bottom:'5px',color:'#999',textDecoration:'none',font:defaultFont.replace('12px','10px')},target:'_self'}};var defaultXAxisOptions={dateTimeLabelFormats:{second:'%H:%M:%S',minute:'%H:%M',hour:'%H:%M',day:'%e. %b',week:'%e. %b',month:'%b \'%y',year:'%Y'},endOnTick:false,gridLineColor:'#C0C0C0',labels:defaultLabelOptions,lineColor:'#C0D0E0',lineWidth:1,max:null,min:null,maxZoom:null,minorGridLineColor:'#E0E0E0',minorGridLineWidth:1,minorTickColor:'#A0A0A0',minorTickLength:2,minorTickPosition:'outside',minorTickWidth:1,showFirstLabel:true,showLastLabel:false,startOfWeek:1,startOnTick:false,tickColor:'#C0D0E0',tickInterval:'auto',tickLength:5,tickmarkPlacement:'between',tickPixelInterval:100,tickPosition:'outside',tickWidth:1,title:{enabled:false,text:'X-values',align:'middle',margin:35,style:{color:'#6D869F',font:defaultFont.replace('normal','bold')}},type:'linear'},defaultYAxisOptions=merge(defaultXAxisOptions,{endOnTick:true,gridLineWidth:1,tickPixelInterval:72,showLastLabel:true,labels:{align:'right',x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:true,tickWidth:0,title:{enabled:true,margin:40,rotation:270,text:'Y-values'}}),defaultLeftAxisOptions={labels:{align:'right',x:-8,y:3},title:{rotation:270}},defaultRightAxisOptions={labels:{align:'left',x:8,y:3},title:{rotation:90}},defaultBottomAxisOptions={labels:{align:'center',x:0,y:14},title:{rotation:0}},defaultTopAxisOptions=merge(defaultBottomAxisOptions,{labels:{y:-5}});var defaultPlotOptions=defaultOptions.plotOptions,defaultSeriesOptions=defaultPlotOptions.line;defaultPlotOptions.spline=merge(defaultSeriesOptions);defaultPlotOptions.scatter=merge(defaultSeriesOptions,{lineWidth:0,states:{hover:{lineWidth:0}}});defaultPlotOptions.area=merge(defaultSeriesOptions,{fillColor:'auto'});defaultPlotOptions.areaspline=merge(defaultPlotOptions.area);defaultPlotOptions.column=merge(defaultSeriesOptions,{borderColor:'#FFFFFF',borderWidth:1,borderRadius:0,groupPadding:0.2,pointPadding:0.1,states:{hover:{brightness:0.1,shadow:false},select:{color:'#C0C0C0',borderColor:'#000000',shadow:false}}});defaultPlotOptions.bar=merge(defaultPlotOptions.column,{dataLabels:{align:'left',x:5,y:0}});defaultPlotOptions.pie=merge(defaultSeriesOptions,{borderColor:'#FFFFFF',borderWidth:1,center:['50%','50%'],legendType:'point',size:'90%',slicedOffset:10,states:{hover:{brightness:0.1,shadow:false}}});setTimeMethods();function extendClass(parent,members){var object=function(){};object.prototype=new parent();extend(object.prototype,members);return object;} function setColor(val,ctx){if(typeof val=='string'){return val;}else if(val.linearGradient){var gradient=ctx.createLinearGradient.apply(ctx,val.linearGradient);each(val.stops,function(stop){gradient.addColorStop(stop[0],stop[1]);});return gradient;}} var Color=function(input){var rgba=[],result;function parse(input){if((result=/rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]+(?:\.[0-9]+)?)\s*\)/.exec(input))) rgba=[parseInt(result[1]),parseInt(result[2]),parseInt(result[3]),parseFloat(result[4])];else if((result=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(input))) rgba=[parseInt(result[1],16),parseInt(result[2],16),parseInt(result[3],16),1];} function get(){if(rgba&&!isNaN(rgba[0]))return'rgba('+rgba.join(',')+')';else return input;} function brighten(alpha){if(typeof alpha=='number'&&alpha!=0){for(var i=0;i<3;i++){rgba[i]+=parseInt(alpha*255);if(rgba[i]<0)rgba[i]=0;if(rgba[i]>255)rgba[i]=255;}} return this;} function setOpacity(alpha){rgba[3]=alpha;return this;} parse(input);return{get:get,brighten:brighten,setOpacity:setOpacity};};function createElement(tag,attribs,styles,parent,nopad){var el=doc.createElement(tag);if(attribs)extend(el,attribs);if(nopad)setStyles(el,{padding:0,border:'none',margin:0});if(styles)setStyles(el,styles);if(parent)parent.appendChild(el);return el;};function setStyles(el,styles){if(isIE){if(styles.opacity!==undefined) styles.filter='alpha(opacity='+(styles.opacity*100)+')';} extend(el.style,styles);};function numberFormat(number,decimals,decPoint,thousandsSep){var lang=defaultOptions.lang,n=number,c=isNaN(decimals=mathAbs(decimals))?2:decimals,d=decPoint===undefined?lang.decimalPoint:decPoint,t=thousandsSep===undefined?lang.thousandsSep:thousandsSep,s=n<0?"-":"",i=parseInt(n=mathAbs(+n||0).toFixed(c))+"",j=(j=i.length)>3?j%3:0;return s+(j?i.substr(0,j)+t:"")+i.substr(j).replace(/(\d{3})(?=\d)/g,"$1"+t)+ (c?d+mathAbs(n-i).toFixed(c).slice(2):"");};function dateFormat(format,timestamp,capitalize){function pad(number){return number.toString().replace(/^([0-9])$/,'0$1');} if(!defined(timestamp))return'Invalid date';var date=new Date(timestamp*timeFactor),hours=date[getHours](),day=date[getDay](),dayOfMonth=date[getDate](),month=date[getMonth](),fullYear=date[getFullYear](),lang=defaultOptions.lang,langWeekdays=lang.weekdays,langMonths=lang.months,replacements={'a':langWeekdays[day].substr(0,3),'A':langWeekdays[day],'d':pad(dayOfMonth),'e':dayOfMonth,'b':langMonths[month].substr(0,3),'B':langMonths[month],'m':pad(month+1),'y':fullYear.toString().substr(2,2),'Y':fullYear,'H':pad(hours),'I':pad((hours%12)||12),'l':(hours%12)||12,'M':pad(date[getMinutes]()),'p':hours<12?'AM':'PM','P':hours<12?'am':'pm','S':pad(date.getSeconds())};for(var key in replacements)format=format.replace('%'+key,replacements[key]);return capitalize?format.substr(0,1).toUpperCase()+format.substr(1):format;};function setTimeMethods(){var useUTC=defaultOptions.global.useUTC;makeTime=useUTC?Date.UTC:function(year,month,date,hours,minutes,seconds){return new Date(year,month,pick(date,1),pick(hours,0),pick(minutes,0),pick(seconds,0)).getTime();};getMinutes=useUTC?'getUTCMinutes':'getMinutes';getHours=useUTC?'getUTCHours':'getHours';getDay=useUTC?'getUTCDay':'getDay';getDate=useUTC?'getUTCDate':'getDate';getMonth=useUTC?'getUTCMonth':'getMonth';getFullYear=useUTC?'getUTCFullYear':'getFullYear';setMinutes=useUTC?'setUTCMinutes':'setMinutes';setHours=useUTC?'setUTCHours':'setHours';setDate=useUTC?'setUTCDate':'setDate';setMonth=useUTC?'setUTCMonth':'setMonth';setFullYear=useUTC?'setUTCFullYear':'setFullYear';};function updatePosition(el){var p={x:el.offsetLeft,y:el.offsetTop};while(el.offsetParent){el=el.offsetParent;p.x+=el.offsetLeft;p.y+=el.offsetTop;if(el!=doc.body&&el!=doc.documentElement){p.x-=el.scrollLeft;p.y-=el.scrollTop;}} return p;} var Layer=function(name,appendTo,props,styles){var layer=this,div,appendToStyle=appendTo.style;props=extend({className:'highcharts-'+name},props);styles=extend({width:appendToStyle.width,height:appendToStyle.height,position:ABSOLUTE,top:0,left:0,margin:0,padding:0,border:'none'},styles);div=createElement(DIV,props,styles,appendTo);extend(layer,{div:div,width:parseInt(styles.width),height:parseInt(styles.height)});layer.svg=isIE?'':''+''+'';layer.basicSvg=layer.svg;} Layer.prototype={getCtx:function(){if(!this.ctx){var cvs=createElement('canvas',{id:'highcharts-canvas-'+idCounter++,width:this.width,height:this.height},{position:ABSOLUTE},this.div);if(isIE){G_vmlCanvasManager.initElement(cvs);cvs=doc.getElementById(cvs.id);} this.ctx=cvs.getContext('2d');} return this.ctx;},getSvg:function(){if(!this.svgObject){var layer=this,div=layer.div,width=layer.width,height=layer.height;if(isIE){if(!doc.namespaces["g_vml_"]){doc.namespaces.add("g_vml_","urn:schemas-microsoft-com:vml");doc.createStyleSheet().cssText="g_vml_\\:*{behavior:url(#default#VML)}";} this.svgObject=createElement(DIV,null,{width:width+PX,height:height+PX,position:ABSOLUTE},div);}else{this.svgObject=createElement('object',{width:width,height:height,type:'image/svg+xml'},{position:ABSOLUTE,left:0,top:0},div);}} return this.svgObject;},drawLine:function(x1,y1,x2,y2,color,width){var ctx=this.getCtx(),xBefore=x1;if(x1==x2)x1=x2=mathRound(x1)+(width%2/2);if(y1==y2)y1=y2=mathRound(y1)+(width%2/2);ctx.lineWidth=width;ctx.lineCap='round';ctx.beginPath();ctx.moveTo(x1,y1);ctx.strokeStyle=color;ctx.lineTo(x2,y2);ctx.closePath();ctx.stroke();},drawPolyLine:function(points,color,width,shadow,fillColor){var ctx=this.getCtx(),shadowLine=[];if(shadow&&width){each(points,function(point){shadowLine.push(point===undefined?point:point+1);});for(var i=1;i<=3;i++) this.drawPolyLine(shadowLine,'rgba(0, 0, 0, '+(0.05*i)+')',6-2*i);} ctx.beginPath();for(i=0;i0&&h>0){ctx.beginPath();if(!radius){ctx.rect(x,y,w,h);}else{ctx.moveTo(x,y+radius);ctx.lineTo(x,y+h-radius);ctx.quadraticCurveTo(x,y+h,x+radius,y+h);ctx.lineTo(x+w-radius,y+h);ctx.quadraticCurveTo(x+w,y+h,x+w,y+h-radius);ctx.lineTo(x+w,y+radius);ctx.quadraticCurveTo(x+w,y,x+w-radius,y);ctx.lineTo(x+radius,y);ctx.quadraticCurveTo(x,y,x,y+radius);} ctx.closePath();ret=true;} return ret;};var ctx=this.getCtx(),normalizer=(width||0)%2/2;x=mathRound(x)+normalizer;y=mathRound(y)+normalizer;w=mathRound(w-2*normalizer);h=mathRound(h-2*normalizer);if(shadow)for(var i=1;i<=3;i++){this.drawRect(x+1,y+1,w,h,'rgba(0, 0, 0, '+(0.05*i)+')',6-2*i,radius);} if(image)ctx.drawImage(image,x,y,w,h);if(drawPath()){if(fill){ctx.fillStyle=setColor(fill,ctx);ctx.fill();if(win.G_vmlCanvasManager)drawPath();} if(width){ctx.strokeStyle=setColor(color,ctx);ctx.lineWidth=width;ctx.stroke();}}},drawSymbol:function(symbol,x,y,radius,lineWidth,lineColor,fillColor){var ctx=this.getCtx(),imageRegex=/^url\((.*?)\)$/;ctx.beginPath();if(symbol=='square'){var len=0.707*radius;ctx.moveTo(x-len,y-len);ctx.lineTo(x+len,y-len);ctx.lineTo(x+len,y+len);ctx.lineTo(x-len,y+len);ctx.lineTo(x-len,y-len);}else if(symbol=='triangle'){y++;ctx.moveTo(x,y-1.33*radius);ctx.lineTo(x+radius,y+0.67*radius);ctx.lineTo(x-radius,y+0.67*radius);ctx.lineTo(x,y-1.33*radius);}else if(symbol=='triangle-down'){y--;ctx.moveTo(x,y+1.33*radius);ctx.lineTo(x-radius,y-0.67*radius);ctx.lineTo(x+radius,y-0.67*radius);ctx.lineTo(x,y+1.33*radius);}else if(symbol=='diamond'){ctx.moveTo(x,y-radius);ctx.lineTo(x+radius,y);ctx.lineTo(x,y+radius);ctx.lineTo(x-radius,y);ctx.lineTo(x,y-radius);}else if(imageRegex.test(symbol)){createElement('img',{onload:function(){var img=this,size=symbolSizes[img.src]||[img.width,img.height];setStyles(img,{left:mathRound(x-size[0]/2)+PX,top:mathRound(y-size[1]/2)+PX,visibility:VISIBLE}) symbolSizes[img.src]=size;},src:symbol.match(imageRegex)[1]},{position:ABSOLUTE,visibility:isIE?VISIBLE:HIDDEN},this.div);}else{ctx.arc(x,y,radius,0,2*math.PI,true);} if(fillColor){ctx.fillStyle=fillColor;ctx.fill();} if(lineColor&&lineWidth){ctx.strokeStyle=lineColor||"rgb(100, 100, 255)";ctx.lineWidth=lineWidth||2;ctx.stroke();}},drawHtml:function(html,attributes,styles){createElement(DIV,extend(attributes,{innerHTML:html}),extend(styles,{position:ABSOLUTE}),this.div);},drawText:function(){this.addText.apply(this,arguments);this.strokeText();},addText:function(str,x,y,style,rotation,align){if(str||str===0){var layer=this,hasObject,div=layer.div,CSStransform,css='',style=style||{},fill=style.color||'#000000',align=align||'left',fontSize=parseInt(style.fontSize||style.font.replace(/^[a-z ]+/,'')),span,spanWidth,transformOriginX;for(var key in style)css+=hyphenate(key)+':'+style[key]+';';each(['MozTransform','WebkitTransform','transform'],function(str){if(str in div.style)CSStransform=str;});if(!rotation||CSStransform){span=createElement('span',{innerHTML:str},extend(style,{position:ABSOLUTE,left:x+PX,whiteSpace:'nowrap',bottom:mathRound(layer.height-y-fontSize*0.25)+PX,color:fill}),div);spanWidth=span.offsetWidth;if(align=='right')setStyles(span,{left:(x-spanWidth)+PX});else if(align=='center')setStyles(span,{left:mathRound(x-spanWidth/2)+PX});if(rotation){transformOriginX={left:0,center:50,right:100}[align] span.style[CSStransform]='rotate('+rotation+'deg)';span.style[CSStransform+'Origin']=transformOriginX+'% 100%';}}else if(isIE){hasObject=true;var radians=(rotation||0)*math.PI*2/360,costheta=mathCos(radians),sintheta=mathSin(radians),length=layer.width,baselineCorrection=fontSize/3||3,left=align=='left',right=align=='right',x1=left?x:x-length*costheta,x2=right?x:x+length*costheta,y1=left?y:y-length*sintheta,y2=right?y:y+length*sintheta;x1+=baselineCorrection*sintheta;x2+=baselineCorrection*sintheta;y1-=baselineCorrection*costheta;y2-=baselineCorrection*costheta;if(mathAbs(x1-x2)<0.1)x1+=0.1;if(mathAbs(y1-y2)<0.1)y1+=0.1;layer.svg+=''+''+''+''+'';}else{hasObject=true;layer.svg+=''+''+str+''+'';} layer.hasObject=hasObject;}},strokeText:function(){if(this.hasObject){var svgObject=this.getSvg(),svg=this.svg;if(isIE){svgObject.innerHTML=svg;}else{svgObject.data='data:image/svg+xml,'+svg+'';if(isWebKit)this.div.appendChild(svgObject);}}},clear:function(){var layer=this,div=this.div,childNodes=div.childNodes,node;if(layer.ctx)layer.ctx.clearRect(0,0,layer.width,layer.height);if(layer.svgObject){discardElement(layer.svgObject);layer.svgObject=null;layer.svg=layer.basicSvg;} for(var i=childNodes.length-1;i>=0;i--){node=childNodes[i];if(node.tagName=='SPAN')discardElement(node);}},hide:function(){setStyles(this.div,{display:'none'})},show:function(){setStyles(this.div,{display:''})},destroy:function(){discardElement(this.div);return null;}};function Chart(options){function addSeries(options,redraw){var series;redraw=pick(redraw,true);fireEvent(chart,'addSeries',{options:options},function(){series=initSeries(options);series.isDirty=true;chart.isDirty=true;if(redraw)chart.redraw();});return series;};function redraw(){var redrawLegend=chart.isDirty;each(series,function(serie){if(serie.isDirty){serie.cleanData();serie.getSegments();if(serie.options.legendType=='point')redrawLegend=true;}});maxTicks=null;if(hasCartesianSeries){each(axes,function(axis){axis.setScale();}) adjustTickAmounts();each(axes,function(axis){if(axis.isDirty)axis.redraw();})} each(series,function(serie){if(serie.isDirty&&serie.visible)serie.redraw();});if(redrawLegend){if(legend.renderHTML){legend.renderHTML(true);legend.drawGraphics(true);} chart.isDirty=false;} if(tracker&&tracker.resetTracker)tracker.resetTracker();fireEvent(chart,'redraw');} function initSeries(options){var type=options.type||optionsChart.defaultSeriesType,typeClass=typeClasses[type],serie,hasRendered=chart.hasRendered;if(hasRendered){if(inverted&&type=='column')typeClass=BarSeries;else if(!inverted&&type=='bar')typeClass=ColumnSeries;} serie=new typeClass();serie.init(chart,options);if(!hasRendered&&serie.inverted)inverted=true;series.push(serie);return serie;} function showLoading(){var loadingOptions=options.loading;if(!loadingLayer){loadingLayer=createElement(DIV,{className:'highcharts-loading'},extend(loadingOptions.style,{left:marginLeft+PX,top:marginTop+PX,width:plotWidth+PX,height:plotHeight+PX,zIndex:10,display:'none'}),container);createElement('span',{innerHTML:options.lang.loading},loadingOptions.labelStyle,loadingLayer);} setStyles(loadingLayer,{display:''});animate(loadingLayer,{opacity:loadingOptions.style.opacity},{duration:loadingOptions.showDuration});} function hideLoading(){animate(loadingLayer,{opacity:0},{duration:options.loading.hideDuration,complete:function(){setStyles(loadingLayer,{display:'none'});}});} function get(id){var i,j,match,data;for(i=0;imarginTop+marginBottom?renderToOffsetHeight:0)||400;container=createElement(DIV,{className:'highcharts-container'+ (optionsChart.className?' '+optionsChart.className:''),id:containerId},extend({position:RELATIVE,overflow:HIDDEN,width:chartWidth+PX,height:chartHeight+PX,textAlign:'left'},optionsChart.style),renderToClone||renderTo);} function render(){var mgn,div,i,labels=options.labels,credits=options.credits;mgn=2*(optionsChart.borderWidth||0)+(optionsChart.shadow?8:0);backgroundLayer.drawRect(mgn/2,mgn/2,chartWidth-mgn,chartHeight-mgn,optionsChart.borderColor,optionsChart.borderWidth,optionsChart.borderRadius,optionsChart.backgroundColor,optionsChart.shadow);backgroundLayer.drawRect(marginLeft,marginTop,plotWidth,plotHeight,null,null,null,optionsChart.plotBackgroundColor,null,plotBackground);(new Layer('plot-border',container,null,{zIndex:4})).drawRect(marginLeft,marginTop,plotWidth,plotHeight,optionsChart.plotBorderColor,optionsChart.plotBorderWidth,null,null,optionsChart.plotShadow);if(isIE)addCSSRule('.highcharts-image-map',{display:'none'},'print');if(hasCartesianSeries)each(axes,function(axis){axis.render();});showTitle();if(labels.items)each(labels.items,function(){var attributes=extend({className:'highcharts-label'},this.attributes);plotLayer.drawHtml(this.html,attributes,extend(labels.style,this.style));});each(series,function(serie){serie.render();});legend=chart.legend=new Legend(chart);if(!chart.toolbar)chart.toolbar=Toolbar(chart);if(credits.enabled&&!chart.credits) chart.credits=createElement('a',{className:'highcharts-credits',href:credits.href,innerHTML:credits.text,target:credits.target},extend(credits.style,{zIndex:8}),container);chart.hasRendered=true;if(renderToClone){renderTo.appendChild(container);discardElement(renderToClone);position=updatePosition(container);}};function destroy(){function purge(d){var a=d.attributes,i,l,n;if(a){l=a.length;for(i=l-1;i>=0;i-=1){n=a[i].name;try{if(typeof d[n]!='object'){d[n]=null;}}catch(e){}}} a=d.childNodes;if(a){l=a.length;for(i=l-1;i>=0;i--){var node=d.childNodes[i];purge(node);if(!node.childNodes.length)discardElement(node);}}} each(series,function(serie){serie.destroy();});series=[];purge(container);};function Axis(chart,options){function setOptions(){options=merge(isXAxis?defaultXAxisOptions:defaultYAxisOptions,horiz?(opposite?defaultTopAxisOptions:defaultBottomAxisOptions):(opposite?defaultRightAxisOptions:defaultLeftAxisOptions),options);};function getSeriesExtremes(){var stack=[],run;dataMin=dataMax=null;associatedSeries=[];each(series,function(serie){run=false;each(['xAxis','yAxis'],function(strAxis){if((strAxis=='xAxis'&&isXAxis||strAxis=='yAxis'&&!isXAxis)&&((serie.options[strAxis]==options.index)||(serie.options[strAxis]===undefined&&options.index==0))){serie[strAxis]=axis;associatedSeries.push(serie);run=true;}});if(!serie.visible&&optionsChart.ignoreHiddenSeries)run=false;if(run){var stacking;if(!isXAxis){stacking=serie.options.stacking;usePercentage=stacking=='percent';if(stacking){var typeStack=stack[serie.type]||[];stack[serie.type]=typeStack;} if(usePercentage){dataMin=0;dataMax=99;}} if(serie.isCartesian){hasCartesianSeries=true;each(serie.data,function(point,i){var pointX=point.x,pointY=point.y;if(dataMin===null){dataMin=dataMax=point[xOrY];} if(isXAxis){if(pointX>dataMax)dataMax=pointX;else if(pointXdataMax)dataMax=stackedPoint;else if(stackedPoint=0){dataMin=0;ignoreMinPadding=true;}else if(dataMax<0){dataMax=0;ignoreMaxPadding=true;}}}}});};function translate(val,backwards,cvsCoord){var sign=1,cvsOffset=0,returnValue;if(cvsCoord){sign*=-1;cvsOffset=axisLength;} if(reversed){sign*=-1;cvsOffset-=sign*axisLength;} if(backwards){if(reversed)val=axisLength-val;returnValue=val/transA+min;}else{returnValue=sign*(val-min)*transA+cvsOffset;} return returnValue;};function drawPlotLine(value,color,width){if(width){var x1,y1,x2,y2,translatedValue=translate(value),skip;x1=x2=translatedValue+transB;y1=y2=chartHeight-translatedValue-transB;if(horiz){y1=marginTop;y2=chartHeight-marginBottom;if(x1marginLeft+plotWidth)skip=true;}else{x1=marginLeft;x2=chartWidth-marginRight;if(y1marginTop+plotHeight)skip=true;} if(!skip)gridLayer.drawLine(x1,y1,x2,y2,color,width);}};function drawPlotBand(from,to,color){from=mathMax(from,min);to=Math.min(to,max);var width=(to-from)*transA;drawPlotLine(from+(to-from)/2,color,width);} function addTick(pos,tickPos,color,width,len,withLabel,index,doNotTranslate){var x1,y1,x2,y2,str,labelOptions=options.labels;if(tickPos=='inside')len=-len;if(opposite)len=-len;if(typeof(doNotTranslate)!='undefined'&&doNotTranslate==true){x1=x2=pos+tickmarkOffset+transB;y1=y2=chartHeight-pos+tickmarkOffset-transB;} else{x1=x2=translate(pos+tickmarkOffset)+transB;y1=y2=chartHeight-translate(pos+tickmarkOffset)-transB;} if(horiz){y1=chartHeight-marginBottom-(opposite?plotHeight:0)+offset;y2=y1+len;}else{x1=marginLeft+(opposite?plotWidth:0)+offset;x2=x1-len;} if(width){axisLayer.drawLine(x1,y1,x2,y2,color,width);} if(withLabel&&labelOptions.enabled){str=labelFormatter.call({index:index,isFirst:pos==tickPositions[0],isLast:pos==tickPositions[tickPositions.length-1],value:(categories&&categories[pos]?categories[pos]:pos)});if(str||str===0)axisLayer.addText(str,x1+labelOptions.x-(tickmarkOffset&&horiz?tickmarkOffset*transA*(reversed?-1:1):0),y1+labelOptions.y-(tickmarkOffset&&!horiz?tickmarkOffset*transA*(reversed?1:-1):0),labelOptions.style,labelOptions.rotation,labelOptions.align);}};function normalizeTickInterval(interval,multiples){var normalized,allowDecimals=pick(options.allowDecimals,true);magnitude=multiples?1:math.pow(10,mathFloor(math.log(interval)/math.LN10));normalized=interval/magnitude;if(!multiples)multiples=[1,2,2.5,5,10];for(var i=0;i=oneSecond) minDate.setSeconds(interval>=oneMinute?0:multitude*mathFloor(minDate.getSeconds()/multitude));if(interval>=oneMinute) minDate[setMinutes](interval>=oneHour?0:multitude*mathFloor(minDate[getMinutes]()/multitude));if(interval>=oneHour) minDate[setHours](interval>=oneDay?0:multitude*mathFloor(minDate[getHours]()/multitude));if(interval>=oneDay) minDate[setDate](interval>=oneMonth?1:multitude*mathFloor(minDate[getDate]()/multitude));if(interval>=oneMonth){minDate[setMonth](interval>=oneYear?0:multitude*mathFloor(minDate[getMonth]()/multitude));minYear=minDate[getFullYear]();} if(interval>=oneYear){minYear-=minYear%multitude;minDate[setFullYear](minYear);} if(interval==oneWeek){minDate[setDate](minDate[getDate]()-minDate[getDay]()+ options.startOfWeek);} var i=1,time=minDate.getTime()/timeFactor,minYear=minDate[getFullYear](),minMonth=minDate[getMonth](),minDateDate=minDate[getDate]();while(timeroundedMin){tickPositions.shift();} if(options.endOnTick){max=roundedMax;}else if(max0||!ignoreMaxPadding)) max+=length*maxPadding;} if(categories||min==max)tickInterval=1;else tickInterval=options.tickInterval=='auto'?(max-min)*options.tickPixelInterval/axisLength:options.tickInterval;if(!isDatetimeAxis) tickInterval=normalizeTickInterval(tickInterval);minorTickInterval=(options.minorTickInterval=='auto'&&tickInterval)?tickInterval/5:options.minorTickInterval;setTickPositions();transA=axisLength/((max-min)||1);if(!maxTicks)maxTicks={x:0,y:0};if(!isDatetimeAxis&&tickPositions.length>maxTicks[xOrY]) maxTicks[xOrY]=tickPositions.length;if(!isXAxis)for(type in stacks)for(i in stacks[type]){stacks[type][i].cum=stacks[type][i].total;} axis.isDirty=(min!=oldMin||max!=oldMax);};function setExtremes(newMin,newMax,redraw){redraw=pick(redraw,true);fireEvent(axis,'setExtremes',{min:newMin,max:newMax},function(){if(categories){if(newMin<0)newMin=0;if(newMax>categories.length-1)newMax=categories.length-1;} userSetMin=newMin;userSetMax=newMax;if(redraw)chart.redraw();});};function setCategories(newCategories,doRedraw){categories=newCategories;if(pick(doRedraw,true))redraw();};function getExtremes(){return{min:min,max:max,dataMin:dataMin,dataMax:dataMax}} function addPlotBandOrLine(item){var isLine=item.width,collection=isLine?plotLines:plotBands;collection.push(item);if(isLine)drawPlotLine(item.value,item.color,item.width);else drawPlotBand(item.from,item.to,item.color);} function removePlotBandOrLine(id){each([plotBands,plotLines],function(collection){for(var i=0;i10;if(zoomX){var xSize=e.pageX-mouseDownX;setStyles(selectionMarker,{width:mathAbs(xSize)+PX,left:((xSize>0?0:xSize) +mouseDownX-position.x-marginLeft)+PX});} if(zoomY){var ySize=e.pageY-mouseDownY;setStyles(selectionMarker,{height:mathAbs(ySize)+PX,top:((ySize>0?0:ySize)+ +mouseDownY-position.y-marginTop)+PX});}}else{onmousemove(e);} return false;};imagemap.onmouseup=function(){var selectionIsMade;if(selectionMarker){var selectionData={xAxis:[],yAxis:[]},selectionLeft=selectionMarker.offsetLeft,selectionTop=selectionMarker.offsetTop,selectionWidth=selectionMarker.offsetWidth,selectionHeight=selectionMarker.offsetHeight;if(hasDragged){each(axes,function(axis,i){var translate=axis.translate,isXAxis=axis.isXAxis,isHorizontal=inverted?!isXAxis:isXAxis;selectionData[isXAxis?'xAxis':'yAxis'].push({axis:axis,min:translate(isHorizontal?selectionLeft:plotHeight-selectionTop-selectionHeight,true),max:translate(isHorizontal?selectionLeft+selectionWidth:plotHeight-selectionTop,true)})});fireEvent(chart,'selection',selectionData,zoom);selectionIsMade=true;} discardElement(selectionMarker);selectionMarker=null;} chart.mouseIsDown=mouseIsDown=hasDragged=false;};imagemap.onmouseout=function(e){if(document.getElementById('highcharts_index_quotes')!=null){document.getElementById('highcharts_index_quotes').innerHTML='';} e=e||win.event;var related=e.relatedTarget||e.toElement;if(related&&related!=trackerImage&&related.tagName!='AREA'){resetTracker();chart.mouseIsDown=mouseIsDown=hasDragged=false;}} imagemap.onclick=function(e){e=normalizeMouseEvent(e);e.cancelBubble=true;if(!hasDragged){if(activePoint&&e.target.tagName=='AREA'){var plotX=activePoint.plotX,plotY=activePoint.plotY;extend(activePoint,{pageX:position.x+marginLeft+ (inverted?plotWidth-plotY:plotX),pageY:position.y+marginTop+ (inverted?plotHeight-plotX:plotY)});fireEvent(chart.hoverSeries,'click',extend(e,{point:activePoint}));activePoint.firePointEvent('click',e);}else{extend(e,getMouseCoordinates(e));fireEvent(chart,'click',e);}} hasDragged=false;};};function onmousemove(e){var point=chart.hoverPoint,series=chart.hoverSeries;if(series){if(!point)point=series.tooltipPoints[inverted?e.pageY-position.y-marginTop:e.pageX-position.x-marginLeft];if(point&&point!=activePoint){if(activePoint)activePoint.firePointEvent('mouseOut');point.firePointEvent('mouseOver');tooltip.refresh(point);activePoint=point;}}};function createImageMap(){var id='highchartsMap'+canvasCounter++;chart.imagemap=imagemap=createElement('map',{name:id,id:id,className:'highcharts-image-map'},null,container);trackerImage=createElement('img',{useMap:'#'+id},{width:plotWidth+PX,height:plotHeight+PX,left:marginLeft+PX,top:marginTop+PX,opacity:0,border:'none',position:ABSOLUTE,clip:'rect(1px,'+plotWidth+'px,'+plotHeight+'px,1px)',zIndex:9},imagemap);if(!isIE)trackerImage.src='data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==';};function resetTracker(){tooltip.hide();if(chart.hoverSeries){chart.hoverSeries.setState();chart.hoverSeries=null;activePoint=null;}} function insertAtFront(area){var before=0,i,childNodes=imagemap.childNodes;for(i=0;i'},extend({position:ABSOLUTE,zIndex:7},options.style),container);addCSSRule(topRule,extend(options.itemStyle,{paddingLeft:(symbolWidth+options.symbolPadding)+PX,'float':layout=='horizontal'?'left':'none'}));addCSSRule(topRule+':hover',options.itemHoverStyle);addCSSRule(topRule+'.'+HIGHCHARTS_HIDDEN,options.itemHiddenStyle);addCSSRule('.highcharts-legend-horizontal li',{'float':'left'});renderHTML();drawGraphics();function renderHTML(clear){if(clear){each(allItems,function(item){discardElement(item.legendItem);});allItems=[];} each(chart.series,function(serie){if(!serie.options.showInLegend)return;var items=(serie.options.legendType=='point')?serie.data:[serie];each(items,function(item){item.simpleSymbol=/(bar|pie|area|column)/.test(serie.type);item.legendItem=li=createElement('li',{innerHTML:options.labelFormatter.call(item),className:item.visible?'':HIGHCHARTS_HIDDEN},null,dom.firstChild);if(item.options&&item.options.showCheckbox){item.checkbox=createElement('input',{type:'checkbox',checked:item.selected,defaultChecked:item.selected},options.itemCheckboxStyle,li);} addEvent(li,'mouseover',function(){item.setState('hover');});addEvent(li,'mouseout',function(){item.setState();});addEvent(li,'click',function(event){var target=event.target,strLegendItemClick='legendItemClick',fnLegendItemClick=function(){item.setVisible();};if(target.tagName=='INPUT'){fireEvent(item,'checkboxClick',{checked:target.checked},function(){item.select();});}else if(item.firePointEvent){item.firePointEvent(strLegendItemClick,null,fnLegendItemClick);}else{fireEvent(item,strLegendItemClick,null,fnLegendItemClick);}});allItems.push(item);});});} function drawGraphics(clear){if(clear){legendLayer.clear();discardElement(legendArea);legendArea=null;} if(series.length){if(options.borderWidth||options.backgroundColor) legendLayer.drawRect(dom.offsetLeft,dom.offsetTop,dom.offsetWidth,dom.offsetHeight,options.borderColor,options.borderWidth,options.borderRadius,options.backgroundColor,options.shadow);each(allItems,function(item){if(!item.legendItem)return;var li=item.legendItem,symbolX=dom.offsetLeft+li.offsetLeft,symbolY=dom.offsetTop+li.offsetTop+li.offsetHeight/2,markerOptions,isHidden=item.legendItem.className==HIGHCHARTS_HIDDEN,color=isHidden?options.itemHiddenStyle.color:item.color;if(!item.simpleSymbol&&item.options&&item.options.lineWidth) legendLayer.drawLine(symbolX,symbolY,symbolX+symbolWidth,symbolY,color,item.options.lineWidth);if(item.simpleSymbol) legendLayer.drawRect(symbolX,symbolY-6,16,12,null,0,2,color);else if(item.options&&item.options.marker&&item.options.marker.enabled) item.drawMarker(legendLayer,symbolX+symbolWidth/2,symbolY,merge(item.options.marker,isHidden?{fillColor:color,lineColor:color}:null));});if(imagemap){legendArea=createElement('area',{shape:'rect',isLegendArea:true,coords:[dom.offsetLeft-marginLeft,dom.offsetTop-marginTop,dom.offsetLeft+dom.offsetWidth-marginLeft,dom.offsetTop+dom.offsetHeight-marginTop].join(',')});tracker.insertAtFront(legendArea);legendArea.onmouseover=function(e){e=e||win.event;var relatedTarget=e.relatedTarget||e.fromElement;if(relatedTarget!=dom&&!mouseIsDown){tooltip.hide();setStyles(dom,{zIndex:10});}} dom.onmouseout=legendArea.onmouseout=function(e){e=e||win.event;var relatedTarget=e.relatedTarget||e.toElement;if(relatedTarget&&(relatedTarget==trackerImage||(relatedTarget.tagName=='AREA'&&relatedTarget!=legendArea))) setStyles(dom,{zIndex:7});}}}} return{renderHTML:renderHTML,drawGraphics:drawGraphics};};function Tooltip(options){var currentSeries,innerDiv,borderWidth=options.borderWidth,boxLayer;tooltipDiv=createElement(DIV,null,{position:ABSOLUTE,visibility:HIDDEN,overflow:HIDDEN,padding:'0 50px 5px 0',zIndex:8},container);boxLayer=new Layer('tooltip-box',tooltipDiv,null,{width:chartWidth+PX,height:chartHeight+PX});innerDiv=createElement(DIV,{className:"highcharts-tooltip"},extend(options.style,{maxWidth:(chartWidth-40)+PX,textOverflow:'ellipsis',position:RELATIVE,zIndex:2}),tooltipDiv);function refresh(point,series){var tooltipPos=point.tooltipPos,series=point.series,borderColor=options.borderColor||point.color||series.color||'#606060',inverted=chart.inverted,x,y,boxX,boxY,boxWidth,boxHeight,oldInnerDivHeight=innerDiv.offsetHeight,show,text=point.tooltipText;if(series.name=='quotes'){document.getElementById('highcharts_quotes').innerHTML=Highcharts.dateFormat('%d.%m.%Y',series.chart.options.chart.xCategories[point.x]*1000)+': '+number_format(point.y,"'")+'';} else if(series.name=='quotes_pct'){document.getElementById('highcharts_quotes').innerHTML=Highcharts.dateFormat('%d.%m.%Y',series.chart.options.chart.xCategories[point.x]*1000)+': '+number_format(point.y,"'")+' %';} else if(series.name=='quotes_5d_q'){document.getElementById('highcharts_quotes').innerHTML=Highcharts.dateFormat('%d.%m.%Y %H:%M',point.x)+': '+number_format(point.y,"'")+'';} else if(series.name=='volume'){document.getElementById('highcharts_volume').innerHTML='Volumen: '+Highcharts.dateFormat('%d.%m.%Y',series.chart.options.chart.xCategories[point.x]*1000)+': '+number_format(point.y,"'")+'';} else if(series.name=='volume_intraday'){document.getElementById('highcharts_volume').innerHTML='Volumen: '+Highcharts.dateFormat('%d.%m.%Y %H:%M',point.x)+': '+number_format(point.y,"'")+'';} else if(series.name=='intraday_1d'){document.getElementById('highcharts_quotes').innerHTML=Highcharts.dateFormat('%H:%M',point.x)+': '+number_format(point.y,"'")+'';} if(point.tooltipText=='indexSeries_history'){document.getElementById('highcharts_index_quotes').innerHTML=(document.getElementById('chart_series_name_'+point.series.name)!=null?document.getElementById('chart_series_name_'+point.series.name).innerHTML+" - "+Highcharts.dateFormat('%d.%m.%Y',point.x)+': '+Math.round(point.y*100)/100+'%':'')+'';} else if(point.tooltipText=='indexSeries_intraday'){document.getElementById('highcharts_index_quotes').innerHTML=((document.getElementById('chart_series_name_'+point.series.name)!=null?document.getElementById('chart_series_name_'+point.series.name).innerHTML+" - "+Highcharts.dateFormat('%d.%m.%Y, %H:%M',point.x)+': '+(Math.round(point.y*100)/100).toFixed(2)+'%':'')+'');} else if(point.tooltipText=='customSeries_intraday'){document.getElementById('highcharts_index_quotes').innerHTML=Highcharts.dateFormat('%H:%M',series.chart.options.chart.xCategories[point.x]*1000)+': '+number_format(point.y,"'")+'';} else if(point.tooltipText=='customSeries_intraday_5'){document.getElementById('highcharts_index_quotes').innerHTML=Highcharts.dateFormat('%d.%m.%Y, %H:%M',series.chart.options.chart.xCategories[point.x]*1000)+': '+number_format(point.y,"'")+'';} else if(point.tooltipText=='customSeries_history'){document.getElementById('highcharts_index_quotes').innerHTML=Highcharts.dateFormat('%d.%m.%Y',series.chart.options.chart.xCategories[point.x]*1000)+': '+number_format(point.y,"'")+'';} currentSeries=series;x=tooltipPos?tooltipPos[0]:(inverted?plotWidth-point.plotY:point.plotX);y=tooltipPos?tooltipPos[1]:(inverted?plotHeight-point.plotX:point.plotY);if(x>=0&&x<=plotWidth&&y>=0&&y<=plotHeight){show=true;} if(text===false||!show){hide();}else{setStyles(innerDiv,{overflow:VISIBLE});boxWidth=innerDiv.offsetWidth-borderWidth;boxHeight=innerDiv.offsetHeight-borderWidth;setStyles(innerDiv,{overflow:HIDDEN});if(boxWidth>(boxLayer.w||0)+20||boxWidth<(boxLayer.w||0)-20||boxHeight>boxLayer.h||boxLayer.c!=borderColor||oldInnerDivHeight!=innerDiv.offsetHeight){boxLayer.clear();extend(boxLayer,{w:boxWidth,h:boxHeight,c:borderColor});} boxX=x-boxLayer.w+marginLeft-35;boxY=y-boxLayer.h+10+marginTop;if(boxX<5){boxX=5;boxY-=20;} if(boxY<5)boxY=5;else if(boxY+boxLayer.h>chartHeight) boxY=chartHeight-boxLayer.h-5;move(mathRound(boxX),mathRound(boxY));series.drawPointState(point,'hover');}};function move(finalX,finalY){var hidden=(tooltipDiv.style.visibility==HIDDEN),x=hidden?finalX:(tooltipDiv.offsetLeft+finalX)/2,y=hidden?finalY:(tooltipDiv.offsetTop+finalY)/2;setStyles(tooltipDiv,{left:x+PX,top:y+PX});if(mathAbs(finalX-x)>1||mathAbs(finalY-y)>1){tooltipTick=function(){move(finalX,finalY);};}else{tooltipTick=null;}};function hide(){if(tooltipDiv)tooltipDiv.style.visibility=HIDDEN;if(currentSeries)currentSeries.drawPointState();};return{refresh:refresh,hide:hide}};defaultXAxisOptions=merge(defaultXAxisOptions,defaultOptions.xAxis);defaultYAxisOptions=merge(defaultYAxisOptions,defaultOptions.yAxis);defaultOptions.xAxis=defaultOptions.yAxis=null;options=merge(defaultOptions,options);var optionsChart=options.chart;var optionsMargin=optionsChart.margin,margin=typeof optionsMargin=='number'?[optionsMargin,optionsMargin,optionsMargin,optionsMargin]:optionsMargin,marginTop=margin[0],marginRight=margin[1],marginBottom=margin[2],marginLeft=margin[3],renderTo,renderToClone,container,containerId,chartWidth,chartHeight;getContainer();var chart=this,chartEvents=optionsChart.events,eventType,imagemap,tooltip,mouseIsDown,backgroundLayer=new Layer('chart-background',container),loadingLayer,plotLayer,plotHeight,plotWidth,tracker,trackerImage,legend,position=updatePosition(container),hasCartesianSeries,axes=[],maxTicks,series=[],resourcesLoaded,plotBackground,inverted,tooltipTick,tooltipDiv,typeClasses={line:LineSeries,spline:SplineSeries,area:AreaSeries,areaspline:AreaSplineSeries,column:ColumnSeries,bar:BarSeries,pie:PieSeries,scatter:ScatterSeries};colorCounter=0;symbolCounter=0;addEvent(win,'resize',function(){var container=doc.getElementById(containerId);if(container)position=updatePosition(container);});addEvent(win,'unload',destroy);if(chartEvents)for(eventType in chartEvents){addEvent(chart,eventType,chartEvents[eventType]);} chart.addLoading=function(loadingId){chart.resources[loadingId]=false;} chart.clearLoading=function(loadingId){chart.resources[loadingId]=true;checkResources();} chart.options=options;chart.series=series;chart.container=container;chart.resources={};chart.inverted=inverted=options.chart.inverted chart.chartWidth=chartWidth;chart.chartHeight=chartHeight;chart.plotWidth=plotWidth=chartWidth-marginLeft-marginRight;chart.plotHeight=plotHeight=chartHeight-marginTop-marginBottom;chart.plotLeft=marginLeft;chart.plotTop=marginTop;chart.redraw=redraw;chart.addSeries=addSeries;chart.getSelectedPoints=getSelectedPoints;chart.getSelectedSeries=getSelectedSeries;chart.showLoading=showLoading;chart.hideLoading=hideLoading;chart.get=get;chart.destroy=destroy;chart.updatePosition=updatePosition;chart.plotLayer=plotLayer=new Layer('plot',container,null,{position:ABSOLUTE,width:plotWidth+PX,height:plotHeight+PX,left:marginLeft+PX,top:marginTop+PX,overflow:HIDDEN,zIndex:3});chart.tracker=tracker=new MouseTracker(chart,options.tooltip);if(optionsChart.plotBackgroundImage){chart.addLoading('plotBack');plotBackground=createElement('img');plotBackground.onload=function(){chart.clearLoading('plotBack');} plotBackground.src=optionsChart.plotBackgroundImage;} each(options.series,function(serieOptions){initSeries(serieOptions);});checkResources();};var Point=function(){};Point.prototype={init:function(series,options){var point=this;point.series=series;point.applyOptions(options);return point;},applyOptions:function(options){var point=this,series=point.series,n;if(typeof options=='number'||options===null){point.y=options;} else if(typeof options=='object'&&typeof options.length!='number'){extend(point,options);point.options=options;} else if(typeof options[0]=='string'){point.name=options[0];point.y=options[1];} else if(typeof options[0]=='number'){point.x=options[0];point.y=options[1];} if(point.x===undefined)point.x=series.autoIncrement();},destroy:function(){var point=this;if(point.stateLayer)point.stateLayer.destroy();for(prop in point)point[prop]=null;},select:function(selected,accumulate){var point=this,series=point.series,chart=series.chart,stateLayers,state,singlePointLayer=pick(point.stateLayer,series.singlePointLayer,chart.singlePointLayer);point.selected=selected=pick(selected,!point.selected);series.isDirty=true;point.firePointEvent(selected?'select':'unselect');if(singlePointLayer)singlePointLayer.clear();each(chart.series,function(series){stateLayers=series.stateLayers;if(!accumulate)each(series.data,function(loopPoint){if(loopPoint.selected&&loopPoint!=point){loopPoint.selected=false;fireEvent(loopPoint,'unselect');series.isDirty=true;}});if(series.isDirty){for(state in stateLayers){stateLayers[state].clear();} series.render();}})},update:function(options,redraw){var point=this,series=point.series;redraw=pick(redraw,true);point.firePointEvent('update',{options:options},function(){point.applyOptions(options);series.isDirty=true;if(redraw)series.chart.redraw();});},remove:function(redraw){var point=this,series=point.series,chart=series.chart,data=series.data;redraw=pick(redraw,true);point.firePointEvent('remove',null,function(){each(data,function(existingPoint,i){if(existingPoint==point){data.splice(i,1);}}) if(point.layer)point.layer=point.layer.destroy();if(point.legendItem){discardElement(point.legendItem);point.legendItem=null;chart.isDirty=true;} series.isDirty=true;if(redraw)chart.redraw();})},firePointEvent:function(eventType,eventArgs,defaultFunction){var point=this,series=this.series,seriesOptions=series.options;if(seriesOptions.point.events[eventType]||(point.options&&point.options.events&&point.options.events[eventType])) this.importEvents();if(eventType=='click'&&seriesOptions.allowPointSelect) defaultFunction=function(event){point.select(null,event.ctrlKey||event.metaKey||event.shiftKey);} fireEvent(this,eventType,eventArgs,defaultFunction);},importEvents:function(){if(!this.hasImportedEvents){var point=this,options=merge(point.series.options.point,point.options),events=options.events,eventType;point.events=events;for(eventType in events){addEvent(point,eventType,events[eventType]);} this.hasImportedEvents=true;}},setTooltipText:function(){var point=this;point.tooltipText=point.series.chart.options.tooltip.formatter.call({series:point.series,point:point,x:point.category,y:point.y,percentage:point.percentage});}};var Series=function(){this.isCartesian=true;this.type='line';this.pointClass=Point;};Series.prototype={init:function(chart,options){var series=this,eventType,events,pointEvent,index=chart.series.length;series.chart=chart;options=series.setOptions(options);extend(series,{index:index,options:options,name:options.name||'Series '+(index+1),state:'',visible:options.visible!==false,selected:options.selected==true});events=options.events;for(eventType in events){addEvent(series,eventType,events[eventType]);} series.getColor();series.getSymbol();series.getData(options);},getData:function(options){var series=this,chart=series.chart,loadingId='series'+idCounter++;if(!options.data&&options.dataURL){chart.addLoading(loadingId);getAjax(options.dataURL,function(data){series.dataLoaded(data);chart.clearLoading(loadingId);});}else{series.dataLoaded(options.data);}},dataLoaded:function(data){var series=this,chart=series.chart,options=series.options,enabledStates=[''],dataParser=options.dataParser,stateLayers={},layerGroup,point,x;if(options.dataURL&&!dataParser) dataParser=function(data){return eval(data);} if(dataParser)data=dataParser.call(series,data);series.layerGroup=layerGroup=new Layer('series-group',chart.plotLayer.div,null,{zIndex:2});if(options.states.hover.enabled)enabledStates.push('hover');each(enabledStates,function(state){stateLayers[state]=new Layer('state-'+state,layerGroup.div);});series.stateLayers=stateLayers;series.setData(data,false);},autoIncrement:function(){var series=this,options=series.options,xIncrement=series.xIncrement;xIncrement=pick(xIncrement,options.pointStart,0);series.pointInterval=pick(series.pointInterval,options.pointInterval,1);series.xIncrement=xIncrement+series.pointInterval;return xIncrement;},cleanData:function(){var series=this,data=series.data,i;data.sort(function(a,b){return(a.x-b.x);});for(i=data.length-1;i>=0;i--){if(data[i-1]){if(data[i-1].x==data[i].x)data.splice(i-1,1);}}},getSegments:function(){var lastNull=-1,segments=[],data=this.data;each(data,function(point,i){if(point.y===null){if(i>lastNull+1) segments.push(data.slice(lastNull+1,i));lastNull=i;}else if(i==data.length-1){segments.push(data.slice(lastNull+1,i+1));}});this.segments=segments;},setOptions:function(options){var plotOptions=this.chart.options.plotOptions,options=merge(plotOptions[this.type],plotOptions.series,options),normalSeriesMarkerOptions=options.marker,hoverSeriesMarkerOptions=options.states.hover.marker;if(hoverSeriesMarkerOptions.lineWidth===undefined) hoverSeriesMarkerOptions.lineWidth=normalSeriesMarkerOptions.lineWidth+1;if(hoverSeriesMarkerOptions.radius===undefined) hoverSeriesMarkerOptions.radius=normalSeriesMarkerOptions.radius+1;return options;},getColor:function(){var defaultColors=this.chart.options.colors;this.color=this.options.color||defaultColors[colorCounter++]||'#0000ff';if(colorCounter>=defaultColors.length) colorCounter=0;},getSymbol:function(){var defaultSymbols=this.chart.options.symbols,symbol=this.options.marker.symbol||'auto';if(symbol=='auto')symbol=defaultSymbols[symbolCounter++];this.symbol=symbol;if(symbolCounter>=defaultSymbols.length) symbolCounter=0;},addPoint:function(options,redraw,shift){var series=this,data=series.data,point=(new series.pointClass).init(series,options);redraw=pick(redraw,true);data.push(point);if(shift)data.shift();series.isDirty=true;if(redraw)series.chart.redraw();},setData:function(data,redraw){var series=this;series.xIncrement=null;data=map(splat(data),function(pointOptions){return(new series.pointClass).init(series,pointOptions);});series.data=data;series.cleanData();series.getSegments();series.isDirty=true;if(pick(redraw,true))series.chart.redraw();},remove:function(redraw){var series=this,chart=series.chart;redraw=pick(redraw,true);if(!series.isRemoving){series.isRemoving=true;fireEvent(series,'remove',null,function(){discardElement(series.layerGroup.div);each(series.areas,function(area){discardElement(area);});discardElement(series.legendItem);series.legendItem=null;each(chart.series,function(existingSeries,i){if(existingSeries==series){chart.series.splice(i,1);}}) chart.isDirty=true;if(redraw)chart.redraw();})} series.isRemoving=false},translate:function(){var chart=this.chart,series=this,stacking=series.options.stacking,categories=series.xAxis.categories,yAxis=series.yAxis,stack=yAxis.stacks[series.type];each(this.data,function(point){var xValue=point.x,yValue=point.y,yBottom,pointStack,pointStackTotal;point.plotX=series.xAxis.translate(point.x);if(stacking&&series.visible){pointStack=stack[xValue];pointStackTotal=pointStack.total;pointStack.cum=yBottom=pointStack.cum-yValue;yValue=yBottom+yValue;if(stacking=='percent'){yBottom=pointStackTotal?yBottom*100/pointStackTotal:0;yValue=pointStackTotal?yValue*100/pointStackTotal:0;} point.percentage=pointStackTotal?point.y*100/pointStackTotal:0;point.stackTotal=pointStackTotal;point.yBottom=yAxis.translate(yBottom,0,1);} if((point.series.name=='lastClose'||point.name=='point2')){point.plotY=yValue;} else{if(yValue!==null) point.plotY=yAxis.translate(yValue,0,1);} point.clientX=chart.inverted?chart.plotHeight-point.plotX+chart.plotTop:point.plotX+chart.plotLeft;point.category=categories&&categories[point.x]!==undefined?categories[point.x]:point.x;});},setTooltipPoints:function(renew){var series=this,chart=series.chart,inverted=chart.inverted,data=[],plotSize=inverted?chart.plotHeight:chart.plotWidth,low,high,tooltipPoints=[];if(renew)series.tooltipPoints=null;each(series.segments,function(segment){data=data.concat(segment);});if(series.xAxis.reversed)data=data.reverse();each(data,function(point,i){if(!series.tooltipPoints) point.setTooltipText();low=data[i-1]?data[i-1].high+1:0;high=point.high=data[i+1]?(mathFloor((point.plotX+(data[i+1]?data[i+1].plotX:plotSize))/2)):plotSize;while(low<=high){tooltipPoints[inverted?plotSize-low++:low++]=point;}});series.tooltipPoints=tooltipPoints;},drawLine:function(state){var i,j,series=this,options=series.options,chart=series.chart,doAnimation=options.animation&&series.animate,layer=series.stateLayers[state],data=series.data,color=options.lineColor||series.color,fillColor=options.fillColor=='auto'?Color(series.color).setOpacity(options.fillOpacity||0.75).get():options.fillColor,inverted=chart.inverted,y0=(inverted?0:chart.plotHeight)-series.yAxis.translate(0);if(state) options=merge(options,options.states[state]);if(doAnimation)series.animate(true);each(series.segments,function(segment){var line=[],area=[];each(segment,function(point){line.push(inverted?chart.plotWidth-point.plotY:point.plotX,inverted?chart.plotHeight-point.plotX:point.plotY);});if(/area/.test(series.type)){for(var i=0;i=0;i--) area.push(segment[i].plotX,segment[i].yBottom);}else{area.push(inverted?y0:segment[segment.length-1].plotX,inverted?chart.plotHeight-segment[segment.length-1].plotX:y0,inverted?y0:segment[0].plotX,inverted?chart.plotHeight-segment[0].plotX:y0);} layer.drawPolyLine(area,null,null,options.shadow,fillColor);} if(options.lineWidth)layer.drawPolyLine(line,color,options.lineWidth,options.shadow);});if(doAnimation)series.animate();},animate:function(init){var series=this,chart=series.chart,inverted=chart.inverted,div=series.layerGroup.div;if(series.visible){if(init){setStyles(div,extend({overflow:HIDDEN},inverted?{height:0}:{width:0}));}else{animate(div,inverted?{height:chart.plotHeight+PX}:{width:chart.plotWidth+PX},{duration:500});this.animate=null;}}},drawPoints:function(state){var series=this,i,layer=series.stateLayers[state],seriesOptions=series.options,markerOptions=seriesOptions.marker,data=series.data,chart=series.chart,inverted=chart.inverted;if(markerOptions.enabled){each(data,function(point){if(point.plotY!==undefined) series.drawMarker(layer,inverted?chart.plotWidth-point.plotY:point.plotX,inverted?chart.plotHeight-point.plotX:point.plotY,merge(markerOptions,point.marker));if(point.selected)series.drawPointState(point,'select',layer);});}},drawMarker:function(layer,x,y,options){if(options.lineColor=='auto') options.lineColor=this.color;if(options.fillColor=='auto') options.fillColor=this.color;if(options.symbol=='auto') options.symbol=this.symbol;layer.drawSymbol(options.symbol,x,y,options.radius,options.lineWidth,options.lineColor,options.fillColor);},drawDataLabels:function(){if(this.options.dataLabels.enabled){var series=this,i,x,y,data=series.data,options=series.options.dataLabels,color,str,dataLabelsLayer,chart=series.chart,inverted=chart.inverted,seriesType=series.type,isPie=(seriesType=='pie'),align;series.dataLabelsLayer=dataLabelsLayer=new Layer('data-labels',series.layerGroup.div,null,{zIndex:1});options.style.color=options.color=='auto'?series.color:options.color;each(data,function(point){var plotX=point.plotX,plotY=point.plotY,tooltipPos=point.tooltipPos;str=options.formatter.call({x:point.x,y:point.y,series:series,point:point});x=(inverted?chart.plotWidth-plotY:plotX)+options.x;y=(inverted?chart.plotHeight-plotX:plotY)+options.y;if(tooltipPos){x=tooltipPos[0]+options.x;y=tooltipPos[1]+options.y;} if(isPie){if(!point.dataLabelsLayer)point.dataLabelsLayer=new Layer('data-labels',point.layer.div,null,{zIndex:3});dataLabelsLayer=point.dataLabelsLayer;} align=options.align;if(seriesType=='column') x+={center:point.w/2,right:point.w}[align]||0;if(str)dataLabelsLayer[isPie?'drawText':'addText'](str,x,y,options.style,options.rotation,align);});if(!isPie)dataLabelsLayer.strokeText();}},drawPointState:function(point,state,layer){var chart=this.chart,inverted=chart.inverted,isHoverState=state=='hover',layer=layer||chart.singlePointLayer,options=this.options,stateOptions;if(isHoverState){if(!layer)layer=chart.singlePointLayer=new Layer('single-point',chart.plotLayer.div,null,{zIndex:3});layer.clear();} if(state){var seriesStateOptions=options.states[state].marker,pointStateOptions=options.marker.states[state];if(isHoverState&&pointStateOptions.radius===undefined) pointStateOptions.radius=seriesStateOptions.radius+2;stateOptions=merge(options.marker,point.marker,seriesStateOptions,pointStateOptions);if(stateOptions&&stateOptions.enabled) this.drawMarker(layer,inverted?chart.plotWidth-point.plotY:point.plotX,inverted?chart.plotHeight-point.plotX:point.plotY,stateOptions);}},destroy:function(){var series=this,prop;each(series.data,function(point){point.destroy();});for(prop in series)series[prop]=null;},render:function(){var series=this,state,stateLayers=series.stateLayers;series.drawDataLabels();if(series.visible)for(state in stateLayers){series.drawLine(state);series.drawPoints(state);} else series.setVisible(false,false);if(!series.hasRendered&&stateLayers.hover){stateLayers.hover.hide();hasRendered=true;} series.isDirty=false;},redraw:function(){var series=this;series.translate();series.setTooltipPoints(true);if(series.chart.options.tooltip.enabled)series.createArea();series.clear();series.render();},clear:function(){var stateLayers=this.stateLayers;for(var state in stateLayers){stateLayers[state].clear();stateLayers[state].cleared=true;} if(this.dataLabelsLayer){this.dataLabelsLayer.clear();this.hasDrawnDataLabels=false;}},setState:function(state){state=state||'';if(this.state!=state){var series=this,stateLayers=series.stateLayers,newStateLayer=stateLayers[state],oldStateLayer=stateLayers[series.state],singlePointLayer=series.singlePointLayer||series.chart.singlePointLayer;series.state=state;if(newStateLayer){if(state) newStateLayer.show();else{if(oldStateLayer)oldStateLayer.hide();if(singlePointLayer)singlePointLayer.clear();}}}},setVisible:function(vis,redraw){var series=this,chart=series.chart,layerGroup=series.layerGroup,legendItem=series.legendItem,areas=series.areas,oldVisibility=series.visible;series.visible=vis=vis===undefined?!oldVisibility:vis;if(vis){series.isDirty=true;layerGroup.show();}else{layerGroup.hide();} if(legendItem){legendItem.className=vis?'':HIGHCHARTS_HIDDEN;chart.legend.drawGraphics(true);} if(areas)each(areas,function(area){if(vis) chart.tracker.insertAtFront(area);else discardElement(area);});if(chart.options.chart.ignoreHiddenSeries){if(series.options.stacking)each(chart.series,function(otherSeries){if(otherSeries.options.stacking&&otherSeries.visible) otherSeries.isDirty=true;});} if(redraw!==false)chart.redraw();fireEvent(series,vis?'show':'hide');},show:function(){this.setVisible(true);},hide:function(){this.setVisible(false);},select:function(selected){var series=this;series.selected=selected=(selected===undefined)?!series.selected:selected;if(series.checkbox)series.checkbox.checked=selected;fireEvent(series,selected?'select':'unselect');},getAreaCoords:function(){var data=this.data,series=this,datas=[],chart=this.chart,inverted=chart.inverted,plotWidth=chart.plotWidth,plotHeight=chart.plotHeight,reversedXAxis=series.xAxis.reversed,reversedData,snap=chart.options.tooltip.snap,dataIsReverse,i=0,ret=[];each(series.splinedata||series.segments,function(data,i){reversedData=data.length>1&&data[0].x>data[1].x;if(reversedData&&!reversedXAxis||reversedXAxis&&!reversedData){data=data.reverse();} var coords=[],outlineTop=[],outlineBottom=[];each([outlineTop,outlineBottom],function(outline){var last=0,i=0,extreme,slice,peaks=[data[0]],sign=outline==outlineTop?1:-1,intersects,num,x,y,lastX,lastY,x1,y1,x2,y2,dX,dY,pX,pY,l,factor,p1,p2,mA,mB,iX,iY,area;while(data[i]){if(data[i].plotX>data[last].plotX+snap||i==data.length-1){extreme=data[i];slice=data.slice(last,i-1);each(slice,function(point){if(sign*point.plotYdata[last].plotX+snap){peaks.push(extreme);} last=i;} i++;} if(peaks[peaks.length-1]!=data[data.length-1]) peaks.push(data[data.length-1]);for(i=0;i0){x=peaks[i].plotX;y=peaks[i].plotY;lastX=peaks[i-1].plotX;lastY=peaks[i-1].plotY;dX=x-peaks[i-1].plotX;dY=y-peaks[i-1].plotY;pX=dY;pY=-dX;l=math.sqrt(math.pow(pX,2)+math.pow(pY,2));if(i==1){lastX-=(snap/l)*dX;lastY-=(snap/l)*dY;}else if(i==peaks.length-1){x+=(snap/l)*dX;y+=(snap/l)*dY;} factor=sign*snap/l;x1=mathRound(lastX+factor*pX);y1=mathRound(lastY+factor*pY);x2=mathRound(x+factor*pX);y2=mathRound(y+factor*pY);if(outline[outline.length-1]&&outline[outline.length-1][0]>x1){intersects=false;while(!intersects){p2=outline.pop();p1=outline[outline.length-1];if(!p1) break;mA=(y1-y2)/(x1-x2);mB=(p1[1]-p2[1])/(p1[0]-p2[0]);iX=((-mB*p1[0])+p1[1]+(mA*x1)-y1)/(mA-mB);iY=(mA*(iX-x1))+y1;if(iX>p1[0]){outline.push([mathRound(iX),mathRound(iY),1]);intersects=true;}}} else{if(!isNaN(x1)) outline.push([x1,y1]);} if(outline[outline.length-1]&&outline[outline.length-1][0]=0;i--){coords.push(inverted?plotWidth-outlineBottom[i][1]:outlineBottom[i][0],inverted?plotHeight-outlineBottom[i][0]:outlineBottom[i][1]);} if(!coords.length&&data[0]){coords.push(mathRound(data[0].plotX),mathRound(data[0].plotY));} if(coords.length)ret.push([coords.join(',')]);});return ret;},createArea:function(){if(this.options.enableMouseTracking===false)return;var area,series=this,options=series.options,chart=series.chart,inverted=chart.inverted,tracker=chart.tracker,coordsArray=series.getAreaCoords(),firstArea,seriesAreas=[],existingAreas=series.areas,isCircle;if(existingAreas)each(existingAreas,function(area){discardElement(area);}) each(coordsArray,function(coords){isCircle=/^[0-9]+,[0-9]+$/.test(coords[0]);area=createElement('area',{shape:isCircle?'circle':'poly',chart:chart,coords:coords[0]+(isCircle?','+chart.options.tooltip.snap:''),onmouseover:function(e){if(!series.visible||chart.mouseIsDown)return;var hoverSeries=chart.hoverSeries;chart.hoverPoint=coords[1];if(options.events.mouseOver){fireEvent(series,'mouseOver',{point:chart.hoverPoint});} if(hoverSeries&&hoverSeries!=series) hoverSeries.setState();if(!/(column|bar|pie)/.test(series.type)){tracker.insertAtFront(area);} series.setState('hover');chart.hoverSeries=series;},onmouseout:function(){var hoverSeries=chart.hoverSeries;if(hoverSeries&&options.events.mouseOut){fireEvent(hoverSeries,'mouseOut');}}});if(options.cursor=='pointer'){area.href='javascript:;';} tracker.insertAtFront(area);seriesAreas.push(area);});series.areas=seriesAreas;}};var LineSeries=extendClass(Series);var AreaSeries=extendClass(Series,{type:'area'});var SplineSeries=extendClass(Series,{type:'spline',translate:function(){var series=this;Series.prototype.translate.apply(series,arguments);series.splinedata=series.getSplineData();},drawLine:function(state){var series=this,realSegments=series.segments;series.segments=series.splinedata;Series.prototype.drawLine.apply(series,arguments);series.segments=realSegments;},getSplineData:function(){var series=this,chart=series.chart,splinedata=[],num;each(series.segments,function(data){if(series.xAxis.reversed)data=data.reverse();var croppedData=[],nextUp,nextDown;each(data,function(point,i){nextUp=data[i+2]||data[i+1]||point;nextDown=data[i-2]||data[i-1]||point;if(nextUp.plotX>0&&nextDown.plotY1){num=mathRound(mathMax(chart.plotWidth,croppedData[croppedData.length-1].clientX-croppedData[0].clientX)/3);} splinedata.push(data.length>1?num?(new SplineHelper(croppedData)).get(num):[]:data);});series.splinedata=splinedata;return splinedata;}});function SplineHelper(data){var xdata=[];var ydata=[];for(var i=0;i=0;j--){this.y2[j]=this.y2[j]*this.y2[j+1]+delta[j];}};SplineHelper.prototype={get:function(num){if(!num)num=50;var n=this.n;var step=(this.xdata[n-1]-this.xdata[0])/(num-1);var xnew=[];var ynew=[];xnew[0]=this.xdata[0];ynew[0]=this.ydata[0];var data=[{plotX:xnew[0],plotY:ynew[0]}];for(var j=1;j1){var k=(max+min)/2;if(this.xdata[mathFloor(k)]>xpoint) max=k;else min=k;} var intMax=mathFloor(max),intMin=mathFloor(min);var h=this.xdata[intMax]-this.xdata[intMin];var a=(this.xdata[intMax]-xpoint)/h;var b=(xpoint-this.xdata[intMin])/h;return a*this.ydata[intMin]+b*this.ydata[intMax]+ ((a*a*a-a)*this.y2[intMin]+(b*b*b-b)*this.y2[intMax])*(h*h)/6.0;}};var AreaSplineSeries=extendClass(SplineSeries,{type:'areaspline'});var ColumnSeries=extendClass(Series,{type:'column',init:function(){Series.prototype.init.apply(this,arguments);var series=this,chart=series.chart;if(chart.hasRendered)each(chart.series,function(otherSeries){if(otherSeries.type==series.type)otherSeries.isDirty=true;});},translate:function(){var series=this,chart=series.chart,columnCount=0,stackedIndex;Series.prototype.translate.apply(series);each(chart.series,function(otherSeries){if(otherSeries.type==series.type){if(!otherSeries.options.stacking){otherSeries.columnIndex=columnCount++;}else{if(!defined(stackedIndex))stackedIndex=columnCount++;otherSeries.columnIndex=stackedIndex;}}});var options=series.options,data=series.data,inverted=chart.inverted,plotWidth=chart.plotWidth,plotHeight=chart.plotHeight,closestPoints=series.closestPoints,categoryWidth=mathAbs(data[1]?data[closestPoints].plotX-data[closestPoints-1].plotX:inverted?plotHeight:plotWidth),groupPadding=categoryWidth*options.groupPadding,groupWidth=categoryWidth-2*groupPadding,pointOffsetWidth=groupWidth/columnCount,pointPadding=pointOffsetWidth*options.pointPadding,pointWidth=pointOffsetWidth-2*pointPadding,columnIndex=(chart.options.xAxis.reversed?columnCount- series.columnIndex:series.columnIndex)||0,pointX=-(categoryWidth/2)+groupPadding+columnIndex*pointOffsetWidth+pointPadding,translatedY0=series.yAxis.translate(0);each(data,function(point){point.plotX+=pointX;point.w=pointWidth;point.y0=(inverted?plotWidth:plotHeight)-translatedY0;point.h=(point.yBottom||point.y0)-point.plotY;});},drawLine:function(){},getSymbol:function(){},drawPoints:function(state){var series=this,options=series.options,chart=series.chart,doAnimation=options.animation&&series.animate,plot=chart.plot,inverted=chart.inverted,data=series.data,layer=series.stateLayers[state];if(doAnimation)this.animate(true);each(data,function(point){if(point.plotY!==undefined)layer.drawRect(inverted?(point.h>=0?chart.plotWidth-point.plotY-point.h:chart.plotWidth-point.plotY):point.plotX,inverted?chart.plotHeight-point.plotX-point.w:(point.h>=0?point.plotY:point.plotY+point.h),inverted?mathAbs(point.h):point.w,inverted?point.w:mathAbs(point.h),options.borderColor,options.borderWidth,options.borderRadius,point.color||series.color,options.shadow);if(point.selected)series.drawPointState(point,'select',layer);});if(doAnimation)series.animate();},drawPointState:function(point,state,layer){var series=this,chart=series.chart,seriesOptions=series.options,pointOptions=point?point.options:null,plot=chart.plot,inverted=chart.inverted,layer=layer||series.singlePointLayer;if(state=='hover'){if(!layer)layer=series.singlePointLayer=new Layer('single-point',series.layerGroup.div);layer.clear();} if(state&&this.options.states[state]){var options=merge(seriesOptions,seriesOptions.states[state],pointOptions);layer.drawRect(inverted?chart.plotWidth-point.plotY-point.h:point.plotX,inverted?chart.plotHeight-point.plotX-point.w:point.plotY,inverted?point.h:point.w,inverted?point.w:point.h,options.borderColor,options.borderWidth,options.borderRadius,Color(options.color||this.color).brighten(options.brightness).get(),options.shadow)}},getAreaCoords:function(){var areas=[],chart=this.chart,inverted=chart.inverted;each(this.data,function(point){var pointH=mathMax(mathAbs(point.h),3)*(point.h<0?-1:1),x1=inverted?chart.plotWidth-point.plotY-pointH:point.plotX,y2=inverted?chart.plotHeight-point.plotX-point.w:point.plotY,y1=y2+(inverted?point.w:pointH),x2=x1+(inverted?pointH:point.w);if(!inverted&&mathAbs(x2-x1)<1)x2=x1+1;else if(inverted&&mathAbs(y2-y1)<1)y2=y1+1;areas.push([map([x1,y1,x1,y2,x2,y2,x2,y1],mathRound).join(','),point]);});return areas;},cleanData:function(){var series=this,data=series.data,interval,smallestInterval,closestPoints,i;Series.prototype.cleanData.apply(series);for(i=data.length-1;i>=0;i--){if(data[i-1]){interval=data[i].x-data[i-1].x;if(smallestInterval===undefined||interval=defaultColors.length)colorCounter=0;if(!point.layer)point.layer=new Layer('pie',series.layerGroup.div);toggleSlice=function(){point.slice();} addEvent(point,'select',toggleSlice);addEvent(point,'unselect',toggleSlice);return point;},setVisible:function(vis){var point=this,layer=point.layer,legendItem=point.legendItem;point.visible=vis=vis===undefined?!point.visible:vis;if(vis) layer.show();else layer.hide();if(legendItem){legendItem.className=vis?'':HIGHCHARTS_HIDDEN;point.series.chart.legend.drawGraphics(true);}},slice:function(sliced,redraw){var point=this,series=point.series;redraw=pick(redraw,true);point.sliced=defined(sliced)?sliced:!point.sliced;series.isDirty=true;if(redraw)series.chart.redraw();}});var PieSeries=extendClass(Series,{type:'pie',isCartesian:false,pointClass:PiePoint,getColor:function(){},translate:function(){var sum=0,series=this,cumulative=-0.25,options=series.options,slicedOffset=options.slicedOffset,positions=options.center,size=options.size,chart=series.chart,data=series.data,circ=2*math.PI,fraction;positions.push(options.size);positions=map(positions,function(length,i){return/%$/.test(length)?chart['plot'+(i?'Height':'Width')]*parseInt(length)/100:length;});each(data,function(point){sum+=point.y;});each(data,function(point){fraction=sum?point.y/sum:0 point.start=cumulative*circ;cumulative+=fraction;point.end=cumulative*circ;point.percentage=fraction*100;point.center=[positions[0],positions[1]];point.size=positions[2];var angle=(point.end+point.start)/2;point.centerSliced=map([mathCos(angle)*slicedOffset+positions[0],mathSin(angle)*slicedOffset+positions[1]],mathRound);});this.setTooltipPoints();},render:function(){this.drawPoints();this.drawDataLabels();},drawPoints:function(state){var series=this;each(this.data,function(point){series.drawPoint(point,point.layer.getCtx(),point.color);if(point.visible===false)point.setVisible(false);if(point.selected)series.drawPointState(point,'select',point.layer);});},getSymbol:function(){},drawPointState:function(point,state,layer){var series=this,seriesOptions=series.options;if(point){layer=layer||point.stateLayer;if(state=='hover'){if(!layer)layer=point.stateLayer=new Layer('single-point',point.layer.div);layer.clear();} if(state&&series.options.states[state]){var options=merge(seriesOptions,seriesOptions.states[state]);this.drawPoint(point,layer.getCtx(),options.color||point.color,options.brightness);}} if(series.hoverPoint&&series.hoverPoint.stateLayer)series.hoverPoint.stateLayer.clear();series.hoverPoint=point;},drawPoint:function(point,ctx,color,brightness){var options=this.options,center=point.sliced?point.centerSliced:point.center,centerX=center[0],centerY=center[1],size=point.size,borderWidth=options.borderWidth,end=isIE&&point.percentage==100?point.start:point.end;if(point.y>0){ctx.fillStyle=setColor(Color(color).brighten(brightness).get(ctx),ctx);ctx.strokeStyle=options.borderColor;ctx.lineWidth=borderWidth;ctx.beginPath();ctx.moveTo(centerX,centerY);ctx.arc(centerX,centerY,size/2,point.start,end,false);ctx.lineTo(centerX,centerY);ctx.closePath();ctx.fill();if(borderWidth)ctx.stroke();}},getAreaCoords:function(){var areas=[];var series=this;each(this.data,function(point){var centerX=point.center[0],centerY=point.center[1],radius=point.size/2,start=point.start,end=point.end,coords=[];for(var angle=start;angle;angle+=0.25){if(angle>=end)angle=end;coords=coords.concat([centerX+mathCos(angle)*radius,centerY+mathSin(angle)*radius]) if(angle>=end)break;} coords=coords.concat([centerX,centerY]);point.tooltipPos=[centerX+2*mathCos((start+end)/2)*radius/3,centerY+2*mathSin((start+end)/2)*radius/3];areas.push([map(coords,mathRound).join(','),point])});return areas;},clear:function(){each(this.data,function(point){point.layer.clear();if(point.dataLabelsLayer)point.dataLabelsLayer.clear();if(point.stateLayer)point.stateLayer.clear();});}});Highcharts={'numberFormat':numberFormat,'dateFormat':dateFormat,'setOptions':setOptions,'Chart':Chart}})();