(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,DIV="div",ABSOLUTE="absolute",RELATIVE="relative",HIDDEN="hidden",VISIBLE="visible",PX="px",each,map,merge,hyphenate,addEvent,fireEvent,animate,getAjax;if(win.jQuery){var jQ=jQuery;each=function(arr,fn){for(var i=0,len=arr.length;i<len;i++){if(fn.call(arr[i],arr[i],i,arr)===false){return i;}}};map=function(arr,fn){var results=[];for(var i=0,len=arr.length;i<len;i++){results[i]=fn.call(arr[i],arr[i],i,arr);}return results;};merge=function(){var args=arguments;return jQ.extend(true,null,args[0],args[1],args[2],args[3]);};hyphenate=function(str){return str.replace(/([A-Z])/g,function(a,b){return"-"+b.toLowerCase();});};addEvent=function(el,event,fn){jQ(el).bind(event,fn);
};fireEvent=function(el,event,eventArguments,defaultFunction){event=jQ.Event(event);extend(event,eventArguments);jQ(el).trigger(event);if(defaultFunction&&!event.isDefaultPrevented()){defaultFunction(event);}};animate=function(el,params,options){jQ(el).animate(params,options);};getAjax=function(url,callback){jQ.get(url,null,callback);};jQ.extend(jQ.easing,{easeOutQuad:function(x,t,b,c,d){return -c*(t/=d)*(t-2)+b;}});}else{if(win.MooTools){each=function(arr,fn){arr.each(fn);};map=function(arr,fn){return arr.map(fn);};merge=function(){if(win.$merge){return $merge.apply(this,arguments);}};hyphenate=function(str){return str.hyphenate();};addEvent=function(el,type,fn){if(!el.addEvent){if(el.nodeName){el=$(el);}else{extend(el,new Events());}}el.addEvent(type,fn);};fireEvent=function(el,event,eventArguments,defaultFunction){event=new Event({type:event,target:el});event=extend(event,eventArguments);event.preventDefault=function(){defaultFunction=null;};if(el.fireEvent){el.fireEvent(event.type,event);
}if(defaultFunction){defaultFunction(event);}};animate=function(el,params,options){var myEffect=new Fx.Morph($(el),extend(options,{transition:Fx.Transitions.Quad.easeInOut}));myEffect.start(params);};getAjax=function(url,callback){(new Request({url:url,method:"get",onSuccess:callback})).send();};}}function isArray(obj){return obj&&obj.constructor==Array;}function addCSSRule(selector,declaration,print){var key,serialized="",styleSheets,last,media=print?"print":"",createStyleTag=function(print){return createElement("style",{type:"text/css",media:print?"print":""},null,doc.getElementsByTagName("HEAD")[0]);};if(!styleTag){styleTag=createStyleTag();}for(key in declaration){serialized+=hyphenate(key)+":"+declaration[key]+";";}if(!isIE){styleTag.appendChild(doc.createTextNode(selector+" {"+serialized+"}\n"));}else{var styleSheets=doc.styleSheets,index,styleSheet;if(print){createStyleTag(true);}index=styleSheets.length-1;while(index>=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);return defaultOptions;}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:{months:["January","February","March","April","May","June","July","August","September","October","November","December"],weekdays:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},chart:{margin:[50,50,60,80],borderColor:"#4572A7",borderRadius:5,defaultSeriesType:"line",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:{animation:true,events:{},lineWidth:2,shadow:true,marker:{enabled:true,symbol:"auto",lineWidth:0,radius:4,lineColor:"#FFFFFF",fillColor:"auto",states:{hover:{}}},point:{events:{}},dataLabels:merge(defaultLabelOptions,{enabled:false,y:-6,formatter:function(){return this.y;
}}),showInLegend:true,states:{hover:{lineWidth:3,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 1em 0 0",padding:0,font:defaultFont,cursor:"pointer",color:"#3E576F"},itemHoverStyle:{color:"#000"},itemHiddenStyle:{color:"#CCC"},symbolWidth:16,symbolPadding:5},tooltip:{enabled:true,formatter:function(){return"<b>"+(this.point.name||this.series.name)+"</b><br/>"+"X value: "+this.x+"<br/>"+"Y value: "+this.y;},backgroundColor:"rgba(255, 255, 255, .85)",borderWidth:2,borderRadius:5,shadow:true,style:{color:"#333333",font:defaultFont,fontSize:"9pt",padding:"5px",whiteSpace:"nowrap"}},toolbar:{itemStyle:{color:"#4572A7",cursor:"pointer",margin:"20px",font:defaultFont}},credits:{enabled:true,text:"Highcharts.com",href:"http://www.highcharts.com",style:{position:ABSOLUTE,right:"50px",bottom:"5px",color:"#999",textDecoration:"none",font:defaultFont.replace("12px","10px")}}};
var defaultXAxisOptions={dateTimeLabelFormats:{second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"},gridLineColor:"#C0C0C0",labels:defaultLabelOptions,lineColor:"#C0D0E0",lineWidth:1,max:null,min:null,maxZoom:1,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",minorTickWidth:1,showFirstLabel:true,showLastLabel:false,startOfWeek:1,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,{gridLineWidth:1,tickPixelInterval:72,showLastLabel:true,labels:{align:"right",x:-8,y:3},lineWidth:0,maxPadding:0.05,minPadding:0.05,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}}});defaultPlotOptions.bar=merge(defaultPlotOptions.column,{dataLabels:{align:"left",x:5,y:0}});defaultPlotOptions.pie=merge(defaultSeriesOptions,{center:["50%","50%"],legendType:"point",size:"90%",slicedOffset:10,states:{hover:{brightness:0.1,shadow:false}}});function extendClass(parent,members){var object=function(){};object.prototype=new parent();extend(object.prototype,members);return object;}function reverseArray(arr){var reversed=[];
for(var i=arr.length-1;i>=0;i--){reversed.push(arr[i]);}return reversed;}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){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 n=number,c=isNaN(decimals=mathAbs(decimals))?2:decimals,d=decPoint===undefined?".":decPoint,t=thousandsSep===undefined?",":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");
}var date=new Date(timestamp*timeFactor),hours=date.getUTCHours(),day=date.getUTCDay(),dayOfMonth=date.getUTCDate(),month=date.getUTCMonth(),fullYear=date.getUTCFullYear(),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.getUTCMinutes()),"p":hours<12?"AM":"PM","P":hours<12?"am":"pm","S":pad(date.getUTCSeconds())};for(var key in replacements){format=format.replace("%"+key,replacements[key]);}return capitalize?format.substr(0,1).toUpperCase()+format.substr(1):format;}function getPosition(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?"":'<?xml version="1.0" encoding="utf-8"?>'+'<svg version="1.1" xmlns="http://www.w3.org/2000/svg" '+'xmlns:xlink="http://www.w3.org/1999/xlink" width="'+layer.width+'px" height="'+layer.height+'">';};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;i<points.length;i+=2){ctx[i==0?"moveTo":"lineTo"](points[i],points[i+1]);}extend(ctx,{lineWidth:width,lineJoin:"round"});if(color&&width){ctx.strokeStyle=color;ctx.stroke();}if(fillColor){ctx.fillStyle=setColor(fillColor,ctx);ctx.fill();}},drawRect:function(x,y,w,h,color,width,radius,fill,shadow,image){function drawPath(){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();}var ctx=this.getCtx(),normalizer=(width||0)%2/2;x=mathRound(x)+normalizer;y=mathRound(y)+normalizer;w=mathRound(w);h=mathRound(h);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);}drawPath();if(fill){ctx.fillStyle=setColor(fill,ctx);
ctx.fill();if(win.G_vmlCanvasManager){drawPath();}}if(width){ctx.strokeStyle=color;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+='<g_vml_:line from="'+x1+", "+y1+'" to="'+x2+", "+y2+'" stroked="false">'+'<g_vml_:fill on="true" color="'+fill+'"/>'+'<g_vml_:path textpathok="true"/>'+'<g_vml_:textpath on="true" string="'+str+'" '+'style="v-text-align:'+align+";"+css+'"/>'+"</g_vml_:line>";}else{hasObject=true;layer.svg+="<g>"+'<text transform="translate('+x+","+y+") rotate("+(rotation||0)+')" '+'style="fill:'+fill+";text-anchor:"+{left:"start",center:"middle",right:"end"}[align]+";"+css.replace(/"/g,"'")+'">'+str+"</text>"+"</g>";}}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+"</svg>";if(isWebKit){this.div.appendChild(svgObject);}}}},clear:function(){var layer=this,div=layer.div,childNodes=div.childNodes,node;if(layer.ctx){layer.ctx.clearRect(0,0,layer.width,layer.height);}if(layer.svgObject){div.removeChild(layer.svgObject);
layer.svgObject=null;layer.svg="";}for(var i=childNodes.length-1;i>=0;i--){node=childNodes[i];if(node.tagName=="SPAN"){div.removeChild(node);}}},hide:function(){setStyles(this.div,{display:"none"});},show:function(){setStyles(this.div,{display:""});}};function Chart(options){function addSeries(){var typeClasses={line:LineSeries,spline:SplineSeries,area:AreaSeries,areaspline:AreaSplineSeries,column:ColumnSeries,bar:BarSeries,pie:PieSeries,scatter:ScatterSeries},typeClass,serie;each(options.series,function(serieOptions){typeClass=typeClasses[serieOptions.type||optionsChart.defaultSeriesType];serie=new typeClass();serie.init(chart,serieOptions);if(serie.inverted){inverted=true;}series.push(serie);});}function getAxes(){var xAxisOptions=options.xAxis||{},yAxisOptions=options.yAxis||{};if(!isArray(xAxisOptions)){xAxisOptions=[xAxisOptions];}each(xAxisOptions,function(axis,i){axis.index=i;axis.isX=true;});if(!isArray(yAxisOptions)){yAxisOptions=[yAxisOptions];}each(yAxisOptions,function(axis,i){axis.index=i;
});axes=xAxisOptions.concat(yAxisOptions);axes=map(axes,function(axisOptions){return new Axis(chart,axisOptions);});each(axes,function(axis){axis.adjustTickAmount();});}function checkResources(){var allLoaded=true;for(var n in chart.resources){if(!chart.resources[n]){allLoaded=false;}}if(allLoaded){resourcesLoaded();}}function zoom(event){chart.toolbar.add("zoom","Reset zoom","Reset zoom level 1:1",function(){fireEvent(chart,"selection",{resetSelection:true},zoom);chart.toolbar.remove("zoom");});maxTicks=null;if(event.resetSelection){each(axes,function(axis){axis.reset();});}else{if(chart.tracker.zoomX){each(event.xAxis,function(axisData){axisData.axis.setExtremes(axisData.min,axisData.max);});}if(chart.tracker.zoomY){each(event.yAxis,function(axisData){axisData.axis.setExtremes(axisData.min,axisData.max);});}}each(axes,function(axis){axis.adjustTickAmount();});tooltip.hide();each(chart.series,function(serie){each(serie.areas,function(area){if(area.parentNode){area.parentNode.removeChild(area);
}});serie.translate();serie.createArea();serie.clear();if(serie.type=="spline"){serie.getSplineData();}});if(hasCartesianSeries){each(axes,function(axis){axis.render();});}each(series,function(serie){serie.render();});}function showTitle(){if(!chart.titleLayer){var titleLayer=new Layer("title-layer",container,null,{zIndex:5});if(options.title){createElement("h2",{className:"highcharts-title",innerHTML:options.title.text},options.title.style,titleLayer.div);}if(options.subtitle){createElement("h3",{className:"highcharts-subtitle",innerHTML:options.subtitle.text},options.subtitle.style,titleLayer.div);}chart.titleLayer=titleLayer;}}function resourcesLoaded(){getAxes();each(series,function(serie){serie.translate();if(options.tooltip.enabled&&serie.options.enableMouseTracking!==false){serie.createArea();}});chart.render=render;setTimeout(function(){render();fireEvent(chart,"load");},0);}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,optionsChart.plotBorderColor,optionsChart.plotBorderWidth,null,optionsChart.plotBackgroundColor,optionsChart.plotShadow,plotBackground);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));});}for(i=0;i<series.length;i++){series[i].render();}chart.legend=new Legend(chart);if(!chart.toolbar){chart.toolbar=Toolbar(chart);}if(credits.enabled&&!chart.credits){chart.credits=createElement("a",{href:credits.href,innerHTML:credits.text},extend(credits.style,{zIndex:8}),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;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;run=true;}});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){if(dataMin===undefined){dataMin=dataMax=point[xOrY];if(!isXAxis&&/(area|column|bar)/.test(serie.type)){dataMin=0;ignoreMinPadding=true;}}if(isXAxis){if(point.x>dataMax){dataMax=point.x;
}else{if(point.x<dataMin){dataMin=point.x;}}}else{if(stacking){typeStack[i]=typeStack[i]?typeStack[i]+point.y:point.y;}var stackedPoint=typeStack?typeStack[i]:point.y;if(!usePercentage){if(stackedPoint>dataMax){dataMax=stackedPoint;}else{if(stackedPoint<dataMin){dataMin=stackedPoint;}}}if(stacking){stacks[serie.type][point.x]={total:stackedPoint,cum:stackedPoint};}}});}}});}function translate(val,reverse,cvsCoord){var sign=1,cvsOffset=0;if(cvsCoord){sign*=-1;cvsOffset=axisLength;}if(reversed){sign*=-1;cvsOffset-=sign*axisLength;}if(reverse){return(val-0)/transA+min;}return sign*(val-min)*transA+cvsOffset;}function addPlotLine(value,color,width){if(width){var x1,y1,x2,y2,translatedValue=translate(value);x1=x2=translatedValue+transB;y1=y2=chartHeight-translatedValue-transB;if(horiz){y1=marginTop;y2=chartHeight-marginBottom;}else{x1=marginLeft;x2=chartWidth-marginRight;}gridLayer.drawLine(x1,y1,x2,y2,color,width);}}function addPlotBand(from,to,color){from=mathMax(from,min);to=Math.min(to,max);
var width=(to-from)*transA;addPlotLine(from+(to-from)/2,color,width);}function addTick(pos,tickPos,color,width,len,withLabel,index){var x1,y1,x2,y2,str,labelOptions=options.labels;if(tickPos=="inside"){len=-len;}if(opposite){len=-len;}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;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<multiples.length;i++){interval=multiples[i];if(normalized<=(multiples[i]+(multiples[i+1]||multiples[i]))/2){break;}}interval*=magnitude;return interval;}function setDateTimeTickPositions(){tickPositions=[];var oneSecond=1000/timeFactor,oneMinute=60000/timeFactor,oneHour=3600000/timeFactor,oneDay=24*3600000/timeFactor,oneWeek=7*24*3600000/timeFactor,oneMonth=30*24*3600000/timeFactor,oneYear=31556952000/timeFactor;var units=[["second",oneSecond,[1,2,5,10,15,30]],["minute",oneMinute,[1,2,5,10,15,30]],["hour",oneHour,[1,2,3,4,6,8,12]],["day",oneDay,[1,2]],["week",oneWeek,[1,2]],["month",oneMonth,[1,2,3,4,6]],["year",oneYear,null]];var unit=units[6];var interval=unit[1],multiples=unit[2];for(var i=0;i<units.length;i++){unit=units[i];interval=unit[1];multiples=unit[2];
if(units[i+1]){var lessThan=(interval*multiples[multiples.length-1]+units[i+1][1])/2;if(tickInterval<=lessThan){break;}}}if(interval==oneYear&&tickInterval<5*interval){multiples=[1,2,5];}var multitude=normalizeTickInterval(tickInterval/interval,multiples);var minYear;var minDate=new Date(min*timeFactor);minDate.setUTCMilliseconds(0);if(interval>=oneSecond){minDate.setUTCSeconds(interval>=oneMinute?0:multitude*mathFloor(minDate.getUTCSeconds()/multitude));}if(interval>=oneMinute){minDate.setUTCMinutes(interval>=oneHour?0:multitude*mathFloor(minDate.getUTCMinutes()/multitude));}if(interval>=oneHour){minDate.setUTCHours(interval>=oneDay?0:multitude*mathFloor(minDate.getUTCHours()/multitude));}if(interval>=oneDay){minDate.setUTCDate(interval>=oneMonth?1:multitude*mathFloor(minDate.getUTCDate()/multitude));}if(interval>=oneMonth){minDate.setUTCMonth(interval>=oneYear?0:multitude*mathFloor(minDate.getUTCMonth()/multitude));minYear=minDate.getUTCFullYear();}if(interval>=oneYear){minYear-=minYear%multitude;
minDate.setUTCFullYear(minYear);}if(interval==oneWeek){minDate.setUTCDate(minDate.getUTCDate()-minDate.getUTCDay()+options.startOfWeek);}var i=1,time=minDate.getTime()/timeFactor,minYear=minDate.getUTCFullYear(),minMonth=minDate.getUTCMonth();min=time;while(time<max&&i<100){tickPositions.push(time);if(interval==oneYear){time=Date.UTC(minYear+i*multitude,0)/timeFactor;}else{if(interval==oneMonth){time=Date.UTC(minYear,minMonth+i*multitude)/timeFactor;}else{time+=interval*multitude;}}i++;}max=time;if(!options.labels.formatter){labelFormatter=function(){return dateFormat(options.dateTimeLabelFormats[unit[0]],this.value,1);};}}function setLinearTickPositions(){tickPositions=[];min=mathFloor(min/tickInterval)*tickInterval;max=math.ceil(max/tickInterval)*tickInterval;var invMag=(magnitude<1?1/magnitude:1)*10;for(var i=min;i<=max;i+=tickInterval){tickPositions.push(mathRound(i*invMag)/invMag);}if(categories){min-=0.5;max+=0.5;}if(!labelFormatter){labelFormatter=function(){return this.value;};}}function adjustTickAmount(){if(!isDatetimeAxis&&!categories){var tickAmount=tickPositions.length,desiredTickAmount=maxTicks[xOrY];
if(tickAmount<desiredTickAmount){while(tickPositions.length<desiredTickAmount){tickPositions.push(tickPositions[tickPositions.length-1]+tickInterval);}transA*=(tickAmount-1)/(desiredTickAmount-1);}}}function setScale(){var length,isAutoMin=options.min===null,isAutoMax=options.max===null;if(min===null){min=isAutoMin?dataMin:options.min;}if(max===null){max=isAutoMax?dataMax:options.max;}if(!categories&&!usePercentage){length=(max-min)||1;if(isAutoMin&&minPadding&&(dataMin<0||!ignoreMinPadding)){min-=length*minPadding;}if(isAutoMax&&maxPadding){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;if(isDatetimeAxis){setDateTimeTickPositions();}else{setLinearTickPositions();}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(var type in stacks){each(stacks[type],function(stack,i){var total=stack.total;stacks[type][i]={total:total,cum:total};});}}}function setExtremes(newMin,newMax){var zoomOffset;if(categories){if(newMin<0){newMin=0;}if(newMax>categories.length-1){newMax=categories.length-1;}}if(newMax-newMin>options.maxZoom){min=newMin;max=newMax;}else{zoomOffset=(options.maxZoom-newMax+newMin)/2;min=newMin-zoomOffset;max=newMax+zoomOffset;}setScale();}function reset(){min=max=tickInterval=minorTickInterval=tickPositions=null;setScale();}function render(){var axisTitle=options.title,alternateGridColor=options.alternateGridColor,plotBands=options.plotBands,plotLines=options.plotLines,minorTickWidth=options.minorTickWidth,lineWidth=options.lineWidth,lineLeft,lineTop,tickmarkPos;axisLayer.clear();gridLayer.clear();if(alternateGridColor){each(tickPositions,function(pos,i){if(i%2==0&&pos<max){addPlotBand(pos,tickPositions[i+1]!==undefined?tickPositions[i+1]:max,alternateGridColor);
}});}if(plotBands){each(plotBands,function(plotBand){addPlotBand(plotBand.from,plotBand.to,plotBand.color);});}if(minorTickInterval&&!categories){for(var i=min;i<=max;i+=minorTickInterval){addPlotLine(i,options.minorGridLineColor,options.minorGridLineWidth);if(minorTickWidth){addTick(i,options.minorTickPosition,options.minorTickColor,minorTickWidth,options.minorTickLength);}}}each(tickPositions,function(pos,index){tickmarkPos=pos+tickmarkOffset;addPlotLine(tickmarkPos,options.gridLineColor,options.gridLineWidth);addTick(pos,options.tickPosition,options.tickColor,options.tickWidth,options.tickLength,!((pos==min&&!options.showFirstLabel)||(pos==max&&!options.showLastLabel)),index);});if(plotLines){each(plotLines,function(plotLine){addPlotLine(plotLine.value,plotLine.color,plotLine.width);});}if(lineWidth){lineLeft=marginLeft+(opposite?plotWidth:0)+offset;lineTop=chartHeight-marginBottom-(opposite?plotHeight:0)+offset;axisLayer.drawLine(horiz?marginLeft:lineLeft,horiz?lineTop:marginTop,horiz?chartWidth-marginRight:lineLeft,horiz?lineTop:chartHeight-marginBottom,options.lineColor,lineWidth);
}if(axisTitle&&axisTitle.enabled&&axisTitle.text){var margin=horiz?marginLeft:marginTop,length=horiz?plotWidth:plotHeight;var alongAxis={low:margin+(horiz?0:length),middle:margin+length/2,high:margin+(horiz?length:0)}[axisTitle.align];var offAxis=(horiz?marginTop+plotHeight:marginLeft)+(horiz?1:-1)*(opposite?-1:1)*axisTitle.margin-(isIE?parseInt(axisTitle.style.fontSize||axisTitle.style.font.replace(/^[a-z ]+/,""))/3:0);axisLayer.addText(axisTitle.text,horiz?alongAxis:offAxis+(opposite?plotWidth:0)+offset,horiz?offAxis-(opposite?plotHeight:0)+offset:alongAxis,axisTitle.style,axisTitle.rotation||0,{low:"left",middle:"center",high:"right"}[axisTitle.align]);}axisLayer.strokeText();}var isXAxis=options.isX,opposite=options.opposite,horiz=inverted?!isXAxis:isXAxis,stacks={bar:{},column:{},area:{},areaspline:{}};setOptions();var axis=this,isDatetimeAxis=options.type=="datetime",offset=options.offset||0,xOrY=isXAxis?"x":"y",axisLength=horiz?plotWidth:plotHeight,transA,transB=horiz?marginLeft:marginBottom,axisLayer=new Layer("axis-layer",container,null,{zIndex:7}),gridLayer=new Layer("grid-layer",container,null,{zIndex:1}),dataMin,dataMax,max=null,min=null,minPadding=options.minPadding,ignoreMinPadding,usePercentage,maxPadding=options.maxPadding,tickInterval,minorTickInterval,magnitude,tickPositions,zoom=1,labelFormatter=options.labels.formatter,categories=options.categories||(isXAxis&&chart.columnCount),reversed=options.reversed,tickmarkOffset=(categories&&options.tickmarkPlacement=="between")?0.5:0;
if(inverted&&isXAxis&&reversed===undefined){reversed=true;}if(!opposite){offset*=-1;}if(horiz){offset*=-1;}extend(axis,{addPlotLine:addPlotLine,adjustTickAmount:adjustTickAmount,categories:categories,isXAxis:isXAxis,render:render,translate:translate,setExtremes:setExtremes,reset:reset,reversed:reversed,stacks:stacks});getSeriesExtremes();setScale();}function Toolbar(chart){var toolbarLayer,buttons={};toolbarLayer=new Layer("toolbar",container,null,{zIndex:1004,width:"auto",height:"auto"});function add(id,text,title,fn){if(!buttons[id]){var button=createElement(DIV,{innerHTML:text,title:title,onclick:fn},extend(options.toolbar.itemStyle,{zIndex:1003}),toolbarLayer.div);buttons[id]=button;}}function remove(id){buttons[id].parentNode.removeChild(buttons[id]);buttons[id]=null;}return{add:add,remove:remove};}function MouseTracker(chart,options){if(!options.enabled){return;}var activePoint,selectionStartX,selectionStartY,selectionMarker,zoomX=/x/.test(chart.options.chart.zoomType),zoomY=/y/.test(chart.options.chart.zoomType);
createImageMap();chart.tooltip=tooltip=Tooltip(options);this.zoomX=zoomX;this.zoomY=zoomY;setDOMEvents();setInterval(function(){if(tooltipTick){tooltipTick();}},32);function getActivePoint(){return activePoint;}function normalizeMouseEvent(e){e=e||win.event;if(!e.target){e.target=e.srcElement;}if(!e.pageX){e.pageX=e.clientX+(doc.documentElement.scrollLeft||doc.body.scrollLeft);}if(!e.pageY){e.pageY=e.clientY+(doc.documentElement.scrollTop||doc.body.scrollTop);}return e;}function setDOMEvents(){imagemap.onmousemove=function(e){e=normalizeMouseEvent(e);e.returnValue=false;if(mouseIsDown){if(zoomX){var xSize=e.pageX-selectionStartX-position.x-marginLeft;setStyles(selectionMarker,{width:mathAbs(xSize)+PX,left:(xSize>0?selectionStartX:selectionStartX+xSize)+PX});}if(zoomY){var ySize=e.pageY-selectionStartY-position.y-marginTop;setStyles(selectionMarker,{height:mathAbs(ySize)+PX,top:(ySize>0?selectionStartY:selectionStartY+ySize)+PX});}}else{onmousemove(e);}return false;};imagemap.onmousedown=function(e){e=normalizeMouseEvent(e);
if(hasCartesianSeries&&(zoomX||zoomY)){if(e.preventDefault){e.preventDefault();}mouseIsDown=true;selectionStartX=e.pageX-position.x-marginLeft;selectionStartY=e.pageY-position.y-marginTop;if(!selectionMarker){selectionMarker=createElement(DIV,null,{position:ABSOLUTE,border:"none",background:"#4572A7",opacity:0.25,width:zoomX?0:plotWidth+PX,height:zoomY?0:plotHeight+PX});}plotLayer.div.appendChild(selectionMarker);}};imagemap.onmouseup=function(){var selectionIsMade;if(selectionMarker){var selectionData={xAxis:[],yAxis:[]},selectionLeft=selectionMarker.offsetLeft,selectionTop=selectionMarker.offsetTop,selectionWidth=selectionMarker.offsetWidth,selectionHeight=selectionMarker.offsetHeight;mouseIsDown=false;if(selectionWidth>10&&selectionHeight>10){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;}selectionMarker.parentNode.removeChild(selectionMarker);selectionMarker=null;}};imagemap.onmouseout=function(e){e=e||win.event;var related=e.relatedTarget||e.toElement;if(related&&related!=trackerImage&&related.tagName!="AREA"){tooltip.hide();if(chart.hoverSeries){chart.hoverSeries.setState();chart.hoverSeries=null;activePoint=null;}}};imagemap.onclick=function(e){e=normalizeMouseEvent(e);e.cancelBubble=true;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);}};}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!=activePoint){if(activePoint){activePoint.firePointEvent("mouseOut");}point.firePointEvent("mouseOver");tooltip.refresh(point,series);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==";}}}var Legend=function(chart){if(chart.legend){return;}var li,options=chart.options.legend,layout=options.layout,symbolWidth=options.symbolWidth,dom,topRule="#"+container.id+" .highcharts-legend li",allItems=[],legendLayer=new Layer("legend",container,null,{zIndex:7});if(!options.enabled){return;}this.dom=dom=createElement(DIV,{className:"highcharts-legend highcharts-legend-"+layout,innerHTML:'<ul style="margin:0;padding:0"></ul>'},extend({position:ABSOLUTE,zIndex:7},options.style),container);
addCSSRule(topRule,extend(options.itemStyle,{paddingLeft:(symbolWidth+options.symbolPadding)+PX,cssFloat:layout=="horizontal"?"left":"none"}));addCSSRule(topRule+":hover",options.itemHoverStyle);addCSSRule(topRule+".highcharts-hidden",options.itemHiddenStyle);addCSSRule(".highcharts-legend-horizontal li",{"float":"left"});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);addEvent(li,"mouseover",function(){item.setState("hover");});addEvent(li,"mouseout",function(){item.setState();});addEvent(li,"click",function(){fireEvent(item,"legendItemClick",null,function(){item.setVisible();});});allItems.push(item);});});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){var li=item.legendItem,symbolX=dom.offsetLeft+li.offsetLeft,symbolY=dom.offsetTop+li.offsetTop+li.offsetHeight/2,markerOptions;if(!item.simpleSymbol&&item.options&&item.options.lineWidth){legendLayer.drawLine(symbolX,symbolY,symbolX+symbolWidth,symbolY,item.color,item.options.lineWidth);}if(item.simpleSymbol){legendLayer.drawRect(symbolX,symbolY-6,16,12,null,0,2,item.color);}else{if(item.options&&item.options.marker&&item.options.marker.enabled){item.drawMarker(legendLayer,symbolX+symbolWidth/2,symbolY,item.options.marker);}}});if(imagemap){var area=createElement("area",{shape:"rect",coords:[dom.offsetLeft-marginLeft,dom.offsetTop-marginTop,dom.offsetLeft+dom.offsetWidth-marginLeft,dom.offsetTop+dom.offsetHeight-marginTop].join(",")},null,imagemap);imagemap.insertBefore(area,imagemap.childNodes[0]);area.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=area.onmouseout=function(e){e=e||win.event;var relatedTarget=e.relatedTarget||e.toElement;if(relatedTarget&&(relatedTarget==trackerImage||(relatedTarget.tagName=="AREA"&&relatedTarget!=area))){setStyles(dom,{zIndex:7});}};}};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:plotWidth+PX,height:plotHeight+PX});innerDiv=createElement(DIV,{className:"highcharts-tooltip"},extend(options.style,{position:RELATIVE,zIndex:2}),tooltipDiv);function refresh(point,series){var tooltipPos=point.tooltipPos,borderColor=options.borderColor||point.color||series.color||"#606060",inverted=chart.inverted,x,y,boxX,boxY,boxWidth,boxHeight,oldInnerDivHeight=innerDiv.offsetHeight,show,text=point.tooltipText;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{innerDiv.innerHTML=text;boxWidth=innerDiv.offsetWidth-borderWidth;boxHeight=innerDiv.offsetHeight-borderWidth;if(boxWidth>(boxLayer.w||0)+20||boxWidth<(boxLayer.w||0)-20||boxHeight>boxLayer.h||boxLayer.c!=borderColor||oldInnerDivHeight!=innerDiv.offsetHeight){boxLayer.clear();boxLayer.drawRect(borderWidth/2,borderWidth/2,boxWidth+20,boxHeight,borderColor,borderWidth,options.borderRadius,options.backgroundColor,options.shadow);extend(boxLayer,{w:boxWidth,h:boxHeight,c:borderColor});}boxX=x-boxLayer.w+marginLeft-35;boxY=y-boxLayer.h+10+marginTop;if((inverted||boxX<5)&&x+marginLeft+boxLayer.w<chartWidth-100){boxX=x+marginLeft+15;}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");tooltipDiv.style.visibility=VISIBLE;
}}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 margin=optionsChart.margin;if(typeof margin=="number"){margin=[margin,margin,margin,margin];}var renderTo=optionsChart.renderTo,containerId="highcharts-"+idCounter++;if(typeof renderTo=="string"){renderTo=doc.getElementById(renderTo);}renderTo.innerHTML="";
var chartWidth=optionsChart.width||renderTo.offsetWidth||400,chartHeight=optionsChart.height||renderTo.offsetHeight||300,container=createElement(DIV,{className:"highcharts-container",id:containerId},extend({position:RELATIVE,overflow:HIDDEN,width:chartWidth+PX,height:chartHeight+PX,textAlign:"left"},optionsChart.style),renderTo);if(optionsChart.className){container.className+=" "+optionsChart.className;}var chart=this,trackerImage,chartEvents=optionsChart.events,eventType,marginTop=margin[0],marginRight=margin[1],marginBottom=margin[2],marginLeft=margin[3],imagemap,tooltip,mouseIsDown,backgroundLayer=new Layer("chart-background",container),plotLayer,plotHeight,plotWidth,tracker,position=getPosition(container),hasCartesianSeries,axes=[],maxTicks,series=[],resourcesLoaded,plotBackground,inverted,tooltipTick,tooltipDiv;colorCounter=0;symbolCounter=0;addEvent(win,"resize",function(){var container=doc.getElementById(containerId);if(container){position=getPosition(container);}});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.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.plotLayer=plotLayer=new Layer("plot",container,null,{position:ABSOLUTE,width:plotWidth+PX,height:plotHeight+PX,left:marginLeft+PX,top:marginTop+PX,overflow:HIDDEN,zIndex:6});this.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;}addSeries();checkResources();}var Point=function(series,options,i){this.series=series;
var point=this,n;if(typeof options=="number"||options===null){this.x=i;this.y=options;}else{if(typeof options=="object"&&typeof options.length!="number"){for(var n in options){this[n]=options[n];}this.x=(options.x===undefined?i:options.x);this.y=options.y;this.options=options;}else{if(typeof options[0]=="string"){this.name=options[0];this.x=i;this.y=options[1];}else{if(typeof options[0]=="number"){this.x=options[0];this.y=options[1];}}}}return this;};Point.prototype={firePointEvent:function(eventType,eventArgs){var point=this;if(point.series.options.point.events[eventType]||(point.options&&point.options.events&&point.options.events[eventType])){this.importEvents();}fireEvent(this,eventType,eventArgs);},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;}}};var LineSeries=function(){this.isCartesian=true;
this.type="line";};LineSeries.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});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,dataParser=options.dataParser,stateLayers={},layerGroup,point,i;if(options.dataURL&&!dataParser){dataParser=function(data){return eval(data);};}if(dataParser){data=dataParser.call(series,data);
}this.layerGroup=layerGroup=new Layer("series-group",chart.plotLayer.div,null,{zIndex:2});each(["","hover"],function(state){stateLayers[state]=new Layer("state-"+state,layerGroup.div);});this.stateLayers=stateLayers;i=options.pointStart||0;data=map(data,function(point){point=new Point(series,point,i);i+=options.pointInterval||1;return point;});series.data=data;var lastNull=-1,segments=[];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){return merge(this.chart.options.plotOptions[this.type],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;}},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){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.yBottom=yAxis.translate(yBottom,0,1);}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;
});this.setTooltipPoints();},setTooltipPoints:function(){var series=this,chart=series.chart,inverted=chart.inverted,data=[],plotSize=inverted?chart.plotHeight:chart.plotWidth,low,high,tooltipPoints=[];each(series.segments,function(segment){data=data.concat(segment);});if(series.xAxis.reversed){data=reverseArray(data);}each(data,function(point,i){if(!series.tooltipPoints){point.tooltipText=chart.options.tooltip.formatter.call({series:series,point:point,x:point.category,y:point.y,percentage:point.percentage});}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<line.length;i++){area.push(line[i]);}if(options.stacking&&series.type!="areaspline"){for(i=segment.length-1;i>=0;i--){area.push(segment[i].plotX,segment[i].yBottom);}}else{area.push(inverted?y0:segment[segment.length-1].plotX,inverted?segment[0].plotX:y0,inverted?y0:segment[0].plotX,inverted?segment[segment.length-1].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:1000});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(state){var stateOptions=seriesOptions.states[state].marker;if(stateOptions.lineWidth===undefined){stateOptions.lineWidth=markerOptions.lineWidth+1;}if(stateOptions.radius===undefined){stateOptions.radius=markerOptions.radius+1;}markerOptions=merge(markerOptions,stateOptions);}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));}});}},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&&!this.hasDrawnDataLabels){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"),optionsX=options.x,optionsY=options.y,align=options.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)+optionsX;y=(inverted?chart.plotHeight-plotX:plotY)+optionsY;if(tooltipPos){x=tooltipPos[0]+optionsX;y=tooltipPos[1]+optionsY;
}if(isPie){dataLabelsLayer=new Layer("data-labels",point.layer.div,null,{zIndex:3});}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();}series.hasDrawnDataLabels=true;}},drawPointState:function(point,state){var chart=this.chart,inverted=chart.inverted,singlePointLayer=chart.singlePointLayer,options=this.options,stateOptions;if(!singlePointLayer){singlePointLayer=chart.singlePointLayer=new Layer("single-point",chart.plotLayer.div,null,{zIndex:3});}singlePointLayer.clear();if(state){var seriesStateOptions=options.states[state].marker,pointStateOptions=options.marker.states[state];if(pointStateOptions.radius===undefined){pointStateOptions.radius=seriesStateOptions.radius+2;}stateOptions=merge(options.marker,point.marker,seriesStateOptions,pointStateOptions);if(stateOptions&&stateOptions.enabled){this.drawMarker(singlePointLayer,inverted?chart.plotWidth-point.plotY:point.plotX,inverted?chart.plotHeight-point.plotX:point.plotY,stateOptions);
}}},render:function(){var series=this;series.drawDataLabels();for(var state in series.stateLayers){series.drawLine(state);series.drawPoints(state);if(state){series.stateLayers[state].hide();}}if(!series.visible){series.setVisible(false);}},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(state){newStateLayer.show();}else{oldStateLayer.hide();if(singlePointLayer){singlePointLayer.clear();}}}},setVisible:function(vis){var series=this,imagemap=series.chart.imagemap,layerGroup=series.layerGroup,legendItem=series.legendItem,areas=series.areas;series.visible=vis=vis===undefined?!series.visible:vis;
if(vis){layerGroup.show();}else{layerGroup.hide();}if(legendItem){legendItem.className=vis?"":"highcharts-hidden";}if(areas){each(areas,function(area){if(vis){imagemap.insertBefore(area,imagemap.childNodes[1]);}else{imagemap.removeChild(area);}});}},getAreaCoords:function(){var data=this.data,series=this,datas=[],chart=this.chart,inverted=chart.inverted,plotWidth=chart.plotWidth,plotHeight=chart.plotHeight,snap=10,i=0,ret=[];each(series.splinedata||series.segments,function(data,i){if(series.xAxis.reversed){data=reverseArray(data);}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.plotY<sign*extreme.plotY){extreme=point;}});if(mathRound(data[last].plotX)<mathRound(extreme.plotX)||data[i].plotX>data[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;i<peaks.length;i++){if(i>0){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]<x2){outline.push([x2,y2]);
}}}});for(i=0;i<outlineTop.length;i++){coords.push(inverted?plotWidth-outlineTop[i][1]:outlineTop[i][0],inverted?plotHeight-outlineTop[i][0]:outlineTop[i][1]);}for(i=outlineBottom.length-1;i>=0;i--){coords.push(inverted?plotWidth-outlineBottom[i][1]:outlineBottom[i][0],inverted?plotHeight-outlineBottom[i][0]:outlineBottom[i][1]);}if(!coords.length){coords.push(mathRound(data[0].plotX),mathRound(data[0].plotY));}ret.push([coords.join(",")]);});return ret;},createArea:function(){var area,series=this,chart=series.chart,coordsArray=series.getAreaCoords(),imagemap=chart.imagemap,firstArea=imagemap.firstChild,seriesAreas=[],isCircle;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?",10":""),onmouseover:function(e){if(!series.visible){return;}var hoverSeries=chart.hoverSeries;chart.hoverPoint=coords[1];if(series.options.events.mouseOver){fireEvent(series,"mouseOver",{point:chart.hoverPoint});
}if(hoverSeries&&hoverSeries!=series){hoverSeries.setState();}if(!/(column|bar|pie)/.test(series.type)&&imagemap.childNodes[1]){imagemap.insertBefore(this,imagemap.childNodes[1]);}series.setState("hover");chart.hoverSeries=series;},onmouseout:function(){var series=chart.hoverSeries;if(series&&series.options.events.mouseOut){fireEvent(series,"mouseOut");}}});if(series.options.cursor=="pointer"){area.href="javascript:;";}if(firstArea){imagemap.insertBefore(area,firstArea);}else{imagemap.appendChild(area);}seriesAreas.push(area);});series.areas=seriesAreas;}};var AreaSeries=extendClass(LineSeries,{type:"area"});var SplineSeries=extendClass(LineSeries,{type:"spline",translate:function(){var series=this;LineSeries.prototype.translate.apply(series,arguments);series.splinedata=series.getSplineData();},drawLine:function(state){var series=this,realSegments=series.segments;series.segments=series.splinedata;LineSeries.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=reverseArray(data);}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.plotY<chart.plotWidth){croppedData.push(point);}});if(croppedData.length>1){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<data.length;i++){xdata[i]=data[i].plotX;ydata[i]=data[i].plotY;}this.xdata=xdata;this.ydata=ydata;var delta=[];this.y2=[];var n=ydata.length;this.n=n;this.y2[0]=0;this.y2[n-1]=0;delta[0]=0;for(var i=1;i<n-1;i++){var d=(xdata[i+1]-xdata[i-1]);var s=(xdata[i]-xdata[i-1])/d;var p=s*this.y2[i-1]+2;this.y2[i]=(s-1)/p;delta[i]=(ydata[i+1]-ydata[i])/(xdata[i+1]-xdata[i])-(ydata[i]-ydata[i-1])/(xdata[i]-xdata[i-1]);
delta[i]=(6*delta[i]/(xdata[i+1]-xdata[i-1])-s*delta[i-1])/p;}for(var j=n-2;j>=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;j<num;j++){xnew[j]=xnew[0]+j*step;ynew[j]=this.interpolate(xnew[j]);data[j]={plotX:xnew[j],plotY:ynew[j]};}return data;},interpolate:function(xpoint){var max=this.n-1;var min=0;while(max-min>1){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;}};var AreaSplineSeries=extendClass(SplineSeries,{type:"areaspline"});var ColumnSeries=extendClass(LineSeries,{type:"column",init:function(){LineSeries.prototype.init.apply(this,arguments);
var chart=this.chart;if(chart.columnCount&&!this.options.stacking){chart.columnCount++;}else{chart.columnCount=1;}this.columnNumber=chart.columnCount;},translate:function(){LineSeries.prototype.translate.apply(this);var series=this,options=series.options,data=series.data,chart=series.chart,inverted=chart.inverted,plotWidth=chart.plotWidth,plotHeight=chart.plotHeight,categoryWidth=mathAbs(data[1]?data[1].plotX-data[0].plotX:inverted?plotHeight:plotWidth),groupPadding=categoryWidth*options.groupPadding,groupWidth=categoryWidth-2*groupPadding,pointOffsetWidth=groupWidth/chart.columnCount,pointPadding=pointOffsetWidth*options.pointPadding,pointWidth=pointOffsetWidth-2*pointPadding,columnNumber=chart.options.xAxis.reversed?chart.columnCount-series.columnNumber:series.columnNumber-1,pointX=-(categoryWidth/2)+groupPadding+columnNumber*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],h;if(doAnimation){this.animate(true);}each(data,function(point){h=point.h;if(point.plotY!==undefined){layer.drawRect(inverted?chart.plotWidth-point.plotY-point.h:point.plotX,inverted?chart.plotHeight-point.plotX-point.w:(point.h>=0?point.plotY:point.plotY+point.h),inverted?point.h:point.w,inverted?point.w:mathAbs(point.h),options.borderColor,options.borderWidth,options.borderRadius,point.color||series.color,options.shadow);}});if(doAnimation){series.animate();}},drawPointState:function(point,state){var series=this,chart=series.chart,seriesOptions=series.options,pointOptions=point?point.options:null,plot=chart.plot,inverted=chart.inverted,singlePointLayer=series.singlePointLayer;
if(!singlePointLayer){singlePointLayer=series.singlePointLayer=new Layer("single-point-layer",series.layerGroup.div);}singlePointLayer.clear();if(state&&seriesOptions.states[state]){var options=merge(seriesOptions,seriesOptions.states[state],pointOptions);singlePointLayer.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/mathAbs(point.h),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);areas.push([map([x1,y1,x1,y2,x2,y2,x2,y1],mathRound).join(","),point]);
});return areas;},animate:function(init){var series=this,chart=series.chart,inverted=chart.inverted,div=series.layerGroup.div,dataLabelsLayer=series.dataLabelsLayer;if(init){div.style[inverted?"left":"top"]=(inverted?-chart.plotWidth:chart.plotHeight)+PX;}else{animate(div,chart.inverted?{left:0}:{top:0});series.animate=null;}}});var BarSeries=extendClass(ColumnSeries,{type:"bar",init:function(chart){chart.inverted=this.inverted=true;ColumnSeries.prototype.init.apply(this,arguments);}});var ScatterSeries=extendClass(LineSeries,{type:"scatter",getAreaCoords:function(){var data=this.data,coords,ret=[];each(data,function(point){ret.push([[mathRound(point.plotX),mathRound(point.plotY)].join(","),point]);});return ret;}});var PieSeries=extendClass(LineSeries,{type:"pie",isCartesian:false,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,defaultColors=chart.options.colors;
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);if(!point.color){point.color=defaultColors[colorCounter++];}if(colorCounter>=defaultColors.length){colorCounter=0;}if(point.visible===undefined){point.visible=1;}if(!point.layer){point.layer=new Layer("pie",series.layerGroup.div);}point.setState=function(state){series.drawPointState(point,state);};point.setVisible=function(vis){point.visible=vis=vis===undefined?!point.visible:vis;var fn=vis?"show":"hide",legendItem=point.legendItem;
point.layer[fn]();if(legendItem){legendItem.className=vis?"":HIDDEN;}};});this.setTooltipPoints();},render:function(){if(!this.pointsDrawn){this.drawPoints();}this.drawDataLabels();},drawPoints:function(state){var series=this;each(this.data,function(point){series.drawPoint(point,point.layer.getCtx(),point.color);});series.pointsDrawn=true;},getSymbol:function(){},drawPointState:function(point,state){var series=this,seriesOptions=series.options,stateLayer;if(point){stateLayer=point.stateLayer;if(!stateLayer){stateLayer=point.stateLayer=new Layer("state-layer",point.layer.div);}stateLayer.clear();if(state&&series.options.states[state]){var options=merge(seriesOptions,seriesOptions.states[state]);this.drawPoint(point,stateLayer.getCtx(),options.color||point.color,options.brightness);}}if(series.hoverPoint){series.hoverPoint.stateLayer.clear();}series.hoverPoint=point;},drawPoint:function(point,ctx,color,brightness){var center=point.sliced?point.centerSliced:point.center,centerX=center[0],centerY=center[1],size=point.size,end=isIE&&point.percentage==100?point.start:point.end;
if(point.y>0){ctx.fillStyle=Color(color).brighten(brightness).get(ctx);ctx.beginPath();ctx.moveTo(centerX,centerY);ctx.arc(centerX,centerY,size/2,point.start,end,false);ctx.lineTo(centerX,centerY);ctx.closePath();ctx.fill();}},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;}});Highcharts={"numberFormat":numberFormat,"dateFormat":dateFormat,"setOptions":setOptions,"Chart":Chart};})();
