以下是 jQuery电脑cpu动态走势图表js代码 的示例演示效果:
部分效果截图:
HTML代码(index.html):
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>jQuery����cpu��̬����ͼ��</title>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/highcharts.js"></script>
<script type="text/javascript">
$(function () {
$(document).ready(function() {
Highcharts.setOptions({
global: {
useUTC: false
}
});
var chart;
$('#container').highcharts({
chart: {
type: 'spline',
animation: Highcharts.svg, // don't animate in old IE
marginRight: 10,
events: {
load: function() {
// set up the updating of the chart each second
var series = this.series[0];
setInterval(function() {
var x = (new Date()).getTime(), // current time
y = Math.random();
series.addPoint([x, y], true, true);
}, 1000);
}
}
},
title: {
text: 'CPU��̬����ͼ--1��'
},
xAxis: {
type: 'datetime',
tickPixelInterval: 100
},
yAxis: {
title: {
text: 'CPU��̬����ͼ--1��'
},
plotLines: [{
value: 0,
width: 1,
color: '#808080'
}]
},
tooltip: {
formatter: function() {
return '<b>'+ this.series.name +'</b><br/>'+
Highcharts.dateFormat('%Y-%m-%d %H:%M:%S', this.x) +'<br/>'+
Highcharts.numberFormat(this.y, 2);
}
},
legend: {
enabled: false
},
exporting: {
enabled: false
},
series: [{
name: 'Random data',
data: (function() {
// generate an array of random data
var data = [],
time = (new Date()).getTime(),
i;
for (i = -19; i <= 0; i++) {
data.push({
x: time + i * 1000,
y: Math.random()
});
}
return data;
})()
}]
});
});
});
</script>
</head>
<body>
<div id="container" style="width:700px;height:400px;margin:0 auto;"></div>
</body>
</html>
JS代码(highcharts.js):
/* Highcharts JS v3.0.10 (2014-03-10) (c) 2009-2014 Torstein Honsi License:www.highcharts.com/license*/
(function(){
function s(a,b){
var c;
a||(a={
}
);
for(c in b)a[c]=b[c];
return a}
function w(){
var a,b=arguments,c,d={
}
,e=function(a,b){
var c,d;
typeof a!=="object"&&(a={
}
);
for(d in b)b.hasOwnProperty(d)&&(c=b[d],a[d]=c&&typeof c==="object"&&Object.prototype.toString.call(c)!=="[object Array]"&&d!=="renderTo"&&typeof c.nodeType!=="number"?e(a[d]||{
}
,c):b[d]);
return a}
;
b[0]===!0&&(d=b[1],b=Array.prototype.slice.call(b,2));
c=b.length;
for(a=0;
a<c;
a++)d=e(d,b[a]);
return d}
function x(a,b){
return parseInt(a,b||10)}
function ga(a){
return typeof a==="string"}
function $(a){
return typeof a==="object"}
function La(a){
return Object.prototype.toString.call(a)==="[object Array]"}
function ya(a){
return typeof a==="number"}
function za(a){
return T.log(a)/T.LN10}
function ha(a){
return T.pow(10,a)}
function ia(a,b){
for(var c=a.length;
c--;
)if(a[c]===b){
a.splice(c,1);
break}
}
function r(a){
return a!==u&&a!==null}
function z(a,b,c){
var d,e;
if(ga(b))r(c)?a.setAttribute(b,c):a&&a.getAttribute&&(e=a.getAttribute(b));
else if(r(b)&&$(b))for(d in b)a.setAttribute(d,b[d]);
return e}
function na(a){
return La(a)?a:[a]}
function o(){
var a=arguments,b,c,d=a.length;
for(b=0;
b<d;
b++)if(c=a[b],typeof c!=="undefined"&&c!==null)return c}
function D(a,b){
if(Aa&&!X&&b&&b.opacity!==u)b.filter="alpha(opacity="+b.opacity*100+")";
s(a.style,b)}
function V(a,b,c,d,e){
a=y.createElement(a);
b&&s(a,b);
e&&D(a,{
padding:0,border:O,margin:0}
);
c&&D(a,c);
d&&d.appendChild(a);
return a}
function ja(a,b){
var c=function(){
}
;
c.prototype=new a;
s(c.prototype,b);
return c}
function Ga(a,b,c,d){
var e=L.lang,a=+a||0,f=b===-1?(a.toString().split(".")[1]||"").length:isNaN(b=N(b))?2:b,b=c===void 0?e.decimalPoint:c,d=d===void 0?e.thousandsSep:d,e=a<0?"-":"",c=String(x(a=N(a).toFixed(f))),g=c.length>3?c.length%3:0;
return e+(g?c.substr(0,g)+d:"")+c.substr(g).replace(/(\d{
3}
)(?=\d)/g,"$1"+d)+(f?b+N(a-c).toFixed(f).slice(2):"")}
function Ha(a,b){
return Array((b||2)+1-String(a).length).join(0)+a}
function Ma(a,b,c){
var d=a[b];
a[b]=function(){
var a=Array.prototype.slice.call(arguments);
a.unshift(d);
return c.apply(this,a)}
}
function Ia(a,b){
for(var c="{
",d=!1,e,f,g,h,i,j=[];
(c=a.indexOf(c))!==-1;
){
e=a.slice(0,c);
if(d){
f=e.split(":");
g=f.shift().split(".");
i=g.length;
e=b;
for(h=0;
h<i;
h++)e=e[g[h]];
if(f.length)f=f.join(":"),g=/\.([0-9])/,h=L.lang,i=void 0,/f$/.test(f)?(i=(i=f.match(g))?i[1]:-1,e=Ga(e,i,h.decimalPoint,f.indexOf(",")>-1?h.thousandsSep:"")):e=bb(f,e)}
j.push(e);
a=a.slice(c+1);
c=(d=!d)?"}
":"{
"}
j.push(a);
return j.join("")}
function mb(a){
return T.pow(10,S(T.log(a)/T.LN10))}
function nb(a,b,c,d){
var e,c=o(c,1);
e=a/c;
b||(b=[1,2,2.5,5,10],d&&d.allowDecimals===!1&&(c===1?b=[1,2,5,10]:c<=0.1&&(b=[1/c])));
for(d=0;
d<b.length;
d++)if(a=b[d],e<=(b[d]+(b[d+1]||b[d]))/2)break;
a*=c;
return a}
function Bb(){
this.symbol=this.color=0}
function ob(a,b){
var c=a.length,d,e;
for(e=0;
e<c;
e++)a[e].ss_i=e;
a.sort(function(a,c){
d=b(a,c);
return d===0?a.ss_i-c.ss_i:d}
);
for(e=0;
e<c;
e++)delete a[e].ss_i}
function Na(a){
for(var b=a.length,c=a[0];
b--;
)a[b]<c&&(c=a[b]);
return c}
function Ba(a){
for(var b=a.length,c=a[0];
b--;
)a[b]>c&&(c=a[b]);
return c}
function Oa(a,b){
for(var c in a)a[c]&&a[c]!==b&&a[c].destroy&&a[c].destroy(),delete a[c]}
function Pa(a){
cb||(cb=V(Ja));
a&&cb.appendChild(a);
cb.innerHTML=""}
function oa(a,b){
var c="Highcharts error #"+a+":www.highcharts.com/errors/"+a;
if(b)throw c;
else G.console&&console.log(c)}
function aa(a){
return parseFloat(a.toPrecision(14))}
function Qa(a,b){
sa=o(a,b.animation)}
function Cb(){
var a=L.global.useUTC,b=a?"getUTC":"get",c=a?"setUTC":"set";
Ra=(a&&L.global.timezoneOffset||0)*6E4;
db=a?Date.UTC:function(a,b,c,g,h,i){
return(new Date(a,b,o(c,1),o(g,0),o(h,0),o(i,0))).getTime()}
;
pb=b+"Minutes";
qb=b+"Hours";
rb=b+"Day";
Xa=b+"Date";
eb=b+"Month";
fb=b+"FullYear";
Db=c+"Minutes";
Eb=c+"Hours";
sb=c+"Date";
Fb=c+"Month";
Gb=c+"FullYear"}
function ta(){
}
function Sa(a,b,c,d){
this.axis=a;
this.pos=b;
this.type=c||"";
this.isNew=!0;
!c&&!d&&this.addLabel()}
function ka(){
this.init.apply(this,arguments)}
function Ya(){
this.init.apply(this,arguments)}
function Hb(a,b,c,d,e,f){
var g=a.chart.inverted;
this.axis=a;
this.isNegative=c;
this.options=b;
this.x=d;
this.total=null;
this.points={
}
;
this.stack=e;
this.percent=f==="percent";
this.alignOptions={
align:b.align||(g?c?"left":"right":"center"),verticalAlign:b.verticalAlign||(g?"middle":c?"bottom":"top"),y:o(b.y,g?4:c?14:-6),x:o(b.x,g?c?-6:6:0)}
;
this.textAlign=b.textAlign||(g?c?"right":"left":"center")}
var u,y=document,G=window,T=Math,v=T.round,S=T.floor,Ka=T.ceil,t=T.max,E=T.min,N=T.abs,W=T.cos,ba=T.sin,la=T.PI,Ca=la*2/360,ua=navigator.userAgent,Ib=G.opera,Aa=/msie/i.test(ua)&&!Ib,gb=y.documentMode===8,hb=/AppleWebKit/.test(ua),Ta=/Firefox/.test(ua),Jb=/(Mobile|Android|Windows Phone)/.test(ua),Da="http://www.w3.org/2000/svg",X=!!y.createElementNS&&!!y.createElementNS(Da,"svg").createSVGRect,Ob=Ta&&parseInt(ua.split("Firefox/")[1],10)<4,ca=!X&&!Aa&&!!y.createElement("canvas").getContext,Za,$a,Kb={
}
,tb=0,cb,L,bb,sa,ub,B,Ea=function(){
}
,Y=[],Ja="div",O="none",Pb=/^[0-9]+$/,Lb="stroke-width",db,Ra,pb,qb,rb,Xa,eb,fb,Db,Eb,sb,Fb,Gb,J={
}
,Q=G.Highcharts=G.Highcharts?oa(16,!0):{
}
;
bb=function(a,b,c){
if(!r(b)||isNaN(b))return"Invalid date";
var a=o(a,"%Y-%m-%d %H:%M:%S"),d=new Date(b-Ra),e,f=d[qb](),g=d[rb](),h=d[Xa](),i=d[eb](),j=d[fb](),k=L.lang,l=k.weekdays,d=s({
a:l[g].substr(0,3),A:l[g],d:Ha(h),e:h,b:k.shortMonths[i],B:k.months[i],m:Ha(i+1),y:j.toString().substr(2,2),Y:j,H:Ha(f),I:Ha(f%12||12),l:f%12||12,M:Ha(d[pb]()),p:f<12?"AM":"PM",P:f<12?"am":"pm",S:Ha(d.getSeconds()),L:Ha(v(b%1E3),3)}
,Q.dateFormats);
for(e in d)for(;
a.indexOf("%"+e)!==-1;
)a=a.replace("%"+e,typeof d[e]==="function"?d[e](b):d[e]);
return c?a.substr(0,1).toUpperCase()+a.substr(1):a}
;
Bb.prototype={
wrapColor:function(a){
if(this.color>=a)this.color=0}
,wrapSymbol:function(a){
if(this.symbol>=a)this.symbol=0}
}
;
B=function(){
for(var a=0,b=arguments,c=b.length,d={
}
;
a<c;
a++)d[b[a++]]=b[a];
return d}
("millisecond",1,"second",1E3,"minute",6E4,"hour",36E5,"day",864E5,"week",6048E5,"month",26784E5,"year",31556952E3);
ub={
init:function(a,b,c){
var b=b||"",d=a.shift,e=b.indexOf("C")>-1,f=e?7:3,g,b=b.split(" "),c=[].concat(c),h,i,j=function(a){
for(g=a.length;
g--;
)a[g]==="M"&&a.splice(g+1,0,a[g+1],a[g+2],a[g+1],a[g+2])}
;
e&&(j(b),j(c));
a.isArea&&(h=b.splice(b.length-6,6),i=c.splice(c.length-6,6));
if(d<=c.length/f&&b.length===c.length)for(;
d--;
)c=[].concat(c).splice(0,f).concat(c);
a.shift=0;
if(b.length)for(a=c.length;
b.length<a;
)d=[].concat(b).splice(b.length-f,f),e&&(d[f-6]=d[f-2],d[f-5]=d[f-1]),b=b.concat(d);
h&&(b=b.concat(h),c=c.concat(i));
return[b,c]}
,step:function(a,b,c,d){
var e=[],f=a.length;
if(c===1)e=d;
else if(f===b.length&&c<1)for(;
f--;
)d=parseFloat(a[f]),e[f]=isNaN(d)?a[f]:c*parseFloat(b[f]-d)+d;
else e=b;
return e}
}
;
(function(a){
G.HighchartsAdapter=G.HighchartsAdapter||a&&{
init:function(b){
var c=a.fx,d=c.step,e,f=a.Tween,g=f&&f.propHooks;
e=a.cssHooks.opacity;
a.extend(a.easing,{
easeOutQuad:function(a,b,c,d,e){
return-d*(b/=e)*(b-2)+c}
}
);
a.each(["cur","_default","width","height","opacity"],function(a,b){
var e=d,k;
b==="cur"?e=c.prototype:b==="_default"&&f&&(e=g[b],b="set");
(k=e[b])&&(e[b]=function(c){
var d,c=a?c:this;
if(c.prop!=="align")return d=c.elem,d.attr?d.attr(c.prop,b==="cur"?u:c.now):k.apply(this,arguments)}
)}
);
Ma(e,"get",function(a,b,c){
return b.attr?b.opacity||0:a.call(this,b,c)}
);
e=function(a){
var c=a.elem,d;
if(!a.started)d=b.init(c,c.d,c.toD),a.start=d[0],a.end=d[1],a.started=!0;
c.attr("d",b.step(a.start,a.end,a.pos,c.toD))}
;
f?g.d={
set:e}
:d.d=e;
this.each=Array.prototype.forEach?function(a,b){
return Array.prototype.forEach.call(a,b)}
:function(a,b){
for(var c=0,d=a.length;
c<d;
c++)if(b.call(a[c],a[c],c,a)===!1)return c}
;
a.fn.highcharts=function(){
var a="Chart",b=arguments,c,d;
ga(b[0])&&(a=b[0],b=Array.prototype.slice.call(b,1));
c=b[0];
if(c!==u)c.chart=c.chart||{
}
,c.chart.renderTo=this[0],new Q[a](c,b[1]),d=this;
c===u&&(d=Y[z(this[0],"data-highcharts-chart")]);
return d}
}
,getScript:a.getScript,inArray:a.inArray,adapterRun:function(b,c){
return a(b)[c]()}
,grep:a.grep,map:function(a,c){
for(var d=[],e=0,f=a.length;
e<f;
e++)d[e]=c.call(a[e],a[e],e,a);
return d}
,offset:function(b){
return a(b).offset()}
,addEvent:function(b,c,d){
a(b).bind(c,d)}
,removeEvent:function(b,c,d){
var e=y.removeEventListener?"removeEventListener":"detachEvent";
y[e]&&b&&!b[e]&&(b[e]=function(){
}
);
a(b).unbind(c,d)}
,fireEvent:function(b,c,d,e){
var f=a.Event(c),g="detached"+c,h;
!Aa&&d&&(delete d.layerX,delete d.layerY);
s(f,d);
b[c]&&(b[g]=b[c],b[c]=null);
a.each(["preventDefault","stopPropagation"],function(a,b){
var c=f[b];
f[b]=function(){
try{
c.call(f)}
catch(a){
b==="preventDefault"&&(h=!0)}
}
}
);
a(b).trigger(f);
b[g]&&(b[c]=b[g],b[g]=null);
e&&!f.isDefaultPrevented()&&!h&&e(f)}
,washMouseEvent:function(a){
var c=a.originalEvent||a;
if(c.pageX===u)c.pageX=a.pageX,c.pageY=a.pageY;
return c}
,animate:function(b,c,d){
var e=a(b);
if(!b.style)b.style={
}
;
if(c.d)b.toD=c.d,c.d=1;
e.stop();
c.opacity!==u&&b.attr&&(c.opacity+="px");
e.animate(c,d)}
,stop:function(b){
a(b).stop()}
}
}
)(G.jQuery);
var R=G.HighchartsAdapter,F=R||{
}
;
R&&R.init.call(R,ub);
var ib=F.adapterRun,Qb=F.getScript,va=F.inArray,p=F.each,vb=F.grep,Rb=F.offset,Ua=F.map,C=F.addEvent,U=F.removeEvent,I=F.fireEvent,Sb=F.washMouseEvent,jb=F.animate,ab=F.stop,F={
enabled:!0,x:0,y:15,style:{
color:"#666",cursor:"default",fontSize:"11px"}
}
;
L={
colors:"#2f7ed8,#0d233a,#8bbc21,#910000,#1aadce,#492970,#f28f43,#77a1e5,#c42525,#a6c96a".split(","),symbols:["circle","diamond","square","triangle","triangle-down"],lang:{
loading:"Loading...",months:"January,February,March,April,May,June,July,August,September,October,November,December".split(","),shortMonths:"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec".split(","),weekdays:"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday".split(","),decimalPoint:".",numericSymbols:"k,M,G,T,P,E".split(","),resetZoom:"Reset zoom",resetZoomTitle:"Reset zoom level 1:1",thousandsSep:","}
,global:{
useUTC:!0,canvasToolsURL:"http://code.highcharts.com/3.0.10/modules/canvas-tools.js",VMLRadialGradientURL:"http://code.highcharts.com/3.0.10/gfx/vml-radial-gradient.png"}
,chart:{
borderColor:"#4572A7",borderRadius:5,defaultSeriesType:"line",ignoreHiddenSeries:!0,spacing:[10,10,15,10],backgroundColor:"#FFFFFF",plotBorderColor:"#C0C0C0",resetZoomButton:{
theme:{
zIndex:20}
,position:{
align:"right",x:-10,y:10}
}
}
,title:{
text:"Chart title",align:"center",margin:15,style:{
color:"#274b6d",fontSize:"16px"}
}
,subtitle:{
text:"",align:"center",style:{
color:"#4d759e"}
}
,plotOptions:{
line:{
allowPointSelect:!1,showCheckbox:!1,animation:{
duration:1E3}
,events:{
}
,lineWidth:2,marker:{
enabled:!0,lineWidth:0,radius:4,lineColor:"#FFFFFF",states:{
hover:{
enabled:!0}
,select:{
fillColor:"#FFFFFF",lineColor:"#000000",lineWidth:2}
}
}
,point:{
events:{
}
}
,dataLabels:w(F,{
align:"center",enabled:!1,formatter:function(){
return this.y===null?"":Ga(this.y,-1)}
,verticalAlign:"bottom",y:0}
),cropThreshold:300,pointRange:0,states:{
hover:{
marker:{
}
}
,select:{
marker:{
}
}
}
,stickyTracking:!0,turboThreshold:1E3}
}
,labels:{
style:{
position:"absolute",color:"#3E576F"}
}
,legend:{
enabled:!0,align:"center",layout:"horizontal",labelFormatter:function(){
return this.name}
,borderWidth:1,borderColor:"#909090",borderRadius:5,navigation:{
activeColor:"#274b6d",inactiveColor:"#CCC"}
,shadow:!1,itemStyle:{
color:"#274b6d",fontSize:"12px"}
,itemHoverStyle:{
color:"#000"}
,itemHiddenStyle:{
color:"#CCC"}
,itemCheckboxStyle:{
position:"absolute",width:"13px",height:"13px"}
,symbolPadding:5,verticalAlign:"bottom",x:0,y:0,title:{
style:{
fontWeight:"bold"}
}
}
,loading:{
labelStyle:{
fontWeight:"bold",position:"relative",top:"1em"}
,style:{
position:"absolute",backgroundColor:"white",opacity:0.5,textAlign:"center"}
}
,tooltip:{
enabled:!0,animation:X,backgroundColor:"rgba(255,255,255,.85)",borderWidth:1,borderRadius:3,dateTimeLabelFormats:{
millisecond:"%A,%b %e,%H:%M:%S.%L",second:"%A,%b %e,%H:%M:%S",minute:"%A,%b %e,%H:%M",hour:"%A,%b %e,%H:%M",day:"%A,%b %e,%Y",week:"Week from %A,%b %e,%Y",month:"%B %Y",year:"%Y"}
,headerFormat:'<span style="font-size:10px">{
point.key}
</span><br/>',pointFormat:'<span style="color:{
series.color}
">{
series.name}
</span>:<b>{
point.y}
</b><br/>',shadow:!0,snap:Jb?25:10,style:{
color:"#333333",cursor:"default",fontSize:"12px",padding:"8px",whiteSpace:"nowrap"}
}
,credits:{
enabled:!0,text:"Highcharts.com",href:"http://www.highcharts.com",position:{
align:"right",x:-10,verticalAlign:"bottom",y:-5}
,style:{
cursor:"pointer",color:"#909090",fontSize:"9px"}
}
}
;
var Z=L.plotOptions,R=Z.line;
Cb();
var Tb=/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*\)/,Ub=/#([a-fA-F0-9]{
2}
)([a-fA-F0-9]{
2}
)([a-fA-F0-9]{
2}
)/,Vb=/rgb\(\s*([0-9]{
1,3}
)\s*,\s*([0-9]{
1,3}
)\s*,\s*([0-9]{
1,3}
)\s*\)/,wa=function(a){
var b=[],c,d;
(function(a){
a&&a.stops?d=Ua(a.stops,function(a){
return wa(a[1])}
):(c=Tb.exec(a))?b=[x(c[1]),x(c[2]),x(c[3]),parseFloat(c[4],10)]:(c=Ub.exec(a))?b=[x(c[1],16),x(c[2],16),x(c[3],16),1]:(c=Vb.exec(a))&&(b=[x(c[1]),x(c[2]),x(c[3]),1])}
)(a);
return{
get:function(c){
var f;
d?(f=w(a),f.stops=[].concat(f.stops),p(d,function(a,b){
f.stops[b]=[f.stops[b][0],a.get(c)]}
)):f=b&&!isNaN(b[0])?c==="rgb"?"rgb("+b[0]+","+b[1]+","+b[2]+")":c==="a"?b[3]:"rgba("+b.join(",")+")":a;
return f}
,brighten:function(a){
if(d)p(d,function(b){
b.brighten(a)}
);
else if(ya(a)&&a!==0){
var c;
for(c=0;
c<3;
c++)b[c]+=x(a*255),b[c]<0&&(b[c]=0),b[c]>255&&(b[c]=255)}
return this}
,rgba:b,setOpacity:function(a){
b[3]=a;
return this}
}
}
;
ta.prototype={
init:function(a,b){
this.element=b==="span"?V(b):y.createElementNS(Da,b);
this.renderer=a;
this.attrSetters={
}
}
,opacity:1,animate:function(a,b,c){
b=o(b,sa,!0);
ab(this);
if(b){
b=w(b,{
}
);
if(c)b.complete=c;
jb(this,a,b)}
else this.attr(a),c&&c()}
,attr:function(a,b){
var c,d,e,f,g=this.element,h=g.nodeName.toLowerCase(),i=this.renderer,j,k=this.attrSetters,l=this.shadows,m,n,q=this;
ga(a)&&r(b)&&(c=a,a={
}
,a[c]=b);
if(ga(a))c=a,h==="circle"?c={
x:"cx",y:"cy"}
[c]||c:c==="strokeWidth"&&(c="stroke-width"),q=z(g,c)||this[c]||0,c!=="d"&&c!=="visibility"&&c!=="fill"&&(q=parseFloat(q));
else{
for(c in a)if(j=!1,d=a[c],e=k[c]&&k[c].call(this,d,c),e!==!1){
e!==u&&(d=e);
if(c==="d")d&&d.join&&(d=d.join(" ")),/(NaN|{
2}
|^$)/.test(d)&&(d="M 0 0");
else if(c==="x"&&h==="text")for(e=0;
e<g.childNodes.length;
e++)f=g.childNodes[e],z(f,"x")===z(g,"x")&&z(f,"x",d);
else if(this.rotation&&(c==="x"||c==="y"))n=!0;
else if(c==="fill")d=i.color(d,g,c);
else if(h==="circle"&&(c==="x"||c==="y"))c={
x:"cx",y:"cy"}
[c]||c;
else if(h==="rect"&&c==="r")z(g,{
rx:d,ry:d}
),j=!0;
else if(c==="translateX"||c==="translateY"||c==="rotation"||c==="verticalAlign"||c==="scaleX"||c==="scaleY")j=n=!0;
else if(c==="stroke")d=i.color(d,g,c);
else if(c==="dashstyle")if(c="stroke-dasharray",d=d&&d.toLowerCase(),d==="solid")d=O;
else{
if(d){
d=d.replace("shortdashdotdot","3,1,1,1,1,1,").replace("shortdashdot","3,1,1,1").replace("shortdot","1,1,").replace("shortdash","3,1,").replace("longdash","8,3,").replace(/dot/g,"1,3,").replace("dash","4,3,").replace(/,$/,"").split(",");
for(e=d.length;
e--;
)d[e]=x(d[e])*o(a["stroke-width"],this["stroke-width"]);
d=d.join(",")}
}
else if(c==="width")d=x(d);
else if(c==="align")c="text-anchor",d={
left:"start",center:"middle",right:"end"}
[d];
else if(c==="title")e=g.getElementsByTagName("title")[0],e||(e=y.createElementNS(Da,"title"),g.appendChild(e)),e.textContent=d;
c==="strokeWidth"&&(c="stroke-width");
if(c==="stroke-width"||c==="stroke"){
this[c]=d;
if(this.stroke&&this["stroke-width"])z(g,"stroke",this.stroke),z(g,"stroke-width",this["stroke-width"]),this.hasStroke=!0;
else if(c==="stroke-width"&&d===0&&this.hasStroke)g.removeAttribute("stroke"),this.hasStroke=!1;
j=!0}
this.symbolName&&/^(x|y|width|height|r|start|end|innerR|anchorX|anchorY)/.test(c)&&(m||(this.symbolAttr(a),m=!0),j=!0);
if(l&&/^(width|height|visibility|x|y|d|transform|cx|cy|r)$/.test(c))for(e=l.length;
e--;
)z(l[e],c,c==="height"?t(d-(l[e].cutHeight||0),0):d);
if((c==="width"||c==="height")&&h==="rect"&&d<0)d=0;
this[c]=d;
if(c==="text"){
if(d!==this.textStr)delete this.bBox,this.textStr=d,this.added&&i.buildText(this)}
else j||d!==void 0&&g.setAttribute(c,d)}
n&&this.updateTransform()}
return q}
,addClass:function(a){
var b=this.element,c=z(b,"class")||"";
c.indexOf(a)===-1&&z(b,"class",c+" "+a);
return this}
,symbolAttr:function(a){
var b=this;
p("x,y,r,start,end,width,height,innerR,anchorX,anchorY".split(","),function(c){
b[c]=o(a[c],b[c])}
);
b.attr({
d:b.renderer.symbols[b.symbolName](b.x,b.y,b.width,b.height,b)}
)}
,clip:function(a){
return this.attr("clip-path",a?"url("+this.renderer.url+"#"+a.id+")":O)}
,crisp:function(a){
var b,c={
}
,d,e=a.strokeWidth||this.strokeWidth||this.attr&&this.attr("stroke-width")||0;
d=v(e)%2/2;
a.x=S(a.x||this.x||0)+d;
a.y=S(a.y||this.y||0)+d;
a.width=S((a.width||this.width||0)-2*d);
a.height=S((a.height||this.height||0)-2*d);
a.strokeWidth=e;
for(b in a)this[b]!==a[b]&&(this[b]=c[b]=a[b]);
return c}
,css:function(a){
var b=this.styles,c={
}
,d=this.element,e,f,g="";
e=!b;
if(a&&a.color)a.fill=a.color;
if(b)for(f in a)a[f]!==b[f]&&(c[f]=a[f],e=!0);
if(e){
e=this.textWidth=a&&a.width&&d.nodeName.toLowerCase()==="text"&&x(a.width);
b&&(a=s(b,c));
this.styles=a;
e&&(ca||!X&&this.renderer.forExport)&&delete a.width;
if(Aa&&!X)D(this.element,a);
else{
b=function(a,b){
return"-"+b.toLowerCase()}
;
for(f in a)g+=f.replace(/([A-Z])/g,b)+":"+a[f]+";
";
z(d,"style",g)}
e&&this.added&&this.renderer.buildText(this)}
return this}
,on:function(a,b){
var c=this,d=c.element;
$a&&a==="click"?(d.ontouchstart=function(a){
c.touchEventFired=Date.now();
a.preventDefault();
b.call(d,a)}
,d.onclick=function(a){
(ua.indexOf("Android")===-1||Date.now()-(c.touchEventFired||0)>1100)&&b.call(d,a)}
):d["on"+a]=b;
return this}
,setRadialReference:function(a){
this.element.radialReference=a;
return this}
,translate:function(a,b){
return this.attr({
translateX:a,translateY:b}
)}
,invert:function(){
this.inverted=!0;
this.updateTransform();
return this}
,updateTransform:function(){
var a=this.translateX||0,b=this.translateY||0,c=this.scaleX,d=this.scaleY,e=this.inverted,f=this.rotation;
e&&(a+=this.attr("width"),b+=this.attr("height"));
a=["translate("+a+","+b+")"];
e?a.push("rotate(90) scale(-1,1)"):f&&a.push("rotate("+f+" "+(this.x||0)+" "+(this.y||0)+")");
(r(c)||r(d))&&a.push("scale("+o(c,1)+" "+o(d,1)+")");
a.length&&z(this.element,"transform",a.join(" "))}
,toFront:function(){
var a=this.element;
a.parentNode.appendChild(a);
return this}
,align:function(a,b,c){
var d,e,f,g,h={
}
;
e=this.renderer;
f=e.alignedObjects;
if(a){
if(this.alignOptions=a,this.alignByTranslate=b,!c||ga(c))this.alignTo=d=c||"renderer",ia(f,this),f.push(this),c=null}
else a=this.alignOptions,b=this.alignByTranslate,d=this.alignTo;
c=o(c,e[d],e);
d=a.align;
e=a.verticalAlign;
f=(c.x||0)+(a.x||0);
g=(c.y||0)+(a.y||0);
if(d==="right"||d==="center")f+=(c.width-(a.width||0))/{
right:1,center:2}
[d];
h[b?"translateX":"x"]=v(f);
if(e==="bottom"||e==="middle")g+=(c.height-(a.height||0))/({
bottom:1,middle:2}
[e]||1);
h[b?"translateY":"y"]=v(g);
this[this.placed?"animate":"attr"](h);
this.placed=!0;
this.alignAttr=h;
return this}
,getBBox:function(){
var a=this.bBox,b=this.renderer,c,d,e=this.rotation;
c=this.element;
var f=this.styles,g=e*Ca;
d=this.textStr;
var h;
if(d===""||Pb.test(d))h=d.toString().length+(f?"|"+f.fontSize+"|"+f.fontFamily:""),a=b.cache[h];
if(!a){
if(c.namespaceURI===Da||b.forExport){
try{
a=c.getBBox?s({
}
,c.getBBox()):{
width:c.offsetWidth,height:c.offsetHeight}
}
catch(i){
}
if(!a||a.width<0)a={
width:0,height:0}
}
else a=this.htmlGetBBox();
if(b.isSVG){
c=a.width;
d=a.height;
if(Aa&&f&&f.fontSize==="11px"&&d.toPrecision(3)==="16.9")a.height=d=14;
if(e)a.width=N(d*ba(g))+N(c*W(g)),a.height=N(d*W(g))+N(c*ba(g))}
this.bBox=a;
h&&(b.cache[h]=a)}
return a}
,show:function(a){
return this.attr({
visibility:a?"inherit":"visible"}
)}
,hide:function(){
return this.attr({
visibility:"hidden"}
)}
,fadeOut:function(a){
var b=this;
b.animate({
opacity:0}
,{
duration:a||150,complete:function(){
b.hide()}
}
)}
,add:function(a){
var b=this.renderer,c=a||b,d=c.element||b.box,e=this.element,f=this.zIndex,g,h;
if(a)this.parentGroup=a;
this.parentInverted=a&&a.inverted;
this.textStr!==void 0&&b.buildText(this);
if(f)c.handleZ=!0,f=x(f);
if(c.handleZ){
a=d.childNodes;
for(g=0;
g<a.length;
g++)if(b=a[g],c=z(b,"zIndex"),b!==e&&(x(c)>f||!r(f)&&r(c))){
d.insertBefore(e,b);
h=!0;
break}
}
h||d.appendChild(e);
this.added=!0;
if(this.onAdd)this.onAdd();
return this}
,safeRemoveChild:function(a){
var b=a.parentNode;
b&&b.removeChild(a)}
,destroy:function(){
var a=this,b=a.element||{
}
,c=a.shadows,d=a.renderer.isSVG&&b.nodeName==="SPAN"&&a.parentGroup,e,f;
b.onclick=b.onmouseout=b.onmouseover=b.onmousemove=b.point=null;
ab(a);
if(a.clipPath)a.clipPath=a.clipPath.destroy();
if(a.stops){
for(f=0;
f<a.stops.length;
f++)a.stops[f]=a.stops[f].destroy();
a.stops=null}
a.safeRemoveChild(b);
for(c&&p(c,function(b){
a.safeRemoveChild(b)}
);
d&&d.div.childNodes.length===0;
)b=d.parentGroup,a.safeRemoveChild(d.div),delete d.div,d=b;
a.alignTo&&ia(a.renderer.alignedObjects,a);
for(e in a)delete a[e];
return null}
,shadow:function(a,b,c){
var d=[],e,f,g=this.element,h,i,j,k;
if(a){
i=o(a.width,3);
j=(a.opacity||0.15)/i;
k=this.parentInverted?"(-1,-1)":"("+o(a.offsetX,1)+","+o(a.offsetY,1)+")";
for(e=1;
e<=i;
e++){
f=g.cloneNode(0);
h=i*2+1-2*e;
z(f,{
isShadow:"true",stroke:a.color||"black","stroke-opacity":j*e,"stroke-width":h,transform:"translate"+k,fill:O}
);
if(c)z(f,"height",t(z(f,"height")-h,0)),f.cutHeight=h;
b?b.element.appendChild(f):g.parentNode.insertBefore(f,g);
d.push(f)}
this.shadows=d}
return this}
}
;
var pa=function(){
this.init.apply(this,arguments)}
;
pa.prototype={
Element:ta,init:function(a,b,c,d,e){
var f=location,g,d=this.createElement("svg").attr({
version:"1.1"}
).css(this.getStyle(d));
g=d.element;
a.appendChild(g);
a.innerHTML.indexOf("xmlns")===-1&&z(g,"xmlns",Da);
this.isSVG=!0;
this.box=g;
this.boxWrapper=d;
this.alignedObjects=[];
this.url=(Ta||hb)&&y.getElementsByTagName("base").length?f.href.replace(/#.*?$/,"").replace(/([\('\)])/g,"\\$1").replace(/ /g,"%20"):"";
this.createElement("desc").add().element.appendChild(y.createTextNode("Created with Highcharts 3.0.10"));
this.defs=this.createElement("defs").add();
this.forExport=e;
this.gradients={
}
;
this.cache={
}
;
this.setSize(b,c,!1);
var h;
if(Ta&&a.getBoundingClientRect)this.subPixelFix=b=function(){
D(a,{
left:0,top:0}
);
h=a.getBoundingClientRect();
D(a,{
left:Ka(h.left)-h.left+"px",top:Ka(h.top)-h.top+"px"}
)}
,b(),C(G,"resize",b)}
,getStyle:function(a){
return this.style=s({
fontFamily:'"Lucida Grande","Lucida Sans Unicode",Verdana,Arial,Helvetica,sans-serif',fontSize:"12px"}
,a)}
,isHidden:function(){
return!this.boxWrapper.getBBox().width}
,destroy:function(){
var a=this.defs;
this.box=null;
this.boxWrapper=this.boxWrapper.destroy();
Oa(this.gradients||{
}
);
this.gradients=null;
if(a)this.defs=a.destroy();
this.subPixelFix&&U(G,"resize",this.subPixelFix);
return this.alignedObjects=null}
,createElement:function(a){
var b=new this.Element;
b.init(this,a);
return b}
,draw:function(){
}
,buildText:function(a){
for(var b=a.element,c=this,d=c.forExport,e=o(a.textStr,"").toString().replace(/<(b|strong)>/g,'<span style="font-weight:bold">').replace(/<(i|em)>/g,'<span style="font-style:italic">').replace(/<a/g,"<span").replace(/<\/(b|strong|i|em|a)>/g,"</span>").split(/<br.*?>/g),f=b.childNodes,g=/<.*style="([^"]+)".*>/,h=/<.*href="(http[^"]+)".*>/,i=z(b,"x"),j=a.styles,k=a.textWidth,l=j&&j.lineHeight,m=f.length,n=function(a){
return l?x(l):c.fontMetrics(/(px|em)$/.test(a&&a.style.fontSize)?a.style.fontSize:j.fontSize||11).h}
;
m--;
)b.removeChild(f[m]);
k&&!a.added&&this.box.appendChild(b);
e[e.length-1]===""&&e.pop();
p(e,function(e,f){
var l,m=0,e=e.replace(/<span/g,"|||<span").replace(/<\/span>/g,"</span>|||");
l=e.split("|||");
p(l,function(e){
if(e!==""||l.length===1){
var q={
}
,o=y.createElementNS(Da,"tspan"),p;
g.test(e)&&(p=e.match(g)[1].replace(/(;
| |^)color([:])/,"$1fill$2"),z(o,"style",p));
h.test(e)&&!d&&(z(o,"onclick",'location.href="'+e.match(h)[1]+'"'),D(o,{
cursor:"pointer"}
));
e=(e.replace(/<(.|\n)*?>/g,"")||" ").replace(/<
/g,"<").replace(/>
/g,">");
if(e!==" "&&(o.appendChild(y.createTextNode(e)),m?q.dx=0:q.x=i,z(o,q),!m&&f&&(!X&&d&&D(o,{
display:"block"}
),z(o,"dy",n(o),hb&&o.offsetHeight)),b.appendChild(o),m++,k))for(var e=e.replace(/([^\^])-/g,"$1- ").split(" "),q=e.length>1&&j.whiteSpace!=="nowrap",r,t,s=a._clipHeight,A=[],v=n(),u=1;
q&&(e.length||A.length);
)delete a.bBox,r=a.getBBox(),t=r.width,!X&&c.forExport&&(t=c.measureSpanWidth(o.firstChild.data,a.styles)),r=t>k,!r||e.length===1?(e=A,A=[],e.length&&(u++,s&&u*v>s?(e=["..."],a.attr("title",a.textStr)):(o=y.createElementNS(Da,"tspan"),z(o,{
dy:v,x:i}
),p&&z(o,"style",p),b.appendChild(o),t>k&&(k=t)))):(o.removeChild(o.firstChild),A.unshift(e.pop())),e.length&&o.appendChild(y.createTextNode(e.join(" ").replace(/- /g,"-")))}
}
)}
)}
,button:function(a,b,c,d,e,f,g,h,i){
var j=this.label(a,b,c,i,null,null,null,null,"button"),k=0,l,m,n,q,o,p,a={
x1:0,y1:0,x2:0,y2:1}
,e=w({
"stroke-width":1,stroke:"#CCCCCC",fill:{
linearGradient:a,stops:[[0,"#FEFEFE"],[1,"#F6F6F6"]]}
,r:2,padding:5,style:{
color:"black"}
}
,e);
n=e.style;
delete e.style;
f=w(e,{
stroke:"#68A",fill:{
linearGradient:a,stops:[[0,"#FFF"],[1,"#ACF"]]}
}
,f);
q=f.style;
delete f.style;
g=w(e,{
stroke:"#68A",fill:{
linearGradient:a,stops:[[0,"#9BD"],[1,"#CDF"]]}
}
,g);
o=g.style;
delete g.style;
h=w(e,{
style:{
color:"#CCC"}
}
,h);
p=h.style;
delete h.style;
C(j.element,Aa?"mouseover":"mouseenter",function(){
k!==3&&j.attr(f).css(q)}
);
C(j.element,Aa?"mouseout":"mouseleave",function(){
k!==3&&(l=[e,f,g][k],m=[n,q,o][k],j.attr(l).css(m))}
);
j.setState=function(a){
(j.state=k=a)?a===2?j.attr(g).css(o):a===3&&j.attr(h).css(p):j.attr(e).css(n)}
;
return j.on("click",function(){
k!==3&&d.call(j)}
).attr(e).css(s({
cursor:"default"}
,n))}
,crispLine:function(a,b){
a[1]===a[4]&&(a[1]=a[4]=v(a[1])-b%2/2);
a[2]===a[5]&&(a[2]=a[5]=v(a[2])+b%2/2);
return a}
,path:function(a){
var b={
fill:O}
;
La(a)?b.d=a:$(a)&&s(b,a);
return this.createElement("path").attr(b)}
,circle:function(a,b,c){
a=$(a)?a:{
x:a,y:b,r:c}
;
return this.createElement("circle").attr(a)}
,arc:function(a,b,c,d,e,f){
if($(a))b=a.y,c=a.r,d=a.innerR,e=a.start,f=a.end,a=a.x;
a=this.symbol("arc",a||0,b||0,c||0,c||0,{
innerR:d||0,start:e||0,end:f||0}
);
a.r=c;
return a}
,rect:function(a,b,c,d,e,f){
var e=$(a)?a.r:e,g=this.createElement("rect"),a=$(a)?a:a===u?{
}
:{
x:a,y:b,width:t(c,0),height:t(d,0)}
;
if(f!==u)a.strokeWidth=f,a=g.crisp(a);
if(e)a.r=e;
return g.attr(a)}
,setSize:function(a,b,c){
var d=this.alignedObjects,e=d.length;
this.width=a;
this.height=b;
for(this.boxWrapper[o(c,!0)?"animate":"attr"]({
width:a,height:b}
);
e--;
)d[e].align()}
,g:function(a){
var b=this.createElement("g");
return r(a)?b.attr({
"class":"highcharts-"+a}
):b}
,image:function(a,b,c,d,e){
var f={
preserveAspectRatio:O}
;
arguments.length>1&&s(f,{
x:b,y:c,width:d,height:e}
);
f=this.createElement("image").attr(f);
f.element.setAttributeNS?f.element.setAttributeNS("http://www.w3.org/1999/xlink","href",a):f.element.setAttribute("hc-svg-href",a);
return f}
,symbol:function(a,b,c,d,e,f){
var g,h=this.symbols[a],h=h&&h(v(b),v(c),d,e,f),i=/^url\((.*?)\)$/,j,k;
if(h)g=this.path(h),s(g,{
symbolName:a,x:b,y:c,width:d,height:e}
),f&&s(g,f);
else if(i.test(a))k=function(a,b){
a.element&&(a.attr({
width:b[0],height:b[1]}
),a.alignByTranslate||a.translate(v((d-b[0])/2),v((e-b[1])/2)))}
,j=a.match(i)[1],a=Kb[j],g=this.image(j).attr({
x:b,y:c}
),g.isImg=!0,a?k(g,a):(g.attr({
width:0,height:0}
),V("img",{
onload:function(){
k(g,Kb[j]=[this.width,this.height])}
,src:j}
));
return g}
,symbols:{
circle:function(a,b,c,d){
var e=0.166*c;
return["M",a+c/2,b,"C",a+c+e,b,a+c+e,b+d,a+c/2,b+d,"C",a-e,b+d,a-e,b,a+c/2,b,"Z"]}
,square:function(a,b,c,d){
return["M",a,b,"L",a+c,b,a+c,b+d,a,b+d,"Z"]}
,triangle:function(a,b,c,d){
return["M",a+c/2,b,"L",a+c,b+d,a,b+d,"Z"]}
,"triangle-down":function(a,b,c,d){
return["M",a,b,"L",a+c,b,a+c/2,b+d,"Z"]}
,diamond:function(a,b,c,d){
return["M",a+c/2,b,"L",a+c,b+d/2,a+c/2,b+d,a,b+d/2,"Z"]}
,arc:function(a,b,c,d,e){
var f=e.start,c=e.r||c||d,g=e.end-0.001,d=e.innerR,h=e.open,i=W(f),j=ba(f),k=W(g),g=ba(g),e=e.end-f<la?0:1;
return["M",a+c*i,b+c*j,"A",c,c,0,e,1,a+c*k,b+c*g,h?"M":"L",a+d*k,b+d*g,"A",d,d,0,e,0,a+d*i,b+d*j,h?"":"Z"]}
}
,clipRect:function(a,b,c,d){
var e="highcharts-"+tb++,f=this.createElement("clipPath").attr({
id:e}
).add(this.defs),a=this.rect(a,b,c,d,0).add(f);
a.id=e;
a.clipPath=f;
return a}
,color:function(a,b,c){
var d=this,e,f=/^rgba/,g,h,i,j,k,l,m,n=[];
a&&a.linearGradient?g="linearGradient":a&&a.radialGradient&&(g="radialGradient");
if(g){
c=a[g];
h=d.gradients;
j=a.stops;
b=b.radialReference;
La(c)&&(a[g]=c={
x1:c[0],y1:c[1],x2:c[2],y2:c[3],gradientUnits:"userSpaceOnUse"}
);
g==="radialGradient"&&b&&!r(c.gradientUnits)&&(c=w(c,{
cx:b[0]-b[2]/2+c.cx*b[2],cy:b[1]-b[2]/2+c.cy*b[2],r:c.r*b[2],gradientUnits:"userSpaceOnUse"}
));
for(m in c)m!=="id"&&n.push(m,c[m]);
for(m in j)n.push(j[m]);
n=n.join(",");
h[n]?a=h[n].id:(c.id=a="highcharts-"+tb++,h[n]=i=d.createElement(g).attr(c).add(d.defs),i.stops=[],p(j,function(a){
f.test(a[1])?(e=wa(a[1]),k=e.get("rgb"),l=e.get("a")):(k=a[1],l=1);
a=d.createElement("stop").attr({
offset:a[0],"stop-color":k,"stop-opacity":l}
).add(i);
i.stops.push(a)}
));
return"url("+d.url+"#"+a+")"}
else return f.test(a)?(e=wa(a),z(b,c+"-opacity",e.get("a")),e.get("rgb")):(b.removeAttribute(c+"-opacity"),a)}
,text:function(a,b,c,d){
var e=ca||!X&&this.forExport;
if(d&&!this.forExport)return this.html(a,b,c);
b=v(o(b,0));
c=v(o(c,0));
a=this.createElement("text").attr({
x:b,y:c,text:a}
);
e&&a.css({
position:"absolute"}
);
a.x=b;
a.y=c;
return a}
,fontMetrics:function(a){
var a=a||this.style.fontSize,a=/px/.test(a)?x(a):/em/.test(a)?parseFloat(a)*12:12,a=a<24?a+4:v(a*1.2),b=v(a*0.8);
return{
h:a,b:b}
}
,label:function(a,b,c,d,e,f,g,h,i){
function j(){
var a,b;
a=q.element.style;
K=(Va===void 0||wb===void 0||n.styles.textAlign)&&q.textStr&&q.getBBox();
n.width=(Va||K.width||0)+2*P+kb;
n.height=(wb||K.height||0)+2*P;
xa=P+m.fontMetrics(a&&a.fontSize).b;
if(y){
if(!o)a=v(-t*P),b=h?-xa:0,n.box=o=d?m.symbol(d,a,b,n.width,n.height,A):m.rect(a,b,n.width,n.height,0,A[Lb]),o.attr("fill",O).add(n);
o.isImg||o.attr(w({
width:n.width,height:n.height}
,A));
A=null}
}
function k(){
var a=n.styles,a=a&&a.textAlign,b=kb+P*(1-t),c;
c=h?0:xa;
if(r(Va)&&K&&(a==="center"||a==="right"))b+={
center:0.5,right:1}
[a]*(Va-K.width);
(b!==q.x||c!==q.y)&&q.attr({
x:b,y:c}
);
q.x=b;
q.y=c}
function l(a,b){
o?o.attr(a,b):A[a]=b}
var m=this,n=m.g(i),q=m.text("",0,0,g).attr({
zIndex:1}
),o,K,t=0,P=3,kb=0,Va,wb,xb,yb,H=0,A={
}
,xa,g=n.attrSetters,y;
n.onAdd=function(){
q.add(n);
n.attr({
text:a,x:b,y:c}
);
o&&r(e)&&n.attr({
anchorX:e,anchorY:f}
)}
;
g.width=function(a){
Va=a;
return!1}
;
g.height=function(a){
wb=a;
return!1}
;
g.padding=function(a){
r(a)&&a!==P&&(P=a,k());
return!1}
;
g.paddingLeft=function(a){
r(a)&&a!==kb&&(kb=a,k());
return!1}
;
g.align=function(a){
t={
left:0,center:0.5,right:1}
[a];
return!1}
;
g.text=function(a,b){
q.attr(b,a);
j();
k();
return!1}
;
g[Lb]=function(a,b){
a&&(y=!0);
H=a%2/2;
l(b,a);
return!1}
;
g.stroke=g.fill=g.r=function(a,b){
b==="fill"&&a&&(y=!0);
l(b,a);
return!1}
;
g.anchorX=function(a,b){
e=a;
l(b,a+H-xb);
return!1}
;
g.anchorY=function(a,b){
f=a;
l(b,a-yb);
return!1}
;
g.x=function(a){
n.x=a;
a-=t*((Va||K.width)+P);
xb=v(a);
n.attr("translateX",xb);
return!1}
;
g.y=function(a){
yb=n.y=v(a);
n.attr("translateY",yb);
return!1}
;
var x=n.css;
return s(n,{
css:function(a){
if(a){
var b={
}
,a=w(a);
p("fontSize,fontWeight,fontFamily,color,lineHeight,width,textDecoration,textShadow".split(","),function(c){
a[c]!==u&&(b[c]=a[c],delete a[c])}
);
q.css(b)}
return x.call(n,a)}
,getBBox:function(){
return{
width:K.width+2*P,height:K.height+2*P,x:K.x-P,y:K.y-P}
}
,shadow:function(a){
o&&o.shadow(a);
return n}
,destroy:function(){
U(n.element,"mouseenter");
U(n.element,"mouseleave");
q&&(q=q.destroy());
o&&(o=o.destroy());
ta.prototype.destroy.call(n);
n=m=j=k=l=null}
}
)}
}
;
Za=pa;
s(ta.prototype,{
htmlCss:function(a){
var b=this.element;
if(b=a&&b.tagName==="SPAN"&&a.width)delete a.width,this.textWidth=b,this.updateTransform();
this.styles=s(this.styles,a);
D(this.element,a);
return this}
,htmlGetBBox:function(){
var a=this.element,b=this.bBox;
if(!b){
if(a.nodeName==="text")a.style.position="absolute";
b=this.bBox={
x:a.offsetLeft,y:a.offsetTop,width:a.offsetWidth,height:a.offsetHeight}
}
return b}
,htmlUpdateTransform:function(){
if(this.added){
var a=this.renderer,b=this.element,c=this.translateX||0,d=this.translateY||0,e=this.x||0,f=this.y||0,g=this.textAlign||"left",h={
left:0,center:0.5,right:1}
[g],i=this.shadows;
D(b,{
marginLeft:c,marginTop:d}
);
i&&p(i,function(a){
D(a,{
marginLeft:c+1,marginTop:d+1}
)}
);
this.inverted&&p(b.childNodes,function(c){
a.invertChild(c,b)}
);
if(b.tagName==="SPAN"){
var j=this.rotation,k,l=x(this.textWidth),m=[j,g,b.innerHTML,this.textWidth].join(",");
if(m!==this.cTT){
k=a.fontMetrics(b.style.fontSize).b;
r(j)&&this.setSpanRotation(j,h,k);
i=o(this.elemWidth,b.offsetWidth);
if(i>l&&/[ \-]/.test(b.textContent||b.innerText))D(b,{
width:l+"px",display:"block",whiteSpace:"normal"}
),i=l;
this.getSpanCorrection(i,k,h,j,g)}
D(b,{
left:e+(this.xCorr||0)+"px",top:f+(this.yCorr||0)+"px"}
);
if(hb)k=b.offsetHeight;
this.cTT=m}
}
else this.alignOnAdd=!0}
,setSpanRotation:function(a,b,c){
var d={
}
,e=Aa?"-ms-transform":hb?"-webkit-transform":Ta?"MozTransform":Ib?"-o-transform":"";
d[e]=d.transform="rotate("+a+"deg)";
d[e+(Ta?"Origin":"-origin")]=d.transformOrigin=b*100+"% "+c+"px";
D(this.element,d)}
,getSpanCorrection:function(a,b,c){
this.xCorr=-a*c;
this.yCorr=-b}
}
);
s(pa.prototype,{
html:function(a,b,c){
var d=this.createElement("span"),e=d.attrSetters,f=d.element,g=d.renderer;
e.text=function(a){
a!==f.innerHTML&&delete this.bBox;
f.innerHTML=this.textStr=a;
return!1}
;
e.x=e.y=e.align=e.rotation=function(a,b){
b==="align"&&(b="textAlign");
d[b]=a;
d.htmlUpdateTransform();
return!1}
;
d.attr({
text:a,x:v(b),y:v(c)}
).css({
position:"absolute",whiteSpace:"nowrap",fontFamily:this.style.fontFamily,fontSize:this.style.fontSize}
);
d.css=d.htmlCss;
if(g.isSVG)d.add=function(a){
var b,c=g.box.parentNode,e=[];
if(this.parentGroup=a){
if(b=a.div,!b){
for(;
a;
)e.push(a),a=a.parentGroup;
p(e.reverse(),function(a){
var d;
b=a.div=a.div||V(Ja,{
className:z(a.element,"class")}
,{
position:"absolute",left:(a.translateX||0)+"px",top:(a.translateY||0)+"px"}
,b||c);
d=b.style;
s(a.attrSetters,{
translateX:function(a){
d.left=a+"px"}
,translateY:function(a){
d.top=a+"px"}
,visibility:function(a,b){
d[b]=a}
}
)}
)}
}
else b=c;
b.appendChild(f);
d.added=!0;
d.alignOnAdd&&d.htmlUpdateTransform();
return d}
;
return d}
}
);
var da;
if(!X&&!ca){
Q.VMLElement=da={
init:function(a,b){
var c=["<",b,' filled="f" stroked="f"'],d=["position:","absolute",";
"],e=b===Ja;
(b==="shape"||e)&&d.push("left:0;
top:0;
width:1px;
height:1px;
");
d.push("visibility:",e?"hidden":"visible");
c.push(' style="',d.join(""),'"/>');
if(b)c=e||b==="span"||b==="img"?c.join(""):a.prepVML(c),this.element=V(c);
this.renderer=a;
this.attrSetters={
}
}
,add:function(a){
var b=this.renderer,c=this.element,d=b.box,d=a?a.element||a:d;
a&&a.inverted&&b.invertChild(c,d);
d.appendChild(c);
this.added=!0;
this.alignOnAdd&&!this.deferUpdateTransform&&this.updateTransform();
if(this.onAdd)this.onAdd();
return this}
,updateTransform:ta.prototype.htmlUpdateTransform,setSpanRotation:function(){
var a=this.rotation,b=W(a*Ca),c=ba(a*Ca);
D(this.element,{
filter:a?["progid:DXImageTransform.Microsoft.Matrix(M11=",b,",M12=",-c,",M21=",c,",M22=",b,",sizingMethod='auto expand')"].join(""):O}
)}
,getSpanCorrection:function(a,b,c,d,e){
var f=d?W(d*Ca):1,g=d?ba(d*Ca):0,h=o(this.elemHeight,this.element.offsetHeight),i;
this.xCorr=f<0&&-a;
this.yCorr=g<0&&-h;
i=f*g<0;
this.xCorr+=g*b*(i?1-c:c);
this.yCorr-=f*b*(d?i?c:1-c:1);
e&&e!=="left"&&(this.xCorr-=a*c*(f<0?-1:1),d&&(this.yCorr-=h*c*(g<0?-1:1)),D(this.element,{
textAlign:e}
))}
,pathToVML:function(a){
for(var b=a.length,c=[];
b--;
)if(ya(a[b]))c[b]=v(a[b]*10)-5;
else if(a[b]==="Z")c[b]="x";
else if(c[b]=a[b],a.isArc&&(a[b]==="wa"||a[b]==="at"))c[b+5]===c[b+7]&&(c[b+7]+=a[b+7]>a[b+5]?1:-1),c[b+6]===c[b+8]&&(c[b+8]+=a[b+8]>a[b+6]?1:-1);
return c.join(" ")||"x"}
,attr:function(a,b){
var c,d,e,f=this.element||{
}
,g=f.style,h=f.nodeName,i=this.renderer,j=this.symbolName,k,l=this.shadows,m,n=this.attrSetters,q=this;
ga(a)&&r(b)&&(c=a,a={
}
,a[c]=b);
if(ga(a))c=a,q=c==="strokeWidth"||c==="stroke-width"?this.strokeweight:this[c];
else for(c in a)if(d=a[c],m=!1,e=n[c]&&n[c].call(this,d,c),e!==!1&&d!==null){
e!==u&&(d=e);
if(j&&/^(x|y|r|start|end|width|height|innerR|anchorX|anchorY)/.test(c))k||(this.symbolAttr(a),k=!0),m=!0;
else if(c==="d"){
d=d||[];
this.d=d.join(" ");
f.path=d=this.pathToVML(d);
if(l)for(e=l.length;
e--;
)l[e].path=l[e].cutOff?this.cutOffPath(d,l[e].cutOff):d;
m=!0}
else if(c==="visibility"){
d==="inherit"&&(d="visible");
if(l)for(e=l.length;
e--;
)l[e].style[c]=d;
h==="DIV"&&(d=d==="hidden"?"-999em":0,gb||(g[c]=d?"visible":"hidden"),c="top");
g[c]=d;
m=!0}
else if(c==="zIndex")d&&(g[c]=d),m=!0;
else if(va(c,["x","y","width","height"])!==-1)this[c]=d,c==="x"||c==="y"?c={
x:"left",y:"top"}
[c]:d=t(0,d),this.updateClipping?(this[c]=d,this.updateClipping()):g[c]=d,m=!0;
else if(c==="class"&&h==="DIV")f.className=d;
else if(c==="stroke")d=i.color(d,f,c),c="strokecolor";
else if(c==="stroke-width"||c==="strokeWidth")f.stroked=d?!0:!1,c="strokeweight",this[c]=d,ya(d)&&(d+="px");
else if(c==="dashstyle")(f.getElementsByTagName("stroke")[0]||V(i.prepVML(["<stroke/>"]),null,null,f))[c]=d||"solid",this.dashstyle=d,m=!0;
else if(c==="fill")if(h==="SPAN")g.color=d;
else{
if(h!=="IMG")f.filled=d!==O?!0:!1,d=i.color(d,f,c,this),c="fillcolor"}
else if(c==="opacity")m=!0;
else if(h==="shape"&&c==="rotation")this[c]=f.style[c]=d,f.style.left=-v(ba(d*Ca)+1)+"px",f.style.top=v(W(d*Ca))+"px";
else if(c==="translateX"||c==="translateY"||c==="rotation")this[c]=d,this.updateTransform(),m=!0;
m||(gb?f[c]=d:z(f,c,d))}
return q}
,clip:function(a){
var b=this,c;
a?(c=a.members,ia(c,b),c.push(b),b.destroyClip=function(){
ia(c,b)}
,a=a.getCSS(b)):(b.destroyClip&&b.destroyClip(),a={
clip:gb?"inherit":"rect(auto)"}
);
return b.css(a)}
,css:ta.prototype.htmlCss,safeRemoveChild:function(a){
a.parentNode&&Pa(a)}
,destroy:function(){
this.destroyClip&&this.destroyClip();
return ta.prototype.destroy.apply(this)}
,on:function(a,b){
this.element["on"+a]=function(){
var a=G.event;
a.target=a.srcElement;
b(a)}
;
return this}
,cutOffPath:function(a,b){
var c,a=a.split(/[,]/);
c=a.length;
if(c===9||c===11)a[c-4]=a[c-2]=x(a[c-2])-10*b;
return a.join(" ")}
,shadow:function(a,b,c){
var d=[],e,f=this.element,g=this.renderer,h,i=f.style,j,k=f.path,l,m,n,q;
k&&typeof k.value!=="string"&&(k="x");
m=k;
if(a){
n=o(a.width,3);
q=(a.opacity||0.15)/n;
for(e=1;
e<=3;
e++){
l=n*2+1-2*e;
c&&(m=this.cutOffPath(k.value,l+0.5));
j=['<shape isShadow="true" strokeweight="',l,'" filled="false" path="',m,'" coordsize="10 10" style="',f.style.cssText,'" />'];
h=V(g.prepVML(j),null,{
left:x(i.left)+o(a.offsetX,1),top:x(i.top)+o(a.offsetY,1)}
);
if(c)h.cutOff=l+1;
j=['<stroke color="',a.color||"black",'" opacity="',q*e,'"/>'];
V(g.prepVML(j),null,null,h);
b?b.element.appendChild(h):f.parentNode.insertBefore(h,f);
d.push(h)}
this.shadows=d}
return this}
}
;
da=ja(ta,da);
var ea={
Element:da,isIE8:ua.indexOf("MSIE 8.0")>-1,init:function(a,b,c,d){
var e;
this.alignedObjects=[];
d=this.createElement(Ja).css(s(this.getStyle(d),{
position:"relative"}
));
e=d.element;
a.appendChild(d.element);
this.isVML=!0;
this.box=e;
this.boxWrapper=d;
this.cache={
}
;
this.setSize(b,c,!1);
if(!y.namespaces.hcv){
y.namespaces.add("hcv","urn:schemas-microsoft-com:vml");
try{
y.createStyleSheet().cssText="hcv\\:fill,hcv\\:path,hcv\\:shape,hcv\\:stroke{
behavior:url(#default#VML);
display:inline-block;
}
"}
catch(f){
y.styleSheets[0].cssText+="hcv\\:fill,hcv\\:path,hcv\\:shape,hcv\\:stroke{
behavior:url(#default#VML);
display:inline-block;
}
"}
}
}
,isHidden:function(){
return!this.box.offsetWidth}
,clipRect:function(a,b,c,d){
var e=this.createElement(),f=$(a);
return s(e,{
members:[],left:(f?a.x:a)+1,top:(f?a.y:b)+1,width:(f?a.width:c)-1,height:(f?a.height:d)-1,getCSS:function(a){
var b=a.element,c=b.nodeName,a=a.inverted,d=this.top-(c==="shape"?b.offsetTop:0),e=this.left,b=e+this.width,f=d+this.height,d={
clip:"rect("+v(a?e:d)+"px,"+v(a?f:b)+"px,"+v(a?b:f)+"px,"+v(a?d:e)+"px)"}
;
!a&&gb&&c==="DIV"&&s(d,{
width:b+"px",height:f+"px"}
);
return d}
,updateClipping:function(){
p(e.members,function(a){
a.css(e.getCSS(a))}
)}
}
)}
,color:function(a,b,c,d){
var e=this,f,g=/^rgba/,h,i,j=O;
a&&a.linearGradient?i="gradient":a&&a.radialGradient&&(i="pattern");
if(i){
var k,l,m=a.linearGradient||a.radialGradient,n,q,o,K,r,P="",a=a.stops,t,s=[],v=function(){
h=['<fill colors="'+s.join(",")+'" opacity="',o,'" o:opacity2="',q,'" type="',i,'" ',P,'focus="100%" method="any" />'];
V(e.prepVML(h),null,null,b)}
;
n=a[0];
t=a[a.length-1];
n[0]>0&&a.unshift([0,n[1]]);
t[0]<1&&a.push([1,t[1]]);
p(a,function(a,b){
g.test(a[1])?(f=wa(a[1]),k=f.get("rgb"),l=f.get("a")):(k=a[1],l=1);
s.push(a[0]*100+"% "+k);
b?(o=l,K=k):(q=l,r=k)}
);
if(c==="fill")if(i==="gradient")c=m.x1||m[0]||0,a=m.y1||m[1]||0,n=m.x2||m[2]||0,m=m.y2||m[3]||0,P='angle="'+(90-T.atan((m-a)/(n-c))*180/la)+'"',v();
else{
var j=m.r,u=j*2,y=j*2,w=m.cx,A=m.cy,xa=b.radialReference,x,j=function(){
xa&&(x=d.getBBox(),w+=(xa[0]-x.x)/x.width-0.5,A+=(xa[1]-x.y)/x.height-0.5,u*=xa[2]/x.width,y*=xa[2]/x.height);
P='src="'+L.global.VMLRadialGradientURL+'" size="'+u+","+y+'" origin="0.5,0.5" position="'+w+","+A+'" color2="'+r+'" ';
v()}
;
d.added?j():d.onAdd=j;
j=K}
else j=k}
else if(g.test(a)&&b.tagName!=="IMG")f=wa(a),h=["<",c,' opacity="',f.get("a"),'"/>'],V(this.prepVML(h),null,null,b),j=f.get("rgb");
else{
j=b.getElementsByTagName(c);
if(j.length)j[0].opacity=1,j[0].type="solid";
j=a}
return j}
,prepVML:function(a){
var b=this.isIE8,a=a.join("");
b?(a=a.replace("/>",' xmlns="urn:schemas-microsoft-com:vml" />'),a=a.indexOf('style="')===-1?a.replace("/>",' style="display:inline-block;
behavior:url(#default#VML);
" />'):a.replace('style="','style="display:inline-block;
behavior:url(#default#VML);
')):a=a.replace("<","<hcv:");
return a}
,text:pa.prototype.html,path:function(a){
var b={
coordsize:"10 10"}
;
La(a)?b.d=a:$(a)&&s(b,a);
return this.createElement("shape").attr(b)}
,circle:function(a,b,c){
var d=this.symbol("circle");
if($(a))c=a.r,b=a.y,a=a.x;
d.isCircle=!0;
d.r=c;
return d.attr({
x:a,y:b}
)}
,g:function(a){
var b;
a&&(b={
className:"highcharts-"+a,"class":"highcharts-"+a}
);
return this.createElement(Ja).attr(b)}
,image:function(a,b,c,d,e){
var f=this.createElement("img").attr({
src:a}
);
arguments.length>1&&f.attr({
x:b,y:c,width:d,height:e}
);
return f}
,createElement:function(a){
return a==="rect"?this.symbol(a):pa.prototype.createElement.call(this,a)}
,invertChild:function(a,b){
var c=this,d=b.style,e=a.tagName==="IMG"&&a.style;
D(a,{
flip:"x",left:x(d.width)-(e?x(e.top):1),top:x(d.height)-(e?x(e.left):1),rotation:-90}
);
p(a.childNodes,function(b){
c.invertChild(b,a)}
)}
,symbols:{
arc:function(a,b,c,d,e){
var f=e.start,g=e.end,h=e.r||c||d,c=e.innerR,d=W(f),i=ba(f),j=W(g),k=ba(g);
if(g-f===0)return["x"];
f=["wa",a-h,b-h,a+h,b+h,a+h*d,b+h*i,a+h*j,b+h*k];
e.open&&!c&&f.push("e","M",a,b);
f.push("at",a-c,b-c,a+c,b+c,a+c*j,b+c*k,a+c*d,b+c*i,"x","e");
f.isArc=!0;
return f}
,circle:function(a,b,c,d,e){
e&&(c=d=2*e.r);
e&&e.isCircle&&(a-=c/2,b-=d/2);
return["wa",a,b,a+c,b+d,a+c,b+d/2,a+c,b+d/2,"e"]}
,rect:function(a,b,c,d,e){
var f=a+c,g=b+d,h;
!r(e)||!e.r?f=pa.prototype.symbols.square.apply(0,arguments):(h=E(e.r,c,d),f=["M",a+h,b,"L",f-h,b,"wa",f-2*h,b,f,b+2*h,f-h,b,f,b+h,"L",f,g-h,"wa",f-2*h,g-2*h,f,g,f,g-h,f-h,g,"L",a+h,g,"wa",a,g-2*h,a+2*h,g,a+h,g,a,g-h,"L",a,b+h,"wa",a,b,a+2*h,b+2*h,a,b+h,a+h,b,"x","e"]);
return f}
}
}
;
Q.VMLRenderer=da=function(){
this.init.apply(this,arguments)}
;
da.prototype=w(pa.prototype,ea);
Za=da}
pa.prototype.measureSpanWidth=function(a,b){
var c=y.createElement("span"),d;
d=y.createTextNode(a);
c.appendChild(d);
D(c,b);
this.box.appendChild(c);
d=c.offsetWidth;
Pa(c);
return d}
;
var Mb;
if(ca)Q.CanVGRenderer=da=function(){
Da="http://www.w3.org/1999/xhtml"}
,da.prototype.symbols={
}
,Mb=function(){
function a(){
var a=b.length,d;
for(d=0;
d<a;
d++)b[d]();
b=[]}
var b=[];
return{
push:function(c,d){
b.length===0&&Qb(d,a);
b.push(c)}
}
}
(),Za=da;
Sa.prototype={
addLabel:function(){
var a=this.axis,b=a.options,c=a.chart,d=a.horiz,e=a.categories,f=a.names,g=this.pos,h=b.labels,i=a.tickPositions,d=d&&e&&!h.step&&!h.staggerLines&&!h.rotation&&c.plotWidth/i.length||!d&&(c.margin[3]||c.chartWidth*0.33),j=g===i[0],k=g===i[i.length-1],l,f=e?o(e[g],f[g],g):g,e=this.label,m=i.info;
a.isDatetimeAxis&&m&&(l=b.dateTimeLabelFormats[m.higherRanks[g]||m.unitName]);
this.isFirst=j;
this.isLast=k;
b=a.labelFormatter.call({
axis:a,chart:c,isFirst:j,isLast:k,dateTimeLabelFormat:l,value:a.isLog?aa(ha(f)):f}
);
g=d&&{
width:t(1,v(d-2*(h.padding||10)))+"px"}
;
g=s(g,h.style);
if(r(e))e&&e.attr({
text:b}
).css(g);
else{
l={
align:a.labelAlign}
;
if(ya(h.rotation))l.rotation=h.rotation;
if(d&&h.ellipsis)l._clipHeight=a.len/i.length;
this.label=r(b)&&h.enabled?c.renderer.text(b,0,0,h.useHTML).attr(l).css(g).add(a.labelGroup):null}
}
,getLabelSize:function(){
var a=this.label,b=this.axis;
return a?a.getBBox()[b.horiz?"height":"width"]:0}
,getLabelSides:function(){
var a=this.label.getBBox(),b=this.axis,c=b.horiz,d=b.options.labels,a=c?a.width:a.height,b=c?d.x-a*{
left:0,center:0.5,right:1}
[b.labelAlign]:0;
return[b,c?a+b:a]}
,handleOverflow:function(a,b){
var c=!0,d=this.axis,e=this.isFirst,f=this.isLast,g=d.horiz?b.x:b.y,h=d.reversed,i=d.tickPositions,j=this.getLabelSides(),k=j[0],j=j[1],l,m,n,q=this.label.line||0;
l=d.labelEdge;
m=d.justifyLabels&&(e||f);
l[q]===u||g+k>l[q]?l[q]=g+j:m||(c=!1);
if(m){
l=(m=d.justifyToPlot)?d.pos:0;
m=m?l+d.len:d.chart.chartWidth;
do a+=e?1:-1,n=d.ticks[i[a]];
while(i[a]&&(!n||n.label.line!==q));
d=n&&n.label.xy&&n.label.xy.x+n.getLabelSides()[e?0:1];
e&&!h||f&&h?g+k<l&&(g=l-k,n&&g+j>d&&(c=!1)):g+j>m&&(g=m-j,n&&g+k<d&&(c=!1));
b.x=g}
return c}
,getPosition:function(a,b,c,d){
var e=this.axis,f=e.chart,g=d&&f.oldChartHeight||f.chartHeight;
return{
x:a?e.translate(b+c,null,null,d)+e.transB:e.left+e.offset+(e.opposite?(d&&f.oldChartWidth||f.chartWidth)-e.right-e.left:0),y:a?g-e.bottom+e.offset-(e.opposite?e.height:0):g-e.translate(b+c,null,null,d)-e.transB}
}
,getLabelPosition:function(a,b,c,d,e,f,g,h){
var i=this.axis,j=i.transA,k=i.reversed,l=i.staggerLines,m=i.chart.renderer.fontMetrics(e.style.fontSize).b,n=e.rotation,a=a+e.x-(f&&d?f*j*(k?-1:1):0),b=b+e.y-(f&&!d?f*j*(k?1:-1):0);
n&&i.side===2&&(b-=m-m*W(n*Ca));
!r(e.y)&&!n&&(b+=m-c.getBBox().height/2);
if(l)c.line=g/(h||1)%l,b+=c.line*(i.labelOffset/l);
return{
x:a,y:b}
}
,getMarkPath:function(a,b,c,d,e,f){
return f.crispLine(["M",a,b,"L",a+(e?0:-c),b+(e?c:0)],d)}
,render:function(a,b,c){
var d=this.axis,e=d.options,f=d.chart.renderer,g=d.horiz,h=this.type,i=this.label,j=this.pos,k=e.labels,l=this.gridLine,m=h?h+"Grid":"grid",n=h?h+"Tick":"tick",q=e[m+"LineWidth"],p=e[m+"LineColor"],K=e[m+"LineDashStyle"],t=e[n+"Length"],m=e[n+"Width"]||0,r=e[n+"Color"],s=e[n+"Position"],n=this.mark,v=k.step,x=!0,y=d.tickmarkOffset,w=this.getPosition(g,j,y,b),H=w.x,w=w.y,A=g&&H===d.pos+d.len||!g&&w===d.pos?-1:1;
this.isActive=!0;
if(q){
j=d.getPlotLinePath(j+y,q*A,b,!0);
if(l===u){
l={
stroke:p,"stroke-width":q}
;
if(K)l.dashstyle=K;
if(!h)l.zIndex=1;
if(b)l.opacity=0;
this.gridLine=l=q?f.path(j).attr(l).add(d.gridGroup):null}
if(!b&&l&&j)l[this.isNew?"attr":"animate"]({
d:j,opacity:c}
)}
if(m&&t)s==="inside"&&(t=-t),d.opposite&&(t=-t),h=this.getMarkPath(H,w,t,m*A,g,f),n?n.animate({
d:h,opacity:c}
):this.mark=f.path(h).attr({
stroke:r,"stroke-width":m,opacity:c}
).add(d.axisGroup);
if(i&&!isNaN(H))i.xy=w=this.getLabelPosition(H,w,i,g,k,y,a,v),this.isFirst&&!this.isLast&&!o(e.showFirstLabel,1)||this.isLast&&!this.isFirst&&!o(e.showLastLabel,1)?x=!1:!d.isRadial&&!k.step&&!k.rotation&&!b&&c!==0&&(x=this.handleOverflow(a,w)),v&&a%v&&(x=!1),x&&!isNaN(w.y)?(w.opacity=c,i[this.isNew?"attr":"animate"](w),this.isNew=!1):i.attr("y",-9999)}
,destroy:function(){
Oa(this,this.axis)}
}
;
Q.PlotLineOrBand=function(a,b){
this.axis=a;
if(b)this.options=b,this.id=b.id}
;
Q.PlotLineOrBand.prototype={
render:function(){
var a=this,b=a.axis,c=b.horiz,d=(b.pointRange||0)/2,e=a.options,f=e.label,g=a.label,h=e.width,i=e.to,j=e.from,k=r(j)&&r(i),l=e.value,m=e.dashStyle,n=a.svgElem,q=[],p,K=e.color,s=e.zIndex,P=e.events,v=b.chart.renderer;
b.isLog&&(j=za(j),i=za(i),l=za(l));
if(h){
if(q=b.getPlotLinePath(l,h),d={
stroke:K,"stroke-width":h}
,m)d.dashstyle=m}
else if(k){
if(j=t(j,b.min-d),i=E(i,b.max+d),q=b.getPlotBandPath(j,i,e),d={
fill:K}
,e.borderWidth)d.stroke=e.borderColor,d["stroke-width"]=e.borderWidth}
else return;
if(r(s))d.zIndex=s;
if(n)if(q)n.animate({
d:q}
,null,n.onGetPath);
else{
if(n.hide(),n.onGetPath=function(){
n.show()}
,g)a.label=g=g.destroy()}
else if(q&&q.length&&(a.svgElem=n=v.path(q).attr(d).add(),P))for(p in e=function(b){
n.on(b,function(c){
P[b].apply(a,[c])}
)}
,P)e(p);
if(f&&r(f.text)&&q&&q.length&&b.width>0&&b.height>0){
f=w({
align:c&&k&&"center",x:c?!k&&4:10,verticalAlign:!c&&k&&"middle",y:c?k?16:10:k?6:-4,rotation:c&&!k&&90}
,f);
if(!g)a.label=g=v.text(f.text,0,0,f.useHTML).attr({
align:f.textAlign||f.align,rotation:f.rotation,zIndex:s}
).css(f.style).add();
b=[q[1],q[4],o(q[6],q[1])];
q=[q[2],q[5],o(q[7],q[2])];
c=Na(b);
k=Na(q);
g.align(f,!1,{
x:c,y:k,width:Ba(b)-c,height:Ba(q)-k}
);
g.show()}
else g&&g.hide();
return a}
,destroy:function(){
ia(this.axis.plotLinesAndBands,this);
delete this.axis;
Oa(this)}
}
;
ka.prototype={
defaultOptions:{
dateTimeLabelFormats:{
millisecond:"%H:%M:%S.%L",second:"%H:%M:%S",minute:"%H:%M",hour:"%H:%M",day:"%e. %b",week:"%e. %b",month:"%b '%y",year:"%Y"}
,endOnTick:!1,gridLineColor:"#C0C0C0",labels:F,lineColor:"#C0D0E0",lineWidth:1,minPadding:0.01,maxPadding:0.01,minorGridLineColor:"#E0E0E0",minorGridLineWidth:1,minorTickColor:"#A0A0A0",minorTickLength:2,minorTickPosition:"outside",startOfWeek:1,startOnTick:!1,tickColor:"#C0D0E0",tickLength:5,tickmarkPlacement:"between",tickPixelInterval:100,tickPosition:"outside",tickWidth:1,title:{
align:"middle",style:{
color:"#4d759e",fontWeight:"bold"}
}
,type:"linear"}
,defaultYAxisOptions:{
endOnTick:!0,gridLineWidth:1,tickPixelInterval:72,showLastLabel:!0,labels:{
x:-8,y:3}
,lineWidth:0,maxPadding:0.05,minPadding:0.05,startOnTick:!0,tickWidth:0,title:{
rotation:270,text:"Values"}
,stackLabels:{
enabled:!1,formatter:function(){
return Ga(this.total,-1)}
,style:F.style}
}
,defaultLeftAxisOptions:{
labels:{
x:-8,y:null}
,title:{
rotation:270}
}
,defaultRightAxisOptions:{
labels:{
x:8,y:null}
,title:{
rotation:90}
}
,defaultBottomAxisOptions:{
labels:{
x:0,y:14}
,title:{
rotation:0}
}
,defaultTopAxisOptions:{
labels:{
x:0,y:-5}
,title:{
rotation:0}
}
,init:function(a,b){
var c=b.isX;
this.horiz=a.inverted?!c:c;
this.coll=(this.isXAxis=c)?"xAxis":"yAxis";
this.opposite=b.opposite;
this.side=b.side||(this.horiz?this.opposite?0:2:this.opposite?1:3);
this.setOptions(b);
var d=this.options,e=d.type;
this.labelFormatter=d.labels.formatter||this.defaultLabelFormatter;
this.userOptions=b;
this.minPixelPadding=0;
this.chart=a;
this.reversed=d.reversed;
this.zoomEnabled=d.zoomEnabled!==!1;
this.categories=d.categories||e==="category";
this.names=[];
this.isLog=e==="logarithmic";
this.isDatetimeAxis=e==="datetime";
this.isLinked=r(d.linkedTo);
this.tickmarkOffset=this.categories&&d.tickmarkPlacement==="between"?0.5:0;
this.ticks={
}
;
this.labelEdge=[];
this.minorTicks={
}
;
this.plotLinesAndBands=[];
this.alternateBands={
}
;
this.len=0;
this.minRange=this.userMinRange=d.minRange||d.maxZoom;
this.range=d.range;
this.offset=d.offset||0;
this.stacks={
}
;
this.oldStacks={
}
;
this.min=this.max=null;
this.crosshair=o(d.crosshair,na(a.options.tooltip.crosshairs)[c?0:1],!1);
var f,d=this.options.events;
va(this,a.axes)===-1&&(c&&!this.isColorAxis?a.axes.splice(a.xAxis.length,0,this):a.axes.push(this),a[this.coll].push(this));
this.series=this.series||[];
if(a.inverted&&c&&this.reversed===u)this.reversed=!0;
this.removePlotLine=this.removePlotBand=this.removePlotBandOrLine;
for(f in d)C(this,f,d[f]);
if(this.isLog)this.val2lin=za,this.lin2val=ha}
,setOptions:function(a){
this.options=w(this.defaultOptions,this.isXAxis?{
}
:this.defaultYAxisOptions,[this.defaultTopAxisOptions,this.defaultRightAxisOptions,this.defaultBottomAxisOptions,this.defaultLeftAxisOptions][this.side],w(L[this.coll],a))}
,defaultLabelFormatter:function(){
var a=this.axis,b=this.value,c=a.categories,d=this.dateTimeLabelFormat,e=L.lang.numericSymbols,f=e&&e.length,g,h=a.options.labels.format,a=a.isLog?b:a.tickInterval;
if(h)g=Ia(h,this);
else if(c)g=b;
else if(d)g=bb(d,b);
else if(f&&a>=1E3)for(;
f--&&g===u;
)c=Math.pow(1E3,f+1),a>=c&&e[f]!==null&&(g=Ga(b/c,-1)+e[f]);
g===u&&(g=b>=1E4?Ga(b,0):Ga(b,-1,u,""));
return g}
,getSeriesExtremes:function(){
var a=this,b=a.chart;
a.hasVisibleSeries=!1;
a.dataMin=a.dataMax=null;
a.buildStacks&&a.buildStacks();
p(a.series,function(c){
if(c.visible||!b.options.chart.ignoreHiddenSeries){
var d;
d=c.options.threshold;
var e;
a.hasVisibleSeries=!0;
a.isLog&&d<=0&&(d=null);
if(a.isXAxis){
if(d=c.xData,d.length)a.dataMin=E(o(a.dataMin,d[0]),Na(d)),a.dataMax=t(o(a.dataMax,d[0]),Ba(d))}
else{
c.getExtremes();
e=c.dataMax;
c=c.dataMin;
if(r(c)&&r(e))a.dataMin=E(o(a.dataMin,c),c),a.dataMax=t(o(a.dataMax,e),e);
if(r(d))if(a.dataMin>=d)a.dataMin=d,a.ignoreMinPadding=!0;
else if(a.dataMax<d)a.dataMax=d,a.ignoreMaxPadding=!0}
}
}
)}
,translate:function(a,b,c,d,e,f){
var g=1,h=0,i=d?this.oldTransA:this.transA,d=d?this.oldMin:this.min,j=this.minPixelPadding,e=(this.options.ordinal||this.isLog&&e)&&this.lin2val;
if(!i)i=this.transA;
if(c)g*=-1,h=this.len;
this.reversed&&(g*=-1,h-=g*(this.sector||this.len));
b?(a=a*g+h,a-=j,a=a/i+d,e&&(a=this.lin2val(a))):(e&&(a=this.val2lin(a)),f==="between"&&(f=0.5),a=g*(a-d)*i+h+g*j+(ya(f)?i*f*this.pointRange:0));
return a}
,toPixels:function(a,b){
return this.translate(a,!1,!this.horiz,null,!0)+(b?0:this.pos)}
,toValue:function(a,b){
return this.translate(a-(b?0:this.pos),!0,!this.horiz,null,!0)}
,getPlotLinePath:function(a,b,c,d,e){
var f=this.chart,g=this.left,h=this.top,i,j,k=c&&f.oldChartHeight||f.chartHeight,l=c&&f.oldChartWidth||f.chartWidth,m;
i=this.transB;
e=o(e,this.translate(a,null,null,c));
a=c=v(e+i);
i=j=v(k-e-i);
if(isNaN(e))m=!0;
else if(this.horiz){
if(i=h,j=k-this.bottom,a<g||a>g+this.width)m=!0}
else if(a=g,c=l-this.right,i<h||i>h+this.height)m=!0;
return m&&!d?null:f.renderer.crispLine(["M",a,i,"L",c,j],b||1)}
,getLinearTickPositions:function(a,b,c){
for(var d,b=aa(S(b/a)*a),c=aa(Ka(c/a)*a),e=[];
b<=c;
){
e.push(b);
b=aa(b+a);
if(b===d)break;
d=b}
return e}
,getMinorTickPositions:function(){
var a=this.options,b=this.tickPositions,c=this.minorTickInterval,d=[],e;
if(this.isLog){
e=b.length;
for(a=1;
a<e;
a++)d=d.concat(this.getLogTickPositions(c,b[a-1],b[a],!0))}
else if(this.isDatetimeAxis&&a.minorTickInterval==="auto")d=d.concat(this.getTimeTicks(this.normalizeTimeTickInterval(c),this.min,this.max,a.startOfWeek)),d[0]<this.min&&d.shift();
else for(b=this.min+(b[0]-this.min)%c;
b<=this.max;
b+=c)d.push(b);
return d}
,adjustForMinRange:function(){
var a=this.options,b=this.min,c=this.max,d,e=this.dataMax-this.dataMin>=this.minRange,f,g,h,i,j;
if(this.isXAxis&&this.minRange===u&&!this.isLog)r(a.min)||r(a.max)?this.minRange=null:(p(this.series,function(a){
i=a.xData;
for(g=j=a.xIncrement?1:i.length-1;
g>0;
g--)if(h=i[g]-i[g-1],f===u||h<f)f=h}
),this.minRange=E(f*5,this.dataMax-this.dataMin));
if(c-b<this.minRange){
var k=this.minRange;
d=(k-c+b)/2;
d=[b-d,o(a.min,b-d)];
if(e)d[2]=this.dataMin;
b=Ba(d);
c=[b+k,o(a.max,b+k)];
if(e)c[2]=this.dataMax;
c=Na(c);
c-b<k&&(d[0]=c-k,d[1]=o(a.min,c-k),b=Ba(d))}
this.min=b;
this.max=c}
,setAxisTranslation:function(a){
var b=this,c=b.max-b.min,d=b.axisPointRange||0,e,f=0,g=0,h=b.linkedParent,i=!!b.categories,j=b.transA;
if(b.isXAxis||i||d)h?(f=h.minPointOffset,g=h.pointRangePadding):p(b.series,function(a){
var h=t(b.isXAxis?a.pointRange:b.axisPointRange||0,+i),j=a.options.pointPlacement,n=a.closestPointRange;
h>c&&(h=0);
d=t(d,h);
f=t(f,ga(j)?0:h/2);
g=t(g,j==="on"?0:h);
!a.noSharedTooltip&&r(n)&&(e=r(e)?E(e,n):n)}
),h=b.ordinalSlope&&e?b.ordinalSlope/e:1,b.minPointOffset=f*=h,b.pointRangePadding=g*=h,b.pointRange=E(d,c),b.closestPointRange=e;
if(a)b.oldTransA=j;
b.translationSlope=b.transA=j=b.len/(c+g||1);
b.transB=b.horiz?b.left:b.bottom;
b.minPixelPadding=j*f}
,setTickPositions:function(a){
var b=this,c=b.chart,d=b.options,e=b.isLog,f=b.isDatetimeAxis,g=b.isXAxis,h=b.isLinked,i=b.options.tickPositioner,j=d.maxPadding,k=d.minPadding,l=d.tickInterval,m=d.minTickInterval,n=d.tickPixelInterval,q,qa=b.categories;
h?(b.linkedParent=c[b.coll][d.linkedTo],c=b.linkedParent.getExtremes(),b.min=o(c.min,c.dataMin),b.max=o(c.max,c.dataMax),d.type!==b.linkedParent.options.type&&oa(11,1)):(b.min=o(b.userMin,d.min,b.dataMin),b.max=o(b.userMax,d.max,b.dataMax));
if(e)!a&&E(b.min,o(b.dataMin,b.min))<=0&&oa(10,1),b.min=aa(za(b.min)),b.max=aa(za(b.max));
if(b.range&&r(b.max))b.userMin=b.min=t(b.min,b.max-b.range),b.userMax=b.max,b.range=null;
b.beforePadding&&b.beforePadding();
b.adjustForMinRange();
if(!qa&&!b.axisPointRange&&!b.usePercentage&&!h&&r(b.min)&&r(b.max)&&(c=b.max-b.min)){
if(!r(d.min)&&!r(b.userMin)&&k&&(b.dataMin<0||!b.ignoreMinPadding))b.min-=c*k;
if(!r(d.max)&&!r(b.userMax)&&j&&(b.dataMax>0||!b.ignoreMaxPadding))b.max+=c*j}
b.min===b.max||b.min===void 0||b.max===void 0?b.tickInterval=1:h&&!l&&n===b.linkedParent.options.tickPixelInterval?b.tickInterval=b.linkedParent.tickInterval:(b.tickInterval=o(l,qa?1:(b.max-b.min)*n/t(b.len,n)),!r(l)&&b.len<n&&!this.isRadial&&!this.isLog&&!qa&&d.startOnTick&&d.endOnTick&&(q=!0,b.tickInterval/=4));
g&&!a&&p(b.series,function(a){
a.processData(b.min!==b.oldMin||b.max!==b.oldMax)}
);
b.setAxisTranslation(!0);
b.beforeSetTickPositions&&b.beforeSetTickPositions();
if(b.postProcessTickInterval)b.tickInterval=b.postProcessTickInterval(b.tickInterval);
if(b.pointRange)b.tickInterval=t(b.pointRange,b.tickInterval);
if(!l&&b.tickInterval<m)b.tickInterval=m;
if(!f&&!e&&!l)b.tickInterval=nb(b.tickInterval,null,mb(b.tickInterval),d);
b.minorTickInterval=d.minorTickInterval==="auto"&&b.tickInterval?b.tickInterval/5:d.minorTickInterval;
b.tickPositions=a=d.tickPositions?[].concat(d.tickPositions):i&&i.apply(b,[b.min,b.max]);
if(!a)!b.ordinalPositions&&(b.max-b.min)/b.tickInterval>t(2*b.len,200)&&oa(19,!0),a=f?b.getTimeTicks(b.normalizeTimeTickInterval(b.tickInterval,d.units),b.min,b.max,d.startOfWeek,b.ordinalPositions,b.closestPointRange,!0):e?b.getLogTickPositions(b.tickInterval,b.min,b.max):b.getLinearTickPositions(b.tickInterval,b.min,b.max),q&&a.splice(1,a.length-2),b.tickPositions=a;
if(!h)e=a[0],f=a[a.length-1],h=b.minPointOffset||0,d.startOnTick?b.min=e:b.min-h>e&&a.shift(),d.endOnTick?b.max=f:b.max+h<f&&a.pop(),a.length===1&&(d=N(b.max||1)*0.001,b.min-=d,b.max+=d)}
,setMaxTicks:function(){
var a=this.chart,b=a.maxTicks||{
}
,c=this.tickPositions,d=this._maxTicksKey=[this.coll,this.pos,this.len].join("-");
if(!this.isLinked&&!this.isDatetimeAxis&&c&&c.length>(b[d]||0)&&this.options.alignTicks!==!1)b[d]=c.length;
a.maxTicks=b}
,adjustTickAmount:function(){
var a=this._maxTicksKey,b=this.tickPositions,c=this.chart.maxTicks;
if(c&&c[a]&&!this.isDatetimeAxis&&!this.categories&&!this.isLinked&&this.options.alignTicks!==!1&&this.min!==u){
var d=this.tickAmount,e=b.length;
this.tickAmount=a=c[a];
if(e<a){
for(;
b.length<a;
)b.push(aa(b[b.length-1]+this.tickInterval));
this.transA*=(e-1)/(a-1);
this.max=b[b.length-1]}
if(r(d)&&a!==d)this.isDirty=!0}
}
,setScale:function(){
var a=this.stacks,b,c,d,e;
this.oldMin=this.min;
this.oldMax=this.max;
this.oldAxisLength=this.len;
this.setAxisSize();
e=this.len!==this.oldAxisLength;
p(this.series,function(a){
if(a.isDirtyData||a.isDirty||a.xAxis.isDirty)d=!0}
);
if(e||d||this.isLinked||this.forceRedraw||this.userMin!==this.oldUserMin||this.userMax!==this.oldUserMax){
if(!this.isXAxis)for(b in a)for(c in a[b])a[b][c].total=null,a[b][c].cum=0;
this.forceRedraw=!1;
this.getSeriesExtremes();
this.setTickPositions();
this.oldUserMin=this.userMin;
this.oldUserMax=this.userMax;
if(!this.isDirty)this.isDirty=e||this.min!==this.oldMin||this.max!==this.oldMax}
else if(!this.isXAxis){
if(this.oldStacks)a=this.stacks=this.oldStacks;
for(b in a)for(c in a[b])a[b][c].cum=a[b][c].total}
this.setMaxTicks()}
,setExtremes:function(a,b,c,d,e){
var f=this,g=f.chart,c=o(c,!0),e=s(e,{
min:a,max:b}
);
I(f,"setExtremes",e,function(){
f.userMin=a;
f.userMax=b;
f.eventArgs=e;
f.isDirtyExtremes=!0;
c&&g.redraw(d)}
)}
,zoom:function(a,b){
var c=this.dataMin,d=this.dataMax,e=this.options;
this.allowZoomOutside||(r(c)&&a<=E(c,o(e.min,c))&&(a=u),r(d)&&b>=t(d,o(e.max,d))&&(b=u));
this.displayBtn=a!==u||b!==u;
this.setExtremes(a,b,!1,u,{
trigger:"zoom"}
);
return!0}
,setAxisSize:function(){
var a=this.chart,b=this.options,c=b.offsetLeft||0,d=b.offsetRight||0,e=this.horiz,f,g;
this.left=g=o(b.left,a.plotLeft+c);
this.top=f=o(b.top,a.plotTop);
this.width=c=o(b.width,a.plotWidth-c+d);
this.height=b=o(b.height,a.plotHeight);
this.bottom=a.chartHeight-b-f;
this.right=a.chartWidth-c-g;
this.len=t(e?c:b,0);
this.pos=e?g:f}
,getExtremes:function(){
var a=this.isLog;
return{
min:a?aa(ha(this.min)):this.min,max:a?aa(ha(this.max)):this.max,dataMin:this.dataMin,dataMax:this.dataMax,userMin:this.userMin,userMax:this.userMax}
}
,getThreshold:function(a){
var b=this.isLog,c=b?ha(this.min):this.min,b=b?ha(this.max):this.max;
c>a||a===null?a=c:b<a&&(a=b);
return this.translate(a,0,1,0,1)}
,autoLabelAlign:function(a){
a=(o(a,0)-this.side*90+720)%360;
return a>15&&a<165?"right":a>195&&a<345?"left":"center"}
,getOffset:function(){
var a=this,b=a.chart,c=b.renderer,d=a.options,e=a.tickPositions,f=a.ticks,g=a.horiz,h=a.side,i=b.inverted?[1,0,3,2][h]:h,j,k=0,l,m=0,n=d.title,q=d.labels,qa=0,K=b.axisOffset,s=b.clipOffset,P=[-1,1,1,-1][h],v,w=1,x=o(q.maxStaggerLines,5),y,z,H,A;
a.hasData=j=a.hasVisibleSeries||r(a.min)&&r(a.max)&&!!e;
a.showAxis=b=j||o(d.showEmpty,!0);
a.staggerLines=a.horiz&&q.staggerLines;
if(!a.axisGroup)a.gridGroup=c.g("grid").attr({
zIndex:d.gridZIndex||1}
).add(),a.axisGroup=c.g("axis").attr({
zIndex:d.zIndex||2}
).add(),a.labelGroup=c.g("axis-labels").attr({
zIndex:q.zIndex||7}
).addClass("highcharts-"+a.coll.toLowerCase()+"-labels").add();
if(j||a.isLinked){
a.labelAlign=o(q.align||a.autoLabelAlign(q.rotation));
p(e,function(b){
f[b]?f[b].addLabel():f[b]=new Sa(a,b)}
);
if(a.horiz&&!a.staggerLines&&x&&!q.rotation){
for(v=a.reversed?[].concat(e).reverse():e;
w<x;
){
j=[];
y=!1;
for(q=0;
q<v.length;
q++)z=v[q],H=(H=f[z].label&&f[z].label.getBBox())?H.width:0,A=q%w,H&&(z=a.translate(z),j[A]!==u&&z<j[A]&&(y=!0),j[A]=z+H);
if(y)w++;
else break}
if(w>1)a.staggerLines=w}
p(e,function(b){
if(h===0||h===2||{
1:"left",3:"right"}
[h]===a.labelAlign)qa=t(f[b].getLabelSize(),qa)}
);
if(a.staggerLines)qa*=a.staggerLines,a.labelOffset=qa}
else for(v in f)f[v].destroy(),delete f[v];
if(n&&n.text&&n.enabled!==!1){
if(!a.axisTitle)a.axisTitle=c.text(n.text,0,0,n.useHTML).attr({
zIndex:7,rotation:n.rotation||0,align:n.textAlign||{
low:"left",middle:"center",high:"right"}
[n.align]}
).addClass("highcharts-"+this.coll.toLowerCase()+"-title").css(n.style).add(a.axisGroup),a.axisTitle.isNew=!0;
if(b)k=a.axisTitle.getBBox()[g?"height":"width"],m=o(n.margin,g?5:10),l=n.offset;
a.axisTitle[b?"show":"hide"]()}
a.offset=P*o(d.offset,K[h]);
a.axisTitleMargin=o(l,qa+m+(h!==2&&qa&&P*d.labels[g?"y":"x"]));
K[h]=t(K[h],a.axisTitleMargin+k+P*a.offset);
s[i]=t(s[i],S(d.lineWidth/2)*2)}
,getLinePath:function(a){
var b=this.chart,c=this.opposite,d=this.offset,e=this.horiz,f=this.left+(c?this.width:0)+d,d=b.chartHeight-this.bottom-(c?this.height:0)+d;
c&&(a*=-1);
return b.renderer.crispLine(["M",e?this.left:f,e?d:this.top,"L",e?b.chartWidth-this.right:f,e?d:b.chartHeight-this.bottom],a)}
,getTitlePosition:function(){
var a=this.horiz,b=this.left,c=this.top,d=this.len,e=this.options.title,f=a?b:c,g=this.opposite,h=this.offset,i=x(e.style.fontSize||12),d={
low:f+(a?0:d),middle:f+d/2,high:f+(a?d:0)}
[e.align],b=(a?c+this.height:b)+(a?1:-1)*(g?-1:1)*this.axisTitleMargin+(this.side===2?i:0);
return{
x:a?d:b+(g?this.width:0)+h+(e.x||0),y:a?b-(g?this.height:0)+h:d+(e.y||0)}
}
,render:function(){
var a=this,b=a.horiz,c=a.reversed,d=a.chart,e=d.renderer,f=a.options,g=a.isLog,h=a.isLinked,i=a.tickPositions,j,k=a.axisTitle,l=a.ticks,m=a.minorTicks,n=a.alternateBands,q=f.stackLabels,o=f.alternateGridColor,K=a.tickmarkOffset,t=f.lineWidth,v=d.hasRendered&&r(a.oldMin)&&!isNaN(a.oldMin),s=a.hasData,w=a.showAxis,x,y=f.labels.overflow,z=a.justifyLabels=b&&y!==!1,H;
a.labelEdge.length=0;
a.justifyToPlot=y==="justify";
p([l,m,n],function(a){
for(var b in a)a[b].isActive=!1}
);
if(s||h)if(a.minorTickInterval&&!a.categories&&p(a.getMinorTickPositions(),function(b){
m[b]||(m[b]=new Sa(a,b,"minor"));
v&&m[b].isNew&&m[b].render(null,!0);
m[b].render(null,!1,1)}
),i.length&&(j=i.slice(),(b&&c||!b&&!c)&&j.reverse(),z&&(j=j.slice(1).concat([j[0]])),p(j,function(b,c){
z&&(c=c===j.length-1?0:c+1);
if(!h||b>=a.min&&b<=a.max)l[b]||(l[b]=new Sa(a,b)),v&&l[b].isNew&&l[b].render(c,!0,0.1),l[b].render(c,!1,1)}
),K&&a.min===0&&(l[-1]||(l[-1]=new Sa(a,-1,null,!0)),l[-1].render(-1))),o&&p(i,function(b,c){
if(c%2===0&&b<a.max)n[b]||(n[b]=new Q.PlotLineOrBand(a)),x=b+K,H=i[c+1]!==u?i[c+1]+K:a.max,n[b].options={
from:g?ha(x):x,to:g?ha(H):H,color:o}
,n[b].render(),n[b].isActive=!0}
),!a._addedPlotLB)p((f.plotLines||[]).concat(f.plotBands||[]),function(b){
a.addPlotBandOrLine(b)}
),a._addedPlotLB=!0;
p([l,m,n],function(a){
var b,c,e=[],f=sa?sa.duration||500:0,g=function(){
for(c=e.length;
c--;
)a[e[c]]&&!a[e[c]].isActive&&(a[e[c]].destroy(),delete a[e[c]])}
;
for(b in a)if(!a[b].isActive)a[b].render(b,!1,0),a[b].isActive=!1,e.push(b);
a===n||!d.hasRendered||!f?g():f&&setTimeout(g,f)}
);
if(t)b=a.getLinePath(t),a.axisLine?a.axisLine.animate({
d:b}
):a.axisLine=e.path(b).attr({
stroke:f.lineColor,"stroke-width":t,zIndex:7}
).add(a.axisGroup),a.axisLine[w?"show":"hide"]();
if(k&&w)k[k.isNew?"attr":"animate"](a.getTitlePosition()),k.isNew=!1;
q&&q.enabled&&a.renderStackTotals();
a.isDirty=!1}
,redraw:function(){
var a=this.chart.pointer;
a&&a.reset(!0);
this.render();
p(this.plotLinesAndBands,function(a){
a.render()}
);
p(this.series,function(a){
a.isDirty=!0}
)}
,destroy:function(a){
var b=this,c=b.stacks,d,e=b.plotLinesAndBands;
a||U(b);
for(d in c)Oa(c[d]),c[d]=null;
p([b.ticks,b.minorTicks,b.alternateBands],function(a){
Oa(a)}
);
for(a=e.length;
a--;
)e[a].destroy();
p("stackTotalGroup,axisLine,axisTitle,axisGroup,cross,gridGroup,labelGroup".split(","),function(a){
b[a]&&(b[a]=b[a].destroy())}
);
this.cross&&this.cross.destroy()}
,drawCrosshair:function(a,b){
if(this.crosshair)if((r(b)||!o(this.crosshair.snap,!0))===!1)this.hideCrosshair();
else{
var c,d=this.crosshair,e=d.animation;
o(d.snap,!0)?r(b)&&(c=this.chart.inverted!=this.horiz?b.plotX:this.len-b.plotY):c=this.horiz?a.chartX-this.pos:this.len-a.chartY+this.pos;
c=this.isRadial?this.getPlotLinePath(this.isXAxis?b.x:o(b.stackY,b.y)):this.getPlotLinePath(null,null,null,null,c);
if(c===null)this.hideCrosshair();
else if(this.cross)this.cross.attr({
visibility:"visible"}
)[e?"animate":"attr"]({
d:c}
,e);
else{
e={
"stroke-width":d.width||1,stroke:d.color||"#C0C0C0",zIndex:d.zIndex||2}
;
if(d.dashStyle)e.dashstyle=d.dashStyle;
this.cross=this.chart.renderer.path(c).attr(e).add()}
}
}
,hideCrosshair:function(){
this.cross&&this.cross.hide()}
}
;
s(ka.prototype,{
getPlotBandPath:function(a,b){
var c=this.getPlotLinePath(b),d=this.getPlotLinePath(a);
d&&c?d.push(c[4],c[5],c[1],c[2]):d=null;
return d}
,addPlotBand:function(a){
this.addPlotBandOrLine(a,"plotBands")}
,addPlotLine:function(a){
this.addPlotBandOrLine(a,"plotLines")}
,addPlotBandOrLine:function(a,b){
var c=(new Q.PlotLineOrBand(this,a)).render(),d=this.userOptions;
c&&(b&&(d[b]=d[b]||[],d[b].push(a)),this.plotLinesAndBands.push(c));
return c}
,removePlotBandOrLine:function(a){
for(var b=this.plotLinesAndBands,c=this.options,d=this.userOptions,e=b.length;
e--;
)b[e].id===a&&b[e].destroy();
p([c.plotLines||[],d.plotLines||[],c.plotBands||[],d.plotBands||[]],function(b){
for(e=b.length;
e--;
)b[e].id===a&&ia(b,b[e])}
)}
}
);
ka.prototype.getTimeTicks=function(a,b,c,d){
var e=[],f={
}
,g=L.global.useUTC,h,i=new Date(b-Ra),j=a.unitRange,k=a.count;
if(r(b)){
j>=B.second&&(i.setMilliseconds(0),i.setSeconds(j>=B.minute?0:k*S(i.getSeconds()/k)));
if(j>=B.minute)i[Db](j>=B.hour?0:k*S(i[pb]()/k));
if(j>=B.hour)i[Eb](j>=B.day?0:k*S(i[qb]()/k));
if(j>=B.day)i[sb](j>=B.month?1:k*S(i[Xa]()/k));
j>=B.month&&(i[Fb](j>=B.year?0:k*S(i[eb]()/k)),h=i[fb]());
j>=B.year&&(h-=h%k,i[Gb](h));
if(j===B.week)i[sb](i[Xa]()-i[rb]()+o(d,1));
b=1;
Ra&&(i=new Date(i.getTime()+Ra));
h=i[fb]();
for(var d=i.getTime(),l=i[eb](),m=i[Xa](),n=g?Ra:(864E5+i.getTimezoneOffset()*6E4)%864E5;
d<c;
)e.push(d),j===B.year?d=db(h+b*k,0):j===B.month?d=db(h,l+b*k):!g&&(j===B.day||j===B.week)?d=db(h,l,m+b*k*(j===B.day?1:7)):d+=j*k,b++;
e.push(d);
p(vb(e,function(a){
return j<=B.hour&&a%B.day===n}
),function(a){
f[a]="day"}
)}
e.info=s(a,{
higherRanks:f,totalRange:j*k}
);
return e}
;
ka.prototype.normalizeTimeTickInterval=function(a,b){
var c=b||[["millisecond",[1,2,5,10,20,25,50,100,200,500]],["second",[1,2,5,10,15,30]],["minute",[1,2,5,10,15,30]],["hour",[1,2,3,4,6,8,12]],["day",[1,2]],["week",[1,2]],["month",[1,2,3,4,6]],["year",null]],d=c[c.length-1],e=B[d[0]],f=d[1],g;
for(g=0;
g<c.length;
g++)if(d=c[g],e=B[d[0]],f=d[1],c[g+1]&&a<=(e*f[f.length-1]+B[c[g+1][0]])/2)break;
e===B.year&&a<5*e&&(f=[1,2,5]);
c=nb(a/e,f,d[0]==="year"?t(mb(a/e),1):1);
return{
unitRange:e,count:c,unitName:d[0]}
}
;
ka.prototype.getLogTickPositions=function(a,b,c,d){
var e=this.options,f=this.len,g=[];
if(!d)this._minorAutoInterval=null;
if(a>=0.5)a=v(a),g=this.getLinearTickPositions(a,b,c);
else if(a>=0.08)for(var f=S(b),h,i,j,k,l,e=a>0.3?[1,2,4]:a>0.15?[1,2,4,6,8]:[1,2,3,4,5,6,7,8,9];
f<c+1&&!l;
f++){
i=e.length;
for(h=0;
h<i&&!l;
h++)j=za(ha(f)*e[h]),j>b&&(!d||k<=c)&&g.push(k),k>c&&(l=!0),k=j}
else if(b=ha(b),c=ha(c),a=e[d?"minorTickInterval":"tickInterval"],a=o(a==="auto"?null:a,this._minorAutoInterval,(c-b)*(e.tickPixelInterval/(d?5:1))/((d?f/this.tickPositions.length:f)||1)),a=nb(a,null,mb(a)),g=Ua(this.getLinearTickPositions(a,b,c),za),!d)this._minorAutoInterval=a/5;
if(!d)this.tickInterval=a;
return g}
;
var Nb=Q.Tooltip=function(){
this.init.apply(this,arguments)}
;
Nb.prototype={
init:function(a,b){
var c=b.borderWidth,d=b.style,e=x(d.padding);
this.chart=a;
this.options=b;
this.crosshairs=[];
this.now={
x:0,y:0}
;
this.isHidden=!0;
this.label=a.renderer.label("",0,0,b.shape,null,null,b.useHTML,null,"tooltip").attr({
padding:e,fill:b.backgroundColor,"stroke-width":c,r:b.borderRadius,zIndex:8}
).css(d).css({
padding:0}
).add().attr({
y:-9999}
);
ca||this.label.shadow(b.shadow);
this.shared=b.shared}
,destroy:function(){
if(this.label)this.label=this.label.destroy();
clearTimeout(this.hideTimer);
clearTimeout(this.tooltipTimeout)}
,move:function(a,b,c,d){
var e=this,f=e.now,g=e.options.animation!==!1&&!e.isHidden;
s(f,{
x:g?(2*f.x+a)/3:a,y:g?(f.y+b)/2:b,anchorX:g?(2*f.anchorX+c)/3:c,anchorY:g?(f.anchorY+d)/2:d}
);
e.label.attr(f);
if(g&&(N(a-f.x)>1||N(b-f.y)>1))clearTimeout(this.tooltipTimeout),this.tooltipTimeout=setTimeout(function(){
e&&e.move(a,b,c,d)}
,32)}
,hide:function(){
var a=this,b;
clearTimeout(this.hideTimer);
if(!this.isHidden)b=this.chart.hoverPoints,this.hideTimer=setTimeout(function(){
a.label.fadeOut();
a.isHidden=!0}
,o(this.options.hideDelay,500)),b&&p(b,function(a){
a.setState()}
),this.chart.hoverPoints=null}
,getAnchor:function(a,b){
var c,d=this.chart,e=d.inverted,f=d.plotTop,g=0,h=0,i,a=na(a);
c=a[0].tooltipPos;
this.followPointer&&b&&(b.chartX===u&&(b=d.pointer.normalize(b)),c=[b.chartX-d.plotLeft,b.chartY-f]);
c||(p(a,function(a){
i=a.series.yAxis;
g+=a.plotX;
h+=(a.plotLow?(a.plotLow+a.plotHigh)/2:a.plotY)+(!e&&i?i.top-f:0)}
),g/=a.length,h/=a.length,c=[e?d.plotWidth-h:g,this.shared&&!e&&a.length>1&&b?b.chartY-f:e?d.plotHeight-g:h]);
return Ua(c,v)}
,getPosition:function(a,b,c){
var d=this.chart,e=d.plotLeft,f=d.plotTop,g=d.plotWidth,h=d.plotHeight,i=o(this.options.distance,12),j=isNaN(c.plotX)?0:c.plotX,c=c.plotY,d=j+e+(d.inverted?i:-a-i),k=c-b+f+15,l;
d<7&&(d=e+t(j,0)+i);
d+a>e+g&&(d-=d+a-(e+g),k=c-b+f-i,l=!0);
k<f+5&&(k=f+5,l&&c>=k&&c<=k+b&&(k=c+f+i));
k+b>f+h&&(k=t(f,f+h-b-i));
return{
x:d,y:k}
}
,defaultFormatter:function(a){
var b=this.points||na(this),c=b[0].series,d;
d=[a.tooltipHeaderFormatter(b[0])];
p(b,function(a){
c=a.series;
d.push(c.tooltipFormatter&&c.tooltipFormatter(a)||a.point.tooltipFormatter(c.tooltipOptions.pointFormat))}
);
d.push(a.options.footerFormat||"");
return d.join("")}
,refresh:function(a,b){
var c=this.chart,d=this.label,e=this.options,f,g,h={
}
,i,j=[];
i=e.formatter||this.defaultFormatter;
var h=c.hoverPoints,k,l=this.shared;
clearTimeout(this.hideTimer);
this.followPointer=na(a)[0].series.tooltipOptions.followPointer;
g=this.getAnchor(a,b);
f=g[0];
g=g[1];
l&&(!a.series||!a.series.noSharedTooltip)?(c.hoverPoints=a,h&&p(h,function(a){
a.setState()}
),p(a,function(a){
a.setState("hover");
j.push(a.getLabelConfig())}
),h={
x:a[0].category,y:a[0].y}
,h.points=j,a=a[0]):h=a.getLabelConfig();
i=i.call(h,this);
h=a.series;
i===!1?this.hide():(this.isHidden&&(ab(d),d.attr("opacity",1).show()),d.attr({
text:i}
),k=e.borderColor||a.color||h.color||"#606060",d.attr({
stroke:k}
),this.updatePosition({
plotX:f,plotY:g}
),this.isHidden=!1);
I(c,"tooltipRefresh",{
text:i,x:f+c.plotLeft,y:g+c.plotTop,borderColor:k}
)}
,updatePosition:function(a){
var b=this.chart,c=this.label,c=(this.options.positioner||this.getPosition).call(this,c.width,c.height,a);
this.move(v(c.x),v(c.y),a.plotX+b.plotLeft,a.plotY+b.plotTop)}
,tooltipHeaderFormatter:function(a){
var b=a.series,c=b.tooltipOptions,d=c.dateTimeLabelFormats,e=c.xDateFormat,f=b.xAxis,g=f&&f.options.type==="datetime"&&ya(a.key),c=c.headerFormat,f=f&&f.closestPointRange,h;
if(g&&!e){
if(f)for(h in B){
if(B[h]>=f||B[h]<=B.day&&a.key%B[h]>0){
e=d[h];
break}
}
else e=d.day;
e=e||d.year}
g&&e&&(c=c.replace("{
point.key}
","{
point.key:"+e+"}
"));
return Ia(c,{
point:a,series:b}
)}
}
;
var fa;
$a=y.documentElement.ontouchstart!==u;
var Wa=Q.Pointer=function(a,b){
this.init(a,b)}
;
Wa.prototype={
init:function(a,b){
var c=b.chart,d=c.events,e=ca?"":c.zoomType,c=a.inverted,f;
this.options=b;
this.chart=a;
this.zoomX=f=/x/.test(e);
this.zoomY=e=/y/.test(e);
this.zoomHor=f&&!c||e&&c;
this.zoomVert=e&&!c||f&&c;
this.runChartClick=d&&!!d.click;
this.pinchDown=[];
this.lastValidTouch={
}
;
if(Q.Tooltip&&b.tooltip.enabled)a.tooltip=new Nb(a,b.tooltip);
this.setDOMEvents()}
,normalize:function(a,b){
var c,d,a=a||G.event,a=Sb(a);
if(!a.target)a.target=a.srcElement;
d=a.touches?a.touches.item(0):a;
if(!b)this.chartPosition=b=Rb(this.chart.container);
d.pageX===u?(c=t(a.x,a.clientX-b.left),d=a.y):(c=d.pageX-b.left,d=d.pageY-b.top);
return s(a,{
chartX:v(c),chartY:v(d)}
)}
,getCoordinates:function(a){
var b={
xAxis:[],yAxis:[]}
;
p(this.chart.axes,function(c){
b[c.isXAxis?"xAxis":"yAxis"].push({
axis:c,value:c.toValue(a[c.horiz?"chartX":"chartY"])}
)}
);
return b}
,getIndex:function(a){
var b=this.chart;
return b.inverted?b.plotHeight+b.plotTop-a.chartY:a.chartX-b.plotLeft}
,runPointActions:function(a){
var b=this.chart,c=b.series,d=b.tooltip,e,f,g=b.hoverPoint,h=b.hoverSeries,i,j,k=b.chartWidth,l=this.getIndex(a);
if(d&&this.options.tooltip.shared&&(!h||!h.noSharedTooltip)){
f=[];
i=c.length;
for(j=0;
j<i;
j++)if(c[j].visible&&c[j].options.enableMouseTracking!==!1&&!c[j].noSharedTooltip&&c[j].singularTooltips!==!0&&c[j].tooltipPoints.length&&(e=c[j].tooltipPoints[l])&&e.series)e._dist=N(l-e.clientX),k=E(k,e._dist),f.push(e);
for(i=f.length;
i--;
)f[i]._dist>k&&f.splice(i,1);
if(f.length&&f[0].clientX!==this.hoverX)d.refresh(f,a),this.hoverX=f[0].clientX}
if(h&&h.tracker&&(!d||!d.followPointer)){
if((e=h.tooltipPoints[l])&&e!==g)e.onMouseOver(a)}
else d&&d.followPointer&&!d.isHidden&&(c=d.getAnchor([{
}
],a),d.updatePosition({
plotX:c[0],plotY:c[1]}
));
if(d&&!this._onDocumentMouseMove)this._onDocumentMouseMove=function(a){
if(r(fa))Y[fa].pointer.onDocumentMouseMove(a)}
,C(y,"mousemove",this._onDocumentMouseMove);
p(b.axes,function(b){
b.drawCrosshair(a,o(e,g))}
)}
,reset:function(a){
var b=this.chart,c=b.hoverSeries,d=b.hoverPoint,e=b.tooltip,f=e&&e.shared?b.hoverPoints:d;
(a=a&&e&&f)&&na(f)[0].plotX===u&&(a=!1);
if(a)e.refresh(f),d&&d.setState(d.state,!0);
else{
if(d)d.onMouseOut();
if(c)c.onMouseOut();
e&&e.hide();
if(this._onDocumentMouseMove)U(y,"mousemove",this._onDocumentMouseMove),this._onDocumentMouseMove=null;
p(b.axes,function(a){
a.hideCrosshair()}
);
this.hoverX=null}
}
,scaleGroups:function(a,b){
var c=this.chart,d;
p(c.series,function(e){
d=a||e.getPlotBox();
e.xAxis&&e.xAxis.zoomEnabled&&(e.group.attr(d),e.markerGroup&&(e.markerGroup.attr(d),e.markerGroup.clip(b?c.clipRect:null)),e.dataLabelsGroup&&e.dataLabelsGroup.attr(d))}
);
c.clipRect.attr(b||c.clipBox)}
,dragStart:function(a){
var b=this.chart;
b.mouseIsDown=a.type;
b.cancelClick=!1;
b.mouseDownX=this.mouseDownX=a.chartX;
b.mouseDownY=this.mouseDownY=a.chartY}
,drag:function(a){
var b=this.chart,c=b.options.chart,d=a.chartX,e=a.chartY,f=this.zoomHor,g=this.zoomVert,h=b.plotLeft,i=b.plotTop,j=b.plotWidth,k=b.plotHeight,l,m=this.mouseDownX,n=this.mouseDownY;
d<h?d=h:d>h+j&&(d=h+j);
e<i?e=i:e>i+k&&(e=i+k);
this.hasDragged=Math.sqrt(Math.pow(m-d,2)+Math.pow(n-e,2));
if(this.hasDragged>10){
l=b.isInsidePlot(m-h,n-i);
if(b.hasCartesianSeries&&(this.zoomX||this.zoomY)&&l&&!this.selectionMarker)this.selectionMarker=b.renderer.rect(h,i,f?1:j,g?1:k,0).attr({
fill:c.selectionMarkerFill||"rgba(69,114,167,0.25)",zIndex:7}
).add();
this.selectionMarker&&f&&(d-=m,this.selectionMarker.attr({
width:N(d),x:(d>0?0:d)+m}
));
this.selectionMarker&&g&&(d=e-n,this.selectionMarker.attr({
height:N(d),y:(d>0?0:d)+n}
));
l&&!this.selectionMarker&&c.panning&&b.pan(a,c.panning)}
}
,drop:function(a){
var b=this.chart,c=this.hasPinched;
if(this.selectionMarker){
var d={
xAxis:[],yAxis:[],originalEvent:a.originalEvent||a}
,e=this.selectionMarker,f=e.x,g=e.y,h;
if(this.hasDragged||c)p(b.axes,function(a){
if(a.zoomEnabled){
var b=a.horiz,c=a.toValue(b?f:g),b=a.toValue(b?f+e.width:g+e.height);
!isNaN(c)&&!isNaN(b)&&(d[a.coll].push({
axis:a,min:E(c,b),max:t(c,b)}
),h=!0)}
}
),h&&I(b,"selection",d,function(a){
b.zoom(s(a,c?{
animation:!1}
:null))}
);
this.selectionMarker=this.selectionMarker.destroy();
c&&this.scaleGroups()}
if(b)D(b.container,{
cursor:b._cursor}
),b.cancelClick=this.hasDragged>10,b.mouseIsDown=this.hasDragged=this.hasPinched=!1,this.pinchDown=[]}
,onContainerMouseDown:function(a){
a=this.normalize(a);
a.preventDefault&&a.preventDefault();
this.dragStart(a)}
,onDocumentMouseUp:function(a){
r(fa)&&Y[fa].pointer.drop(a)}
,onDocumentMouseMove:function(a){
var b=this.chart,c=this.chartPosition,d=b.hoverSeries,a=this.normalize(a,c);
c&&d&&!this.inClass(a.target,"highcharts-tracker")&&!b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)&&this.reset()}
,onContainerMouseLeave:function(){
var a=Y[fa];
if(a)a.pointer.reset(),a.pointer.chartPosition=null;
fa=null}
,onContainerMouseMove:function(a){
var b=this.chart;
fa=b.index;
a=this.normalize(a);
b.mouseIsDown==="mousedown"&&this.drag(a);
(this.inClass(a.target,"highcharts-tracker")||b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop))&&!b.openMenu&&this.runPointActions(a)}
,inClass:function(a,b){
for(var c;
a;
){
if(c=z(a,"class"))if(c.indexOf(b)!==-1)return!0;
else if(c.indexOf("highcharts-container")!==-1)return!1;
a=a.parentNode}
}
,onTrackerMouseOut:function(a){
var b=this.chart.hoverSeries,c=(a=a.relatedTarget||a.toElement)&&a.point&&a.point.series;
if(b&&!b.options.stickyTracking&&!this.inClass(a,"highcharts-tooltip")&&c!==b)b.onMouseOut()}
,onContainerClick:function(a){
var b=this.chart,c=b.hoverPoint,d=b.plotLeft,e=b.plotTop,f=b.inverted,g,h,i,a=this.normalize(a);
a.cancelBubble=!0;
if(!b.cancelClick)c&&this.inClass(a.target,"highcharts-tracker")?(g=this.chartPosition,h=c.plotX,i=c.plotY,s(c,{
pageX:g.left+d+(f?b.plotWidth-i:h),pageY:g.top+e+(f?b.plotHeight-h:i)}
),I(c.series,"click",s(a,{
point:c}
)),b.hoverPoint&&c.firePointEvent("click",a)):(s(a,this.getCoordinates(a)),b.isInsidePlot(a.chartX-d,a.chartY-e)&&I(b,"click",a))}
,setDOMEvents:function(){
var a=this,b=a.chart.container;
b.onmousedown=function(b){
a.onContainerMouseDown(b)}
;
b.onmousemove=function(b){
a.onContainerMouseMove(b)}
;
b.onclick=function(b){
a.onContainerClick(b)}
;
C(b,"mouseleave",a.onContainerMouseLeave);
C(y,"mouseup",a.onDocumentMouseUp);
if($a)b.ontouchstart=function(b){
a.onContainerTouchStart(b)}
,b.ontouchmove=function(b){
a.onContainerTouchMove(b)}
,C(y,"touchend",a.onDocumentTouchEnd)}
,destroy:function(){
var a;
U(this.chart.container,"mouseleave",this.onContainerMouseLeave);
U(y,"mouseup",this.onDocumentMouseUp);
U(y,"touchend",this.onDocumentTouchEnd);
clearInterval(this.tooltipTimeout);
for(a in this)this[a]=null}
}
;
s(Q.Pointer.prototype,{
pinchTranslate:function(a,b,c,d,e,f,g,h){
a&&this.pinchTranslateDirection(!0,c,d,e,f,g,h);
b&&this.pinchTranslateDirection(!1,c,d,e,f,g,h)}
,pinchTranslateDirection:function(a,b,c,d,e,f,g,h){
var i=this.chart,j=a?"x":"y",k=a?"X":"Y",l="chart"+k,m=a?"width":"height",n=i["plot"+(a?"Left":"Top")],q,o,p=h||1,t=i.inverted,r=i.bounds[a?"h":"v"],v=b.length===1,s=b[0][l],u=c[0][l],w=!v&&b[1][l],x=!v&&c[1][l],y,c=function(){
!v&&N(s-w)>20&&(p=h||N(u-x)/N(s-w));
o=(n-u)/p+s;
q=i["plot"+(a?"Width":"Height")]/p}
;
c();
b=o;
b<r.min?(b=r.min,y=!0):b+q>r.max&&(b=r.max-q,y=!0);
y?(u-=0.8*(u-g[j][0]),v||(x-=0.8*(x-g[j][1])),c()):g[j]=[u,x];
t||(f[j]=o-n,f[m]=q);
f=t?1/p:p;
e[m]=q;
e[j]=b;
d[t?a?"scaleY":"scaleX":"scale"+k]=p;
d["translate"+k]=f*n+(u-f*s)}
,pinch:function(a){
var b=this,c=b.chart,d=b.pinchDown,e=c.tooltip&&c.tooltip.options.followTouchMove,f=a.touches,g=f.length,h=b.lastValidTouch,i=b.zoomHor||b.pinchHor,j=b.zoomVert||b.pinchVert,k=i||j,l=b.selectionMarker,m={
}
,n=g===1&&(b.inClass(a.target,"highcharts-tracker")&&c.runTrackerClick||c.runChartClick),q={
}
;
(k||e)&&!n&&a.preventDefault();
Ua(f,function(a){
return b.normalize(a)}
);
if(a.type==="touchstart")p(f,function(a,b){
d[b]={
chartX:a.chartX,chartY:a.chartY}
}
),h.x=[d[0].chartX,d[1]&&d[1].chartX],h.y=[d[0].chartY,d[1]&&d[1].chartY],p(c.axes,function(a){
if(a.zoomEnabled){
var b=c.bounds[a.horiz?"h":"v"],d=a.minPixelPadding,e=a.toPixels(a.dataMin),f=a.toPixels(a.dataMax),g=E(e,f),e=t(e,f);
b.min=E(a.pos,g-d);
b.max=t(a.pos+a.len,e+d)}
}
);
else if(d.length){
if(!l)b.selectionMarker=l=s({
destroy:Ea}
,c.plotBox);
b.pinchTranslate(i,j,d,f,m,l,q,h);
b.hasPinched=k;
b.scaleGroups(m,q);
!k&&e&&g===1&&this.runPointActions(b.normalize(a))}
}
,onContainerTouchStart:function(a){
var b=this.chart;
fa=b.index;
a.touches.length===1?(a=this.normalize(a),b.isInsidePlot(a.chartX-b.plotLeft,a.chartY-b.plotTop)?(this.runPointActions(a),this.pinch(a)):this.reset()):a.touches.length===2&&this.pinch(a)}
,onContainerTouchMove:function(a){
(a.touches.length===1||a.touches.length===2)&&this.pinch(a)}
,onDocumentTouchEnd:function(a){
r(fa)&&Y[fa].pointer.drop(a)}
}
);
if(G.PointerEvent||G.MSPointerEvent){
var ra={
}
,zb=!!G.PointerEvent,Wb=function(){
var a,b=[];
b.item=function(a){
return this[a]}
;
for(a in ra)ra.hasOwnProperty(a)&&b.push({
pageX:ra[a].pageX,pageY:ra[a].pageY,target:ra[a].target}
);
return b}
,Ab=function(a,b,c,d){
a=a.originalEvent||a;
if((a.pointerType==="touch"||a.pointerType===a.MSPOINTER_TYPE_TOUCH)&&Y[fa])d(a),d=Y[fa].pointer,d[b]({
type:c,target:a.currentTarget,preventDefault:Ea,touches:Wb()}
)}
;
s(Wa.prototype,{
onContainerPointerDown:function(a){
Ab(a,"onContainerTouchStart","touchstart",function(a){
ra[a.pointerId]={
pageX:a.pageX,pageY:a.pageY,target:a.currentTarget}
}
)}
,onContainerPointerMove:function(a){
Ab(a,"onContainerTouchMove","touchmove",function(a){
ra[a.pointerId]={
pageX:a.pageX,pageY:a.pageY}
;
if(!ra[a.pointerId].target)ra[a.pointerId].target=a.currentTarget}
)}
,onDocumentPointerUp:function(a){
Ab(a,"onContainerTouchEnd","touchend",function(a){
delete ra[a.pointerId]}
)}
,batchMSEvents:function(a){
a(this.chart.container,zb?"pointerdown":"MSPointerDown",this.onContainerPointerDown);
a(this.chart.container,zb?"pointermove":"MSPointerMove",this.onContainerPointerMove);
a(y,zb?"pointerup":"MSPointerUp",this.onDocumentPointerUp)}
}
);
Ma(Wa.prototype,"init",function(a,b,c){
D(b.container,{
"-ms-touch-action":O,"touch-action":O}
);
a.call(this,b,c)}
);
Ma(Wa.prototype,"setDOMEvents",function(a){
a.apply(this);
this.batchMSEvents(C)}
);
Ma(Wa.prototype,"destroy",function(a){
this.batchMSEvents(U);
a.call(this)}
)}
var lb=Q.Legend=function(a,b){
this.init(a,b)}
;
lb.prototype={
init:function(a,b){
var c=this,d=b.itemStyle,e=o(b.padding,8),f=b.itemMarginTop||0;
this.options=b;
if(b.enabled)c.baseline=x(d.fontSize)+3+f,c.itemStyle=d,c.itemHiddenStyle=w(d,b.itemHiddenStyle),c.itemMarginTop=f,c.padding=e,c.initialItemX=e,c.initialItemY=e-5,c.maxItemWidth=0,c.chart=a,c.itemHeight=0,c.lastLineHeight=0,c.symbolWidth=o(b.symbolWidth,16),c.pages=[],c.render(),C(c.chart,"endResize",function(){
c.positionCheckboxes()}
)}
,colorizeItem:function(a,b){
var c=this.options,d=a.legendItem,e=a.legendLine,f=a.legendSymbol,g=this.itemHiddenStyle.color,c=b?c.itemStyle.color:g,h=b?a.legendColor||a.color||"#CCC":g,g=a.options&&a.options.marker,i={
stroke:h,fill:h}
,j;
d&&d.css({
fill:c,color:c}
);
e&&e.attr({
stroke:h}
);
if(f){
if(g&&f.isMarker)for(j in g=a.convertAttribs(g),g)d=g[j],d!==u&&(i[j]=d);
f.attr(i)}
}
,positionItem:function(a){
var b=this.options,c=b.symbolPadding,b=!b.rtl,d=a._legendItemPos,e=d[0],d=d[1],f=a.checkbox;
a.legendGroup&&a.legendGroup.translate(b?e:this.legendWidth-e-2*c-4,d);
if(f)f.x=e,f.y=d}
,destroyItem:function(a){
var b=a.checkbox;
p(["legendItem","legendLine","legendSymbol","legendGroup"],function(b){
a[b]&&(a[b]=a[b].destroy())}
);
b&&Pa(a.checkbox)}
,destroy:function(){
var a=this.group,b=this.box;
if(b)this.box=b.destroy();
if(a)this.group=a.destroy()}
,positionCheckboxes:function(a){
var b=this.group.alignAttr,c,d=this.clipHeight||this.legendHeight;
if(b)c=b.translateY,p(this.allItems,function(e){
var f=e.checkbox,g;
f&&(g=c+f.y+(a||0)+3,D(f,{
left:b.translateX+e.legendItemWidth+f.x-20+"px",top:g+"px",display:g>c-6&&g<c+d-6?"":O}
))}
)}
,renderTitle:function(){
var a=this.padding,b=this.options.title,c=0;
if(b.text){
if(!this.title)this.title=this.chart.renderer.label(b.text,a-3,a-4,null,null,null,null,null,"legend-title").attr({
zIndex:1}
).css(b.style).add(this.group);
a=this.title.getBBox();
c=a.height;
this.offsetWidth=a.width;
this.contentGroup.attr({
translateY:c}
)}
this.titleHeight=c}
,renderItem:function(a){
var b=this.chart,c=b.renderer,d=this.options,e=d.layout==="horizontal",f=this.symbolWidth,g=d.symbolPadding,h=this.itemStyle,i=this.itemHiddenStyle,j=this.padding,k=e?o(d.itemDistance,8):0,l=!d.rtl,m=d.width,n=d.itemMarginBottom||0,q=this.itemMarginTop,p=this.initialItemX,r=a.legendItem,s=a.series&&a.series.drawLegendSymbol?a.series:a,u=s.options,u=this.createCheckboxForItem&&u&&u.showCheckbox,x=d.useHTML;
if(!r)a.legendGroup=c.g("legend-item").attr({
zIndex:1}
).add(this.scrollGroup),s.drawLegendSymbol(this,a),a.legendItem=r=c.text(d.labelFormat?Ia(d.labelFormat,a):d.labelFormatter.call(a),l?f+g:-g,this.baseline,x).css(w(a.visible?h:i)).attr({
align:l?"left":"right",zIndex:2}
).add(a.legendGroup),this.setItemEvents&&this.setItemEvents(a,r,x,h,i),this.colorizeItem(a,a.visible),u&&this.createCheckboxForItem(a);
c=r.getBBox();
f=a.legendItemWidth=d.itemWidth||a.legendItemWidth||f+g+c.width+k+(u?20:0);
this.itemHeight=g=v(a.legendItemHeight||c.height);
if(e&&this.itemX-p+f>(m||b.chartWidth-2*j-p-d.x))this.itemX=p,this.itemY+=q+this.lastLineHeight+n,this.lastLineHeight=0;
this.maxItemWidth=t(this.maxItemWidth,f);
this.lastItemY=q+this.itemY+n;
this.lastLineHeight=t(g,this.lastLineHeight);
a._legendItemPos=[this.itemX,this.itemY];
e?this.itemX+=f:(this.itemY+=q+g+n,this.lastLineHeight=g);
this.offsetWidth=m||t((e?this.itemX-p-k:f)+j,this.offsetWidth)}
,getAllItems:function(){
var a=[];
p(this.chart.series,function(b){
var c=b.options;
if(o(c.showInLegend,!r(c.linkedTo)?u:!1,!0))a=a.concat(b.legendItems||(c.legendType==="point"?b.data:b))}
);
return a}
,render:function(){
var a=this,b=a.chart,c=b.renderer,d=a.group,e,f,g,h,i=a.box,j=a.options,k=a.padding,l=j.borderWidth,m=j.backgroundColor;
a.itemX=a.initialItemX;
a.itemY=a.initialItemY;
a.offsetWidth=0;
a.lastItemY=0;
if(!d)a.group=d=c.g("legend").attr({
zIndex:7}
).add(),a.contentGroup=c.g().attr({
zIndex:1}
).add(d),a.scrollGroup=c.g().add(a.contentGroup);
a.renderTitle();
e=a.getAllItems();
ob(e,function(a,b){
return(a.options&&a.options.legendIndex||0)-(b.options&&b.options.legendIndex||0)}
);
j.reversed&&e.reverse();
a.allItems=e;
a.display=f=!!e.length;
p(e,function(b){
a.renderItem(b)}
);
g=j.width||a.offsetWidth;
h=a.lastItemY+a.lastLineHeight+a.titleHeight;
h=a.handleOverflow(h);
if(l||m){
g+=k;
h+=k;
if(i){
if(g>0&&h>0)i[i.isNew?"attr":"animate"](i.crisp({
width:g,height:h}
)),i.isNew=!1}
else a.box=i=c.rect(0,0,g,h,j.borderRadius,l||0).attr({
stroke:j.borderColor,"stroke-width":l||0,fill:m||O}
).add(d).shadow(j.shadow),i.isNew=!0;
i[f?"show":"hide"]()}
a.legendWidth=g;
a.legendHeight=h;
p(e,function(b){
a.positionItem(b)}
);
f&&d.align(s({
width:g,height:h}
,j),!0,"spacingBox");
b.isResizing||this.positionCheckboxes()}
,handleOverflow:function(a){
var b=this,c=this.chart,d=c.renderer,e=this.options,f=e.y,f=c.spacingBox.height+(e.verticalAlign==="top"?-f:f)-this.padding,g=e.maxHeight,h,i=this.clipRect,j=e.navigation,k=o(j.animation,!0),l=j.arrowSize||12,m=this.nav,n=this.pages,q,t=this.allItems;
e.layout==="horizontal"&&(f/=2);
g&&(f=E(f,g));
n.length=0;
if(a>f&&!e.useHTML){
this.clipHeight=h=f-20-this.titleHeight-this.padding;
this.currentPage=o(this.currentPage,1);
this.fullHeight=a;
p(t,function(a,b){
var c=a._legendItemPos[1],d=v(a.legendItem.getBBox().height),e=n.length;
if(!e||c-n[e-1]>h&&(q||c)!==n[e-1])n.push(q||c),e++;
b===t.length-1&&c+d-n[e-1]>h&&n.push(c);
c!==q&&(q=c)}
);
if(!i)i=b.clipRect=d.clipRect(0,this.padding,9999,0),b.contentGroup.clip(i);
i.attr({
height:h}
);
if(!m)this.nav=m=d.g().attr({
zIndex:1}
).add(this.group),this.up=d.symbol("triangle",0,0,l,l).on("click",function(){
b.scroll(-1,k)}
).add(m),this.pager=d.text("",15,10).css(j.style).add(m),this.down=d.symbol("triangle-down",0,0,l,l).on("click",function(){
b.scroll(1,k)}
).add(m);
b.scroll(0);
a=f}
else if(m)i.attr({
height:c.chartHeight}
),m.hide(),this.scrollGroup.attr({
translateY:1}
),this.clipHeight=0;
return a}
,scroll:function(a,b){
var c=this.pages,d=c.length,e=this.currentPage+a,f=this.clipHeight,g=this.options.navigation,h=g.activeColor,g=g.inactiveColor,i=this.pager,j=this.padding;
e>d&&(e=d);
if(e>0)b!==u&&Qa(b,this.chart),this.nav.attr({
translateX:j,translateY:f+this.padding+7+this.titleHeight,visibility:"visible"}
),this.up.attr({
fill:e===1?g:h}
).css({
cursor:e===1?"default":"pointer"}
),i.attr({
text:e+"/"+d}
),this.down.attr({
x:18+this.pager.getBBox().width,fill:e===d?g:h}
).css({
cursor:e===d?"default":"pointer"}
),c=-c[e-1]+this.initialItemY,this.scrollGroup.animate({
translateY:c}
),this.currentPage=e,this.positionCheckboxes(c)}
}
;
F=Q.LegendSymbolMixin={
drawRectangle:function(a,b){
var c=a.options.symbolHeight||12;
b.legendSymbol=this.chart.renderer.rect(0,a.baseline-5-c/2,a.symbolWidth,c,o(a.options.symbolRadius,2)).attr({
zIndex:3}
).add(b.legendGroup)}
,drawLineMarker:function(a){
var b=this.options,c=b.marker,d;
d=a.symbolWidth;
var e=this.chart.renderer,f=this.legendGroup,a=a.baseline-v(e.fontMetrics(a.options.itemStyle.fontSize).b*0.3),g;
if(b.lineWidth){
g={
"stroke-width":b.lineWidth}
;
if(b.dashStyle)g.dashstyle=b.dashStyle;
this.legendLine=e.path(["M",0,a,"L",d,a]).attr(g).add(f)}
if(c&&c.enabled)b=c.radius,this.legendSymbol=d=e.symbol(this.symbol,d/2-b,a-b,2*b,2*b).add(f),d.isMarker=!0}
}
;
(/Trident\/7\.0/.test(ua)||Ta)&&Ma(lb.prototype,"positionItem",function(a,b){
var c=this,d=function(){
b._legendItemPos&&a.call(c,b)}
;
c.chart.renderer.forExport?d():setTimeout(d)}
);
Ya.prototype={
init:function(a,b){
var c,d=a.series;
a.series=null;
c=w(L,a);
c.series=a.series=d;
this.userOptions=a;
d=c.chart;
this.margin=this.splashArray("margin",d);
this.spacing=this.splashArray("spacing",d);
var e=d.events;
this.bounds={
h:{
}
,v:{
}
}
;
this.callback=b;
this.isResizing=0;
this.options=c;
this.axes=[];
this.series=[];
this.hasCartesianSeries=d.showAxes;
var f=this,g;
f.index=Y.length;
Y.push(f);
d.reflow!==!1&&C(f,"load",function(){
f.initReflow()}
);
if(e)for(g in e)C(f,g,e[g]);
f.xAxis=[];
f.yAxis=[];
f.animation=ca?!1:o(d.animation,!0);
f.pointCount=0;
f.counters=new Bb;
f.firstRender()}
,initSeries:function(a){
var b=this.options.chart;
(b=J[a.type||b.type||b.defaultSeriesType])||oa(17,!0);
b=new b;
b.init(this,a);
return b}
,isInsidePlot:function(a,b,c){
var d=c?b:a,a=c?a:b;
return d>=0&&d<=this.plotWidth&&a>=0&&a<=this.plotHeight}
,adjustTickAmounts:function(){
this.options.chart.alignTicks!==!1&&p(this.axes,function(a){
a.adjustTickAmount()}
);
this.maxTicks=null}
,redraw:function(a){
var b=this.axes,c=this.series,d=this.pointer,e=this.legend,f=this.isDirtyLegend,g,h,i=this.isDirtyBox,j=c.length,k=j,l=this.renderer,m=l.isHidden(),n=[];
Qa(a,this);
m&&this.cloneRenderTo();
for(this.layOutTitles();
k--;
)if(a=c[k],a.options.stacking&&(g=!0,a.isDirty)){
h=!0;
break}
if(h)for(k=j;
k--;
)if(a=c[k],a.options.stacking)a.isDirty=!0;
p(c,function(a){
a.isDirty&&a.options.legendType==="point"&&(f=!0)}
);
if(f&&e.options.enabled)e.render(),this.isDirtyLegend=!1;
g&&this.getStacks();
if(this.hasCartesianSeries){
if(!this.isResizing)this.maxTicks=null,p(b,function(a){
a.setScale()}
);
this.adjustTickAmounts();
this.getMargins();
p(b,function(a){
a.isDirty&&(i=!0)}
);
p(b,function(a){
if(a.isDirtyExtremes)a.isDirtyExtremes=!1,n.push(function(){
I(a,"afterSetExtremes",s(a.eventArgs,a.getExtremes()));
delete a.eventArgs}
);
(i||g)&&a.redraw()}
)}
i&&this.drawChartBox();
p(c,function(a){
a.isDirty&&a.visible&&(!a.isCartesian||a.xAxis)&&a.redraw()}
);
d&&d.reset(!0);
l.draw();
I(this,"redraw");
m&&this.cloneRenderTo(!0);
p(n,function(a){
a.call()}
)}
,get:function(a){
var b=this.axes,c=this.series,d,e;
for(d=0;
d<b.length;
d++)if(b[d].options.id===a)return b[d];
for(d=0;
d<c.length;
d++)if(c[d].options.id===a)return c[d];
for(d=0;
d<c.length;
d++){
e=c[d].points||[];
for(b=0;
b<e.length;
b++)if(e[b].id===a)return e[b]}
return null}
,getAxes:function(){
var a=this,b=this.options,c=b.xAxis=na(b.xAxis||{
}
),b=b.yAxis=na(b.yAxis||{
}
);
p(c,function(a,b){
a.index=b;
a.isX=!0}
);
p(b,function(a,b){
a.index=b}
);
c=c.concat(b);
p(c,function(b){
new ka(a,b)}
);
a.adjustTickAmounts()}
,getSelectedPoints:function(){
var a=[];
p(this.series,function(b){
a=a.concat(vb(b.points||[],function(a){
return a.selected}
))}
);
return a}
,getSelectedSeries:function(){
return vb(this.series,function(a){
return a.selected}
)}
,getStacks:function(){
var a=this;
p(a.yAxis,function(a){
if(a.stacks&&a.hasVisibleSeries)a.oldStacks=a.stacks}
);
p(a.series,function(b){
if(b.options.stacking&&(b.visible===!0||a.options.chart.ignoreHiddenSeries===!1))b.stackKey=b.type+o(b.options.stack,"")}
)}
,setTitle:function(a,b,c){
var g;
var d=this,e=d.options,f;
f=e.title=w(e.title,a);
g=e.subtitle=w(e.subtitle,b),e=g;
p([["title",a,f],["subtitle",b,e]],function(a){
var b=a[0],c=d[b],e=a[1],a=a[2];
c&&e&&(d[b]=c=c.destroy());
a&&a.text&&!c&&(d[b]=d.renderer.text(a.text,0,0,a.useHTML).attr({
align:a.align,"class":"highcharts-"+b,zIndex:a.zIndex||4}
).css(a.style).add())}
);
d.layOutTitles(c)}
,layOutTitles:function(a){
var b=0,c=this.title,d=this.subtitle,e=this.options,f=e.title,e=e.subtitle,g=this.spacingBox.width-44;
if(c&&(c.css({
width:(f.width||g)+"px"}
).align(s({
y:15}
,f),!1,"spacingBox"),!f.floating&&!f.verticalAlign))b=c.getBBox().height,b>=18&&b<=25&&(b=15);
d&&(d.css({
width:(e.width||g)+"px"}
).align(s({
y:b+f.margin}
,e),!1,"spacingBox"),!e.floating&&!e.verticalAlign&&(b=Ka(b+d.getBBox().height)));
c=this.titleOffset!==b;
this.titleOffset=b;
if(!this.isDirtyBox&&c)this.isDirtyBox=c,this.hasRendered&&o(a,!0)&&this.isDirtyBox&&this.redraw()}
,getChartSize:function(){
var a=this.options.chart,b=a.width,a=a.height,c=this.renderToClone||this.renderTo;
if(!r(b))this.containerWidth=ib(c,"width");
if(!r(a))this.containerHeight=ib(c,"height");
this.chartWidth=t(0,b||this.containerWidth||600);
this.chartHeight=t(0,o(a,this.containerHeight>19?this.containerHeight:400))}
,cloneRenderTo:function(a){
var b=this.renderToClone,c=this.container;
a?b&&(this.renderTo.appendChild(c),Pa(b),delete this.renderToClone):(c&&c.parentNode===this.renderTo&&this.renderTo.removeChild(c),this.renderToClone=b=this.renderTo.cloneNode(0),D(b,{
position:"absolute",top:"-9999px",display:"block"}
),b.style.setProperty&&b.style.setProperty("display","block","important"),y.body.appendChild(b),c&&b.appendChild(c))}
,getContainer:function(){
var a,b=this.options.chart,c,d,e;
this.renderTo=a=b.renderTo;
e="highcharts-"+tb++;
if(ga(a))this.renderTo=a=y.getElementById(a);
a||oa(13,!0);
c=x(z(a,"data-highcharts-chart"));
!isNaN(c)&&Y[c]&&Y[c].hasRendered&&Y[c].destroy();
z(a,"data-highcharts-chart",this.index);
a.innerHTML="";
!b.skipClone&&!a.offsetWidth&&this.cloneRenderTo();
this.getChartSize();
c=this.chartWidth;
d=this.chartHeight;
this.container=a=V(Ja,{
className:"highcharts-container"+(b.className?" "+b.className:""),id:e}
,s({
position:"relative",overflow:"hidden",width:c+"px",height:d+"px",textAlign:"left",lineHeight:"normal",zIndex:0,"-webkit-tap-highlight-color":"rgba(0,0,0,0)"}
,b.style),this.renderToClone||a);
this._cursor=a.style.cursor;
this.renderer=b.forExport?new pa(a,c,d,b.style,!0):new Za(a,c,d,b.style);
ca&&this.renderer.create(this,a,c,d)}
,getMargins:function(){
var a=this.spacing,b,c=this.legend,d=this.margin,e=this.options.legend,f=o(e.margin,10),g=e.x,h=e.y,i=e.align,j=e.verticalAlign,k=this.titleOffset;
this.resetMargins();
b=this.axisOffset;
if(k&&!r(d[0]))this.plotTop=t(this.plotTop,k+this.options.title.margin+a[0]);
if(c.display&&!e.floating)if(i==="right"){
if(!r(d[1]))this.marginRight=t(this.marginRight,c.legendWidth-g+f+a[1])}
else if(i==="left"){
if(!r(d[3]))this.plotLeft=t(this.plotLeft,c.legendWidth+g+f+a[3])}
else if(j==="top"){
if(!r(d[0]))this.plotTop=t(this.plotTop,c.legendHeight+h+f+a[0])}
else if(j==="bottom"&&!r(d[2]))this.marginBottom=t(this.marginBottom,c.legendHeight-h+f+a[2]);
this.extraBottomMargin&&(this.marginBottom+=this.extraBottomMargin);
this.extraTopMargin&&(this.plotTop+=this.extraTopMargin);
this.hasCartesianSeries&&p(this.axes,function(a){
a.getOffset()}
);
r(d[3])||(this.plotLeft+=b[3]);
r(d[0])||(this.plotTop+=b[0]);
r(d[2])||(this.marginBottom+=b[2]);
r(d[1])||(this.marginRight+=b[1]);
this.setChartSize()}
,reflow:function(a){
var b=this,c=b.options.chart,d=b.renderTo,e=c.width||ib(d,"width"),f=c.height||ib(d,"height"),c=a?a.target:G,d=function(){
if(b.container)b.setSize(e,f,!1),b.hasUserSize=null}
;
if(!b.hasUserSize&&e&&f&&(c===G||c===y)){
if(e!==b.containerWidth||f!==b.containerHeight)clearTimeout(b.reflowTimeout),a?b.reflowTimeout=setTimeout(d,100):d();
b.containerWidth=e;
b.containerHeight=f}
}
,initReflow:function(){
var a=this,b=function(b){
a.reflow(b)}
;
C(G,"resize",b);
C(a,"destroy",function(){
U(G,"resize",b)}
)}
,setSize:function(a,b,c){
var d=this,e,f,g;
d.isResizing+=1;
g=function(){
d&&I(d,"endResize",null,function(){
d.isResizing-=1}
)}
;
Qa(c,d);
d.oldChartHeight=d.chartHeight;
d.oldChartWidth=d.chartWidth;
if(r(a))d.chartWidth=e=t(0,v(a)),d.hasUserSize=!!e;
if(r(b))d.chartHeight=f=t(0,v(b));
(sa?jb:D)(d.container,{
width:e+"px",height:f+"px"}
,sa);
d.setChartSize(!0);
d.renderer.setSize(e,f,c);
d.maxTicks=null;
p(d.axes,function(a){
a.isDirty=!0;
a.setScale()}
);
p(d.series,function(a){
a.isDirty=!0}
);
d.isDirtyLegend=!0;
d.isDirtyBox=!0;
d.getMargins();
d.redraw(c);
d.oldChartHeight=null;
I(d,"resize");
sa===!1?g():setTimeout(g,sa&&sa.duration||500)}
,setChartSize:function(a){
var b=this.inverted,c=this.renderer,d=this.chartWidth,e=this.chartHeight,f=this.options.chart,g=this.spacing,h=this.clipOffset,i,j,k,l;
this.plotLeft=i=v(this.plotLeft);
this.plotTop=j=v(this.plotTop);
this.plotWidth=k=t(0,v(d-i-this.marginRight));
this.plotHeight=l=t(0,v(e-j-this.marginBottom));
this.plotSizeX=b?l:k;
this.plotSizeY=b?k:l;
this.plotBorderWidth=f.plotBorderWidth||0;
this.spacingBox=c.spacingBox={
x:g[3],y:g[0],width:d-g[3]-g[1],height:e-g[0]-g[2]}
;
this.plotBox=c.plotBox={
x:i,y:j,width:k,height:l}
;
d=2*S(this.plotBorderWidth/2);
b=Ka(t(d,h[3])/2);
c=Ka(t(d,h[0])/2);
this.clipBox={
x:b,y:c,width:S(this.plotSizeX-t(d,h[1])/2-b),height:S(this.plotSizeY-t(d,h[2])/2-c)}
;
a||p(this.axes,function(a){
a.setAxisSize();
a.setAxisTranslation()}
)}
,resetMargins:function(){
var a=this.spacing,b=this.margin;
this.plotTop=o(b[0],a[0]);
this.marginRight=o(b[1],a[1]);
this.marginBottom=o(b[2],a[2]);
this.plotLeft=o(b[3],a[3]);
this.axisOffset=[0,0,0,0];
this.clipOffset=[0,0,0,0]}
,drawChartBox:function(){
var a=this.options.chart,b=this.renderer,c=this.chartWidth,d=this.chartHeight,e=this.chartBackground,f=this.plotBackground,g=this.plotBorder,h=this.plotBGImage,i=a.borderWidth||0,j=a.backgroundColor,k=a.plotBackgroundColor,l=a.plotBackgroundImage,m=a.plotBorderWidth||0,n,q=this.plotLeft,o=this.plotTop,p=this.plotWidth,t=this.plotHeight,r=this.plotBox,s=this.clipRect,v=this.clipBox;
n=i+(a.shadow?8:0);
if(i||j)if(e)e.animate(e.crisp({
width:c-n,height:d-n}
));
else{
e={
fill:j||O}
;
if(i)e.stroke=a.borderColor,e["stroke-width"]=i;
this.chartBackground=b.rect(n/2,n/2,c-n,d-n,a.borderRadius,i).attr(e).addClass("highcharts-background").add().shadow(a.shadow)}
if(k)f?f.animate(r):this.plotBackground=b.rect(q,o,p,t,0).attr({
fill:k}
).add().shadow(a.plotShadow);
if(l)h?h.animate(r):this.plotBGImage=b.image(l,q,o,p,t).add();
s?s.animate({
width:v.width,height:v.height}
):this.clipRect=b.clipRect(v);
if(m)g?g.animate(g.crisp({
x:q,y:o,width:p,height:t}
)):this.plotBorder=b.rect(q,o,p,t,0,-m).attr({
stroke:a.plotBorderColor,"stroke-width":m,fill:O,zIndex:1}
).add();
this.isDirtyBox=!1}
,propFromSeries:function(){
var a=this,b=a.options.chart,c,d=a.options.series,e,f;
p(["inverted","angular","polar"],function(g){
c=J[b.type||b.defaultSeriesType];
f=a[g]||b[g]||c&&c.prototype[g];
for(e=d&&d.length;
!f&&e--;
)(c=J[d[e].type])&&c.prototype[g]&&(f=!0);
a[g]=f}
)}
,linkSeries:function(){
var a=this,b=a.series;
p(b,function(a){
a.linkedSeries.length=0}
);
p(b,function(b){
var d=b.options.linkedTo;
if(ga(d)&&(d=d===":previous"?a.series[b.index-1]:a.get(d)))d.linkedSeries.push(b),b.linkedParent=d}
)}
,renderSeries:function(){
p(this.series,function(a){
a.translate();
a.setTooltipPoints&&a.setTooltipPoints();
a.render()}
)}
,render:function(){
var a=this,b=a.axes,c=a.renderer,d=a.options,e=d.labels,f=d.credits,g;
a.setTitle();
a.legend=new lb(a,d.legend);
a.getStacks();
p(b,function(a){
a.setScale()}
);
a.getMargins();
a.maxTicks=null;
p(b,function(a){
a.setTickPositions(!0);
a.setMaxTicks()}
);
a.adjustTickAmounts();
a.getMargins();
a.drawChartBox();
a.hasCartesianSeries&&p(b,function(a){
a.render()}
);
if(!a.seriesGroup)a.seriesGroup=c.g("series-group").attr({
zIndex:3}
).add();
a.renderSeries();
e.items&&p(e.items,function(b){
var d=s(e.style,b.style),f=x(d.left)+a.plotLeft,g=x(d.top)+a.plotTop+12;
delete d.left;
delete d.top;
c.text(b.html,f,g).attr({
zIndex:2}
).css(d).add()}
);
if(f.enabled&&!a.credits)g=f.href,a.credits=c.text(f.text,0,0).on("click",function(){
if(g)location.href=g}
).attr({
align:f.position.align,zIndex:8}
).css(f.style).add().align(f.position);
a.hasRendered=!0}
,destroy:function(){
var a=this,b=a.axes,c=a.series,d=a.container,e,f=d&&d.parentNode;
I(a,"destroy");
Y[a.index]=u;
a.renderTo.removeAttribute("data-highcharts-chart");
U(a);
for(e=b.length;
e--;
)b[e]=b[e].destroy();
for(e=c.length;
e--;
)c[e]=c[e].destroy();
p("title,subtitle,chartBackground,plotBackground,plotBGImage,plotBorder,seriesGroup,clipRect,credits,pointer,scroller,rangeSelector,legend,resetZoomButton,tooltip,renderer".split(","),function(b){
var c=a[b];
c&&c.destroy&&(a[b]=c.destroy())}
);
if(d)d.innerHTML="",U(d),f&&Pa(d);
for(e in a)delete a[e]}
,isReadyToRender:function(){
var a=this;
return!X&&G==G.top&&y.readyState!=="complete"||ca&&!G.canvg?(ca?Mb.push(function(){
a.firstRender()}
,a.options.global.canvasToolsURL):y.attachEvent("onreadystatechange",function(){
y.detachEvent("onreadystatechange",a.firstRender);
y.readyState==="complete"&&a.firstRender()}
),!1):!0}
,firstRender:function(){
var a=this,b=a.options,c=a.callback;
if(a.isReadyToRender()){
a.getContainer();
I(a,"init");
a.resetMargins();
a.setChartSize();
a.propFromSeries();
a.getAxes();
p(b.series||[],function(b){
a.initSeries(b)}
);
a.linkSeries();
I(a,"beforeRender");
if(Q.Pointer)a.pointer=new Wa(a,b);
a.render();
a.renderer.draw();
c&&c.apply(a,[a]);
p(a.callbacks,function(b){
b.apply(a,[a])}
);
a.cloneRenderTo(!0);
I(a,"load")}
}
,splashArray:function(a,b){
var c=b[a],c=$(c)?c:[c,c,c,c];
return[o(b[a+"Top"],c[0]),o(b[a+"Right"],c[1]),o(b[a+"Bottom"],c[2]),o(b[a+"Left"],c[3])]}
}
;
Ya.prototype.callbacks=[];
da=Q.CenteredSeriesMixin={
getCenter:function(){
var a=this.options,b=this.chart,c=2*(a.slicedOffset||0),d,e=b.plotWidth-2*c,f=b.plotHeight-2*c,b=a.center,a=[o(b[0],"50%"),o(b[1],"50%"),a.size||"100%",a.innerSize||0],g=E(e,f),h;
return Ua(a,function(a,b){
h=/%$/.test(a);
d=b<2||b===2&&h;
return(h?[e,f,g,g][b]*x(a)/100:a)+(d?c:0)}
)}
}
;
var Fa=function(){
}
;
Fa.prototype={
init:function(a,b,c){
this.series=a;
this.applyOptions(b,c);
this.pointAttr={
}
;
if(a.options.colorByPoint&&(b=a.options.colors||a.chart.options.colors,this.color=this.color||b[a.colorCounter++],a.colorCounter===b.length))a.colorCounter=0;
a.chart.pointCount++;
return this}
,applyOptions:function(a,b){
var c=this.series,d=c.pointValKey,a=Fa.prototype.optionsToObject.call(this,a);
s(this,a);
this.options=this.options?s(this.options,a):a;
if(d)this.y=this[d];
if(this.x===u&&c)this.x=b===u?c.autoIncrement():b;
return this}
,optionsToObject:function(a){
var b={
}
,c=this.series,d=c.pointArrayMap||["y"],e=d.length,f=0,g=0;
if(typeof a==="number"||a===null)b[d[0]]=a;
else if(La(a)){
if(a.length>e){
c=typeof a[0];
if(c==="string")b.name=a[0];
else if(c==="number")b.x=a[0];
f++}
for(;
g<e;
)b[d[g++]]=a[f++]}
else if(typeof a==="object"){
b=a;
if(a.dataLabels)c._hasPointLabels=!0;
if(a.marker)c._hasPointMarkers=!0}
return b}
,destroy:function(){
var a=this.series.chart,b=a.hoverPoints,c;
a.pointCount--;
if(b&&(this.setState(),ia(b,this),!b.length))a.hoverPoints=null;
if(this===a.hoverPoint)this.onMouseOut();
if(this.graphic||this.dataLabel)U(this),this.destroyElements();
this.legendItem&&a.legend.destroyItem(this);
for(c in this)this[c]=null}
,destroyElements:function(){
for(var a="graphic,dataLabel,dataLabelUpper,group,connector,shadowGroup".split(","),b,c=6;
c--;
)b=a[c],this[b]&&(this[b]=this[b].destroy())}
,getLabelConfig:function(){
return{
x:this.category,y:this.y,key:this.name||this.category,series:this.series,point:this,percentage:this.percentage,total:this.total||this.stackTotal}
}
,tooltipFormatter:function(a){
var b=this.series,c=b.tooltipOptions,d=o(c.valueDecimals,""),e=c.valuePrefix||"",f=c.valueSuffix||"";
p(b.pointArrayMap||["y"],function(b){
b="{
point."+b;
if(e||f)a=a.replace(b+"}
",e+b+"}
"+f);
a=a.replace(b+"}
",b+":,."+d+"f}
")}
);
return Ia(a,{
point:this,series:this.series}
)}
}
;
var M=function(){
}
;
M.prototype={
isCartesian:!0,type:"line",pointClass:Fa,sorted:!0,requireSorting:!0,pointAttrToOptions:{
stroke:"lineColor","stroke-width":"lineWidth",fill:"fillColor",r:"radius"}
,axisTypes:["xAxis","yAxis"],colorCounter:0,parallelArrays:["x","y"],init:function(a,b){
var c=this,d,e,f=a.series,g=function(a,b){
return o(a.options.index,a._i)-o(b.options.index,b._i)}
;
c.chart=a;
c.options=b=c.setOptions(b);
c.linkedSeries=[];
c.bindAxes();
s(c,{
name:b.name,state:"",pointAttr:{
}
,visible:b.visible!==!1,selected:b.selected===!0}
);
if(ca)b.animation=!1;
e=b.events;
for(d in e)C(c,d,e[d]);
if(e&&e.click||b.point&&b.point.events&&b.point.events.click||b.allowPointSelect)a.runTrackerClick=!0;
c.getColor();
c.getSymbol();
p(c.parallelArrays,function(a){
c[a+"Data"]=[]}
);
c.setData(b.data,!1);
if(c.isCartesian)a.hasCartesianSeries=!0;
f.push(c);
c._i=f.length-1;
ob(f,g);
this.yAxis&&ob(this.yAxis.series,g);
p(f,function(a,b){
a.index=b;
a.name=a.name||"Series "+(b+1)}
)}
,bindAxes:function(){
var a=this,b=a.options,c=a.chart,d;
p(a.axisTypes||[],function(e){
p(c[e],function(c){
d=c.options;
if(b[e]===d.index||b[e]!==u&&b[e]===d.id||b[e]===u&&d.index===0)c.series.push(a),a[e]=c,c.isDirty=!0}
);
!a[e]&&a.optionalAxis!==e&&oa(18,!0)}
)}
,updateParallelArrays:function(a,b){
var c=a.series,d=arguments;
p(c.parallelArrays,typeof b==="number"?function(d){
var f=d==="y"&&c.toYData?c.toYData(a):a[d];
c[d+"Data"][b]=f}
:function(a){
Array.prototype[b].apply(c[a+"Data"],Array.prototype.slice.call(d,2))}
)}
,autoIncrement:function(){
var a=this.options,b=this.xIncrement,b=o(b,a.pointStart,0);
this.pointInterval=o(this.pointInterval,a.pointInterval,1);
this.xIncrement=b+this.pointInterval;
return b}
,getSegments:function(){
var a=-1,b=[],c,d=this.points,e=d.length;
if(e)if(this.options.connectNulls){
for(c=e;
c--;
)d[c].y===null&&d.splice(c,1);
d.length&&(b=[d])}
else p(d,function(c,g){
c.y===null?(g>a+1&&b.push(d.slice(a+1,g)),a=g):g===e-1&&b.push(d.slice(a+1,g+1))}
);
this.segments=b}
,setOptions:function(a){
var b=this.chart,c=b.options.plotOptions,b=b.userOptions||{
}
,d=b.plotOptions||{
}
,e=c[this.type];
this.userOptions=a;
c=w(e,c.series,a);
this.tooltipOptions=w(L.tooltip,L.plotOptions[this.type].tooltip,b.tooltip,d.series&&d.series.tooltip,d[this.type]&&d[this.type].tooltip,a.tooltip);
e.marker===null&&delete c.marker;
return c}
,getColor:function(){
var a=this.options,b=this.userOptions,c=this.chart.options.colors,d=this.chart.counters,e;
e=a.color||Z[this.type].color;
if(!e&&!a.colorByPoint)r(b._colorIndex)?a=b._colorIndex:(b._colorIndex=d.color,a=d.color++),e=c[a];
this.color=e;
d.wrapColor(c.length)}
,getSymbol:function(){
var a=this.userOptions,b=this.options.marker,c=this.chart,d=c.options.symbols,c=c.counters;
this.symbol=b.symbol;
if(!this.symbol)r(a._symbolIndex)?a=a._symbolIndex:(a._symbolIndex=c.symbol,a=c.symbol++),this.symbol=d[a];
if(/^url/.test(this.symbol))b.radius=0;
c.wrapSymbol(d.length)}
,drawLegendSymbol:F.drawLineMarker,setData:function(a,b,c,d){
var e=this,f=e.points,g=f&&f.length||0,h,i=e.options,j=e.chart,k=null,l=e.xAxis,m=l&&!!l.categories,n=e.tooltipPoints,q=i.turboThreshold,t=this.xData,r=this.yData,s=(h=e.pointArrayMap)&&h.length,a=a||[];
h=a.length;
b=o(b,!0);
if(d!==!1&&h&&g===h&&!e.cropped&&!e.hasGroupedData)p(a,function(a,b){
f[b].update(a,!1)}
);
else{
e.xIncrement=null;
e.pointRange=m?1:i.pointRange;
e.colorCounter=0;
p(this.parallelArrays,function(a){
e[a+"Data"].length=0}
);
if(q&&h>q){
for(c=0;
k===null&&c<h;
)k=a[c],c++;
if(ya(k)){
m=o(i.pointStart,0);
i=o(i.pointInterval,1);
for(c=0;
c<h;
c++)t[c]=m,r[c]=a[c],m+=i;
e.xIncrement=m}
else if(La(k))if(s)for(c=0;
c<h;
c++)i=a[c],t[c]=i[0],r[c]=i.slice(1,s+1);
else for(c=0;
c<h;
c++)i=a[c],t[c]=i[0],r[c]=i[1];
else oa(12)}
else for(c=0;
c<h;
c++)if(a[c]!==u&&(i={
series:e}
,e.pointClass.prototype.applyOptions.apply(i,[a[c]]),e.updateParallelArrays(i,c),m&&i.name))l.names[i.x]=i.name;
ga(r[0])&&oa(14,!0);
e.data=[];
e.options.data=a;
for(c=g;
c--;
)f[c]&&f[c].destroy&&f[c].destroy();
if(n)n.length=0;
if(l)l.minRange=l.userMinRange;
e.isDirty=e.isDirtyData=j.isDirtyBox=!0;
c=!1}
b&&j.redraw(c)}
,processData:function(a){
var b=this.xData,c=this.yData,d=b.length,e;
e=0;
var f,g,h=this.xAxis,i=this.options,j=i.cropThreshold,k=this.isCartesian;
if(k&&!this.isDirty&&!h.isDirty&&!this.yAxis.isDirty&&!a)return!1;
if(k&&this.sorted&&(!j||d>j||this.forceCrop))if(a=h.min,h=h.max,b[d-1]<a||b[0]>h)b=[],c=[];
else if(b[0]<a||b[d-1]>h)e=this.cropData(this.xData,this.yData,a,h),b=e.xData,c=e.yData,e=e.start,f=!0;
for(h=b.length-1;
h>=0;
h--)d=b[h]-b[h-1],d>0&&(g===u||d<g)?g=d:d<0&&this.requireSorting&&oa(15);
this.cropped=f;
this.cropStart=e;
this.processedXData=b;
this.processedYData=c;
if(i.pointRange===null)this.pointRange=g||1;
this.closestPointRange=g}
,cropData:function(a,b,c,d){
var e=a.length,f=0,g=e,h=o(this.cropShoulder,1),i;
for(i=0;
i<e;
i++)if(a[i]>=c){
f=t(0,i-h);
break}
for(;
i<e;
i++)if(a[i]>d){
g=i+h;
break}
return{
xData:a.slice(f,g),yData:b.slice(f,g),start:f,end:g}
}
,generatePoints:function(){
var a=this.options.data,b=this.data,c,d=this.processedXData,e=this.processedYData,f=this.pointClass,g=d.length,h=this.cropStart||0,i,j=this.hasGroupedData,k,l=[],m;
if(!b&&!j)b=[],b.length=a.length,b=this.data=b;
for(m=0;
m<g;
m++)i=h+m,j?l[m]=(new f).init(this,[d[m]].concat(na(e[m]))):(b[i]?k=b[i]:a[i]!==u&&(b[i]=k=(new f).init(this,a[i],d[m])),l[m]=k);
if(b&&(g!==(c=b.length)||j))for(m=0;
m<c;
m++)if(m===h&&!j&&(m+=g),b[m])b[m].destroyElements(),b[m].plotX=u;
this.data=b;
this.points=l}
,getExtremes:function(a){
var b=this.yAxis,c=this.processedXData,d,e=[],f=0;
d=this.xAxis.getExtremes();
var g=d.min,h=d.max,i,j,k,l,a=a||this.stackedYData||this.processedYData;
d=a.length;
for(l=0;
l<d;
l++)if(j=c[l],k=a[l],i=k!==null&&k!==u&&(!b.isLog||k.length||k>0),j=this.getExtremesFromAll||this.cropped||(c[l+1]||j)>=g&&(c[l-1]||j)<=h,i&&j)if(i=k.length)for(;
i--;
)k[i]!==null&&(e[f++]=k[i]);
else e[f++]=k;
this.dataMin=o(void 0,Na(e));
this.dataMax=o(void 0,Ba(e))}
,translate:function(){
this.processedXData||this.processData();
this.generatePoints();
for(var a=this.options,b=a.stacking,c=this.xAxis,d=c.categories,e=this.yAxis,f=this.points,g=f.length,h=!!this.modifyValue,i=a.pointPlacement,j=i==="between"||ya(i),k=a.threshold,a=0;
a<g;
a++){
var l=f[a],m=l.x,n=l.y,q=l.low,p=b&&e.stacks[(this.negStacks&&n<k?"-":"")+this.stackKey];
if(e.isLog&&n<=0)l.y=n=null;
l.plotX=c.translate(m,0,0,0,1,i,this.type==="flags");
if(b&&this.visible&&p&&p[m])p=p[m],n=p.points[this.index],q=n[0],n=n[1],q===0&&(q=o(k,e.min)),e.isLog&&q<=0&&(q=null),l.total=l.stackTotal=p.total,l.percentage=p.total&&l.y/p.total*100,l.stackY=n,p.setOffset(this.pointXOffset||0,this.barW||0);
l.yBottom=r(q)?e.translate(q,0,1,0,1):null;
h&&(n=this.modifyValue(n,l));
l.plotY=typeof n==="number"&&n!==Infinity?e.translate(n,0,1,0,1):u;
l.clientX=j?c.translate(m,0,0,0,1):l.plotX;
l.negative=l.y<(k||0);
l.category=d&&d[l.x]!==u?d[l.x]:l.x}
this.getSegments()}
,animate:function(a){
var b=this,c=b.chart,d=c.renderer,e;
e=b.options.animation;
var f=c.clipBox,g=c.inverted,h;
if(e&&!$(e))e=Z[b.type].animation;
h="_sharedClip"+e.duration+e.easing;
if(a)a=c[h],e=c[h+"m"],a||(c[h]=a=d.clipRect(s(f,{
width:0}
)),c[h+"m"]=e=d.clipRect(-99,g?-c.plotLeft:-c.plotTop,99,g?c.chartWidth:c.chartHeight)),b.group.clip(a),b.markerGroup.clip(e),b.sharedClipKey=h;
else{
if(a=c[h])a.animate({
width:c.plotSizeX}
,e),c[h+"m"].animate({
width:c.plotSizeX+99}
,e);
b.animate=null;
b.animationTimeout=setTimeout(function(){
b.afterAnimate()}
,e.duration)}
}
,afterAnimate:function(){
var a=this.chart,b=this.sharedClipKey,c=this.group;
c&&this.options.clip!==!1&&(c.clip(a.clipRect),this.markerGroup.clip());
setTimeout(function(){
b&&a[b]&&(a[b]=a[b].destroy(),a[b+"m"]=a[b+"m"].destroy())}
,100)}
,drawPoints:function(){
var a,b=this.points,c=this.chart,d,e,f,g,h,i,j,k,l=this.options.marker,m=this.pointAttr[""],n,q=this.markerGroup;
if(l.enabled||this._hasPointMarkers)for(f=b.length;
f--;
)if(g=b[f],d=S(g.plotX),e=g.plotY,k=g.graphic,i=g.marker||{
}
,a=l.enabled&&i.enabled===u||i.enabled,n=c.isInsidePlot(v(d),e,c.inverted),a&&e!==u&&!isNaN(e)&&g.y!==null)if(a=g.pointAttr[g.selected?"select":""]||m,h=a.r,i=o(i.symbol,this.symbol),j=i.indexOf("url")===0,k)k.attr({
visibility:n?"inherit":"hidden"}
).animate(s({
x:d-h,y:e-h}
,k.symbolName?{
width:2*h,height:2*h}
:{
}
));
else{
if(n&&(h>0||j))g.graphic=c.renderer.symbol(i,d-h,e-h,2*h,2*h).attr(a).add(q)}
else if(k)g.graphic=k.destroy()}
,convertAttribs:function(a,b,c,d){
var e=this.pointAttrToOptions,f,g,h={
}
,a=a||{
}
,b=b||{
}
,c=c||{
}
,d=d||{
}
;
for(f in e)g=e[f],h[f]=o(a[g],b[f],c[f],d[f]);
return h}
,getAttribs:function(){
var a=this,b=a.options,c=Z[a.type].marker?b.marker:b,d=c.states,e=d.hover,f,g=a.color;
f={
stroke:g,fill:g}
;
var h=a.points||[],i,j=[],k,l=a.pointAttrToOptions;
k=a.hasPointSpecificOptions;
var m=b.negativeColor,n=c.lineColor,q=c.fillColor;
i=b.turboThreshold;
var o;
b.marker?(e.radius=e.radius||c.radius+2,e.lineWidth=e.lineWidth||c.lineWidth+1):e.color=e.color||wa(e.color||g).brighten(e.brightness).get();
j[""]=a.convertAttribs(c,f);
p(["hover","select"],function(b){
j[b]=a.convertAttribs(d[b],j[""])}
);
a.pointAttr=j;
g=h.length;
if(!i||g<i||k)for(;
g--;
){
i=h[g];
if((c=i.options&&i.options.marker||i.options)&&c.enabled===!1)c.radius=0;
if(i.negative&&m)i.color=i.fillColor=m;
k=b.colorByPoint||i.color;
if(i.options)for(o in l)r(c[l[o]])&&(k=!0);
if(k){
c=c||{
}
;
k=[];
d=c.states||{
}
;
f=d.hover=d.hover||{
}
;
if(!b.marker)f.color=f.color||!i.options.color&&e.color||wa(i.color).brighten(f.brightness||e.brightness).get();
f={
color:i.color}
;
if(!q)f.fillColor=i.color;
if(!n)f.lineColor=i.color;
k[""]=a.convertAttribs(s(f,c),j[""]);
k.hover=a.convertAttribs(d.hover,j.hover,k[""]);
k.select=a.convertAttribs(d.select,j.select,k[""])}
else k=j;
i.pointAttr=k}
}
,destroy:function(){
var a=this,b=a.chart,c=/AppleWebKit\/533/.test(ua),d,e,f=a.data||[],g,h,i;
I(a,"destroy");
U(a);
p(a.axisTypes||[],function(b){
if(i=a[b])ia(i.series,a),i.isDirty=i.forceRedraw=!0}
);
a.legendItem&&a.chart.legend.destroyItem(a);
for(e=f.length;
e--;
)(g=f[e])&&g.destroy&&g.destroy();
a.points=null;
clearTimeout(a.animationTimeout);
p("area,graph,dataLabelsGroup,group,markerGroup,tracker,graphNeg,areaNeg,posClip,negClip".split(","),function(b){
a[b]&&(d=c&&b==="group"?"hide":"destroy",a[b][d]())}
);
if(b.hoverSeries===a)b.hoverSeries=null;
ia(b.series,a);
for(h in a)delete a[h]}
,getSegmentPath:function(a){
var b=this,c=[],d=b.options.step;
p(a,function(e,f){
var g=e.plotX,h=e.plotY,i;
b.getPointSpline?c.push.apply(c,b.getPointSpline(a,e,f)):(c.push(f?"L":"M"),d&&f&&(i=a[f-1],d==="right"?c.push(i.plotX,h):d==="center"?c.push((i.plotX+g)/2,i.plotY,(i.plotX+g)/2,h):c.push(g,i.plotY)),c.push(e.plotX,e.plotY))}
);
return c}
,getGraphPath:function(){
var a=this,b=[],c,d=[];
p(a.segments,function(e){
c=a.getSegmentPath(e);
e.length>1?b=b.concat(c):d.push(e[0])}
);
a.singlePoints=d;
return a.graphPath=b}
,drawGraph:function(){
var a=this,b=this.options,c=[["graph",b.lineColor||this.color]],d=b.lineWidth,e=b.dashStyle,f=b.linecap!=="square",g=this.getGraphPath(),h=b.negativeColor;
h&&c.push(["graphNeg",h]);
p(c,function(c,h){
var k=c[0],l=a[k];
if(l)ab(l),l.animate({
d:g}
);
else if(d&&g.length)l={
stroke:c[1],"stroke-width":d,fill:O,zIndex:1}
,e?l.dashstyle=e:f&&(l["stroke-linecap"]=l["stroke-linejoin"]="round"),a[k]=a.chart.renderer.path(g).attr(l).add(a.group).shadow(!h&&b.shadow)}
)}
,clipNeg:function(){
var a=this.options,b=this.chart,c=b.renderer,d=a.negativeColor||a.negativeFillColor,e,f=this.graph,g=this.area,h=this.posClip,i=this.negClip;
e=b.chartWidth;
var j=b.chartHeight,k=t(e,j),l=this.yAxis;
if(d&&(f||g)){
d=v(l.toPixels(a.threshold||0,!0));
d<0&&(k-=d);
a={
x:0,y:0,width:k,height:d}
;
k={
x:0,y:d,width:k,height:k}
;
if(b.inverted)a.height=k.y=b.plotWidth-d,c.isVML&&(a={
x:b.plotWidth-d-b.plotLeft,y:0,width:e,height:j}
,k={
x:d+b.plotLeft-e,y:0,width:b.plotLeft+d,height:e}
);
l.reversed?(b=k,e=a):(b=a,e=k);
h?(h.animate(b),i.animate(e)):(this.posClip=h=c.clipRect(b),this.negClip=i=c.clipRect(e),f&&this.graphNeg&&(f.clip(h),this.graphNeg.clip(i)),g&&(g.clip(h),this.areaNeg.clip(i)))}
}
,invertGroups:function(){
function a(){
var a={
width:b.yAxis.len,height:b.xAxis.len}
;
p(["group","markerGroup"],function(c){
b[c]&&b[c].attr(a).invert()}
)}
var b=this,c=b.chart;
if(b.xAxis)C(c,"resize",a),C(b,"destroy",function(){
U(c,"resize",a)}
),a(),b.invertGroups=a}
,plotGroup:function(a,b,c,d,e){
var f=this[a],g=!f;
g&&(this[a]=f=this.chart.renderer.g(b).attr({
visibility:c,zIndex:d||0.1}
).add(e));
f[g?"attr":"animate"](this.getPlotBox());
return f}
,getPlotBox:function(){
return{
translateX:this.xAxis?this.xAxis.left:this.chart.plotLeft,translateY:this.yAxis?this.yAxis.top:this.chart.plotTop,scaleX:1,scaleY:1}
}
,render:function(){
var a=this.chart,b,c=this.options,d=c.animation&&!!this.animate&&a.renderer.isSVG,e=this.visible?"visible":"hidden",f=c.zIndex,g=this.hasRendered,h=a.seriesGroup;
b=this.plotGroup("group","series",e,f,h);
this.markerGroup=this.plotGroup("markerGroup","markers",e,f,h);
d&&this.animate(!0);
this.getAttribs();
b.inverted=this.isCartesian?a.inverted:!1;
this.drawGraph&&(this.drawGraph(),this.clipNeg());
this.drawDataLabels&&this.drawDataLabels();
this.visible&&this.drawPoints();
this.drawTracker&&this.options.enableMouseTracking!==!1&&this.drawTracker();
a.inverted&&this.invertGroups();
c.clip!==!1&&!this.sharedClipKey&&!g&&b.clip(a.clipRect);
d?this.animate():g||this.afterAnimate();
this.isDirty=this.isDirtyData=!1;
this.hasRendered=!0}
,redraw:function(){
var a=this.chart,b=this.isDirtyData,c=this.group,d=this.xAxis,e=this.yAxis;
c&&(a.inverted&&c.attr({
width:a.plotWidth,height:a.plotHeight}
),c.animate({
translateX:o(d&&d.left,a.plotLeft),translateY:o(e&&e.top,a.plotTop)}
));
this.translate();
this.setTooltipPoints(!0);
this.render();
b&&I(this,"updatedData")}
}
;
Hb.prototype={
destroy:function(){
Oa(this,this.axis)}
,render:function(a){
var b=this.options,c=b.format,c=c?Ia(c,this):b.formatter.call(this);
this.label?this.label.attr({
text:c,visibility:"hidden"}
):this.label=this.axis.chart.renderer.text(c,0,0,b.useHTML).css(b.style).attr({
align:this.textAlign,rotation:b.rotation,visibility:"hidden"}
).add(a)}
,setOffset:function(a,b){
var c=this.axis,d=c.chart,e=d.inverted,f=this.isNegative,g=c.translate(this.percent?100:this.total,0,0,0,1),c=c.translate(0),c=N(g-c),h=d.xAxis[0].translate(this.x)+a,i=d.plotHeight,f={
x:e?f?g:g-c:h,y:e?i-h-b:f?i-g-c:i-g,width:e?c:b,height:e?b:c}
;
if(e=this.label)e.align(this.alignOptions,null,f),f=e.alignAttr,e[this.options.crop===!1||d.isInsidePlot(f.x,f.y)?"show":"hide"](!0)}
}
;
ka.prototype.buildStacks=function(){
var a=this.series,b=o(this.options.reversedStacks,!0),c=a.length;
if(!this.isXAxis){
for(this.usePercentage=!1;
c--;
)a[b?c:a.length-c-1].setStackedPoints();
if(this.usePercentage)for(c=0;
c<a.length;
c++)a[c].setPercentStacks()}
}
;
ka.prototype.renderStackTotals=function(){
var a=this.chart,b=a.renderer,c=this.stacks,d,e,f=this.stackTotalGroup;
if(!f)this.stackTotalGroup=f=b.g("stack-labels").attr({
visibility:"visible",zIndex:6}
).add();
f.translate(a.plotLeft,a.plotTop);
for(d in c)for(e in a=c[d],a)a[e].render(f)}
;
M.prototype.setStackedPoints=function(){
if(this.options.stacking&&!(this.visible!==!0&&this.chart.options.chart.ignoreHiddenSeries!==!1)){
var a=this.processedXData,b=this.processedYData,c=[],d=b.length,e=this.options,f=e.threshold,g=e.stack,e=e.stacking,h=this.stackKey,i="-"+h,j=this.negStacks,k=this.yAxis,l=k.stacks,m=k.oldStacks,n,q,o,p,r;
for(o=0;
o<d;
o++){
p=a[o];
r=b[o];
q=(n=j&&r<f)?i:h;
l[q]||(l[q]={
}
);
if(!l[q][p])m[q]&&m[q][p]?(l[q][p]=m[q][p],l[q][p].total=null):l[q][p]=new Hb(k,k.options.stackLabels,n,p,g,e);
q=l[q][p];
q.points[this.index]=[q.cum||0];
e==="percent"?(n=n?h:i,j&&l[n]&&l[n][p]?(n=l[n][p],q.total=n.total=t(n.total,q.total)+N(r)||0):q.total=aa(q.total+(N(r)||0))):q.total=aa(q.total+(r||0));
q.cum=(q.cum||0)+(r||0);
q.points[this.index].push(q.cum);
c[o]=q.cum}
if(e==="percent")k.usePercentage=!0;
this.stackedYData=c;
k.oldStacks={
}
}
}
;
M.prototype.setPercentStacks=function(){
var a=this,b=a.stackKey,c=a.yAxis.stacks,d=a.processedXData;
p([b,"-"+b],function(b){
var e;
for(var f=d.length,g,h;
f--;
)if(g=d[f],e=(h=c[b]&&c[b][g])&&h.points[a.index],g=e)h=h.total?100/h.total:0,g[0]=aa(g[0]*h),g[1]=aa(g[1]*h),a.stackedYData[f]=g[1]}
)}
;
s(Ya.prototype,{
addSeries:function(a,b,c){
var d,e=this;
a&&(b=o(b,!0),I(e,"addSeries",{
options:a}
,function(){
d=e.initSeries(a);
e.isDirtyLegend=!0;
e.linkSeries();
b&&e.redraw(c)}
));
return d}
,addAxis:function(a,b,c,d){
var e=b?"xAxis":"yAxis",f=this.options;
new ka(this,w(a,{
index:this[e].length,isX:b}
));
f[e]=na(f[e]||{
}
);
f[e].push(a);
o(c,!0)&&this.redraw(d)}
,showLoading:function(a){
var b=this.options,c=this.loadingDiv,d=b.loading;
if(!c)this.loadingDiv=c=V(Ja,{
className:"highcharts-loading"}
,s(d.style,{
zIndex:10,display:O}
),this.container),this.loadingSpan=V("span",null,d.labelStyle,c);
this.loadingSpan.innerHTML=a||b.lang.loading;
if(!this.loadingShown)D(c,{
opacity:0,display:"",left:this.plotLeft+"px",top:this.plotTop+"px",width:this.plotWidth+"px",height:this.plotHeight+"px"}
),jb(c,{
opacity:d.style.opacity}
,{
duration:d.showDuration||0}
),this.loadingShown=!0}
,hideLoading:function(){
var a=this.options,b=this.loadingDiv;
b&&jb(b,{
opacity:0}
,{
duration:a.loading.hideDuration||100,complete:function(){
D(b,{
display:O}
)}
}
);
this.loadingShown=!1}
}
);
s(Fa.prototype,{
update:function(a,b,c){
var d=this,e=d.series,f=d.graphic,g,h=e.data,i=e.chart,j=e.options,b=o(b,!0);
d.firePointEvent("update",{
options:a}
,function(){
d.applyOptions(a);
if($(a)){
e.getAttribs();
if(f)a&&a.marker&&a.marker.symbol?d.graphic=f.destroy():f.attr(d.pointAttr[d.state||""]);
if(a&&a.dataLabels&&d.dataLabel)d.dataLabel=d.dataLabel.destroy()}
g=va(d,h);
e.updateParallelArrays(d,g);
j.data[g]=d.options;
e.isDirty=e.isDirtyData=!0;
if(!e.fixedBox&&e.hasCartesianSeries)i.isDirtyBox=!0;
j.legendType==="point"&&i.legend.destroyItem(d);
b&&i.redraw(c)}
)}
,remove:function(a,b){
var c=this,d=c.series,e=d.points,f=d.chart,g,h=d.data;
Qa(b,f);
a=o(a,!0);
c.firePointEvent("remove",null,function(){
g=va(c,h);
h.length===e.length&&e.splice(g,1);
h.splice(g,1);
d.options.data.splice(g,1);
d.updateParallelArrays(c,"splice",g,1);
c.destroy();
d.isDirty=!0;
d.isDirtyData=!0;
a&&f.redraw()}
)}
}
);
s(M.prototype,{
addPoint:function(a,b,c,d){
var e=this.options,f=this.data,g=this.graph,h=this.area,i=this.chart,j=this.xAxis&&this.xAxis.names,k=g&&g.shift||0,l=e.data,m,n=this.xData;
Qa(d,i);
c&&p([g,h,this.graphNeg,this.areaNeg],function(a){
if(a)a.shift=k+1}
);
if(h)h.isArea=!0;
b=o(b,!0);
d={
series:this}
;
this.pointClass.prototype.applyOptions.apply(d,[a]);
g=d.x;
h=n.length;
if(this.requireSorting&&g<n[h-1])for(m=!0;
h&&n[h-1]>g;
)h--;
this.updateParallelArrays(d,"splice",h,0,0);
this.updateParallelArrays(d,h);
if(j)j[g]=d.name;
l.splice(h,0,a);
m&&(this.data.splice(h,0,null),this.processData());
e.legendType==="point"&&this.generatePoints();
c&&(f[0]&&f[0].remove?f[0].remove(!1):(f.shift(),this.updateParallelArrays(d,"shift"),l.shift()));
this.isDirtyData=this.isDirty=!0;
b&&(this.getAttribs(),i.redraw())}
,remove:function(a,b){
var c=this,d=c.chart,a=o(a,!0);
if(!c.isRemoving)c.isRemoving=!0,I(c,"remove",null,function(){
c.destroy();
d.isDirtyLegend=d.isDirtyBox=!0;
d.linkSeries();
a&&d.redraw(b)}
);
c.isRemoving=!1}
,update:function(a,b){
var c=this.chart,d=this.type,e=J[d].prototype,f,a=w(this.userOptions,{
animation:!1,index:this.index,pointStart:this.xData[0]}
,{
data:this.options.data}
,a);
this.remove(!1);
for(f in e)e.hasOwnProperty(f)&&(this[f]=u);
s(this,J[a.type||d].prototype);
this.init(c,a);
o(b,!0)&&c.redraw(!1)}
}
);
s(ka.prototype,{
update:function(a,b){
var c=this.chart,a=c.options[this.coll][this.options.index]=w(this.userOptions,a);
this.destroy(!0);
this._addedPlotLB=this.userMin=this.userMax=u;
this.init(c,s(a,{
events:u}
));
c.isDirtyBox=!0;
o(b,!0)&&c.redraw()}
,remove:function(a){
for(var b=this.chart,c=this.coll,d=this.series,e=d.length;
e--;
)d[e]&&d[e].remove(!1);
ia(b.axes,this);
ia(b[c],this);
b.options[c].splice(this.options.index,1);
p(b[c],function(a,b){
a.options.index=b}
);
this.destroy();
b.isDirtyBox=!0;
o(a,!0)&&b.redraw()}
,setTitle:function(a,b){
this.update({
title:a}
,b)}
,setCategories:function(a,b){
this.update({
categories:a}
,b)}
}
);
ea=ja(M);
J.line=ea;
Z.area=w(R,{
threshold:0}
);
var ma=ja(M,{
type:"area",getSegments:function(){
var a=[],b=[],c=[],d=this.xAxis,e=this.yAxis,f=e.stacks[this.stackKey],g={
}
,h,i,j=this.points,k=this.options.connectNulls,l,m,n;
if(this.options.stacking&&!this.cropped){
for(m=0;
m<j.length;
m++)g[j[m].x]=j[m];
for(n in f)f[n].total!==null&&c.push(+n);
c.sort(function(a,b){
return a-b}
);
p(c,function(a){
if(!k||g[a]&&g[a].y!==null)g[a]?b.push(g[a]):(h=d.translate(a),l=f[a].percent?f[a].total?f[a].cum*100/f[a].total:0:f[a].cum,i=e.toPixels(l,!0),b.push({
y:null,plotX:h,clientX:h,plotY:i,yBottom:i,onMouseOver:Ea}
))}
);
b.length&&a.push(b)}
else M.prototype.getSegments.call(this),a=this.segments;
this.segments=a}
,getSegmentPath:function(a){
var b=M.prototype.getSegmentPath.call(this,a),c=[].concat(b),d,e=this.options;
d=b.length;
var f=this.yAxis.getThreshold(e.threshold),g;
d===3&&c.push("L",b[1],b[2]);
if(e.stacking&&!this.closedStacks)for(d=a.length-1;
d>=0;
d--)g=o(a[d].yBottom,f),d<a.length-1&&e.step&&c.push(a[d+1].plotX,g),c.push(a[d].plotX,g);
else this.closeSegment(c,a,f);
this.areaPath=this.areaPath.concat(c);
return b}
,closeSegment:function(a,b,c){
a.push("L",b[b.length-1].plotX,c,"L",b[0].plotX,c)}
,drawGraph:function(){
this.areaPath=[];
M.prototype.drawGraph.apply(this);
var a=this,b=this.areaPath,c=this.options,d=c.negativeColor,e=c.negativeFillColor,f=[["area",this.color,c.fillColor]];
(d||e)&&f.push(["areaNeg",d,e]);
p(f,function(d){
var e=d[0],f=a[e];
f?f.animate({
d:b}
):a[e]=a.chart.renderer.path(b).attr({
fill:o(d[2],wa(d[1]).setOpacity(o(c.fillOpacity,0.75)).get()),zIndex:0}
).add(a.group)}
)}
,drawLegendSymbol:F.drawRectangle}
);
J.area=ma;
Z.spline=w(R);
ea=ja(M,{
type:"spline",getPointSpline:function(a,b,c){
var d=b.plotX,e=b.plotY,f=a[c-1],g=a[c+1],h,i,j,k;
if(f&&g){
a=f.plotY;
j=g.plotX;
var g=g.plotY,l;
h=(1.5*d+f.plotX)/2.5;
i=(1.5*e+a)/2.5;
j=(1.5*d+j)/2.5;
k=(1.5*e+g)/2.5;
l=(k-i)*(j-d)/(j-h)+e-k;
i+=l;
k+=l;
i>a&&i>e?(i=t(a,e),k=2*e-i):i<a&&i<e&&(i=E(a,e),k=2*e-i);
k>g&&k>e?(k=t(g,e),i=2*e-k):k<g&&k<e&&(k=E(g,e),i=2*e-k);
b.rightContX=j;
b.rightContY=k}
c?(b=["C",f.rightContX||f.plotX,f.rightContY||f.plotY,h||d,i||e,d,e],f.rightContX=f.rightContY=null):b=["M",d,e];
return b}
}
);
J.spline=ea;
Z.areaspline=w(Z.area);
ma=ma.prototype;
ea=ja(ea,{
type:"areaspline",closedStacks:!0,getSegmentPath:ma.getSegmentPath,closeSegment:ma.closeSegment,drawGraph:ma.drawGraph,drawLegendSymbol:F.drawRectangle}
);
J.areaspline=ea;
Z.column=w(R,{
borderColor:"#FFFFFF",borderWidth:1,borderRadius:0,groupPadding:0.2,marker:null,pointPadding:0.1,minPointLength:0,cropThreshold:50,pointRange:null,states:{
hover:{
brightness:0.1,shadow:!1}
,select:{
color:"#C0C0C0",borderColor:"#000000",shadow:!1}
}
,dataLabels:{
align:null,verticalAlign:null,y:null}
,stickyTracking:!1,threshold:0}
);
ea=ja(M,{
type:"column",pointAttrToOptions:{
stroke:"borderColor","stroke-width":"borderWidth",fill:"color",r:"borderRadius"}
,cropShoulder:0,trackerGroups:["group","dataLabelsGroup"],negStacks:!0,init:function(){
M.prototype.init.apply(this,arguments);
var a=this,b=a.chart;
b.hasRendered&&p(b.series,function(b){
if(b.type===a.type)b.isDirty=!0}
)}
,getColumnMetrics:function(){
var a=this,b=a.options,c=a.xAxis,d=a.yAxis,e=c.reversed,f,g={
}
,h,i=0;
b.grouping===!1?i=1:p(a.chart.series,function(b){
var c=b.options,e=b.yAxis;
if(b.type===a.type&&b.visible&&d.len===e.len&&d.pos===e.pos)c.stacking?(f=b.stackKey,g[f]===u&&(g[f]=i++),h=g[f]):c.grouping!==!1&&(h=i++),b.columnIndex=h}
);
var c=E(N(c.transA)*(c.ordinalSlope||b.pointRange||c.closestPointRange||c.tickInterval||1),c.len),j=c*b.groupPadding,k=(c-2*j)/i,l=b.pointWidth,b=r(l)?(k-l)/2:k*b.pointPadding,l=o(l,k-2*b);
return a.columnMetrics={
width:l,offset:b+(j+((e?i-(a.columnIndex||0):a.columnIndex)||0)*k-c/2)*(e?-1:1)}
}
,translate:function(){
var a=this.chart,b=this.options,c=b.borderWidth,d=this.yAxis,e=this.translatedThreshold=d.getThreshold(b.threshold),f=o(b.minPointLength,5),b=this.getColumnMetrics(),g=b.width,h=this.barW=Ka(t(g,1+2*c)),i=this.pointXOffset=b.offset,j=-(c%2?0.5:0),k=c%2?0.5:1;
a.renderer.isVML&&a.inverted&&(k+=1);
M.prototype.translate.apply(this);
p(this.points,function(a){
var b=o(a.yBottom,e),c=E(t(-999-b,a.plotY),d.len+999+b),q=a.plotX+i,p=h,r=E(c,b),s,c=t(c,b)-r;
N(c)<f&&f&&(c=f,r=v(N(r-e)>f?b-f:e-(d.translate(a.y,0,1,0,1)<=e?f:0)));
a.barX=q;
a.pointWidth=g;
b=N(q)<0.5;
p=v(q+p)+j;
q=v(q)+j;
p-=q;
s=N(r)<0.5;
c=v(r+c)+k;
r=v(r)+k;
c-=r;
b&&(q+=1,p-=1);
s&&(r-=1,c+=1);
a.shapeType="rect";
a.shapeArgs={
x:q,y:r,width:p,height:c}
}
)}
,getSymbol:Ea,drawLegendSymbol:F.drawRectangle,drawGraph:Ea,drawPoints:function(){
var a=this,b=a.options,c=this.chart.renderer,d=b.animationLimit||250,e;
p(a.points,function(f){
var g=f.plotY,h=f.graphic;
if(g!==u&&!isNaN(g)&&f.y!==null)e=f.shapeArgs,h?(ab(h),h[a.points.length<d?"animate":"attr"](w(e))):f.graphic=c[f.shapeType](e).attr(f.pointAttr[f.selected?"select":""]).add(a.group).shadow(b.shadow,null,b.stacking&&!b.borderRadius);
else if(h)f.graphic=h.destroy()}
)}
,animate:function(a){
var b=this.yAxis,c=this.options,d=this.chart.inverted,e={
}
;
if(X)a?(e.scaleY=0.001,a=E(b.pos+b.len,t(b.pos,b.toPixels(c.threshold))),d?e.translateX=a-b.len:e.translateY=a,this.group.attr(e)):(e.scaleY=1,e[d?"translateX":"translateY"]=b.pos,this.group.animate(e,this.options.animation),this.animate=null)}
,remove:function(){
var a=this,b=a.chart;
b.hasRendered&&p(b.series,function(b){
if(b.type===a.type)b.isDirty=!0}
);
M.prototype.remove.apply(a,arguments)}
}
);
J.column=ea;
Z.bar=w(Z.column);
ma=ja(ea,{
type:"bar",inverted:!0}
);
J.bar=ma;
Z.scatter=w(R,{
lineWidth:0,tooltip:{
headerFormat:'<span style="font-size:10px;
color:{
series.color}
">{
series.name}
</span><br/>',pointFormat:"x:<b>{
point.x}
</b><br/>y:<b>{
point.y}
</b><br/>",followPointer:!0}
,stickyTracking:!1}
);
ma=ja(M,{
type:"scatter",sorted:!1,requireSorting:!1,noSharedTooltip:!0,trackerGroups:["markerGroup"],takeOrdinalPosition:!1,singularTooltips:!0,drawGraph:function(){
this.options.lineWidth&&M.prototype.drawGraph.call(this)}
}
);
J.scatter=ma;
Z.pie=w(R,{
borderColor:"#FFFFFF",borderWidth:1,center:[null,null],clip:!1,colorByPoint:!0,dataLabels:{
distance:30,enabled:!0,formatter:function(){
return this.point.name}
}
,ignoreHiddenPoint:!0,legendType:"point",marker:null,size:null,showInLegend:!1,slicedOffset:10,states:{
hover:{
brightness:0.1,shadow:!1}
}
,stickyTracking:!1,tooltip:{
followPointer:!0}
}
);
R={
type:"pie",isCartesian:!1,pointClass:ja(Fa,{
init:function(){
Fa.prototype.init.apply(this,arguments);
var a=this,b;
if(a.y<0)a.y=null;
s(a,{
visible:a.visible!==!1,name:o(a.name,"Slice")}
);
b=function(b){
a.slice(b.type==="select")}
;
C(a,"select",b);
C(a,"unselect",b);
return a}
,setVisible:function(a){
var b=this,c=b.series,d=c.chart;
b.visible=b.options.visible=a=a===u?!b.visible:a;
c.options.data[va(b,c.data)]=b.options;
p(["graphic","dataLabel","connector","shadowGroup"],function(c){
if(b[c])b[c][a?"show":"hide"](!0)}
);
b.legendItem&&d.legend.colorizeItem(b,a);
if(!c.isDirty&&c.options.ignoreHiddenPoint)c.isDirty=!0,d.redraw()}
,slice:function(a,b,c){
var d=this.series;
Qa(c,d.chart);
o(b,!0);
this.sliced=this.options.sliced=a=r(a)?a:!this.sliced;
d.options.data[va(this,d.data)]=this.options;
a=a?this.slicedTranslation:{
translateX:0,translateY:0}
;
this.graphic.animate(a);
this.shadowGroup&&this.shadowGroup.animate(a)}
}
),requireSorting:!1,noSharedTooltip:!0,trackerGroups:["group","dataLabelsGroup"],axisTypes:[],pointAttrToOptions:{
stroke:"borderColor","stroke-width":"borderWidth",fill:"color"}
,singularTooltips:!0,getColor:Ea,animate:function(a){
var b=this,c=b.points,d=b.startAngleRad;
if(!a)p(c,function(a){
var c=a.graphic,a=a.shapeArgs;
c&&(c.attr({
r:b.center[3]/2,start:d,end:d}
),c.animate({
r:a.r,start:a.start,end:a.end}
,b.options.animation))}
),b.animate=null}
,setData:function(a,b,c,d){
M.prototype.setData.call(this,a,!1,c,d);
this.processData();
this.generatePoints();
o(b,!0)&&this.chart.redraw(c)}
,generatePoints:function(){
var a,b=0,c,d,e,f=this.options.ignoreHiddenPoint;
M.prototype.generatePoints.call(this);
c=this.points;
d=c.length;
for(a=0;
a<d;
a++)e=c[a],b+=f&&!e.visible?0:e.y;
this.total=b;
for(a=0;
a<d;
a++)e=c[a],e.percentage=b>0?e.y/b*100:0,e.total=b}
,translate:function(a){
this.generatePoints();
var b=0,c=this.options,d=c.slicedOffset,e=d+c.borderWidth,f,g,h,i=c.startAngle||0,j=this.startAngleRad=la/180*(i-90),i=(this.endAngleRad=la/180*(o(c.endAngle,i+360)-90))-j,k=this.points,l=c.dataLabels.distance,c=c.ignoreHiddenPoint,m,n=k.length,p;
if(!a)this.center=a=this.getCenter();
this.getX=function(b,c){
h=T.asin(E((b-a[1])/(a[2]/2+l),1));
return a[0]+(c?-1:1)*W(h)*(a[2]/2+l)}
;
for(m=0;
m<n;
m++){
p=k[m];
f=j+b*i;
if(!c||p.visible)b+=p.percentage/100;
g=j+b*i;
p.shapeType="arc";
p.shapeArgs={
x:a[0],y:a[1],r:a[2]/2,innerR:a[3]/2,start:v(f*1E3)/1E3,end:v(g*1E3)/1E3}
;
h=(g+f)/2;
h>1.5*la?h-=2*la:h<-la/2&&(h+=2*la);
p.slicedTranslation={
translateX:v(W(h)*d),translateY:v(ba(h)*d)}
;
f=W(h)*a[2]/2;
g=ba(h)*a[2]/2;
p.tooltipPos=[a[0]+f*0.7,a[1]+g*0.7];
p.half=h<-la/2||h>la/2?1:0;
p.angle=h;
e=E(e,l/2);
p.labelPos=[a[0]+f+W(h)*l,a[1]+g+ba(h)*l,a[0]+f+W(h)*e,a[1]+g+ba(h)*e,a[0]+f,a[1]+g,l<0?"center":p.half?"right":"left",h]}
}
,drawGraph:null,drawPoints:function(){
var a=this,b=a.chart.renderer,c,d,e=a.options.shadow,f,g;
if(e&&!a.shadowGroup)a.shadowGroup=b.g("shadow").add(a.group);
p(a.points,function(h){
d=h.graphic;
g=h.shapeArgs;
f=h.shadowGroup;
if(e&&!f)f=h.shadowGroup=b.g("shadow").add(a.shadowGroup);
c=h.sliced?h.slicedTranslation:{
translateX:0,translateY:0}
;
f&&f.attr(c);
d?d.animate(s(g,c)):h.graphic=d=b[h.shapeType](g).setRadialReference(a.center).attr(h.pointAttr[h.selected?"select":""]).attr({
"stroke-linejoin":"round"}
).attr(c).add(a.group).shadow(e,f);
h.visible!==void 0&&h.setVisible(h.visible)}
)}
,sortByAngle:function(a,b){
a.sort(function(a,d){
return a.angle!==void 0&&(d.angle-a.angle)*b}
)}
,drawLegendSymbol:F.drawRectangle,getCenter:da.getCenter,getSymbol:Ea}
;
R=ja(M,R);
J.pie=R;
M.prototype.drawDataLabels=function(){
var a=this,b=a.options,c=b.cursor,d=b.dataLabels,b=a.points,e,f,g,h;
if(d.enabled||a._hasPointLabels)a.dlProcessOptions&&a.dlProcessOptions(d),h=a.plotGroup("dataLabelsGroup","data-labels",a.visible?"visible":"hidden",d.zIndex||6),f=d,p(b,function(b){
var j,k=b.dataLabel,l,m,n=b.connector,p=!0;
e=b.options&&b.options.dataLabels;
j=o(e&&e.enabled,f.enabled);
if(k&&!j)b.dataLabel=k.destroy();
else if(j){
d=w(f,e);
j=d.rotation;
l=b.getLabelConfig();
g=d.format?Ia(d.format,l):d.formatter.call(l,d);
d.style.color=o(d.color,d.style.color,a.color,"black");
if(k)if(r(g))k.attr({
text:g}
),p=!1;
else{
if(b.dataLabel=k=k.destroy(),n)b.connector=n.destroy()}
else if(r(g)){
k={
fill:d.backgroundColor,stroke:d.borderColor,"stroke-width":d.borderWidth,r:d.borderRadius||0,rotation:j,padding:d.padding,zIndex:1}
;
for(m in k)k[m]===u&&delete k[m];
k=b.dataLabel=a.chart.renderer[j?"text":"label"](g,0,-999,null,null,null,d.useHTML).attr(k).css(s(d.style,c&&{
cursor:c}
)).add(h).shadow(d.shadow)}
k&&a.alignDataLabel(b,k,d,null,p)}
}
)}
;
M.prototype.alignDataLabel=function(a,b,c,d,e){
var f=this.chart,g=f.inverted,h=o(a.plotX,-999),i=o(a.plotY,-999),j=b.getBBox();
if(a=this.visible&&(a.series.forceDL||f.isInsidePlot(h,v(i),g)||d&&f.isInsidePlot(h,g?d.x+1:d.y+d.height-1,g)))d=s({
x:g?f.plotWidth-i:h,y:v(g?f.plotHeight-h:i),width:0,height:0}
,d),s(c,{
width:j.width,height:j.height}
),c.rotation?(g={
align:c.align,x:d.x+c.x+d.width/2,y:d.y+c.y+d.height/2}
,b[e?"attr":"animate"](g)):(b.align(c,null,d),g=b.alignAttr,o(c.overflow,"justify")==="justify"?this.justifyDataLabel(b,c,g,j,d,e):o(c.crop,!0)&&(a=f.isInsidePlot(g.x,g.y)&&f.isInsidePlot(g.x+j.width,g.y+j.height)));
if(!a)b.attr({
y:-999}
),b.placed=!1}
;
M.prototype.justifyDataLabel=function(a,b,c,d,e,f){
var g=this.chart,h=b.align,i=b.verticalAlign,j,k;
j=c.x;
if(j<0)h==="right"?b.align="left":b.x=-j,k=!0;
j=c.x+d.width;
if(j>g.plotWidth)h==="left"?b.align="right":b.x=g.plotWidth-j,k=!0;
j=c.y;
if(j<0)i==="bottom"?b.verticalAlign="top":b.y=-j,k=!0;
j=c.y+d.height;
if(j>g.plotHeight)i==="top"?b.verticalAlign="bottom":b.y=g.plotHeight-j,k=!0;
if(k)a.placed=!f,a.align(b,null,e)}
;
if(J.pie)J.pie.prototype.drawDataLabels=function(){
var a=this,b=a.data,c,d=a.chart,e=a.options.dataLabels,f=o(e.connectorPadding,10),g=o(e.connectorWidth,1),h=d.plotWidth,d=d.plotHeight,i,j,k=o(e.softConnector,!0),l=e.distance,m=a.center,n=m[2]/2,q=m[1],r=l>0,s,u,w,x,y=[[],[]],z,B,E,H,A,D=[0,0,0,0],J=function(a,b){
return b.y-a.y}
;
if(a.visible&&(e.enabled||a._hasPointLabels)){
M.prototype.drawDataLabels.apply(a);
p(b,function(a){
a.dataLabel&&a.visible&&y[a.half].push(a)}
);
for(H=0;
!x&&b[H];
)x=b[H]&&b[H].dataLabel&&(b[H].dataLabel.getBBox().height||21),H++;
for(H=2;
H--;
){
var b=[],I=[],F=y[H],G=F.length,C;
a.sortByAngle(F,H-0.5);
if(l>0){
for(A=q-n-l;
A<=q+n+l;
A+=x)b.push(A);
u=b.length;
if(G>u){
c=[].concat(F);
c.sort(J);
for(A=G;
A--;
)c[A].rank=A;
for(A=G;
A--;
)F[A].rank>=u&&F.splice(A,1);
G=F.length}
for(A=0;
A<G;
A++){
c=F[A];
w=c.labelPos;
c=9999;
var O,L;
for(L=0;
L<u;
L++)O=N(b[L]-w[1]),O<c&&(c=O,C=L);
if(C<A&&b[A]!==null)C=A;
else for(u<G-A+C&&b[A]!==null&&(C=u-G+A);
b[C]===null;
)C++;
I.push({
i:C,y:b[C]}
);
b[C]=null}
I.sort(J)}
for(A=0;
A<G;
A++){
c=F[A];
w=c.labelPos;
s=c.dataLabel;
E=c.visible===!1?"hidden":"visible";
c=w[1];
if(l>0){
if(u=I.pop(),C=u.i,B=u.y,c>B&&b[C+1]!==null||c<B&&b[C-1]!==null)B=c}
else B=c;
z=e.justify?m[0]+(H?-1:1)*(n+l):a.getX(C===0||C===b.length-1?c:B,H);
s._attr={
visibility:E,align:w[6]}
;
s._pos={
x:z+e.x+({
left:f,right:-f}
[w[6]]||0),y:B+e.y-10}
;
s.connX=z;
s.connY=B;
if(this.options.size===null)u=s.width,z-u<f?D[3]=t(v(u-z+f),D[3]):z+u>h-f&&(D[1]=t(v(z+u-h+f),D[1])),B-x/2<0?D[0]=t(v(-B+x/2),D[0]):B+x/2>d&&(D[2]=t(v(B+x/2-d),D[2]))}
}
if(Ba(D)===0||this.verifyDataLabelOverflow(D))this.placeDataLabels(),r&&g&&p(this.points,function(b){
i=b.connector;
w=b.labelPos;
if((s=b.dataLabel)&&s._pos)E=s._attr.visibility,z=s.connX,B=s.connY,j=k?["M",z+(w[6]==="left"?5:-5),B,"C",z,B,2*w[2]-w[4],2*w[3]-w[5],w[2],w[3],"L",w[4],w[5]]:["M",z+(w[6]==="left"?5:-5),B,"L",w[2],w[3],"L",w[4],w[5]],i?(i.animate({
d:j}
),i.attr("visibility",E)):b.connector=i=a.chart.renderer.path(j).attr({
"stroke-width":g,stroke:e.connectorColor||b.color||"#606060",visibility:E}
).add(a.group);
else if(i)b.connector=i.destroy()}
)}
}
,J.pie.prototype.placeDataLabels=function(){
p(this.points,function(a){
var a=a.dataLabel,b;
if(a)(b=a._pos)?(a.attr(a._attr),a[a.moved?"animate":"attr"](b),a.moved=!0):a&&a.attr({
y:-999}
)}
)}
,J.pie.prototype.alignDataLabel=Ea,J.pie.prototype.verifyDataLabelOverflow=function(a){
var b=this.center,c=this.options,d=c.center,e=c=c.minSize||80,f;
d[0]!==null?e=t(b[2]-t(a[1],a[3]),c):(e=t(b[2]-a[1]-a[3],c),b[0]+=(a[3]-a[1])/2);
d[1]!==null?e=t(E(e,b[2]-t(a[0],a[2])),c):(e=t(E(e,b[2]-a[0]-a[2]),c),b[1]+=(a[0]-a[2])/2);
e<b[2]?(b[2]=e,this.translate(b),p(this.points,function(a){
if(a.dataLabel)a.dataLabel._pos=null}
),this.drawDataLabels&&this.drawDataLabels()):f=!0;
return f}
;
if(J.column)J.column.prototype.alignDataLabel=function(a,b,c,d,e){
var f=this.chart,g=f.inverted,h=a.dlBox||a.shapeArgs,i=a.below||a.plotY>o(this.translatedThreshold,f.plotSizeY),j=o(c.inside,!!this.options.stacking);
if(h&&(d=w(h),g&&(d={
x:f.plotWidth-d.y-d.height,y:f.plotHeight-d.x-d.width,width:d.height,height:d.width}
),!j))g?(d.x+=i?0:d.width,d.width=0):(d.y+=i?d.height:0,d.height=0);
c.align=o(c.align,!g||j?"center":i?"right":"left");
c.verticalAlign=o(c.verticalAlign,g||j?"middle":i?"top":"bottom");
M.prototype.alignDataLabel.call(this,a,b,c,d,e)}
;
R=Q.TrackerMixin={
drawTrackerPoint:function(){
var a=this,b=a.chart,c=b.pointer,d=a.options.cursor,e=d&&{
cursor:d}
,f=function(c){
var d=c.target,e;
if(b.hoverSeries!==a)a.onMouseOver();
for(;
d&&!e;
)e=d.point,d=d.parentNode;
if(e!==u&&e!==b.hoverPoint)e.onMouseOver(c)}
;
p(a.points,function(a){
if(a.graphic)a.graphic.element.point=a;
if(a.dataLabel)a.dataLabel.element.point=a}
);
if(!a._hasTracking)p(a.trackerGroups,function(b){
if(a[b]&&(a[b].addClass("highcharts-tracker").on("mouseover",f).on("mouseout",function(a){
c.onTrackerMouseOut(a)}
).css(e),$a))a[b].on("touchstart",f)}
),a._hasTracking=!0}
,drawTrackerGraph:function(){
var a=this,b=a.options,c=b.trackByArea,d=[].concat(c?a.areaPath:a.graphPath),e=d.length,f=a.chart,g=f.pointer,h=f.renderer,i=f.options.tooltip.snap,j=a.tracker,k=b.cursor,l=k&&{
cursor:k}
,k=a.singlePoints,m,n=function(){
if(f.hoverSeries!==a)a.onMouseOver()}
,o="rgba(192,192,192,"+(X?1.0E-4:0.002)+")";
if(e&&!c)for(m=e+1;
m--;
)d[m]==="M"&&d.splice(m+1,0,d[m+1]-i,d[m+2],"L"),(m&&d[m]==="M"||m===e)&&d.splice(m,0,"L",d[m-2]+i,d[m-1]);
for(m=0;
m<k.length;
m++)e=k[m],d.push("M",e.plotX-i,e.plotY,"L",e.plotX+i,e.plotY);
j?j.attr({
d:d}
):(a.tracker=h.path(d).attr({
"stroke-linejoin":"round",visibility:a.visible?"visible":"hidden",stroke:o,fill:c?o:O,"stroke-width":b.lineWidth+(c?0:2*i),zIndex:2}
).add(a.group),p([a.tracker,a.markerGroup],function(a){
a.addClass("highcharts-tracker").on("mouseover",n).on("mouseout",function(a){
g.onTrackerMouseOut(a)}
).css(l);
if($a)a.on("touchstart",n)}
))}
}
;
if(J.column)ea.prototype.drawTracker=R.drawTrackerPoint;
if(J.pie)J.pie.prototype.drawTracker=R.drawTrackerPoint;
if(J.scatter)ma.prototype.drawTracker=R.drawTrackerPoint;
s(lb.prototype,{
setItemEvents:function(a,b,c,d,e){
var f=this;
(c?b:a.legendGroup).on("mouseover",function(){
a.setState("hover");
b.css(f.options.itemHoverStyle)}
).on("mouseout",function(){
b.css(a.visible?d:e);
a.setState()}
).on("click",function(b){
var c=function(){
a.setVisible()}
,b={
browserEvent:b}
;
a.firePointEvent?a.firePointEvent("legendItemClick",b,c):I(a,"legendItemClick",b,c)}
)}
,createCheckboxForItem:function(a){
a.checkbox=V("input",{
type:"checkbox",checked:a.selected,defaultChecked:a.selected}
,this.options.itemCheckboxStyle,this.chart.container);
C(a.checkbox,"click",function(b){
I(a,"checkboxClick",{
checked:b.target.checked}
,function(){
a.select()}
)}
)}
}
);
L.legend.itemStyle.cursor="pointer";
s(Ya.prototype,{
showResetZoom:function(){
var a=this,b=L.lang,c=a.options.chart.resetZoomButton,d=c.theme,e=d.states,f=c.relativeTo==="chart"?null:"plotBox";
this.resetZoomButton=a.renderer.button(b.resetZoom,null,null,function(){
a.zoomOut()}
,d,e&&e.hover).attr({
align:c.position.align,title:b.resetZoomTitle}
).add().align(c.position,!1,f)}
,zoomOut:function(){
var a=this;
I(a,"selection",{
resetSelection:!0}
,function(){
a.zoom()}
)}
,zoom:function(a){
var b,c=this.pointer,d=!1,e;
!a||a.resetSelection?p(this.axes,function(a){
b=a.zoom()}
):p(a.xAxis.concat(a.yAxis),function(a){
var e=a.axis,h=e.isXAxis;
if(c[h?"zoomX":"zoomY"]||c[h?"pinchX":"pinchY"])b=e.zoom(a.min,a.max),e.displayBtn&&(d=!0)}
);
e=this.resetZoomButton;
if(d&&!e)this.showResetZoom();
else if(!d&&$(e))this.resetZoomButton=e.destroy();
b&&this.redraw(o(this.options.chart.animation,a&&a.animation,this.pointCount<100))}
,pan:function(a,b){
var c=this,d=c.hoverPoints,e;
d&&p(d,function(a){
a.setState()}
);
p(b==="xy"?[1,0]:[1],function(b){
var d=a[b?"chartX":"chartY"],h=c[b?"xAxis":"yAxis"][0],i=c[b?"mouseDownX":"mouseDownY"],j=(h.pointRange||0)/2,k=h.getExtremes(),l=h.toValue(i-d,!0)+j,i=h.toValue(i+c[b?"plotWidth":"plotHeight"]-d,!0)-j;
h.series.length&&l>E(k.dataMin,k.min)&&i<t(k.dataMax,k.max)&&(h.setExtremes(l,i,!1,!1,{
trigger:"pan"}
),e=!0);
c[b?"mouseDownX":"mouseDownY"]=d}
);
e&&c.redraw(!1);
D(c.container,{
cursor:"move"}
)}
}
);
s(Fa.prototype,{
select:function(a,b){
var c=this,d=c.series,e=d.chart,a=o(a,!c.selected);
c.firePointEvent(a?"select":"unselect",{
accumulate:b}
,function(){
c.selected=c.options.selected=a;
d.options.data[va(c,d.data)]=c.options;
c.setState(a&&"select");
b||p(e.getSelectedPoints(),function(a){
if(a.selected&&a!==c)a.selected=a.options.selected=!1,d.options.data[va(a,d.data)]=a.options,a.setState(""),a.firePointEvent("unselect")}
)}
)}
,onMouseOver:function(a){
var b=this.series,c=b.chart,d=c.tooltip,e=c.hoverPoint;
if(e&&e!==this)e.onMouseOut();
this.firePointEvent("mouseOver");
d&&(!d.shared||b.noSharedTooltip)&&d.refresh(this,a);
this.setState("hover");
c.hoverPoint=this}
,onMouseOut:function(){
var a=this.series.chart,b=a.hoverPoints;
if(!b||va(this,b)===-1)this.firePointEvent("mouseOut"),this.setState(),a.hoverPoint=null}
,firePointEvent:function(a,b,c){
var d=this,e=this.series.options;
(e.point.events[a]||d.options&&d.options.events&&d.options.events[a])&&this.importEvents();
a==="click"&&e.allowPointSelect&&(c=function(a){
d.select(null,a.ctrlKey||a.metaKey||a.shiftKey)}
);
I(this,a,b,c)}
,importEvents:function(){
if(!this.hasImportedEvents){
var a=w(this.series.options.point,this.options).events,b;
this.events=a;
for(b in a)C(this,b,a[b]);
this.hasImportedEvents=!0}
}
,setState:function(a,b){
var c=this.plotX,d=this.plotY,e=this.series,f=e.options.states,g=Z[e.type].marker&&e.options.marker,h=g&&!g.enabled,i=g&&g.states[a],j=i&&i.enabled===!1,k=e.stateMarkerGraphic,l=this.marker||{
}
,m=e.chart,n=this.pointAttr,a=a||"",b=b&&k;
if(!(a===this.state&&!b||this.selected&&a!=="select"||f[a]&&f[a].enabled===!1||a&&(j||h&&!i.enabled)||a&&l.states&&l.states[a]&&l.states[a].enabled===!1)){
if(this.graphic)f=g&&this.graphic.symbolName&&n[a].r,this.graphic.attr(w(n[a],f?{
x:c-f,y:d-f,width:2*f,height:2*f}
:{
}
));
else{
if(a&&i)if(f=i.radius,l=l.symbol||e.symbol,k&&k.currentSymbol!==l&&(k=k.destroy()),k)k[b?"animate":"attr"]({
x:c-f,y:d-f}
);
else e.stateMarkerGraphic=k=m.renderer.symbol(l,c-f,d-f,2*f,2*f).attr(n[a]).add(e.markerGroup),k.currentSymbol=l;
if(k)k[a&&m.isInsidePlot(c,d,m.inverted)?"show":"hide"]()}
this.state=a}
}
}
);
s(M.prototype,{
onMouseOver:function(){
var a=this.chart,b=a.hoverSeries;
if(b&&b!==this)b.onMouseOut();
this.options.events.mouseOver&&I(this,"mouseOver");
this.setState("hover");
a.hoverSeries=this}
,onMouseOut:function(){
var a=this.options,b=this.chart,c=b.tooltip,d=b.hoverPoint;
if(d)d.onMouseOut();
this&&a.events.mouseOut&&I(this,"mouseOut");
c&&!a.stickyTracking&&(!c.shared||this.noSharedTooltip)&&c.hide();
this.setState();
b.hoverSeries=null}
,setState:function(a){
var b=this.options,c=this.graph,d=this.graphNeg,e=b.states,b=b.lineWidth,a=a||"";
if(this.state!==a)this.state=a,e[a]&&e[a].enabled===!1||(a&&(b=e[a].lineWidth||b+1),c&&!c.dashstyle&&(a={
"stroke-width":b}
,c.attr(a),d&&d.attr(a)))}
,setVisible:function(a,b){
var c=this,d=c.chart,e=c.legendItem,f,g=d.options.chart.ignoreHiddenSeries,h=c.visible;
f=(c.visible=a=c.userOptions.visible=a===u?!h:a)?"show":"hide";
p(["group","dataLabelsGroup","markerGroup","tracker"],function(a){
if(c[a])c[a][f]()}
);
if(d.hoverSeries===c)c.onMouseOut();
e&&d.legend.colorizeItem(c,a);
c.isDirty=!0;
c.options.stacking&&p(d.series,function(a){
if(a.options.stacking&&a.visible)a.isDirty=!0}
);
p(c.linkedSeries,function(b){
b.setVisible(a,!1)}
);
if(g)d.isDirtyBox=!0;
b!==!1&&d.redraw();
I(c,f)}
,setTooltipPoints:function(a){
var b=[],c,d,e=this.xAxis,f=e&&e.getExtremes(),g=e?e.tooltipLen||e.len:this.chart.plotSizeX,h,i,j=[];
if(!(this.options.enableMouseTracking===!1||this.singularTooltips)){
if(a)this.tooltipPoints=null;
p(this.segments||this.points,function(a){
b=b.concat(a)}
);
e&&e.reversed&&(b=b.reverse());
this.orderTooltipPoints&&this.orderTooltipPoints(b);
a=b.length;
for(i=0;
i<a;
i++)if(e=b[i],c=e.x,c>=f.min&&c<=f.max){
h=b[i+1];
c=d===u?0:d+1;
for(d=b[i+1]?E(t(0,S((e.clientX+(h?h.wrappedClientX||h.clientX:g))/2)),g):g;
c>=0&&c<=d;
)j[c++]=e}
this.tooltipPoints=j}
}
,show:function(){
this.setVisible(!0)}
,hide:function(){
this.setVisible(!1)}
,select:function(a){
this.selected=a=a===u?!this.selected:a;
if(this.checkbox)this.checkbox.checked=a;
I(this,a?"select":"unselect")}
,drawTracker:R.drawTrackerGraph}
);
s(Q,{
Axis:ka,Chart:Ya,Color:wa,Point:Fa,Tick:Sa,Renderer:Za,Series:M,SVGElement:ta,SVGRenderer:pa,arrayMin:Na,arrayMax:Ba,charts:Y,dateFormat:bb,format:Ia,pathAnim:ub,getOptions:function(){
return L}
,hasBidiBug:Ob,isTouchDevice:Jb,numberFormat:Ga,seriesTypes:J,setOptions:function(a){
L=w(!0,L,a);
Cb();
return L}
,addEvent:C,removeEvent:U,createElement:V,discardElement:Pa,css:D,each:p,extend:s,map:Ua,merge:w,pick:o,splat:na,extendClass:ja,pInt:x,wrap:Ma,svg:X,canvas:ca,vml:!X&&!ca,product:"Highcharts",version:"3.0.10"}
)}
)();