(function(factory){if(typeof module==='object'&&module.exports){module.exports=factory;}else{factory(Highcharts);}}(function(HC){'use strict';var UNDEFINED,DBLCLICK='dblclick',TOUCHSTART='touchstart',CLICK='click',each=HC.each,pick=HC.pick,wrap=HC.wrap,merge=HC.merge,addEvent=HC.addEvent,isTouchDevice=HC.isTouchDevice,isObject=HC.isObject,defaultOptions=HC.getOptions().plotOptions,axisProto=HC.Axis&&HC.Axis.prototype,plotLineOrBandProto=HC.PlotLineOrBand&&HC.PlotLineOrBand.prototype,seriesTypes=HC.seriesTypes,seriesProto=HC.Series&&HC.Series.prototype,customEvents,proto,methods;function isArray(obj){return Object.prototype.toString.call(obj)==='[object Array]';} if(plotLineOrBandProto){wrap(plotLineOrBandProto,'render',function(proceed){var defaultEvents=this.options&&this.options.events;if(defaultEvents){defaultEvents=false;} return proceed.apply(this,Array.prototype.slice.call(arguments,1));});} if(seriesProto){wrap(seriesProto,'init',function(proceed,chart,options){var chartOptions=chart.options,plotOptions=chartOptions.plotOptions,seriesOptions=chartOptions.plotOptions.series,userOptions=merge(seriesOptions,plotOptions[this.type],options);options.events=false;options.point={events:false};if(userOptions&&userOptions.events&&userOptions.events.legendItemClick){options.events={legendItemClick:userOptions.events.legendItemClick};} options.customEvents={series:userOptions&&userOptions.events,point:userOptions&&userOptions.point&&userOptions.point.events};proceed.apply(this,Array.prototype.slice.call(arguments,1));});} if(axisProto){wrap(HC.Axis.prototype,'render',function(proceed,e,point){var axis=this,crosshair=axis.crosshair;if(isObject(crosshair)){this.crosshair=crosshair.enabled;} proceed.apply(this,Array.prototype.slice.call(arguments,1));});wrap(HC.Axis.prototype,'drawCrosshair',function(proceed,e,point){proceed.apply(this,Array.prototype.slice.call(arguments,1));});} HC.Chart.prototype.customEvent={getEventsProtoMethods:function(){return[[HC.Tick,['addLabel']],[HC.Axis,['render']],[HC.Axis,['drawCrosshair']],[HC.Chart,['setTitle']],[HC.Legend,['renderItem']],[HC.PlotLineOrBand,['render']],[HC.Series,['drawPoints','drawDataLabels']],[seriesTypes.column,['drawPoints','drawDataLabels']],[seriesTypes.bar,['drawPoints','drawDataLabels']],[seriesTypes.pie,['drawPoints','drawDataLabels']],[seriesTypes.bubble,['drawPoints','drawDataLabels']],[seriesTypes.columnrange,['drawPoints','drawDataLabels']],[seriesTypes.arearange,['drawPoints','drawDataLabels']],[seriesTypes.areasplinerange,['drawPoints','drawDataLabels']],[seriesTypes.errorbar,['drawPoints','drawDataLabels']],[seriesTypes.boxplot,['drawPoints','drawDataLabels']],[seriesTypes.flags,['drawPoints','drawDataLabels']]];},init:function(){var eventsProtoMethods=this.getEventsProtoMethods();each(eventsProtoMethods,function(protoMethod){proto=protoMethod[0]&&protoMethod[0].prototype;methods=protoMethod[1];if(proto){each(methods,function(method){customEvents.attach(proto,method);});}});},attach:function(proto,hcMethod){wrap(proto,hcMethod,function(proceed){var eventElement={events:UNDEFINED,element:UNDEFINED},proceedObject,len,j;proceedObject=proceed.apply(this,Array.prototype.slice.call(arguments,1));eventElement=customEvents.eventElement[hcMethod].call(this);if(!eventElement.events&&!eventElement.eventsPoint){return proceedObject;} if(eventElement.eventsPoint){len=eventElement.elementPoint.length;for(j=0;j